001 /*--------------------------------------------------------------------------+ 002 $Id: CollectingExceptionHandler.java 26283 2010-02-18 11:18:57Z juergens $ 003 | | 004 | Copyright 2005-2010 Technische Universitaet Muenchen | 005 | | 006 | Licensed under the Apache License, Version 2.0 (the "License"); | 007 | you may not use this file except in compliance with the License. | 008 | You may obtain a copy of the License at | 009 | | 010 | http://www.apache.org/licenses/LICENSE-2.0 | 011 | | 012 | Unless required by applicable law or agreed to in writing, software | 013 | distributed under the License is distributed on an "AS IS" BASIS, | 014 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 015 | See the License for the specific language governing permissions and | 016 | limitations under the License. | 017 +--------------------------------------------------------------------------*/ 018 package edu.tum.cs.commons.error; 019 020 import java.util.ArrayList; 021 import java.util.List; 022 023 import edu.tum.cs.commons.collections.CollectionUtils; 024 import edu.tum.cs.commons.collections.UnmodifiableList; 025 026 /** 027 * An exception handler that collects exceptions for later use. 028 * 029 * @author hummelb 030 * @author $Author: juergens $ 031 * @version $Rev: 26283 $ 032 * @levd.rating GREEN Hash: 7696FFE0F017E8EE1D6F8B382A43B3B3 033 */ 034 public class CollectingExceptionHandler<X extends Exception> implements 035 IExceptionHandler<X, NeverThrownRuntimeException> { 036 037 /** The exceptions stored. */ 038 private final List<X> exceptions = new ArrayList<X>(); 039 040 /** {@inheritDoc} */ 041 public void handleException(X exception) throws NeverThrownRuntimeException { 042 exceptions.add(exception); 043 } 044 045 /** Returns the list of exception caught so far. */ 046 public UnmodifiableList<X> getExceptions() { 047 return CollectionUtils.asUnmodifiable(exceptions); 048 } 049 050 /** Clears the list of exceptions. */ 051 public void clearExceptions() { 052 exceptions.clear(); 053 } 054 }