org.jboss.aop.instrument
Class GeneratedAdvisorFieldAccessTransformer

java.lang.Object
  extended by org.jboss.aop.instrument.FieldAccessTransformer
      extended by org.jboss.aop.instrument.GeneratedAdvisorFieldAccessTransformer

public class GeneratedAdvisorFieldAccessTransformer
extends FieldAccessTransformer

Comment

Version:
$Revision$
Author:
Kabir Khan

Nested Class Summary
protected  class GeneratedAdvisorFieldAccessTransformer.GeneratedAdvisorFieldAccessExprEditor
           
 
Nested classes/interfaces inherited from class org.jboss.aop.instrument.FieldAccessTransformer
FieldAccessTransformer.FieldAccessExprEditor
 
Field Summary
 
Fields inherited from class org.jboss.aop.instrument.FieldAccessTransformer
GET_INDEX, SET_INDEX, transformations, wrapper
 
Constructor Summary
GeneratedAdvisorFieldAccessTransformer(Instrumentor instrumentor)
           
 
Method Summary
protected  String addFieldReadInfoFieldToGeneratedAdvisor(javassist.CtField field, int index)
           
protected  String addFieldWriteInfoFieldToGeneratedAdvisor(javassist.CtField field, int index)
           
protected  boolean addInfoAsWeakReference()
           
static String advisorFieldRead(javassist.CtClass genadvisor, String fieldName)
           
static String advisorFieldWrite(javassist.CtClass genadvisor, String fieldName)
           
protected  void buildWrapperPlaceHolders(javassist.CtClass clazz, javassist.CtField field, boolean doGet, boolean doSet, int mod)
          Generate the wrapper place holders.
protected  void doBuildFieldWrappers(javassist.CtClass clazz, javassist.CtField field, int index, boolean shouldReplaceArrayAccess, JoinpointClassification classificationGet, JoinpointClassification classificationSet)
           
protected  String getWrapperBody(javassist.CtClass clazz, javassist.CtField field, boolean get, int fieldIndex)
          Returns the wrapper body of the field joinpoint.
protected  boolean markInfoAsSynthetic()
           
protected  void replaceFieldAccessInternally(javassist.CtClass clazz, javassist.CtField field, boolean doGet, boolean doSet, int index)
          This function replaces internal field accesses with bytecode hooks into framework todo this must do it for inherited protected/public fields as well
 
Methods inherited from class org.jboss.aop.instrument.FieldAccessTransformer
addFieldReadInfoFieldWithAccessors, addFieldReadInfoFieldWithAccessors, addFieldWriteInfoField, addFieldWriteInfoField, buildFieldWrappers, buildReadWrapperPlaceHolder, buildWriteWrapperPlaceHolder, codeConverted, fieldInfoFromWeakReference, fieldOffset, fieldRead, fieldWrite, getArrayWriteRegistration, getFieldReadInfoFieldName, getFieldWriteInfoFieldName, getStaticModifiers, getWrapperReadMethod, getWrapperWriteMethod, isPrepared, replaceFieldAccess, unwrap, wrap
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GeneratedAdvisorFieldAccessTransformer

public GeneratedAdvisorFieldAccessTransformer(Instrumentor instrumentor)
Method Detail

doBuildFieldWrappers

protected void doBuildFieldWrappers(javassist.CtClass clazz,
                                    javassist.CtField field,
                                    int index,
                                    boolean shouldReplaceArrayAccess,
                                    JoinpointClassification classificationGet,
                                    JoinpointClassification classificationSet)
                             throws javassist.NotFoundException,
                                    javassist.CannotCompileException
Specified by:
doBuildFieldWrappers in class FieldAccessTransformer
Throws:
javassist.NotFoundException
javassist.CannotCompileException

addFieldReadInfoFieldToGeneratedAdvisor

protected String addFieldReadInfoFieldToGeneratedAdvisor(javassist.CtField field,
                                                         int index)
                                                  throws javassist.NotFoundException,
                                                         javassist.CannotCompileException
Throws:
javassist.NotFoundException
javassist.CannotCompileException

addInfoAsWeakReference

protected boolean addInfoAsWeakReference()
Overrides:
addInfoAsWeakReference in class FieldAccessTransformer

markInfoAsSynthetic

protected boolean markInfoAsSynthetic()
Overrides:
markInfoAsSynthetic in class FieldAccessTransformer

addFieldWriteInfoFieldToGeneratedAdvisor

protected String addFieldWriteInfoFieldToGeneratedAdvisor(javassist.CtField field,
                                                          int index)
                                                   throws javassist.NotFoundException,
                                                          javassist.CannotCompileException
Throws:
javassist.NotFoundException
javassist.CannotCompileException

buildWrapperPlaceHolders

protected void buildWrapperPlaceHolders(javassist.CtClass clazz,
                                        javassist.CtField field,
                                        boolean doGet,
                                        boolean doSet,
                                        int mod)
                                 throws javassist.NotFoundException,
                                        javassist.CannotCompileException
Description copied from class: FieldAccessTransformer
Generate the wrapper place holders.

PS: Removed from inside inner classes to avoid code repetition.

Overrides:
buildWrapperPlaceHolders in class FieldAccessTransformer
Throws:
javassist.NotFoundException
javassist.CannotCompileException

advisorFieldRead

public static String advisorFieldRead(javassist.CtClass genadvisor,
                                      String fieldName)

advisorFieldWrite

public static String advisorFieldWrite(javassist.CtClass genadvisor,
                                       String fieldName)

getWrapperBody

protected String getWrapperBody(javassist.CtClass clazz,
                                javassist.CtField field,
                                boolean get,
                                int fieldIndex)
                         throws javassist.NotFoundException,
                                javassist.CannotCompileException
Description copied from class: FieldAccessTransformer
Returns the wrapper body of the field joinpoint.

Specified by:
getWrapperBody in class FieldAccessTransformer
Parameters:
clazz - the class declaring field.
field - the field whose joinpoint wrapper code will be generated.
get - indicates if the wrapper is a field read wrapper or a field write wrapper.
fieldIndex - the index of field.
Returns:
teh wrapper body code.
Throws:
javassist.NotFoundException
javassist.CannotCompileException

replaceFieldAccessInternally

protected void replaceFieldAccessInternally(javassist.CtClass clazz,
                                            javassist.CtField field,
                                            boolean doGet,
                                            boolean doSet,
                                            int index)
                                     throws javassist.CannotCompileException
Description copied from class: FieldAccessTransformer
This function replaces internal field accesses with bytecode hooks into framework todo this must do it for inherited protected/public fields as well

Specified by:
replaceFieldAccessInternally in class FieldAccessTransformer
Throws:
javassist.CannotCompileException


Copyright © 2008 JBoss, a division of Red Hat, Inc.. All Rights Reserved.