Top Description Fields Constructors Methods
org.aspectj.weaver

public Class CrosscuttingMembersSet

extends Object
Class Inheritance
Imports
java.io.IOException, java.util.ArrayList, .Collections, .HashMap, .HashSet, .LinkedHashSet, .List, .Map, .Set, org.aspectj.bridge.IMessage, .MessageUtil, org.aspectj.weaver.patterns.Declare, .DeclareAnnotation, .DeclareParents, .DeclareSoft, .DeclareTypeErrorOrWarning, .IVerificationRequired

This holds on to all CrosscuttingMembers for a world. It handles management of change.
Authors
Jim Hugunin, Andy Clement

Field Summary

Modifier and TypeField and Description
private boolean
private List<DeclareAnnotation>
private List<DeclareAnnotation>
private List<DeclareAnnotation>
private List<Declare>
private List<DeclareParents>
private List<DeclareSoft>
private List<DeclareTypeErrorOrWarning>
private List<ConcreteTypeMunger>
private final Map<ResolvedType, CrosscuttingMembers>
public int
private List<ShadowMunger>
private List<ConcreteTypeMunger>
private transient List<IVerificationRequired>
private transient World

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public void
public void
public boolean
public boolean

Returns:

whether or not that was a change to the global signature XXX for efficiency we will need a richer representation than this
addOrReplaceAspect
(ResolvedType aspectType, boolean inWeavingPhase)

private boolean
addOrReplaceDescendantsOf(ResolvedType aspectType, boolean inWeavePhase)

private void
public boolean
public boolean
private boolean

Returns:

true if this aspect should be excluded because of a parents' missing dependencies
excludeDueToParentAspectHavingUnresolvedDependency
(ResolvedType
the aspect whose parents should be checked
aspectType
)

Check if any parent aspects of the supplied aspect have unresolved dependencies (and so should cause this aspect to be turned off).

public ResolvedType
public List<DeclareAnnotation>

Returns:

an amalgamation of the declare @field statements.
getDeclareAnnotationOnFields
()

public List<DeclareAnnotation>

Returns:

an amalgamation of the declare @method/@constructor statements.
getDeclareAnnotationOnMethods
()

public List<DeclareAnnotation>

Returns:

an amalgamation of the declare @type statements.
getDeclareAnnotationOnTypes
()

public List<Declare>
public List<DeclareParents>
public List<DeclareSoft>
public List<DeclareTypeErrorOrWarning>
getDeclareTypeEows()

Return an amalgamation of the declare type eow statements

public List<ConcreteTypeMunger>
public List<ShadowMunger>
public List<ConcreteTypeMunger>
public List<ConcreteTypeMunger>

Returns:

a list of those mungers (list is empty if none found)
getTypeMungersOfKind
(ResolvedTypeMunger.Kind
the kind of munger requested
kind
)

Retrieve a subset of all known mungers, those of a specific kind.

public boolean
private boolean
isNewStylePrivilegedAccessMunger(ResolvedTypeMunger typeMunger)

Determine if the type munger is: (1) for privileged access (2) for a normally non visible field (3) is from an aspect wanting 'old style' (ie.

public void
recordNecessaryCheck(IVerificationRequired verification)

Record something that needs verifying when we believe the type system is complete.

public void
public void
verify()

Called when type bindings are complete - calls all registered verification objects in turn.

public void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

changedSinceLastResetback to summary
private boolean changedSinceLastReset
declareAnnotationOnFieldsback to summary
private List<DeclareAnnotation> declareAnnotationOnFields
declareAnnotationOnMethodsback to summary
private List<DeclareAnnotation> declareAnnotationOnMethods
declareAnnotationOnTypesback to summary
private List<DeclareAnnotation> declareAnnotationOnTypes
declareDominatesback to summary
private List<Declare> declareDominates
declareParentsback to summary
private List<DeclareParents> declareParents
declareSoftsback to summary
private List<DeclareSoft> declareSofts
declareTypeEowsback to summary
private List<DeclareTypeErrorOrWarning> declareTypeEows
lateTypeMungersback to summary
private List<ConcreteTypeMunger> lateTypeMungers
membersback to summary
private final Map<ResolvedType, CrosscuttingMembers> members
serializationVersionback to summary
public int serializationVersion
shadowMungersback to summary
private List<ShadowMunger> shadowMungers
typeMungersback to summary
private List<ConcreteTypeMunger> typeMungers
verificationListback to summary
private transient List<IVerificationRequired> verificationList
worldback to summary
private transient World world

Constructor Detail

CrosscuttingMembersSetback to summary
public CrosscuttingMembersSet(World world)

Method Detail

addAdviceLikeDeclaresback to summary
public void addAdviceLikeDeclares(ResolvedType aspectType)
addFixedCrosscuttingMembersback to summary
public void addFixedCrosscuttingMembers(ResolvedType aspectType)
addOrReplaceAspectback to summary
public boolean addOrReplaceAspect(ResolvedType aspectType)
addOrReplaceAspectback to summary
public boolean addOrReplaceAspect(ResolvedType aspectType, boolean inWeavingPhase)
Returns:boolean

whether or not that was a change to the global signature XXX for efficiency we will need a richer representation than this

addOrReplaceDescendantsOfback to summary
private boolean addOrReplaceDescendantsOf(ResolvedType aspectType, boolean inWeavePhase)
clearCachesback to summary
private void clearCaches()
containsAspectback to summary
public boolean containsAspect(UnresolvedType aspectType)
deleteAspectback to summary
public boolean deleteAspect(UnresolvedType aspectType)
excludeDueToParentAspectHavingUnresolvedDependencyback to summary
private boolean excludeDueToParentAspectHavingUnresolvedDependency(ResolvedType aspectType)

Check if any parent aspects of the supplied aspect have unresolved dependencies (and so should cause this aspect to be turned off).

Parameters
aspectType:ResolvedType

the aspect whose parents should be checked

Returns:boolean

true if this aspect should be excluded because of a parents' missing dependencies

findAspectDeclaringParentsback to summary
public ResolvedType findAspectDeclaringParents(DeclareParents p)
getDeclareAnnotationOnFieldsback to summary
public List<DeclareAnnotation> getDeclareAnnotationOnFields()
Returns:List<DeclareAnnotation>

an amalgamation of the declare @field statements.

getDeclareAnnotationOnMethodsback to summary
public List<DeclareAnnotation> getDeclareAnnotationOnMethods()
Returns:List<DeclareAnnotation>

an amalgamation of the declare @method/@constructor statements.

getDeclareAnnotationOnTypesback to summary
public List<DeclareAnnotation> getDeclareAnnotationOnTypes()
Returns:List<DeclareAnnotation>

an amalgamation of the declare @type statements.

getDeclareDominatesback to summary
public List<Declare> getDeclareDominates()
getDeclareParentsback to summary
public List<DeclareParents> getDeclareParents()
getDeclareSoftsback to summary
public List<DeclareSoft> getDeclareSofts()
getDeclareTypeEowsback to summary
public List<DeclareTypeErrorOrWarning> getDeclareTypeEows()

Return an amalgamation of the declare type eow statements

getLateTypeMungersback to summary
public List<ConcreteTypeMunger> getLateTypeMungers()
getShadowMungersback to summary
public List<ShadowMunger> getShadowMungers()
getTypeMungersback to summary
public List<ConcreteTypeMunger> getTypeMungers()
getTypeMungersOfKindback to summary
public List<ConcreteTypeMunger> getTypeMungersOfKind(ResolvedTypeMunger.Kind kind)

Retrieve a subset of all known mungers, those of a specific kind.

Parameters
kind:ResolvedTypeMunger.Kind

the kind of munger requested

Returns:List<ConcreteTypeMunger>

a list of those mungers (list is empty if none found)

hasChangedSinceLastResetback to summary
public boolean hasChangedSinceLastReset()
isNewStylePrivilegedAccessMungerback to summary
private boolean isNewStylePrivilegedAccessMunger(ResolvedTypeMunger typeMunger)

Determine if the type munger is: (1) for privileged access (2) for a normally non visible field (3) is from an aspect wanting 'old style' (ie. long) accessor names

recordNecessaryCheckback to summary
public void recordNecessaryCheck(IVerificationRequired verification)

Record something that needs verifying when we believe the type system is complete. Used for things that can't be verified as we go along - for example some recursive type variable references (pr133307)

resetback to summary
public void reset()
verifyback to summary
public void verify()

Called when type bindings are complete - calls all registered verification objects in turn.

writeback to summary
public void write(CompressingDataOutputStream stream) throws IOException