Package org.aspectj.weaver
Class ResolvedMemberImpl
java.lang.Object
org.aspectj.weaver.MemberImpl
org.aspectj.weaver.ResolvedMemberImpl
- All Implemented Interfaces:
Comparable<Member>
,AnnotatedElement
,IHasPosition
,Member
,ResolvedMember
,TypeVariableDeclaringElement
- Direct Known Subclasses:
ReflectionBasedResolvedMemberImpl
,ResolvedPointcutDefinition
Represent a resolved member. Components of it are expected to exist. This member will correspond to a real member *unless* it is
being used to represent the effect of an ITD.
- Author:
- PARC, Andy Clement
-
Field Summary
Modifier and TypeFieldDescriptionprotected AnnotationAJ[]
protected ResolvedType[]
protected ResolvedMember
if this member is a parameterized version of a member in a generic type, then this field holds a reference to the member we parameterize.protected UnresolvedType[]
protected int
protected AnnotationAJ[][]
protected ResolvedType[][]
static boolean
protected ISourceContext
protected int
protected TypeVariable[]
Fields inherited from class org.aspectj.weaver.MemberImpl
declaringType, kind, modifiers, name, parameterTypes, returnType
Fields inherited from interface org.aspectj.weaver.Member
ADVICE, CONSTRUCTOR, FIELD, HANDLER, METHOD, MONITORENTER, MONITOREXIT, NO_PARAMETER_ANNOTATION_TYPES, NO_PARAMETER_ANNOTATIONXS, NONE, POINTCUT, STATIC_INITIALIZATION
Fields inherited from interface org.aspectj.weaver.ResolvedMember
NONE
-
Constructor Summary
ConstructorDescriptionResolvedMemberImpl
(MemberKind kind, UnresolvedType declaringType, int modifiers, String name, String signature) ResolvedMemberImpl
(MemberKind kind, UnresolvedType declaringType, int modifiers, UnresolvedType returnType, String name, UnresolvedType[] parameterTypes) ResolvedMemberImpl
(MemberKind kind, UnresolvedType declaringType, int modifiers, UnresolvedType returnType, String name, UnresolvedType[] parameterTypes, UnresolvedType[] checkedExceptions) ResolvedMemberImpl
(MemberKind kind, UnresolvedType declaringType, int modifiers, UnresolvedType returnType, String name, UnresolvedType[] parameterTypes, UnresolvedType[] checkedExceptions, ResolvedMember backingGenericMember) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addAnnotation
(AnnotationAJ annotation) static void
appendSigWithTypeVarBoundsRemoved
(UnresolvedType aType, StringBuffer toBuffer, Set<UnresolvedType> alreadyUsedTypeVars) void
getAnnotationOfType
(UnresolvedType ofType) int
getEnd()
The ending index of this location in the character stream This points to the last character in this token.final UnresolvedType[]
getExceptions
(World world) Get the TypeXs of the parameter types, taking generic signature into accountGet the UnresolvedType for the return type, taking generic signature into accountstatic JoinPointSignature[]
getJoinPointSignatures
(Member joinPointSignature, World inAWorld) Compute the full set of signatures for a member.final int
final int
getModifiers
(World world) AnnotationAJ[][]
ResolvedType[][]
String[]
final String[]
getParameterNames
(World world) Return the erased form of the signature with bounds collapsed for type variables, etc.Return the member generic signature that would be suitable for inclusion in a class file Signature attribute.getSourceContext
(World world) int
getStart()
The starting index of this location in the character stream.getTypeVariableNamed
(String name) boolean
hasAnnotation
(UnresolvedType ofType) Check if this member has an annotation of the specified type.boolean
boolean
If this member is defined by a parameterized super-type, return the erasure of that member.boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
isEquivalentTo
(Object other) boolean
isPublic()
boolean
boolean
boolean
isVisible
(ResolvedType fromType) boolean
matches
(ResolvedMember aCandidateMatch, boolean ignoreGenerics) Returns true if this member matches the other.protected UnresolvedType
parameterize
(UnresolvedType aType, Map<String, UnresolvedType> typeVariableMap, boolean inParameterizedType, World w) Replace occurrences of type variables in the signature with values contained in the map.parameterizedWith
(UnresolvedType[] typeParameters, ResolvedType newDeclaringType, boolean isParameterized) parameterizedWith
(UnresolvedType[] typeParameters, ResolvedType newDeclaringType, boolean isParameterized, List<String> aliases) Return a resolvedmember in which all the type variables in the signature have been replaced with the given bindings.static ResolvedMemberImpl
readResolvedMember
(VersionedDataInputStream s, ISourceContext sourceContext) static ResolvedMember[]
void
resetKind
(MemberKind newKind) void
resetModifiers
(int newModifiers) void
For ITDs, we use the default factory methods to build a resolved member, then alter a couple of characteristics using this method - this is safe.void
protected void
setAjSynthetic
(boolean b) void
setAnnotatedElsewhere
(boolean b) void
setAnnotations
(AnnotationAJ[] annotations) void
setAnnotationTypes
(ResolvedType[] annotationTypes) void
setCheckedExceptions
(UnresolvedType[] checkedExceptions) void
final void
setParameterNames
(String[] pnames) void
setPosition
(int sourceStart, int sourceEnd) void
setSourceContext
(ISourceContext sourceContext) void
setTypeVariables
(TypeVariable[] tvars) void
Useful for writing tests, returns *everything* we know about this member.void
static void
writeArray
(ResolvedMember[] members, CompressingDataOutputStream s) Methods inherited from class org.aspectj.weaver.MemberImpl
canBeParameterized, compareTo, equals, equalsApartFromDeclaringType, field, getArity, getDeclaringType, getDeclaringTypes, getJoinPointSignatures, getKind, getName, getParameterSignature, getParameterTypes, getReturnType, getSignature, getType, hashCode, isInterface, isPrivate, isStatic, makeExceptionHandlerSignature, method, method, monitorEnter, monitorExit, pointcut, toString, typesToSignature, typesToSignature, wipeJoinpointSignatures
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.aspectj.weaver.Member
canBeParameterized, compareTo, getArity, getDeclaringType, getDeclaringTypes, getJoinPointSignatures, getKind, getName, getParameterSignature, getParameterTypes, getReturnType, getSignature, getType
Methods inherited from interface org.aspectj.weaver.ResolvedMember
equalsApartFromDeclaringType
-
Field Details
-
checkedExceptions
-
backingGenericMember
if this member is a parameterized version of a member in a generic type, then this field holds a reference to the member we parameterize. -
annotations
-
annotationTypes
-
parameterAnnotations
-
parameterAnnotationTypes
-
typeVariables
-
start
protected int start -
end
protected int end -
sourceContext
-
showParameterNames
public static boolean showParameterNames
-
-
Constructor Details
-
ResolvedMemberImpl
public ResolvedMemberImpl(MemberKind kind, UnresolvedType declaringType, int modifiers, UnresolvedType returnType, String name, UnresolvedType[] parameterTypes) -
ResolvedMemberImpl
public ResolvedMemberImpl(MemberKind kind, UnresolvedType declaringType, int modifiers, UnresolvedType returnType, String name, UnresolvedType[] parameterTypes, UnresolvedType[] checkedExceptions) -
ResolvedMemberImpl
public ResolvedMemberImpl(MemberKind kind, UnresolvedType declaringType, int modifiers, UnresolvedType returnType, String name, UnresolvedType[] parameterTypes, UnresolvedType[] checkedExceptions, ResolvedMember backingGenericMember) -
ResolvedMemberImpl
public ResolvedMemberImpl(MemberKind kind, UnresolvedType declaringType, int modifiers, String name, String signature)
-
-
Method Details
-
getJoinPointSignatures
public static JoinPointSignature[] getJoinPointSignatures(Member joinPointSignature, World inAWorld) Compute the full set of signatures for a member. This walks up the hierarchy giving the ResolvedMember in each defining type in the hierarchy. A shadowMember can be created with a target type (declaring type) that does not actually define the member. This is ok as long as the member is inherited in the declaring type. Each declaring type in the line to the actual declaring type is added as an additional signature. For example: class A { void foo(); } class B extends A {} shadowMember : void B.foo() gives { void B.foo(), void A.foo() }- Parameters:
joinPointSignature
-inAWorld
-
-
getModifiers
- Specified by:
getModifiers
in interfaceMember
- Specified by:
getModifiers
in interfaceResolvedMember
- Overrides:
getModifiers
in classMemberImpl
-
getModifiers
public final int getModifiers()- Specified by:
getModifiers
in interfaceMember
- Specified by:
getModifiers
in interfaceResolvedMember
- Overrides:
getModifiers
in classMemberImpl
-
getExceptions
- Specified by:
getExceptions
in interfaceMember
- Specified by:
getExceptions
in interfaceResolvedMember
- Overrides:
getExceptions
in classMemberImpl
-
getExceptions
- Specified by:
getExceptions
in interfaceResolvedMember
-
getAssociatedShadowMunger
- Specified by:
getAssociatedShadowMunger
in interfaceResolvedMember
-
isAjSynthetic
public boolean isAjSynthetic()- Specified by:
isAjSynthetic
in interfaceResolvedMember
-
setAjSynthetic
protected void setAjSynthetic(boolean b) -
hasAnnotations
public boolean hasAnnotations() -
hasAnnotation
Check if this member has an annotation of the specified type. If the member has a backing generic member then this member represents a parameterization of a member in a generic type and the annotations available on the backing generic member should be used.- Specified by:
hasAnnotation
in interfaceAnnotatedElement
- Specified by:
hasAnnotation
in interfaceResolvedMember
- Parameters:
ofType
- the type of the annotation being searched for- Returns:
- true if the annotation is found on this member or its backing generic member
-
getAnnotationTypes
- Specified by:
getAnnotationTypes
in interfaceAnnotatedElement
- Specified by:
getAnnotationTypes
in interfaceResolvedMember
-
getAnnotationDefaultValue
- Specified by:
getAnnotationDefaultValue
in interfaceResolvedMember
-
getAnnotations
- Specified by:
getAnnotations
in interfaceMember
- Specified by:
getAnnotations
in interfaceResolvedMember
- Overrides:
getAnnotations
in classMemberImpl
-
getAnnotationOfType
- Specified by:
getAnnotationOfType
in interfaceAnnotatedElement
-
setAnnotations
- Specified by:
setAnnotations
in interfaceResolvedMember
-
setAnnotationTypes
- Specified by:
setAnnotationTypes
in interfaceResolvedMember
-
getParameterAnnotationTypes
- Specified by:
getParameterAnnotationTypes
in interfaceResolvedMember
-
getParameterAnnotations
- Specified by:
getParameterAnnotations
in interfaceResolvedMember
-
addAnnotation
- Specified by:
addAnnotation
in interfaceResolvedMember
-
isBridgeMethod
public boolean isBridgeMethod()- Specified by:
isBridgeMethod
in interfaceResolvedMember
-
isVarargsMethod
public boolean isVarargsMethod()- Specified by:
isVarargsMethod
in interfaceResolvedMember
-
setVarargsMethod
public void setVarargsMethod() -
isSynthetic
public boolean isSynthetic()- Specified by:
isSynthetic
in interfaceResolvedMember
-
write
- Specified by:
write
in interfaceResolvedMember
- Throws:
IOException
-
getSignatureForAttribute
Return the member generic signature that would be suitable for inclusion in a class file Signature attribute. For: <T> List<String> getThem(T t) {} we would create: <T:Ljava/lang/Object;>(TT;)Ljava/util/List<Ljava/lang/String;>;;- Returns:
- the generic signature for the member that could be inserted into a class file
-
getGenericSignature
-
writeArray
public static void writeArray(ResolvedMember[] members, CompressingDataOutputStream s) throws IOException - Throws:
IOException
-
readResolvedMember
public static ResolvedMemberImpl readResolvedMember(VersionedDataInputStream s, ISourceContext sourceContext) throws IOException - Throws:
IOException
-
readResolvedMemberArray
public static ResolvedMember[] readResolvedMemberArray(VersionedDataInputStream s, ISourceContext context) throws IOException - Throws:
IOException
-
resolve
- Specified by:
resolve
in interfaceMember
- Overrides:
resolve
in classMemberImpl
-
getSourceContext
- Specified by:
getSourceContext
in interfaceResolvedMember
-
getParameterNames
- Specified by:
getParameterNames
in interfaceResolvedMember
-
setParameterNames
- Specified by:
setParameterNames
in interfaceResolvedMember
-
getParameterNames
- Specified by:
getParameterNames
in interfaceMember
- Specified by:
getParameterNames
in interfaceResolvedMember
- Overrides:
getParameterNames
in classMemberImpl
-
getEffectiveSignature
- Specified by:
getEffectiveSignature
in interfaceResolvedMember
-
getSourceLocation
- Specified by:
getSourceLocation
in interfaceResolvedMember
-
getEnd
public int getEnd()Description copied from interface:IHasPosition
The ending index of this location in the character stream This points to the last character in this token. If a location truly had no contents, then start == end + 1. We don't recommend this.- Specified by:
getEnd
in interfaceIHasPosition
- Specified by:
getEnd
in interfaceResolvedMember
-
getSourceContext
- Specified by:
getSourceContext
in interfaceResolvedMember
-
getStart
public int getStart()Description copied from interface:IHasPosition
The starting index of this location in the character stream.- Specified by:
getStart
in interfaceIHasPosition
- Specified by:
getStart
in interfaceResolvedMember
-
setPosition
public void setPosition(int sourceStart, int sourceEnd) - Specified by:
setPosition
in interfaceResolvedMember
-
setDeclaringType
-
setSourceContext
- Specified by:
setSourceContext
in interfaceResolvedMember
-
isAbstract
public boolean isAbstract()- Specified by:
isAbstract
in interfaceResolvedMember
-
isPublic
public boolean isPublic()- Specified by:
isPublic
in interfaceResolvedMember
-
isDefault
public boolean isDefault()- Specified by:
isDefault
in interfaceResolvedMember
-
isVisible
- Specified by:
isVisible
in interfaceResolvedMember
-
setCheckedExceptions
- Specified by:
setCheckedExceptions
in interfaceResolvedMember
-
setAnnotatedElsewhere
public void setAnnotatedElsewhere(boolean b) - Specified by:
setAnnotatedElsewhere
in interfaceResolvedMember
-
isAnnotatedElsewhere
public boolean isAnnotatedElsewhere()- Specified by:
isAnnotatedElsewhere
in interfaceResolvedMember
-
getGenericReturnType
Get the UnresolvedType for the return type, taking generic signature into account- Specified by:
getGenericReturnType
in interfaceMember
- Specified by:
getGenericReturnType
in interfaceResolvedMember
- Overrides:
getGenericReturnType
in classMemberImpl
-
getGenericParameterTypes
Get the TypeXs of the parameter types, taking generic signature into account- Specified by:
getGenericParameterTypes
in interfaceMember
- Specified by:
getGenericParameterTypes
in interfaceResolvedMember
- Overrides:
getGenericParameterTypes
in classMemberImpl
-
parameterizedWith
public ResolvedMemberImpl parameterizedWith(UnresolvedType[] typeParameters, ResolvedType newDeclaringType, boolean isParameterized) - Specified by:
parameterizedWith
in interfaceResolvedMember
-
parameterizedWith
public ResolvedMemberImpl parameterizedWith(UnresolvedType[] typeParameters, ResolvedType newDeclaringType, boolean isParameterized, List<String> aliases) Return a resolvedmember in which all the type variables in the signature have been replaced with the given bindings. The 'isParameterized' flag tells us whether we are creating a raw type version or not. if (isParameterized) then List<T> will turn into List<String> (for example) - if (!isParameterized) then List<T> will turn into List.- Specified by:
parameterizedWith
in interfaceResolvedMember
-
parameterizedWith
Replace occurrences of type variables in the signature with values contained in the map. The map is of the form A=String,B=Integer and so a signature List<A> Foo.m(B i) {} would become List<String> Foo.m(Integer i) {}- Specified by:
parameterizedWith
in interfaceResolvedMember
-
setTypeVariables
- Specified by:
setTypeVariables
in interfaceResolvedMember
-
getTypeVariables
- Specified by:
getTypeVariables
in interfaceResolvedMember
-
parameterize
protected UnresolvedType parameterize(UnresolvedType aType, Map<String, UnresolvedType> typeVariableMap, boolean inParameterizedType, World w) -
hasBackingGenericMember
public boolean hasBackingGenericMember()If this member is defined by a parameterized super-type, return the erasure of that member. For example: interface I<T> { T foo(T aTea); } class C implements I<String> { String foo(String aString) { return "something"; } } The resolved member for C.foo has signature String foo(String). The erasure of that member is Object foo(Object) -- use upper bound of type variable. A type is a supertype of itself.- Specified by:
hasBackingGenericMember
in interfaceResolvedMember
-
getBackingGenericMember
- Specified by:
getBackingGenericMember
in interfaceResolvedMember
-
resetName
For ITDs, we use the default factory methods to build a resolved member, then alter a couple of characteristics using this method - this is safe. -
resetKind
-
resetModifiers
public void resetModifiers(int newModifiers) -
resetReturnTypeToObjectArray
public void resetReturnTypeToObjectArray() -
matches
Returns true if this member matches the other. The matching takes into account name and parameter types only. When comparing parameter types, we allow any type variable to match any other type variable regardless of bounds.- Specified by:
matches
in interfaceResolvedMember
-
getParameterSignatureErased
Return the erased form of the signature with bounds collapsed for type variables, etc. Does not include the return type, @see getParam- Specified by:
getParameterSignatureErased
in interfaceResolvedMember
-
getSignatureErased
- Specified by:
getSignatureErased
in interfaceResolvedMember
-
appendSigWithTypeVarBoundsRemoved
public static void appendSigWithTypeVarBoundsRemoved(UnresolvedType aType, StringBuffer toBuffer, Set<UnresolvedType> alreadyUsedTypeVars) -
toDebugString
Useful for writing tests, returns *everything* we know about this member.- Specified by:
toDebugString
in interfaceResolvedMember
-
toGenericString
- Specified by:
toGenericString
in interfaceResolvedMember
-
isCompatibleWith
- Specified by:
isCompatibleWith
in interfaceResolvedMember
-
getTypeVariableNamed
- Specified by:
getTypeVariableNamed
in interfaceTypeVariableDeclaringElement
-
evictWeavingState
public void evictWeavingState()- Specified by:
evictWeavingState
in interfaceResolvedMember
-
isEquivalentTo
-
isDefaultConstructor
public boolean isDefaultConstructor()- Specified by:
isDefaultConstructor
in interfaceResolvedMember
-