Class MethodDelegateTypeMunger

java.lang.Object
org.aspectj.weaver.ResolvedTypeMunger
org.aspectj.weaver.MethodDelegateTypeMunger

public class MethodDelegateTypeMunger extends ResolvedTypeMunger
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.
  • Constructor Details

  • Method Details

    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • getDelegate

      public ResolvedMember getDelegate(ResolvedType targetType)
    • getDelegateFactoryMethod

      public ResolvedMember getDelegateFactoryMethod(World w)
    • getImplClassName

      public String getImplClassName()
    • write

      public void write(CompressingDataOutputStream s) throws IOException
      Specified by:
      write in class ResolvedTypeMunger
      Throws:
      IOException
    • readMethod

      public static ResolvedTypeMunger readMethod(VersionedDataInputStream s, ISourceContext context, boolean isEnhanced) throws IOException
      Throws:
      IOException
    • matches

      public boolean matches(ResolvedType matchType, ResolvedType aspectType)
      Match based on given type pattern, only classes can be matched
      Overrides:
      matches in class ResolvedTypeMunger
      Parameters:
      matchType -
      aspectType -
      Returns:
      true if match
    • changesPublicSignature

      public boolean changesPublicSignature()
      Needed for reweavable
      Overrides:
      changesPublicSignature in class ResolvedTypeMunger
      Returns:
      true
    • setFieldType

      public void setFieldType(UnresolvedType fieldType)
    • specifiesDelegateFactoryMethod

      public boolean specifiesDelegateFactoryMethod()
    • getFactoryMethodName

      public String getFactoryMethodName()
    • getFactoryMethodSignature

      public String getFactoryMethodSignature()
    • getAspect

      public UnresolvedType 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 class ResolvedTypeMunger
    • tagAsReplacingExistingMethod

      public void tagAsReplacingExistingMethod()
    • isReplacingExistingMethod

      public boolean isReplacingExistingMethod()