org.aspectj.weaver.bcel
Class BcelWeavingSupport

java.lang.Object
  extended by org.aspectj.weaver.bcel.BcelWeavingSupport
All Implemented Interfaces:
IWeavingSupport

public class BcelWeavingSupport
extends java.lang.Object
implements IWeavingSupport

Bcel implementation of the weaving support required in a BcelWorld which will actually modify bytecode.


Constructor Summary
BcelWeavingSupport()
           
 
Method Summary
 ConcreteTypeMunger concreteTypeMunger(ResolvedTypeMunger munger, ResolvedType aspectType)
           
 ConcreteTypeMunger createAccessForInlineMunger(ResolvedType aspect)
           
 Advice createAdviceMunger(AjAttribute.AdviceAttribute attribute, Pointcut pointcut, Member signature, ResolvedType concreteAspect)
           
 Var makeCflowAccessVar(ResolvedType formalType, Member cflowField, int arrayIndex)
           
 ConcreteTypeMunger makeCflowCounterFieldAdder(ResolvedMember cflowField)
           
 ConcreteTypeMunger makeCflowStackFieldAdder(ResolvedMember cflowField)
           
 ConcreteTypeMunger makePerClauseAspect(ResolvedType aspect, PerClause.Kind kind)
          Register a munger for perclause @AJ aspect so that we add aspectOf(..) to them as needed
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BcelWeavingSupport

public BcelWeavingSupport()
Method Detail

createAdviceMunger

public Advice createAdviceMunger(AjAttribute.AdviceAttribute attribute,
                                 Pointcut pointcut,
                                 Member signature,
                                 ResolvedType concreteAspect)
Specified by:
createAdviceMunger in interface IWeavingSupport

makeCflowStackFieldAdder

public ConcreteTypeMunger makeCflowStackFieldAdder(ResolvedMember cflowField)
Specified by:
makeCflowStackFieldAdder in interface IWeavingSupport

makeCflowCounterFieldAdder

public ConcreteTypeMunger makeCflowCounterFieldAdder(ResolvedMember cflowField)
Specified by:
makeCflowCounterFieldAdder in interface IWeavingSupport

makePerClauseAspect

public ConcreteTypeMunger makePerClauseAspect(ResolvedType aspect,
                                              PerClause.Kind kind)
Register a munger for perclause @AJ aspect so that we add aspectOf(..) to them as needed

Specified by:
makePerClauseAspect in interface IWeavingSupport
Parameters:
aspect -
kind -
Returns:
munger
See Also:
org.aspectj.weaver.bcel.BcelWorld#makePerClauseAspect(ResolvedType, org.aspectj.weaver.patterns.PerClause.Kind)

makeCflowAccessVar

public Var makeCflowAccessVar(ResolvedType formalType,
                              Member cflowField,
                              int arrayIndex)
Specified by:
makeCflowAccessVar in interface IWeavingSupport

concreteTypeMunger

public ConcreteTypeMunger concreteTypeMunger(ResolvedTypeMunger munger,
                                             ResolvedType aspectType)
Specified by:
concreteTypeMunger in interface IWeavingSupport

createAccessForInlineMunger

public ConcreteTypeMunger createAccessForInlineMunger(ResolvedType aspect)
Specified by:
createAccessForInlineMunger in interface IWeavingSupport