Package org.aspectj.weaver
Class MethodDelegateTypeMunger
java.lang.Object
org.aspectj.weaver.ResolvedTypeMunger
org.aspectj.weaver.MethodDelegateTypeMunger
Type munger for annotation style ITD declare parents. with an interface AND an implementation. Given the aspect that has a field
public static Interface fieldI = ... // impl. we will weave in the Interface' methods and delegate to the aspect public static
field fieldI
Note: this munger DOES NOT handles the interface addition to the target classes - a regular Parent kinded munger must be added in
coordination.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class org.aspectj.weaver.ResolvedTypeMunger
ResolvedTypeMunger.Kind -
Field Summary
Fields inherited from class org.aspectj.weaver.ResolvedTypeMunger
AnnotationOnType, Constructor, declaredSignature, Field, FieldHost, InnerClass, kind, Method, MethodDelegate, MethodDelegate2, Parent, PerObjectInterface, PerTypeWithinInterface, PrivilegedAccess, signature, SUPER_DISPATCH_NAME, typeVariableAliases -
Constructor Summary
ConstructorsConstructorDescriptionMethodDelegateTypeMunger(ResolvedMember signature, UnresolvedType aspect, String implClassName, TypePattern typePattern) Construct a new type munger for @AspectJ ITDMethodDelegateTypeMunger(ResolvedMember signature, UnresolvedType aspect, String implClassName, TypePattern typePattern, String factoryMethodName, String factoryMethodSignature) -
Method Summary
Modifier and TypeMethodDescriptionbooleanNeeded for reweavablebooleanbooleanSome type mungers are created purely to help with the implementation of shadow mungers.getDelegate(ResolvedType targetType) inthashCode()booleanbooleanmatches(ResolvedType matchType, ResolvedType aspectType) Match based on given type pattern, only classes can be matchedstatic ResolvedTypeMungerreadMethod(VersionedDataInputStream s, ISourceContext context, boolean isEnhanced) voidsetFieldType(UnresolvedType fieldType) booleanvoidvoidMethods inherited from class org.aspectj.weaver.ResolvedTypeMunger
getDeclaredSignature, getDeclaringType, getKind, getMatchingSyntheticMember, getSignature, getSourceLocation, getSuperMethodsCalled, getTypeVariableAliases, hasTypeVariableAliases, isLateMunger, needsAccessToTopmostImplementor, parameterizedFor, parameterizeWith, read, readInTypeAliases, readSourceLocation, readSuperMethodsCalled, setDeclaredSignature, setSourceLocation, setSuperMethodsCalled, setTypeVariableAliases, sharesTypeVariablesWithGenericType, toString, writeOutTypeAliases, writeSourceLocation, writeSuperMethodsCalled
-
Constructor Details
-
MethodDelegateTypeMunger
public MethodDelegateTypeMunger(ResolvedMember signature, UnresolvedType aspect, String implClassName, TypePattern typePattern) Construct a new type munger for @AspectJ ITD- Parameters:
signature-aspect-implClassName-typePattern-
-
MethodDelegateTypeMunger
public MethodDelegateTypeMunger(ResolvedMember signature, UnresolvedType aspect, String implClassName, TypePattern typePattern, String factoryMethodName, String factoryMethodSignature)
-
-
Method Details
-
equals
-
hashCode
public int hashCode() -
getDelegate
-
getDelegateFactoryMethod
-
getImplClassName
-
write
- Specified by:
writein classResolvedTypeMunger- Throws:
IOException
-
readMethod
public static ResolvedTypeMunger readMethod(VersionedDataInputStream s, ISourceContext context, boolean isEnhanced) throws IOException - Throws:
IOException
-
matches
Match based on given type pattern, only classes can be matched- Overrides:
matchesin classResolvedTypeMunger- Parameters:
matchType-aspectType-- Returns:
- true if match
-
changesPublicSignature
public boolean changesPublicSignature()Needed for reweavable- Overrides:
changesPublicSignaturein classResolvedTypeMunger- Returns:
- true
-
setFieldType
-
specifiesDelegateFactoryMethod
public boolean specifiesDelegateFactoryMethod() -
getFactoryMethodName
-
getFactoryMethodSignature
-
getAspect
-
existsToSupportShadowMunging
public boolean existsToSupportShadowMunging()Description copied from class:ResolvedTypeMungerSome type mungers are created purely to help with the implementation of shadow mungers. For example to support the cflow() pointcut we create a new cflow field in the aspect, and that is added via a BcelCflowCounterFieldAdder. During compilation we need to compare sets of type mungers, and if some only come into existence after the 'shadowy' type things have been processed, we need to ignore them during the comparison. Returning true from this method indicates the type munger exists to support 'shadowy' stuff - and so can be ignored in some comparison.- Overrides:
existsToSupportShadowMungingin classResolvedTypeMunger
-
tagAsReplacingExistingMethod
public void tagAsReplacingExistingMethod() -
isReplacingExistingMethod
public boolean isReplacingExistingMethod()
-