Class ThrowableAnalyzer
java.lang.Object
org.springframework.security.web.util.ThrowableAnalyzer
Handler for analyzing 
Throwable instances.
 Can be subclassed to customize its behavior.- Since:
- 2.0
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final ThrowableCauseExtractorDefault extractor forThrowableinstances.static final ThrowableCauseExtractorDefault extractor forInvocationTargetExceptioninstances.
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionfinal Throwable[]determineCauseChain(Throwable throwable) Determines the cause chain of the providedThrowable.final ThrowablegetFirstThrowableOfType(Class<? extends Throwable> throwableType, Throwable[] chain) Returns the first throwable from the passed in array that is assignable to the provided type.protected voidInitializes associations betweenThrowables andThrowableCauseExtractors.protected final voidregisterExtractor(Class<? extends Throwable> throwableType, ThrowableCauseExtractor extractor) Registers aThrowableCauseExtractorfor the specified type.static voidverifyThrowableHierarchy(Throwable throwable, Class<? extends Throwable> expectedBaseType) Verifies that the provided throwable is a valid subclass of the provided type (or of the type itself).
- 
Field Details- 
DEFAULT_EXTRACTORDefault extractor forThrowableinstances.- See Also:
 
- 
INVOCATIONTARGET_EXTRACTORDefault extractor forInvocationTargetExceptioninstances.
 
- 
- 
Constructor Details- 
ThrowableAnalyzerpublic ThrowableAnalyzer()Creates a newThrowableAnalyzerinstance.
 
- 
- 
Method Details- 
registerExtractorprotected final void registerExtractor(Class<? extends Throwable> throwableType, ThrowableCauseExtractor extractor) Registers aThrowableCauseExtractorfor the specified type. Can be used in subclasses overridinginitExtractorMap().- Parameters:
- throwableType- the type (has to be a subclass of- Throwable)
- extractor- the associated- ThrowableCauseExtractor(not- null)
- Throws:
- IllegalArgumentException- if one of the arguments is invalid
 
- 
initExtractorMapprotected void initExtractorMap()Initializes associations betweenThrowables andThrowableCauseExtractors. The default implementation performs the following registrations:
 Subclasses overriding this method are encouraged to invoke the super method to perform the default registrations. They can register additional extractors as required.Note: An extractor registered for a specific type is applicable for that type and all subtypes thereof. However, extractors registered to more specific types are guaranteed to be resolved first. So in the default case InvocationTargetExceptions will be handled by INVOCATIONTARGET_EXTRACTORwhile all other throwables are handled byDEFAULT_EXTRACTOR.
- 
determineCauseChainDetermines the cause chain of the providedThrowable. The returned array contains all throwables extracted from the stacktrace, using the registeredextractors. The elements of the array are ordered: The first element is the passed in throwable itself. The following elements appear in their order downward the stacktrace.Note: If no ThrowableCauseExtractoris registered for this instance then the returned array will always only contain the passed in throwable.- Parameters:
- throwable- the- Throwableto analyze
- Returns:
- an array of all determined throwables from the stacktrace
- Throws:
- IllegalArgumentException- if the throwable is- null
- See Also:
 
- 
getFirstThrowableOfTypepublic final Throwable getFirstThrowableOfType(Class<? extends Throwable> throwableType, Throwable[] chain) Returns the first throwable from the passed in array that is assignable to the provided type. A returned instance is safe to be cast to the specified type.If the passed in array is null or empty this method returns null.- Parameters:
- throwableType- the type to look for
- chain- the array (will be processed in element order)
- Returns:
- the found Throwable,nullif not found
- Throws:
- IllegalArgumentException- if the provided type is- nullor no subclass of- Throwable
 
- 
verifyThrowableHierarchypublic static void verifyThrowableHierarchy(Throwable throwable, Class<? extends Throwable> expectedBaseType) Verifies that the provided throwable is a valid subclass of the provided type (or of the type itself). IfexpectdBaseTypeisnull, no check will be performed.Can be used for verification purposes in implementations of extractors.- Parameters:
- throwable- the- Throwableto check
- expectedBaseType- the type to check against
- Throws:
- IllegalArgumentException- if- throwableis either- nullor its type is not assignable to- expectedBaseType
 
 
-