class AspectJPrecedenceComparator extends java.lang.Object implements java.util.Comparator<Advisor>
Given two pieces of advice, a
and b
:
a
and b
are defined in different
aspects, then the advice in the aspect with the lowest order
value has the highest precedencea
and b
are defined in the same
aspect, then if one of a
or b
is a form of
after advice, then the advice declared last in the aspect has the
highest precedence. If neither a
nor b
is a
form of after advice, then the advice declared first in the aspect has
the highest precedence.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.
Modifier and Type | Field and Description |
---|---|
private java.util.Comparator<? super Advisor> |
advisorComparator |
private static int |
HIGHER_PRECEDENCE |
private static int |
LOWER_PRECEDENCE |
private static int |
SAME_PRECEDENCE |
Constructor and Description |
---|
AspectJPrecedenceComparator()
Create a default AspectJPrecedenceComparator.
|
AspectJPrecedenceComparator(java.util.Comparator<? super Advisor> advisorComparator)
Create a AspectJPrecedenceComparator, using the given Comparator
for comparing
Advisor instances. |
Modifier and Type | Method and Description |
---|---|
int |
compare(Advisor o1,
Advisor 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) |
private static final int HIGHER_PRECEDENCE
private static final int SAME_PRECEDENCE
private static final int LOWER_PRECEDENCE
private final java.util.Comparator<? super Advisor> advisorComparator
public AspectJPrecedenceComparator()
public int compare(Advisor o1, Advisor o2)
compare
in interface java.util.Comparator<Advisor>
private int comparePrecedenceWithinAspect(Advisor advisor1, Advisor advisor2)
private boolean hasAspectName(Advisor anAdvisor)
private java.lang.String getAspectName(Advisor anAdvisor)
private int getAspectDeclarationOrder(Advisor anAdvisor)