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
FieldsModifier and TypeFieldDescriptionprotected AnnotationAJ[]protected ResolvedType[]protected ResolvedMemberif 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 intprotected AnnotationAJ[][]protected ResolvedType[][]static booleanprotected ISourceContextprotected intprotected TypeVariable[]Fields inherited from class org.aspectj.weaver.MemberImpl
declaringType, kind, modifiers, name, parameterTypes, returnTypeFields inherited from interface org.aspectj.weaver.Member
ADVICE, CONSTRUCTOR, FIELD, HANDLER, METHOD, MONITORENTER, MONITOREXIT, NO_PARAMETER_ANNOTATION_TYPES, NO_PARAMETER_ANNOTATIONXS, NONE, POINTCUT, STATIC_INITIALIZATIONFields inherited from interface org.aspectj.weaver.ResolvedMember
NONE -
Constructor Summary
ConstructorsConstructorDescriptionResolvedMemberImpl(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 TypeMethodDescriptionvoidaddAnnotation(AnnotationAJ annotation) static voidappendSigWithTypeVarBoundsRemoved(UnresolvedType aType, StringBuffer toBuffer, Set<UnresolvedType> alreadyUsedTypeVars) voidgetAnnotationOfType(UnresolvedType ofType) intgetEnd()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 intfinal intgetModifiers(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) intgetStart()The starting index of this location in the character stream.getTypeVariableNamed(String name) booleanhasAnnotation(UnresolvedType ofType) Check if this member has an annotation of the specified type.booleanbooleanIf this member is defined by a parameterized super-type, return the erasure of that member.booleanbooleanbooleanbooleanbooleanbooleanbooleanbooleanisEquivalentTo(Object other) booleanisPublic()booleanbooleanbooleanisVisible(ResolvedType fromType) booleanmatches(ResolvedMember aCandidateMatch, boolean ignoreGenerics) Returns true if this member matches the other.protected UnresolvedTypeparameterize(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 ResolvedMemberImplreadResolvedMember(VersionedDataInputStream s, ISourceContext sourceContext) static ResolvedMember[]voidresetKind(MemberKind newKind) voidresetModifiers(int newModifiers) voidFor ITDs, we use the default factory methods to build a resolved member, then alter a couple of characteristics using this method - this is safe.voidprotected voidsetAjSynthetic(boolean b) voidsetAnnotatedElsewhere(boolean b) voidsetAnnotations(AnnotationAJ[] annotations) voidsetAnnotationTypes(ResolvedType[] annotationTypes) voidsetCheckedExceptions(UnresolvedType[] checkedExceptions) voidfinal voidsetParameterNames(String[] pnames) voidsetPosition(int sourceStart, int sourceEnd) voidsetSourceContext(ISourceContext sourceContext) voidsetTypeVariables(TypeVariable[] tvars) voidUseful for writing tests, returns *everything* we know about this member.voidstatic voidwriteArray(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, wipeJoinpointSignaturesMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.aspectj.weaver.Member
canBeParameterized, compareTo, getArity, getDeclaringType, getDeclaringTypes, getJoinPointSignatures, getKind, getName, getParameterSignature, getParameterTypes, getReturnType, getSignature, getTypeMethods 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:
getModifiersin interfaceMember- Specified by:
getModifiersin interfaceResolvedMember- Overrides:
getModifiersin classMemberImpl
-
getModifiers
public final int getModifiers()- Specified by:
getModifiersin interfaceMember- Specified by:
getModifiersin interfaceResolvedMember- Overrides:
getModifiersin classMemberImpl
-
getExceptions
- Specified by:
getExceptionsin interfaceMember- Specified by:
getExceptionsin interfaceResolvedMember- Overrides:
getExceptionsin classMemberImpl
-
getExceptions
- Specified by:
getExceptionsin interfaceResolvedMember
-
getAssociatedShadowMunger
- Specified by:
getAssociatedShadowMungerin interfaceResolvedMember
-
isAjSynthetic
public boolean isAjSynthetic()- Specified by:
isAjSyntheticin 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:
hasAnnotationin interfaceAnnotatedElement- Specified by:
hasAnnotationin 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:
getAnnotationTypesin interfaceAnnotatedElement- Specified by:
getAnnotationTypesin interfaceResolvedMember
-
getAnnotationDefaultValue
- Specified by:
getAnnotationDefaultValuein interfaceResolvedMember
-
getAnnotations
- Specified by:
getAnnotationsin interfaceMember- Specified by:
getAnnotationsin interfaceResolvedMember- Overrides:
getAnnotationsin classMemberImpl
-
getAnnotationOfType
- Specified by:
getAnnotationOfTypein interfaceAnnotatedElement
-
setAnnotations
- Specified by:
setAnnotationsin interfaceResolvedMember
-
setAnnotationTypes
- Specified by:
setAnnotationTypesin interfaceResolvedMember
-
getParameterAnnotationTypes
- Specified by:
getParameterAnnotationTypesin interfaceResolvedMember
-
getParameterAnnotations
- Specified by:
getParameterAnnotationsin interfaceResolvedMember
-
addAnnotation
- Specified by:
addAnnotationin interfaceResolvedMember
-
isBridgeMethod
public boolean isBridgeMethod()- Specified by:
isBridgeMethodin interfaceResolvedMember
-
isVarargsMethod
public boolean isVarargsMethod()- Specified by:
isVarargsMethodin interfaceResolvedMember
-
setVarargsMethod
public void setVarargsMethod() -
isSynthetic
public boolean isSynthetic()- Specified by:
isSyntheticin interfaceResolvedMember
-
write
- Specified by:
writein 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:
resolvein interfaceMember- Overrides:
resolvein classMemberImpl
-
getSourceContext
- Specified by:
getSourceContextin interfaceResolvedMember
-
getParameterNames
- Specified by:
getParameterNamesin interfaceResolvedMember
-
setParameterNames
- Specified by:
setParameterNamesin interfaceResolvedMember
-
getParameterNames
- Specified by:
getParameterNamesin interfaceMember- Specified by:
getParameterNamesin interfaceResolvedMember- Overrides:
getParameterNamesin classMemberImpl
-
getEffectiveSignature
- Specified by:
getEffectiveSignaturein interfaceResolvedMember
-
getSourceLocation
- Specified by:
getSourceLocationin interfaceResolvedMember
-
getEnd
public int getEnd()Description copied from interface:IHasPositionThe 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:
getEndin interfaceIHasPosition- Specified by:
getEndin interfaceResolvedMember
-
getSourceContext
- Specified by:
getSourceContextin interfaceResolvedMember
-
getStart
public int getStart()Description copied from interface:IHasPositionThe starting index of this location in the character stream.- Specified by:
getStartin interfaceIHasPosition- Specified by:
getStartin interfaceResolvedMember
-
setPosition
public void setPosition(int sourceStart, int sourceEnd) - Specified by:
setPositionin interfaceResolvedMember
-
setDeclaringType
-
setSourceContext
- Specified by:
setSourceContextin interfaceResolvedMember
-
isAbstract
public boolean isAbstract()- Specified by:
isAbstractin interfaceResolvedMember
-
isPublic
public boolean isPublic()- Specified by:
isPublicin interfaceResolvedMember
-
isDefault
public boolean isDefault()- Specified by:
isDefaultin interfaceResolvedMember
-
isVisible
- Specified by:
isVisiblein interfaceResolvedMember
-
setCheckedExceptions
- Specified by:
setCheckedExceptionsin interfaceResolvedMember
-
setAnnotatedElsewhere
public void setAnnotatedElsewhere(boolean b) - Specified by:
setAnnotatedElsewherein interfaceResolvedMember
-
isAnnotatedElsewhere
public boolean isAnnotatedElsewhere()- Specified by:
isAnnotatedElsewherein interfaceResolvedMember
-
getGenericReturnType
Get the UnresolvedType for the return type, taking generic signature into account- Specified by:
getGenericReturnTypein interfaceMember- Specified by:
getGenericReturnTypein interfaceResolvedMember- Overrides:
getGenericReturnTypein classMemberImpl
-
getGenericParameterTypes
Get the TypeXs of the parameter types, taking generic signature into account- Specified by:
getGenericParameterTypesin interfaceMember- Specified by:
getGenericParameterTypesin interfaceResolvedMember- Overrides:
getGenericParameterTypesin classMemberImpl
-
parameterizedWith
public ResolvedMemberImpl parameterizedWith(UnresolvedType[] typeParameters, ResolvedType newDeclaringType, boolean isParameterized) - Specified by:
parameterizedWithin 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:
parameterizedWithin 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:
parameterizedWithin interfaceResolvedMember
-
setTypeVariables
- Specified by:
setTypeVariablesin interfaceResolvedMember
-
getTypeVariables
- Specified by:
getTypeVariablesin 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:
hasBackingGenericMemberin interfaceResolvedMember
-
getBackingGenericMember
- Specified by:
getBackingGenericMemberin 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:
matchesin 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:
getParameterSignatureErasedin interfaceResolvedMember
-
getSignatureErased
- Specified by:
getSignatureErasedin 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:
toDebugStringin interfaceResolvedMember
-
toGenericString
- Specified by:
toGenericStringin interfaceResolvedMember
-
isCompatibleWith
- Specified by:
isCompatibleWithin interfaceResolvedMember
-
getTypeVariableNamed
- Specified by:
getTypeVariableNamedin interfaceTypeVariableDeclaringElement
-
evictWeavingState
public void evictWeavingState()- Specified by:
evictWeavingStatein interfaceResolvedMember
-
isEquivalentTo
-
isDefaultConstructor
public boolean isDefaultConstructor()- Specified by:
isDefaultConstructorin interfaceResolvedMember
-