001    package org.springframework.richclient.exceptionhandling.delegation;
002    
003    import java.util.Collections;
004    import java.util.List;
005    
006    /**
007     * Handles the thrownTrowable by the exception handler if it is an instance of one of the throwableClassList.
008     * Note: Also subclasses of the classes in the throwableClassList will be handled by the exception handler.
009     * 
010     * @author Geoffrey De Smet
011     * @since 0.3.0
012     */
013    public class SimpleExceptionHandlerDelegate extends AbstractExceptionHandlerDelegate {
014    
015        private List<Class> throwableClassList;
016    
017        public SimpleExceptionHandlerDelegate() {
018        }
019    
020        public SimpleExceptionHandlerDelegate(Class throwableClass,
021                Thread.UncaughtExceptionHandler exceptionHandler) {
022            this(Collections.singletonList(throwableClass), exceptionHandler);
023        }
024    
025        public SimpleExceptionHandlerDelegate(List<Class> throwableClassList,
026                Thread.UncaughtExceptionHandler exceptionHandler) {
027            super(exceptionHandler);
028            this.throwableClassList = throwableClassList;
029        }
030    
031        public void setThrowableClass(Class throwableClass) {
032            setThrowableClassList(Collections.singletonList(throwableClass));
033        }
034    
035        public void setThrowableClassList(List<Class> throwableClassList) {
036            this.throwableClassList = throwableClassList;
037        }
038    
039        
040        public boolean hasAppropriateHandlerPurged(Throwable throwable) {
041            for (Class throwableClass : throwableClassList) {
042                if (throwableClass.isInstance(throwable)) {
043                    return true;
044                }
045            }
046            return false;
047        }
048    
049    }