| Modifier and Type | Field and Description |
|---|---|
| private volatile int |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| private void | |
| private void | |
| private void | |
| private void | addNeededSuperCallMethods(BcelClassWeaver weaver, ResolvedType onType, Set<ResolvedMember> neededSuperCalls)
|
| public boolean | attemptToModifySuperCalls(BcelClassWeaver weaver, LazyClassGen newParentTarget, ResolvedType newParent)
The main part of implementing declare parents extends. |
| private void | |
| private boolean | |
| private void | createAnyBridgeMethodsForCovariance(BcelClassWeaver weaver, NewMethodTypeMunger munger, ResolvedMember unMangledInterMethod, ResolvedType onType, LazyClassGen gen, Type[] paramTypes)
Create any bridge method required because of covariant returns being used. |
| private void | createBridge(BcelClassWeaver weaver, ResolvedMember unMangledInterMethod, LazyClassGen classGen, ResolvedMember toBridgeTo)
|
| private void | createBridgeIfNecessary(BcelClassWeaver classWeaver, NewMethodTypeMunger munger, ResolvedMember unMangledInterMethod, LazyClassGen classGen)
|
| private void | createBridgeMethod(BcelWorld world, NewMethodTypeMunger munger, ResolvedMember
the method to bridge 'to' that we have already created in the 'subtype' unMangledInterMethod, LazyClassGen the class in which to put the bridge method clazz, Type[] Parameter types for the bridge method, passed in as an optimization since the caller is likely to have
already created them. paramTypes, ResolvedMember theBridgeMethod)Create a bridge method for a particular munger. |
| private void | createBridgeMethodForITDF(BcelClassWeaver weaver, LazyClassGen gen, ResolvedMember itdfieldSetter, ResolvedMember bridgingSetter)
|
| private String | createReadableCtorSig(ResolvedType newParent, ConstantPool cpg, InvokeInstruction invokeSpecial)
Creates a nice signature for the ctor, something like "(int,Integer,String)" |
| private Signature | createSignatureAttribute(ConstantPool cp, String signature)
Helper method to create a signature attribute based on a string signature: e.g. "Ljava/lang/Object;LI<ljava lang double;>;" |
| private boolean | enforceDecpRule1_abstractMethodsImplemented(BcelClassWeaver weaver, ISourceLocation mungerLoc, LazyClassGen newParentTarget, ResolvedType newParent)
Rule 1: For the declare parents to be allowed, the target type must override and implement inherited abstract methods (if the type is not declared abstract) |
| private boolean | enforceDecpRule2_cantExtendFinalClass(BcelClassWeaver weaver, ISourceLocation transformerLoc, LazyClassGen targetType, ResolvedType newParent)
Rule 2. |
| private boolean | enforceDecpRule3_visibilityChanges(BcelClassWeaver weaver, ResolvedType newParent, ResolvedMember superMethod, LazyMethodGen subMethod)
Rule 3. |
| private boolean | enforceDecpRule4_compatibleReturnTypes(BcelClassWeaver weaver, ResolvedMember superMethod, LazyMethodGen subMethod)
Rule 4. |
| private boolean | enforceDecpRule5_cantChangeFromStaticToNonstatic(BcelClassWeaver weaver, ISourceLocation mungerLoc, ResolvedMember superMethod, LazyMethodGen subMethod)
Rule5. |
| public boolean | equals(Object
the reference object with which to compare. other)Overrides java. |
| public void | |
| private LazyMethodGen | findMatchingMethod(LazyClassGen type, ResolvedMember searchMethod)
Search the specified type for a particular method - do not use the return value in the comparison as it is not considered for overriding. |
| private ResolvedMember | |
| private ResolvedMember | getRealMemberForITDFromAspect(ResolvedType aspectType, ResolvedMember lookingFor, boolean isCtorRelated)
|
| private String | |
| public List | |
| public int | |
| private static LazyMethodGen | makeDispatcher(LazyClassGen onGen, String dispatchName, ResolvedMember superMethod, BcelWorld world, boolean isSuper)
|
| protected FieldGen | |
| protected LazyMethodGen | |
| public boolean | |
| private boolean | |
| private boolean | |
| private boolean | |
| private boolean | |
| private boolean | |
| private boolean | |
| private boolean | |
| private boolean | mungeNewParent(BcelClassWeaver weaver, NewParentTypeMunger typeTransformer)
For a long time, AspectJ did not allow binary weaving of declare parents. |
| private boolean | |
| private boolean | |
| private boolean | |
| public ConcreteTypeMunger | parameterizedFor(ResolvedType target)
Implements abstract org. |
| public ConcreteTypeMunger | parameterizeWith(Map<String, UnresolvedType> m, World w)
Implements abstract org. |
| public boolean | |
| private void | |
| private void | |
| private String | |
| public String |
| hashCode | back to summary |
|---|---|
| private volatile int hashCode | |
| BcelTypeMunger | back to summary |
|---|---|
| public BcelTypeMunger(ResolvedTypeMunger munger, ResolvedType aspectType) | |
| addFieldGetter | back to summary |
|---|---|
| private void addFieldGetter(LazyClassGen gen, ResolvedMember field, ResolvedMember accessMethod) | |
| addFieldSetter | back to summary |
|---|---|
| private void addFieldSetter(LazyClassGen gen, ResolvedMember field, ResolvedMember accessMethod) | |
| addMethodDispatch | back to summary |
|---|---|
| private void addMethodDispatch(LazyClassGen gen, ResolvedMember method, ResolvedMember accessMethod) | |
| addNeededSuperCallMethods | back to summary |
|---|---|
| private void addNeededSuperCallMethods(BcelClassWeaver weaver, ResolvedType onType, Set<ResolvedMember> neededSuperCalls) | |
| attemptToModifySuperCalls | back to summary |
|---|---|
| public boolean attemptToModifySuperCalls(BcelClassWeaver weaver, LazyClassGen newParentTarget, ResolvedType newParent) The main part of implementing declare parents extends. Modify super ctor calls to target the new type. | |
| copyOverParameterAnnotations | back to summary |
|---|---|
| private void copyOverParameterAnnotations(LazyMethodGen receiverMethod, ResolvedMember donorMethod) | |
| couldMatch | back to summary |
|---|---|
| private boolean couldMatch(BcelObjectType bcelObjectType, Pointcut pointcut) | |
| createAnyBridgeMethodsForCovariance | back to summary |
|---|---|
| private void createAnyBridgeMethodsForCovariance(BcelClassWeaver weaver, NewMethodTypeMunger munger, ResolvedMember unMangledInterMethod, ResolvedType onType, LazyClassGen gen, Type[] paramTypes) Create any bridge method required because of covariant returns being used. This method is used in the case where an ITD is applied to some type and it may be in an override relationship with a method from the supertype - but due to covariance there is a mismatch in return values. Example of when required: Super defines: Object m(String s) Sub defines: String m(String s) then we need a bridge method in Sub called 'Object m(String s)' that forwards to 'String m(String s)' | |
| createBridge | back to summary |
|---|---|
| private void createBridge(BcelClassWeaver weaver, ResolvedMember unMangledInterMethod, LazyClassGen classGen, ResolvedMember toBridgeTo) | |
| createBridgeIfNecessary | back to summary |
|---|---|
| private void createBridgeIfNecessary(BcelClassWeaver classWeaver, NewMethodTypeMunger munger, ResolvedMember unMangledInterMethod, LazyClassGen classGen) | |
| createBridgeMethod | back to summary |
|---|---|
| private void createBridgeMethod(BcelWorld world, NewMethodTypeMunger munger, ResolvedMember unMangledInterMethod, LazyClassGen clazz, Type[] paramTypes, ResolvedMember theBridgeMethod) Create a bridge method for a particular munger.
| |
| createBridgeMethodForITDF | back to summary |
|---|---|
| private void createBridgeMethodForITDF(BcelClassWeaver weaver, LazyClassGen gen, ResolvedMember itdfieldSetter, ResolvedMember bridgingSetter) | |
| createReadableCtorSig | back to summary |
|---|---|
| private String createReadableCtorSig(ResolvedType newParent, ConstantPool cpg, InvokeInstruction invokeSpecial) Creates a nice signature for the ctor, something like "(int,Integer,String)" | |
| createSignatureAttribute | back to summary |
|---|---|
| private Signature createSignatureAttribute(ConstantPool cp, String signature) Helper method to create a signature attribute based on a string signature: e.g. "Ljava/lang/Object;LI | |
| enforceDecpRule1_abstractMethodsImplemented | back to summary |
|---|---|
| private boolean enforceDecpRule1_abstractMethodsImplemented(BcelClassWeaver weaver, ISourceLocation mungerLoc, LazyClassGen newParentTarget, ResolvedType newParent) Rule 1: For the declare parents to be allowed, the target type must override and implement inherited abstract methods (if the type is not declared abstract) | |
| enforceDecpRule2_cantExtendFinalClass | back to summary |
|---|---|
| private boolean enforceDecpRule2_cantExtendFinalClass(BcelClassWeaver weaver, ISourceLocation transformerLoc, LazyClassGen targetType, ResolvedType newParent) Rule 2. Can't extend final types | |
| enforceDecpRule3_visibilityChanges | back to summary |
|---|---|
| private boolean enforceDecpRule3_visibilityChanges(BcelClassWeaver weaver, ResolvedType newParent, ResolvedMember superMethod, LazyMethodGen subMethod) Rule 3. Can't narrow visibility of methods when overriding | |
| enforceDecpRule4_compatibleReturnTypes | back to summary |
|---|---|
| private boolean enforceDecpRule4_compatibleReturnTypes(BcelClassWeaver weaver, ResolvedMember superMethod, LazyMethodGen subMethod) Rule 4. Can't have incompatible return types | |
| enforceDecpRule5_cantChangeFromStaticToNonstatic | back to summary |
|---|---|
| private boolean enforceDecpRule5_cantChangeFromStaticToNonstatic(BcelClassWeaver weaver, ISourceLocation mungerLoc, ResolvedMember superMethod, LazyMethodGen subMethod) Rule5. Method overrides can't change the staticality (word?) - you can't override and make an instance method static or override and make a static method an instance method. | |
| equals | back to summary |
|---|---|
| public boolean equals(Object other) Overrides java. Doc from java. Indicates whether some other object is "equal to" this one.
The
An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes. | |
| error | back to summary |
|---|---|
| public void error(BcelClassWeaver weaver, String text, ISourceLocation primaryLoc, ISourceLocation[] extraLocs) | |
| findMatchingMethod | back to summary |
|---|---|
| private LazyMethodGen findMatchingMethod(LazyClassGen type, ResolvedMember searchMethod) Search the specified type for a particular method - do not use the return value in the comparison as it is not considered for overriding. | |
| getConstructorWithSignature | back to summary |
|---|---|
| private ResolvedMember getConstructorWithSignature(ResolvedType type, String searchSig) | |
| getRealMemberForITDFromAspect | back to summary |
|---|---|
| private ResolvedMember getRealMemberForITDFromAspect(ResolvedType aspectType, ResolvedMember lookingFor, boolean isCtorRelated) | |
| getShortname | back to summary |
|---|---|
| private String getShortname(String path) | |
| getTypeVariableAliases | back to summary |
|---|---|
| public List Returns a list of type variable aliases used in this munger. For example, if the ITD is 'int I<A,B>.m(List<A> las,List<B> lbs) {}' then this returns a list containing the strings "A" and "B". | |
| hashCode | back to summary |
|---|---|
| public int hashCode() Overrides java. Doc from java. Returns a hash code value for the object. This method is
supported for the benefit of hash tables such as those provided by
The general contract of
| |
| makeDispatcher | back to summary |
|---|---|
| private static LazyMethodGen makeDispatcher(LazyClassGen onGen, String dispatchName, ResolvedMember superMethod, BcelWorld world, boolean isSuper) | |
| makeFieldGen | back to summary |
|---|---|
| protected FieldGen makeFieldGen(LazyClassGen gen, ResolvedMember member) | |
| makeMethodGen | back to summary |
|---|---|
| protected LazyMethodGen makeMethodGen(LazyClassGen gen, ResolvedMember member) | |
| munge | back to summary |
|---|---|
| public boolean munge(BcelClassWeaver weaver) | |
| mungeFieldHost | back to summary |
|---|---|
| private boolean mungeFieldHost(BcelClassWeaver weaver, MethodDelegateTypeMunger. | |
| mungeMethodDelegate | back to summary |
|---|---|
| private boolean mungeMethodDelegate(BcelClassWeaver weaver, MethodDelegateTypeMunger munger) | |
| mungeNewAnnotationOnType | back to summary |
|---|---|
| private boolean mungeNewAnnotationOnType(BcelClassWeaver weaver, AnnotationOnTypeMunger munger) | |
| mungeNewConstructor | back to summary |
|---|---|
| private boolean mungeNewConstructor(BcelClassWeaver weaver, NewConstructorTypeMunger newConstructorTypeMunger) | |
| mungeNewField | back to summary |
|---|---|
| private boolean mungeNewField(BcelClassWeaver weaver, NewFieldTypeMunger munger) | |
| mungeNewMemberType | back to summary |
|---|---|
| private boolean mungeNewMemberType(BcelClassWeaver classWeaver, NewMemberClassTypeMunger munger) | |
| mungeNewMethod | back to summary |
|---|---|
| private boolean mungeNewMethod(BcelClassWeaver classWeaver, NewMethodTypeMunger munger) | |
| mungeNewParent | back to summary |
|---|---|
| private boolean mungeNewParent(BcelClassWeaver weaver, NewParentTypeMunger typeTransformer) For a long time, AspectJ did not allow binary weaving of declare parents. This restriction is now lifted but could do with more testing! | |
| mungePerObjectInterface | back to summary |
|---|---|
| private boolean mungePerObjectInterface(BcelClassWeaver weaver, PerObjectInterfaceTypeMunger munger) | |
| mungePerTypeWithinTransformer | back to summary |
|---|---|
| private boolean mungePerTypeWithinTransformer(BcelClassWeaver weaver) | |
| mungePrivilegedAccess | back to summary |
|---|---|
| private boolean mungePrivilegedAccess(BcelClassWeaver weaver, PrivilegedAccessMunger munger) | |
| parameterizedFor | back to summary |
|---|---|
| public ConcreteTypeMunger parameterizedFor(ResolvedType target) Implements abstract org. Doc from org. 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.
| |
| parameterizeWith | back to summary |
|---|---|
| public ConcreteTypeMunger parameterizeWith(Map<String, UnresolvedType> m, World w) Implements abstract org.
| |
| shouldOverwrite | back to summary |
|---|---|
| public boolean shouldOverwrite() Overrides org.
| |
| signalError | back to summary |
|---|---|
| private void signalError(String msgid, BcelClassWeaver weaver, UnresolvedType onType) | |
| signalError | back to summary |
|---|---|
| private void signalError(String msgString, BcelClassWeaver weaver) | |
| stringifyMember | back to summary |
|---|---|
| private String stringifyMember(ResolvedMember member) | |
| toString | back to summary |
|---|---|
| public String toString() Overrides java. Doc from java. Returns a string representation of the object. | |