Top Fields Constructors Methods
org.aspectj.weaver

public abstract Class ConcreteTypeMunger

extends Object
implements PartialComparable
Class Inheritance
All Implemented Interfaces
org.aspectj.util.PartialOrder.PartialComparable
Known Direct Subclasses
org.aspectj.weaver.TemporaryTypeMunger, org.aspectj.weaver.bcel.BcelTypeMunger
Imports
java.util.Map, org.aspectj.bridge.ISourceLocation, org.aspectj.util.PartialOrder

Field Summary

Modifier and TypeField and Description
protected ResolvedType
protected ResolvedTypeMunger

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public int
public boolean
equivalentTo(Object other)

Equivalence can be true for an EclipseTypeMunger and a BcelTypeMunger that represent the same transformation (just at different points in the pipeline).

public boolean
existsToSupportShadowMunging()

Some type mungers are created purely to help with the implementation of shadow mungers.

public int
fallbackCompareTo(Object other)

Implements org.aspectj.util.PartialOrder.PartialComparable.fallbackCompareTo.

This method can provide a deterministic ordering for elements that are strictly not comparable.
public ResolvedType
public ResolvedMember
public ResolvedTypeMunger
getMunger()

returns null for mungers that are used internally, but were not part of a declared thing in source code.

public ResolvedMember
public ISourceLocation
public World
public boolean
public boolean
isTargetTypeParameterized()

returns true if the ITD target type used type variables, for example I<T>.

public boolean
public abstract ConcreteTypeMunger
parameterizedFor(ResolvedType targetType)

For an ITD made on a generic type that shares type variables with that target type, this method will tailor the ITD for a particular usage of the generic type - either in its raw or parameterized form.

public abstract ConcreteTypeMunger
parameterizeWith(Map<String, UnresolvedType> parameterizationMap, World world)

public boolean
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

aspectTypeback to summary
protected ResolvedType aspectType
mungerback to summary
protected ResolvedTypeMunger munger

Constructor Detail

ConcreteTypeMungerback to summary
public ConcreteTypeMunger(ResolvedTypeMunger munger, ResolvedType aspectType)

Method Detail

compareToback to summary
public int compareTo(Object other)

Implements org.aspectj.util.PartialOrder.PartialComparable.compareTo.

Returns:int

Doc from org.aspectj.util.PartialOrder.PartialComparable.compareTo.

  • +1 if this is greater than other
  • -1 if this is less than other
  • 0 if this is not comparable to other

Note

returning 0 from this method doesn't mean the same thing as returning 0 from java.util.Comparable.compareTo()

equivalentToback to summary
public boolean equivalentTo(Object other)

Equivalence can be true for an EclipseTypeMunger and a BcelTypeMunger that represent the same transformation (just at different points in the pipeline).

existsToSupportShadowMungingback to summary
public boolean existsToSupportShadowMunging()

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.

fallbackCompareToback to summary
public int fallbackCompareTo(Object other)

Implements org.aspectj.util.PartialOrder.PartialComparable.fallbackCompareTo.

Doc from org.aspectj.util.PartialOrder.PartialComparable.fallbackCompareTo.

This method can provide a deterministic ordering for elements that are strictly not comparable. If you have no need for this, this method can just return 0 whenever called.

getAspectTypeback to summary
public ResolvedType getAspectType()
getMatchingSyntheticMemberback to summary
public ResolvedMember getMatchingSyntheticMember(Member member)
getMungerback to summary
public ResolvedTypeMunger getMunger()

returns null for mungers that are used internally, but were not part of a declared thing in source code.

getSignatureback to summary
public ResolvedMember getSignature()
getSourceLocationback to summary
public ISourceLocation getSourceLocation()
getWorldback to summary
public World getWorld()
isLateMungerback to summary
public boolean isLateMunger()
isTargetTypeParameterizedback to summary
public boolean isTargetTypeParameterized()

returns true if the ITD target type used type variables, for example I<T>. When they are specified like this, the ITDs 'share' type variables with the generic type. Usually this method is called because we need to know whether to tailor the munger for addition to a particular type. For example:


  interface I<T> {}

  aspect X implements I<String> {
    List<T> I<T>.foo { return null; }
  }
In this case the munger matches X but it matches with the form List<String> foo() { return null; }
matchesback to summary
public boolean matches(ResolvedType onType)
parameterizedForback to summary
public abstract ConcreteTypeMunger parameterizedFor(ResolvedType targetType)

For an ITD made on a generic type that shares type variables with that target type, this method will tailor the ITD for a particular usage of the generic type - either in its raw or parameterized form.

parameterizeWithback to summary
public abstract ConcreteTypeMunger parameterizeWith(Map<String, UnresolvedType> parameterizationMap, World world)
shouldOverwriteback to summary
public boolean shouldOverwrite()