Class RethrowOnThresholdExceptionHandler

  • All Implemented Interfaces:
    ExceptionHandler

    public class RethrowOnThresholdExceptionHandler
    extends java.lang.Object
    implements ExceptionHandler
    Implementation of ExceptionHandler that rethrows when exceptions of a given type reach a threshold. Requires an Classifier that maps exception types to unique keys, and also a map from those keys to threshold values (Integer type).
    Author:
    Dave Syer
    • Field Summary

      Fields 
      Modifier and TypeFieldDescription
      protected org.apache.commons.logging.Loglogger 
      protected static org.springframework.batch.repeat.exception.RethrowOnThresholdExceptionHandler.IntegerHolderZERO 
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethodDescription
      voidhandleException​(RepeatContext context, java.lang.Throwable throwable)
      Classify the throwables and decide whether to re-throw based on the result.
      voidsetThresholds​(java.util.Map<java.lang.Class<? extends java.lang.Throwable>,​java.lang.Integer> thresholds)
      A map from exception classes to a threshold value of type Integer.
      voidsetUseParent​(boolean useParent)
      Flag to indicate the the exception counters should be shared between sibling contexts in a nested batch.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • ZERO

        protected static final org.springframework.batch.repeat.exception.RethrowOnThresholdExceptionHandler.IntegerHolder ZERO
      • logger

        protected final org.apache.commons.logging.Log logger
    • Constructor Detail

      • RethrowOnThresholdExceptionHandler

        public RethrowOnThresholdExceptionHandler()
        Set up the exception handler. Creates a default exception handler and threshold that maps all exceptions to a threshold of 0 - all exceptions are rethrown by default.
    • Method Detail

      • setUseParent

        public void setUseParent​(boolean useParent)
        Flag to indicate the the exception counters should be shared between sibling contexts in a nested batch. Default is false.
        Parameters:
        useParent - true if the parent context should be used to store the counters.
      • setThresholds

        public void setThresholds​(java.util.Map<java.lang.Class<? extends java.lang.Throwable>,​java.lang.Integer> thresholds)
        A map from exception classes to a threshold value of type Integer.
        Parameters:
        thresholds - the threshold value map.
      • handleException

        public void handleException​(RepeatContext context,
                                    java.lang.Throwable throwable)
                             throws java.lang.Throwable
        Classify the throwables and decide whether to re-throw based on the result. The context is used to accumulate the number of exceptions of the same type according to the classifier.
        Specified by:
        handleException in interface ExceptionHandler
        Parameters:
        context - the current RepeatContext. Can be used to store state (via attributes), for example to count the number of occurrences of a particular exception type and implement a threshold policy.
        throwable - an exception.
        Throws:
        java.lang.Throwable - is thrown if number of exceptions exceeds threshold.
        See Also:
        ExceptionHandler.handleException(RepeatContext, Throwable)