org.aspectj.weaver
Class CrosscuttingMembers
java.lang.Object
org.aspectj.weaver.CrosscuttingMembers
public class CrosscuttingMembers
- extends java.lang.Object
This holds on to all members that have an invasive effect outside of there own compilation unit. These members need to be all
gathered up and in a world before any weaving can take place.
They are also important in the compilation process and need to be gathered up before the inter-type declaration weaving stage
(unsurprisingly).
All members are concrete.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CrosscuttingMembers
public CrosscuttingMembers(ResolvedType inAspect,
boolean shouldConcretizeIfNeeded)
addConcreteShadowMunger
public void addConcreteShadowMunger(ShadowMunger m)
addShadowMungers
public void addShadowMungers(java.util.Collection<ShadowMunger> c)
addTypeMungers
public void addTypeMungers(java.util.Collection<ConcreteTypeMunger> c)
addTypeMunger
public void addTypeMunger(ConcreteTypeMunger m)
addLateTypeMungers
public void addLateTypeMungers(java.util.Collection<ConcreteTypeMunger> c)
addLateTypeMunger
public void addLateTypeMunger(ConcreteTypeMunger m)
addDeclares
public void addDeclares(java.util.Collection<Declare> declares)
addDeclare
public void addDeclare(Declare declare)
exposeTypes
public void exposeTypes(java.util.List<UnresolvedType> typesToExpose)
exposeType
public void exposeType(UnresolvedType typeToExpose)
addPrivilegedAccesses
public void addPrivilegedAccesses(java.util.Collection<ResolvedMember> accessedMembers)
getCflowEntries
public java.util.Collection<ShadowMunger> getCflowEntries()
replaceWith
public boolean replaceWith(CrosscuttingMembers other,
boolean careAboutShadowMungers)
- Updates the records if something has changed. This is called at most twice, firstly whilst collecting ITDs and declares. At
this point the CrosscuttingMembers we're comparing ourselves with doesn't know about shadowmungers. Therefore a straight
comparison with the existing list of shadowmungers would return that something has changed even though it might not have, so
in this first round we ignore the shadowMungers. The second time this is called is whilst we're preparing to weave. At this
point we know everything in the system and so we're able to compare the shadowMunger list. (see bug 129163)
- Parameters:
other
- careAboutShadowMungers
-
- Returns:
- true if something has changed since the last time this method was called, false otherwise
setPerClause
public void setPerClause(PerClause perClause)
getDeclareDominates
public java.util.List<Declare> getDeclareDominates()
getDeclareParents
public java.util.Collection<DeclareParents> getDeclareParents()
getDeclareSofts
public java.util.Collection<DeclareSoft> getDeclareSofts()
getShadowMungers
public java.util.List<ShadowMunger> getShadowMungers()
getTypeMungers
public java.util.List<ConcreteTypeMunger> getTypeMungers()
getLateTypeMungers
public java.util.List<ConcreteTypeMunger> getLateTypeMungers()
getDeclareAnnotationOnTypes
public java.util.Collection<DeclareAnnotation> getDeclareAnnotationOnTypes()
getDeclareAnnotationOnFields
public java.util.Collection<DeclareAnnotation> getDeclareAnnotationOnFields()
getDeclareAnnotationOnMethods
public java.util.Collection<DeclareAnnotation> getDeclareAnnotationOnMethods()
- includes declare @method and @constructor
getDeclareTypeErrorOrWarning
public java.util.Collection<DeclareTypeErrorOrWarning> getDeclareTypeErrorOrWarning()
getCflowBelowFields
public java.util.Map<java.lang.String,java.lang.Object> getCflowBelowFields()
getCflowFields
public java.util.Map<java.lang.String,java.lang.Object> getCflowFields()
clearCaches
public void clearCaches()