org.springframework.core
Class ExceptionDepthComparator

java.lang.Object
  extended by org.springframework.core.ExceptionDepthComparator
All Implemented Interfaces:
java.util.Comparator<java.lang.Class<? extends java.lang.Throwable>>

public class ExceptionDepthComparator
extends java.lang.Object
implements java.util.Comparator<java.lang.Class<? extends java.lang.Throwable>>

Comparator capable of sorting exceptions based on their depth from the thrown exception type.

Since:
3.0.3
Author:
Juergen Hoeller, Arjen Poutsma

Field Summary
private  java.lang.Class<? extends java.lang.Throwable> targetException
           
 
Constructor Summary
ExceptionDepthComparator(java.lang.Class<? extends java.lang.Throwable> exceptionType)
          Create a new ExceptionDepthComparator for the given exception type.
ExceptionDepthComparator(java.lang.Throwable exception)
          Create a new ExceptionDepthComparator for the given exception.
 
Method Summary
 int compare(java.lang.Class<? extends java.lang.Throwable> o1, java.lang.Class<? extends java.lang.Throwable> o2)
           
static java.lang.Class<? extends java.lang.Throwable> findClosestMatch(java.util.Collection<java.lang.Class<? extends java.lang.Throwable>> exceptionTypes, java.lang.Throwable targetException)
          Obtain the closest match from the given exception types for the given target exception.
private  int getDepth(java.lang.Class declaredException, java.lang.Class exceptionToMatch, int depth)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.Comparator
equals
 

Field Detail

targetException

private final java.lang.Class<? extends java.lang.Throwable> targetException
Constructor Detail

ExceptionDepthComparator

public ExceptionDepthComparator(java.lang.Throwable exception)
Create a new ExceptionDepthComparator for the given exception.

Parameters:
exception - the target exception to compare to when sorting by depth

ExceptionDepthComparator

public ExceptionDepthComparator(java.lang.Class<? extends java.lang.Throwable> exceptionType)
Create a new ExceptionDepthComparator for the given exception type.

Parameters:
exceptionType - the target exception type to compare to when sorting by depth
Method Detail

compare

public int compare(java.lang.Class<? extends java.lang.Throwable> o1,
                   java.lang.Class<? extends java.lang.Throwable> o2)
Specified by:
compare in interface java.util.Comparator<java.lang.Class<? extends java.lang.Throwable>>

getDepth

private int getDepth(java.lang.Class declaredException,
                     java.lang.Class exceptionToMatch,
                     int depth)

findClosestMatch

public static java.lang.Class<? extends java.lang.Throwable> findClosestMatch(java.util.Collection<java.lang.Class<? extends java.lang.Throwable>> exceptionTypes,
                                                                              java.lang.Throwable targetException)
Obtain the closest match from the given exception types for the given target exception.

Parameters:
exceptionTypes - the collection of exception types
targetException - the target exception to find a match for
Returns:
the closest matching exception type from the given collection