src/core/net/sf/basedb/util/extensions/RethrowErrorHandlerFactory.java

Code
Comments
Other
Rev Date Author Line
5486 12 Nov 10 nicklas 1 /**
5486 12 Nov 10 nicklas 2   $Id$
5486 12 Nov 10 nicklas 3
5486 12 Nov 10 nicklas 4   Copyright (C) 2010 Nicklas Nordborg
5486 12 Nov 10 nicklas 5
5486 12 Nov 10 nicklas 6   This file is part of BASE - BioArray Software Environment.
5486 12 Nov 10 nicklas 7   Available at http://base.thep.lu.se/
5486 12 Nov 10 nicklas 8
5486 12 Nov 10 nicklas 9   BASE is free software; you can redistribute it and/or
5486 12 Nov 10 nicklas 10   modify it under the terms of the GNU General Public License
5486 12 Nov 10 nicklas 11   as published by the Free Software Foundation; either version 3
5486 12 Nov 10 nicklas 12   of the License, or (at your option) any later version.
5486 12 Nov 10 nicklas 13
5486 12 Nov 10 nicklas 14   BASE is distributed in the hope that it will be useful,
5486 12 Nov 10 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
5486 12 Nov 10 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
5486 12 Nov 10 nicklas 17   GNU General Public License for more details.
5486 12 Nov 10 nicklas 18
5486 12 Nov 10 nicklas 19   You should have received a copy of the GNU General Public License
5486 12 Nov 10 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
5486 12 Nov 10 nicklas 21 */
5486 12 Nov 10 nicklas 22 package net.sf.basedb.util.extensions;
5486 12 Nov 10 nicklas 23
5486 12 Nov 10 nicklas 24 /**
5486 12 Nov 10 nicklas 25   Extension to the logging error handler factory that create error handlers
5486 12 Nov 10 nicklas 26   that re-throw the original exception. If the exception is an instance of
5486 12 Nov 10 nicklas 27   RuntimeException it is re-thrown as is, otherwise it is wrapped inside
5486 12 Nov 10 nicklas 28   a new RuntimeException. This factory is it's own error handler and the 
5486 12 Nov 10 nicklas 29   implementation is thread-safe.
5486 12 Nov 10 nicklas 30   
5486 12 Nov 10 nicklas 31   @author Nicklas
5486 12 Nov 10 nicklas 32   @since 2.17
5486 12 Nov 10 nicklas 33   @base.modified $Date$
5486 12 Nov 10 nicklas 34 */
5487 15 Nov 10 nicklas 35 public class RethrowErrorHandlerFactory
5487 15 Nov 10 nicklas 36   extends LoggingErrorHandlerFactory
5486 12 Nov 10 nicklas 37 {
5486 12 Nov 10 nicklas 38   
6444 09 Apr 14 nicklas 39   private static final org.slf4j.Logger log = 
6444 09 Apr 14 nicklas 40     org.slf4j.LoggerFactory.getLogger(RethrowErrorHandlerFactory.class);
5486 12 Nov 10 nicklas 41
5486 12 Nov 10 nicklas 42   
5486 12 Nov 10 nicklas 43   public RethrowErrorHandlerFactory()
5486 12 Nov 10 nicklas 44   {}
5486 12 Nov 10 nicklas 45
5486 12 Nov 10 nicklas 46   /*
5486 12 Nov 10 nicklas 47     From the ErrorHandlerFactory interface
5486 12 Nov 10 nicklas 48     --------------------------------------
5486 12 Nov 10 nicklas 49   */
5486 12 Nov 10 nicklas 50   @Override
5487 15 Nov 10 nicklas 51   public ErrorHandler<Action> getErrorHandler(InvokationContext<? extends Action> context)
5486 12 Nov 10 nicklas 52   {
5486 12 Nov 10 nicklas 53     return this;
5486 12 Nov 10 nicklas 54   }
5486 12 Nov 10 nicklas 55   // --------------------------------------
5486 12 Nov 10 nicklas 56
5486 12 Nov 10 nicklas 57   /*
5486 12 Nov 10 nicklas 58     From the ErrorHandler interface
5486 12 Nov 10 nicklas 59     --------------------------------------
5486 12 Nov 10 nicklas 60   */
5486 12 Nov 10 nicklas 61   @Override
5487 15 Nov 10 nicklas 62   public void handleError(InvokationContext<? extends Action> context, Action action, 
5486 12 Nov 10 nicklas 63     String message, Throwable t)
5486 12 Nov 10 nicklas 64   {
5486 12 Nov 10 nicklas 65     super.handleError(context, action, message, t);
5486 12 Nov 10 nicklas 66     if (t instanceof RuntimeException)
5486 12 Nov 10 nicklas 67     {
5486 12 Nov 10 nicklas 68       throw (RuntimeException)t;
5486 12 Nov 10 nicklas 69     }
5486 12 Nov 10 nicklas 70     throw new RuntimeException(t);
5486 12 Nov 10 nicklas 71   }
5486 12 Nov 10 nicklas 72   // --------------------------------------
5486 12 Nov 10 nicklas 73   
5486 12 Nov 10 nicklas 74 }