org.springframework.aop.aspectj.autoproxy
Class AspectJPrecedenceComparator

java.lang.Object
  extended by org.springframework.aop.aspectj.autoproxy.AspectJPrecedenceComparator
All Implemented Interfaces:
java.util.Comparator

 class AspectJPrecedenceComparator
extends java.lang.Object
implements java.util.Comparator

Orders AspectJ advice/advisors by precedence (not invocation order).

Given two pieces of advice, a and b:

Important: Note that unlike a normal comparator a return of 0 means we don't care about the ordering, not that the two elements must be sorted identically. Used with AspectJ PartialOrder class.

Since:
2.0
Author:
Adrian Colyer, Juergen Hoeller

Field Summary
private  java.util.Comparator<? super Advisor> advisorComparator
           
private static int HIGHER_PRECEDENCE
           
private static int LOWER_PRECEDENCE
           
private static int NOT_COMPARABLE
           
private static int SAME_PRECEDENCE
           
 
Constructor Summary
AspectJPrecedenceComparator()
          Create a default AspectJPrecedenceComparator.
AspectJPrecedenceComparator(java.util.Comparator<? super Advisor> advisorComparator)
          Create a AspectJPrecedenceComparator, using the given Comparator for comparing Advisor instances.
 
Method Summary
 int compare(java.lang.Object o1, java.lang.Object o2)
           
private  int comparePrecedenceWithinAspect(Advisor advisor1, Advisor advisor2)
           
private  boolean declaredInSameAspect(Advisor advisor1, Advisor advisor2)
           
private  int getAspectDeclarationOrder(Advisor anAdvisor)
           
private  java.lang.String getAspectName(Advisor anAdvisor)
           
private  boolean hasAspectName(Advisor anAdvisor)
           
 
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

HIGHER_PRECEDENCE

private static final int HIGHER_PRECEDENCE
See Also:
Constant Field Values

SAME_PRECEDENCE

private static final int SAME_PRECEDENCE
See Also:
Constant Field Values

LOWER_PRECEDENCE

private static final int LOWER_PRECEDENCE
See Also:
Constant Field Values

NOT_COMPARABLE

private static final int NOT_COMPARABLE
See Also:
Constant Field Values

advisorComparator

private final java.util.Comparator<? super Advisor> advisorComparator
Constructor Detail

AspectJPrecedenceComparator

public AspectJPrecedenceComparator()
Create a default AspectJPrecedenceComparator.


AspectJPrecedenceComparator

public AspectJPrecedenceComparator(java.util.Comparator<? super Advisor> advisorComparator)
Create a AspectJPrecedenceComparator, using the given Comparator for comparing Advisor instances.

Parameters:
advisorComparator - the Comparator to use for Advisors
Method Detail

compare

public int compare(java.lang.Object o1,
                   java.lang.Object o2)
Specified by:
compare in interface java.util.Comparator

comparePrecedenceWithinAspect

private int comparePrecedenceWithinAspect(Advisor advisor1,
                                          Advisor advisor2)

declaredInSameAspect

private boolean declaredInSameAspect(Advisor advisor1,
                                     Advisor advisor2)

hasAspectName

private boolean hasAspectName(Advisor anAdvisor)

getAspectName

private java.lang.String getAspectName(Advisor anAdvisor)

getAspectDeclarationOrder

private int getAspectDeclarationOrder(Advisor anAdvisor)