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 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
ConstructorDescriptionMethodDelegateTypeMunger
(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 TypeMethodDescriptionboolean
Needed for reweavableboolean
boolean
Some type mungers are created purely to help with the implementation of shadow mungers.getDelegate
(ResolvedType targetType) int
hashCode()
boolean
boolean
matches
(ResolvedType matchType, ResolvedType aspectType) Match based on given type pattern, only classes can be matchedstatic ResolvedTypeMunger
readMethod
(VersionedDataInputStream s, ISourceContext context, boolean isEnhanced) void
setFieldType
(UnresolvedType fieldType) boolean
void
void
Methods 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:
write
in 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:
matches
in classResolvedTypeMunger
- Parameters:
matchType
-aspectType
-- Returns:
- true if match
-
changesPublicSignature
public boolean changesPublicSignature()Needed for reweavable- Overrides:
changesPublicSignature
in classResolvedTypeMunger
- Returns:
- true
-
setFieldType
-
specifiesDelegateFactoryMethod
public boolean specifiesDelegateFactoryMethod() -
getFactoryMethodName
-
getFactoryMethodSignature
-
getAspect
-
existsToSupportShadowMunging
public boolean existsToSupportShadowMunging()Description copied from class:ResolvedTypeMunger
Some 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:
existsToSupportShadowMunging
in classResolvedTypeMunger
-
tagAsReplacingExistingMethod
public void tagAsReplacingExistingMethod() -
isReplacingExistingMethod
public boolean isReplacingExistingMethod()
-