Package org.aspectj.weaver
Class AjcMemberMaker
java.lang.Object
org.aspectj.weaver.AjcMemberMaker
The AjcMemberMaker is responsible for creating the representations of methods/fields/etc that are placed in both aspects and
affected target types. It uses the NameMangler class to create the actual names that will be used.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedTypestatic UnresolvedType -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic ResolvedMemberajcPostClinitMethod(UnresolvedType declaringType)static ResolvedMemberajcPreClinitMethod(UnresolvedType declaringType)static Memberstatic Memberstatic ResolvedMemberbridgerToInterMethod(ResolvedMember meth, UnresolvedType aspectType)Sometimes the intertyped method requires a bridge method alongside it.static Memberstatic Memberstatic Memberstatic Memberstatic ResolvedMemberinitFailureCauseField(UnresolvedType declaringType)static ResolvedMemberinlineAccessMethodForFieldGet(UnresolvedType aspectType, Member field)static ResolvedMemberinlineAccessMethodForFieldSet(UnresolvedType aspectType, Member field)static ResolvedMemberinlineAccessMethodForMethod(UnresolvedType aspectType, ResolvedMember method)static ResolvedMemberinterConstructor(ResolvedType targetType, ResolvedMember constructor, UnresolvedType aspectType)static MemberinterfaceConstructor(ResolvedType resolvedTypeX)static ResolvedMemberinterFieldClassField(ResolvedMember field, UnresolvedType aspectType, boolean newStyle)This field goes on the class the field is declared onto.static ResolvedMemberinterFieldGetDispatcher(ResolvedMember field, UnresolvedType aspectType)This static method goes on the aspect that declares the inter-type fieldstatic ResolvedMemberinterFieldInitializer(ResolvedMember field, UnresolvedType aspectType)static ResolvedMemberinterFieldInterfaceField(ResolvedMember field, UnresolvedType onClass, UnresolvedType aspectType, boolean newStyle)This field goes on top-most implementers of the interface the field is declared ontostatic ResolvedMemberinterFieldInterfaceGetter(ResolvedMember field, ResolvedType onType, UnresolvedType aspectType)This instance method goes on the interface the field is declared onto as well as its top-most implementorsstatic ResolvedMemberinterFieldInterfaceSetter(ResolvedMember field, ResolvedType onType, UnresolvedType aspectType)This instance method goes on the interface the field is declared onto as well as its top-most implementorsstatic ResolvedMemberinterFieldSetDispatcher(ResolvedMember field, UnresolvedType aspectType)This static method goes on the aspect that declares the inter-type fieldstatic ResolvedMemberinterMethod(ResolvedMember meth, UnresolvedType aspectType, boolean onInterface)This method goes on the target type of the inter-type method.static ResolvedMemberinterMethodBody(ResolvedMember meth, UnresolvedType aspectType)This method goes on the declaring aspect of the inter-type method.static ResolvedMemberinterMethodBridger(ResolvedMember meth, UnresolvedType aspectType, boolean onInterface)This method goes on the target type of the inter-type method.static ResolvedMemberinterMethodDispatcher(ResolvedMember meth, UnresolvedType aspectType)This static method goes on the declaring aspect of the inter-type method.static ResolvedMemberitdAtDeclareParentsField(ResolvedType targetType, UnresolvedType itdType, UnresolvedType aspectType)static Memberstatic Memberstatic Memberstatic ResolvedMemberperCflowAspectOfMethod(UnresolvedType declaringType)static ResolvedMemberperCflowField(UnresolvedType declaringType)static ResolvedMemberperCflowHasAspectMethod(UnresolvedType declaringType)static ResolvedMemberperCflowPush(UnresolvedType declaringType)static ResolvedMemberperObjectAspectOfMethod(UnresolvedType declaringType)static ResolvedMemberperObjectBind(UnresolvedType declaringType)static ResolvedMemberperObjectField(UnresolvedType declaringType, ResolvedType aspectType)static ResolvedMemberperObjectHasAspectMethod(UnresolvedType declaringType)static ResolvedMemberperObjectInterfaceGet(UnresolvedType aspectType)static ResolvedMemberperObjectInterfaceSet(UnresolvedType aspectType)static UnresolvedTypeperObjectInterfaceType(UnresolvedType aspectType)static ResolvedMemberperSingletonAspectOfMethod(UnresolvedType declaringType)static ResolvedMemberperSingletonField(UnresolvedType declaringType)static ResolvedMemberperSingletonHasAspectMethod(UnresolvedType declaringType)static ResolvedMemberperTypeWithinAspectOfMethod(UnresolvedType declaringType, boolean inJava5Mode)static ResolvedMemberperTypeWithinCreateAspectInstance(UnresolvedType declaringType)static ResolvedMemberperTypeWithinField(UnresolvedType declaringType, ResolvedType aspectType)static ResolvedMemberperTypeWithinGetInstance(UnresolvedType declaringType)static ResolvedMemberperTypeWithinGetWithinTypeNameMethod(UnresolvedType declaringType, boolean inJava5Mode)static ResolvedMemberperTypeWithinHasAspectMethod(UnresolvedType declaringType, boolean inJava5Mode)static ResolvedMemberperTypeWithinLocalAspectOf(UnresolvedType shadowType, UnresolvedType aspectType)static ResolvedMemberperTypeWithinWithinTypeField(UnresolvedType declaringType, ResolvedType aspectType)static ResolvedMemberpostIntroducedConstructor(UnresolvedType aspectType, UnresolvedType targetType, UnresolvedType[] paramTypes)static ResolvedMemberpreIntroducedConstructor(UnresolvedType aspectType, UnresolvedType targetType, UnresolvedType[] paramTypes)static ResolvedMemberprivilegedAccessMethodForFieldGet(UnresolvedType aspectType, Member field, boolean shortSyntax)Return a resolvedmember representing the synthetic getter for the field.static ResolvedMemberprivilegedAccessMethodForFieldSet(UnresolvedType aspectType, Member field, boolean shortSyntax)Return a resolvedmember representing the synthetic setter for the field.static ResolvedMemberprivilegedAccessMethodForMethod(UnresolvedType aspectType, ResolvedMember method)static ResolvedMembersuperAccessMethod(UnresolvedType baseType, ResolvedMember method)static ResolvedMembertoObjectConversionMethod(UnresolvedType fromType)
-
Field Details
-
CFLOW_STACK_TYPE
-
AROUND_CLOSURE_TYPE
-
CONVERSIONS_TYPE
-
NO_ASPECT_BOUND_EXCEPTION
-
ASPECT_ANNOTATION
-
BEFORE_ANNOTATION
-
AROUND_ANNOTATION
-
AFTERRETURNING_ANNOTATION
-
AFTERTHROWING_ANNOTATION
-
AFTER_ANNOTATION
-
POINTCUT_ANNOTATION
-
DECLAREERROR_ANNOTATION
-
DECLAREWARNING_ANNOTATION
-
DECLAREPRECEDENCE_ANNOTATION
-
DECLAREPARENTS_ANNOTATION
-
DECLAREMIXIN_ANNOTATION
-
TYPEX_JOINPOINT
-
TYPEX_PROCEEDINGJOINPOINT
-
TYPEX_STATICJOINPOINT
-
TYPEX_ENCLOSINGSTATICJOINPOINT
-
-
Constructor Details
-
AjcMemberMaker
public AjcMemberMaker()
-
-
Method Details
-
ajcPreClinitMethod
-
ajcPostClinitMethod
-
noAspectBoundExceptionInit
-
noAspectBoundExceptionInit2
-
noAspectBoundExceptionInitWithCause
-
perCflowPush
-
perCflowField
-
perSingletonField
-
initFailureCauseField
-
perObjectField
-
perTypeWithinField
public static ResolvedMember perTypeWithinField(UnresolvedType declaringType, ResolvedType aspectType) -
perTypeWithinWithinTypeField
public static ResolvedMember perTypeWithinWithinTypeField(UnresolvedType declaringType, ResolvedType aspectType) -
perObjectBind
-
perTypeWithinGetInstance
-
perTypeWithinGetWithinTypeNameMethod
public static ResolvedMember perTypeWithinGetWithinTypeNameMethod(UnresolvedType declaringType, boolean inJava5Mode) -
perTypeWithinCreateAspectInstance
-
perObjectInterfaceType
-
perObjectInterfaceGet
-
perObjectInterfaceSet
-
perTypeWithinLocalAspectOf
public static ResolvedMember perTypeWithinLocalAspectOf(UnresolvedType shadowType, UnresolvedType aspectType) -
perSingletonAspectOfMethod
-
perSingletonHasAspectMethod
-
perCflowAspectOfMethod
-
perCflowHasAspectMethod
-
perObjectAspectOfMethod
-
perObjectHasAspectMethod
-
perTypeWithinAspectOfMethod
public static ResolvedMember perTypeWithinAspectOfMethod(UnresolvedType declaringType, boolean inJava5Mode) -
perTypeWithinHasAspectMethod
public static ResolvedMember perTypeWithinHasAspectMethod(UnresolvedType declaringType, boolean inJava5Mode) -
privilegedAccessMethodForMethod
public static ResolvedMember privilegedAccessMethodForMethod(UnresolvedType aspectType, ResolvedMember method) -
privilegedAccessMethodForFieldGet
public static ResolvedMember privilegedAccessMethodForFieldGet(UnresolvedType aspectType, Member field, boolean shortSyntax)Return a resolvedmember representing the synthetic getter for the field. The old style (<1.6.9) is a heavyweight static method with a long name. The new style (1.6.9 and later) is short, and reusable across aspects.- Parameters:
aspectType- the aspect attempting the accessfield- the field to be accessedshortSyntax- is the old (long) or new (short) style format being used- Returns:
- a resolvedmember representing the synthetic getter
-
privilegedAccessMethodForFieldSet
public static ResolvedMember privilegedAccessMethodForFieldSet(UnresolvedType aspectType, Member field, boolean shortSyntax)Return a resolvedmember representing the synthetic setter for the field. The old style (<1.6.9) is a heavyweight static method with a long name. The new style (1.6.9 and later) is short, not always static, and reusable across aspects.- Parameters:
aspectType- the aspect attempting the accessfield- the field to be accessedshortSyntax- is the old or new style format being used- Returns:
- a resolvedmember representing the synthetic setter
-
superAccessMethod
-
inlineAccessMethodForMethod
public static ResolvedMember inlineAccessMethodForMethod(UnresolvedType aspectType, ResolvedMember method) -
inlineAccessMethodForFieldGet
public static ResolvedMember inlineAccessMethodForFieldGet(UnresolvedType aspectType, Member field) -
inlineAccessMethodForFieldSet
public static ResolvedMember inlineAccessMethodForFieldSet(UnresolvedType aspectType, Member field) -
cflowStackPeekInstance
-
cflowStackPushInstance
-
cflowStackIsValid
-
cflowStackInit
-
aroundClosurePreInitializationField
-
aroundClosurePreInitializationGetter
-
preIntroducedConstructor
public static ResolvedMember preIntroducedConstructor(UnresolvedType aspectType, UnresolvedType targetType, UnresolvedType[] paramTypes) -
postIntroducedConstructor
public static ResolvedMember postIntroducedConstructor(UnresolvedType aspectType, UnresolvedType targetType, UnresolvedType[] paramTypes) -
itdAtDeclareParentsField
public static ResolvedMember itdAtDeclareParentsField(ResolvedType targetType, UnresolvedType itdType, UnresolvedType aspectType) -
interConstructor
public static ResolvedMember interConstructor(ResolvedType targetType, ResolvedMember constructor, UnresolvedType aspectType) -
interFieldInitializer
public static ResolvedMember interFieldInitializer(ResolvedMember field, UnresolvedType aspectType) -
interFieldSetDispatcher
public static ResolvedMember interFieldSetDispatcher(ResolvedMember field, UnresolvedType aspectType)This static method goes on the aspect that declares the inter-type field -
interFieldGetDispatcher
public static ResolvedMember interFieldGetDispatcher(ResolvedMember field, UnresolvedType aspectType)This static method goes on the aspect that declares the inter-type field -
interFieldClassField
public static ResolvedMember interFieldClassField(ResolvedMember field, UnresolvedType aspectType, boolean newStyle)This field goes on the class the field is declared onto. Field names for ITDs onto interfaces are handled below. -
interFieldInterfaceField
public static ResolvedMember interFieldInterfaceField(ResolvedMember field, UnresolvedType onClass, UnresolvedType aspectType, boolean newStyle)This field goes on top-most implementers of the interface the field is declared onto -
interFieldInterfaceSetter
public static ResolvedMember interFieldInterfaceSetter(ResolvedMember field, ResolvedType onType, UnresolvedType aspectType)This instance method goes on the interface the field is declared onto as well as its top-most implementors -
interFieldInterfaceGetter
public static ResolvedMember interFieldInterfaceGetter(ResolvedMember field, ResolvedType onType, UnresolvedType aspectType)This instance method goes on the interface the field is declared onto as well as its top-most implementors -
interMethod
public static ResolvedMember interMethod(ResolvedMember meth, UnresolvedType aspectType, boolean onInterface)This method goes on the target type of the inter-type method. (and possibly the topmost-implementors, if the target type is an interface). The implementation will call the interMethodDispatch method on the aspect. -
interMethodBridger
public static ResolvedMember interMethodBridger(ResolvedMember meth, UnresolvedType aspectType, boolean onInterface)This method goes on the target type of the inter-type method. (and possibly the topmost-implementors, if the target type is an interface). The implementation will call the interMethodDispatch method on the aspect. -
bridgerToInterMethod
Sometimes the intertyped method requires a bridge method alongside it. For example if the method 'N SomeI<N>.m()' is put onto an interface 'interface I<N extends Number>' and then a concrete implementation is 'class C implements I<Float>' then the ITD on the interface will be 'Number m()', whereas the ITD on the 'topmostimplementor' will be 'Float m()'. A bridge method needs to be created in the topmostimplementor 'Number m()' that delegates to 'Float m()' -
interMethodDispatcher
This static method goes on the declaring aspect of the inter-type method. The implementation calls the interMethodBody() method on the aspect. -
interMethodBody
This method goes on the declaring aspect of the inter-type method. It contains the real body of the ITD method. -
toObjectConversionMethod
-
interfaceConstructor
-