[jboss-cvs] JBossAS SVN: r67493 - projects/aop/trunk/aop/src/main/org/jboss/aop/instrument.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Nov 27 08:19:25 EST 2007
Author: kabir.khan at jboss.com
Date: 2007-11-27 08:19:25 -0500 (Tue, 27 Nov 2007)
New Revision: 67493
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/Instrumentor.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/NonOptimizedFieldAccessTransformer.java
Log:
Get rid of System.out.printlns
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/Instrumentor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/Instrumentor.java 2007-11-27 13:04:10 UTC (rev 67492)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/Instrumentor.java 2007-11-27 13:19:25 UTC (rev 67493)
@@ -71,7 +71,7 @@
* </pre>
*
* You can control which instrumentor to use by passing in the jboss.aop.instrumentor
- * system property.
+ * system property.
*
*
* @author <a href="mailto:bill at jboss.org">Bill Burke</a>
@@ -83,7 +83,7 @@
public abstract class Instrumentor
{
private static final Logger logger = AOPLogger.getLogger(Instrumentor.class);
-
+
/**
* Package of AOP classes.
*/
@@ -115,18 +115,18 @@
ConstructorExecutionTransformer constructorExecutionTransformer;
ConstructionTransformer constructionTransformer;
FieldAccessTransformer fieldAccessTransformer;
- CallerTransformer callerTransformer;
+ CallerTransformer callerTransformer;
DynamicTransformationObserver dynamicTransformationObserver;
-
+
/**
* Constructs new instrumentor.
* @param joinpointClassifier algorithm of joinpoint classification to be used.
* @param observer need be notified of every joinpoint wrapping caused only
* by pointcuts dynamicaly added.
*/
- protected Instrumentor(AOPClassPool pool,
- AspectManager manager,
- JoinpointClassifier joinpointClassifier,
+ protected Instrumentor(AOPClassPool pool,
+ AspectManager manager,
+ JoinpointClassifier joinpointClassifier,
DynamicTransformationObserver observer)
{
this.classPool = pool;
@@ -137,17 +137,17 @@
intitialiseTransformers();
}
- protected Instrumentor(AspectManager manager,
+ protected Instrumentor(AspectManager manager,
JoinpointClassifier joinpointClassifier)
{
- this(null,
- manager,
- joinpointClassifier,
+ this(null,
+ manager,
+ joinpointClassifier,
null);
}
-
+
protected abstract void intitialiseTransformers();
-
+
public ClassPool getClassPool()
{
return classPool;
@@ -169,7 +169,7 @@
}
return false;
}
-
+
public static boolean implementsAdvised(CtClass clazz) throws NotFoundException
{
CtClass[] interfaces = clazz.getInterfaces();
@@ -258,13 +258,13 @@
}
if (!correct)
{
- throw new RuntimeException("Could not find a method named '" +
+ throw new RuntimeException("Could not find a method named '" +
pointcut.getConstructorMethod() + "' on class " +
- pointcut.getConstructorClass() + " that receives " +
+ pointcut.getConstructorClass() + " that receives " +
clazz.getName() + " or one of its superclasses as parameter.");
}
}
-
+
String initializer = null;
if (mixin.getConstruction() == null)
{
@@ -277,8 +277,8 @@
}
else
{
- initializer = mixin.getConstruction();
- }
+ initializer = mixin.getConstruction();
+ }
CtClass type = forName(mixinClass.getName());
CtField field = new CtField(type, mixinFieldName(mixinClass), clazz);
int modifiers = Modifier.PRIVATE;
@@ -300,13 +300,13 @@
Map.Entry entry = (Map.Entry) entries.next();
Long hash = (Long) entry.getKey();
CtMethod method = (CtMethod) entry.getValue();
- CtMethod baseMethod = (CtMethod)baseMethods.get(hash);
+ CtMethod baseMethod = (CtMethod)baseMethods.get(hash);
if (baseMethod != null && !addedMethods.contains(hash))
{
String msg = "Mixin " + mixinClass.getName() +
" of pointcut " + pointcut.getName() +
" is trying to apply an already existing method" + method.getName() + " for class " + clazz.getName();
-
+
if (baseMethod.getDeclaringClass().equals(clazz))
{
throw new RuntimeException(msg);
@@ -362,7 +362,7 @@
throws Exception
{
ArrayList pointcuts = advisor.getInterfaceIntroductions();
-
+
if (pointcuts.size() == 0) return;
HashMap baseMethods = JavassistMethodHashing.getDeclaredMethodMap(clazz);
Iterator it = pointcuts.iterator();
@@ -578,7 +578,7 @@
{
return callerTransformer.applyCallerPointcuts(clazz, advisor);
}
-
+
/**
* Find all classes that this class references. If any of those classes are advised and have field and/or constructor
* interception, do instrumentation on this class so that those fields and constructors are instrumented
@@ -590,7 +590,7 @@
try
{
AOPClassPool pool = AOPClassPool.createAOPClassPool(clazz.getClassPool(), AOPClassPoolRepository.getInstance());
-
+
//Class.getRefClasses() only gets classes explicitly referenced in the class. We need to check the super classes and do some extra handling
for (ReferenceClassIterator it = new ReferenceClassIterator(clazz.getRefClasses()) ; it.hasNext() ; )
{
@@ -623,12 +623,12 @@
}
}
if (!isTransformable(ctRef)) continue;
-
+
it.addSuperClass(ctRef);
-
+
ClassAdvisor advisor = manager.getTempClassAdvisor(ctRef);
-
-
+
+
if (!manager.getInterceptionMarkers().shouldSkipFieldAccess(ref) && !ref.equals(clazz.getName()))
{
List fields = getAdvisableFields(ctRef);
@@ -682,7 +682,7 @@
isAdvised(clazz) ||
!isTransformable(clazz));
}
-
+
/**
* Makes class advisable.
*/
@@ -693,7 +693,7 @@
{
if (shouldNotTransform(clazz)) return false;
if (AspectManager.verbose && logger.isDebugEnabled()) logger.debug("trying to transform " + clazz.getName());
-
+
DeclareChecker.checkDeclares(manager, clazz, advisor);
boolean converted = instrumentAnnotationIntroductions(clazz, advisor);
@@ -717,7 +717,7 @@
instrumentIntroductions(clazz, advisor);
converted = convertReferences(clazz) || converted;
-
+
boolean shouldReplaceArrayAccess = replaceArrayAccess(clazz, advisor);
converted = converted || shouldReplaceArrayAccess;
@@ -752,7 +752,7 @@
{
processedClasses.add(clazz);
}
-
+
if (AspectManager.verbose && logger.isDebugEnabled()) logger.debug("was " + clazz.getName() + " converted: " + (basicsSet || converted));
if (basicsSet || converted)
@@ -900,10 +900,10 @@
// add marker interface.
clazz.addInterface(forName(AOP_PACKAGE + ".Advised"));
-
+
doSetupBasics(clazz);
}
-
+
/**
* Notifies the <code>Instrumentor</code> that some joinpoint status were updated.
* This method hot swaps the code of afected classes.
@@ -923,7 +923,7 @@
CtClass clazz = update.clazz;
JoinpointStatusUpdate.ClassJoinpoints wrapTargets = update.newlyAdvisedJoinpoints;
JoinpointStatusUpdate.ClassJoinpoints unwrapTargets = update.newlyUnadvisedJoinpoints;
-
+
clazz.defrost();
fieldAccessTransformer.wrap(clazz, wrapTargets.fieldReads, wrapTargets.fieldWrites);
fieldAccessTransformer.unwrap(clazz, unwrapTargets.fieldReads, unwrapTargets.fieldWrites);
@@ -943,7 +943,7 @@
Collection conversionsRegistered = new HashSet();
synchronized(this.processedClasses)
{
- for (Iterator iterator2 = processedClasses.iterator(); iterator2.hasNext(); ) {
+ for (Iterator iterator2 = processedClasses.iterator(); iterator2.hasNext(); ) {
CtClass clazz = (CtClass) iterator2.next();
if (manager.isNonAdvisableClassName(clazz.getName()) || ! isTransformable(clazz))
@@ -970,7 +970,7 @@
// notifies code conversion observers
fieldAccessTransformer.codeConverted();
constructorExecutionTransformer.codeConverted();
-
+
// registers the classes bytecodes to be hot swapped
for (Iterator iterator = classes.iterator(); iterator.hasNext(); )
{
@@ -1020,27 +1020,27 @@
if (shouldReplaceArrayAccess)
{
- if (AspectManager.verbose) System.out.println("[debug] Replacing array access in " + clazz.getName());
+ if (AspectManager.verbose && logger.isDebugEnabled()) logger.debug("[debug] Replacing array access in " + clazz.getName());
converter.replaceArrayAccess(classPool.get(ArrayAdvisor.class.getName()), new CodeConverter.DefaultArrayAccessReplacementMethodNames());
}
return shouldReplaceArrayAccess;
}
-
+
/**
* Converts all processed classes to make wrapping of the appropriate joinpoints.
- * This method must be called if some dynamic transformation ocurred (i. e. a
+ * This method must be called if some dynamic transformation ocurred (i. e. a
* class has just been loaded and one or more of its joinpoints were wrapped due
* only to bindings added dynamicaly; in this case, the previously loaded classes
* may not call the wrappers of this joinpoints, and need to be instrumented).
- *
+ *
* @param hotSwapper responsible for performing any hot swapping operations when
* needed.
* @param clazz the clazz whose transformation involved dynamic wrapping.
* @param fieldReads collection of fields whose read joinpoit was dynamicaly wrapped.
* @param fieldWrites collection of fields whose read joinpoit was dynamicaly wrapped.
* @param constructor <code>true</code> if the <code>clazz</code> constructors were
- * dynamicaly wrapped.
+ * dynamicaly wrapped.
*/
public void convertProcessedClasses(HotSwapper hotSwapper, CtClass clazz,
Collection fieldReads, Collection fieldWrites, boolean constructor)
@@ -1061,7 +1061,7 @@
{
codeConverter.replaceNew(clazz, clazz, ConstructorExecutionTransformer.constructorFactory(clazz.getSimpleName()));
}
-
+
synchronized(processedClasses)
{
for (Iterator iterator = processedClasses.iterator(); iterator.hasNext();)
@@ -1109,9 +1109,9 @@
}
hotSwapper.hotSwap();
}
-
+
protected abstract void doSetupBasics(CtClass clazz) throws CannotCompileException, NotFoundException;
-
+
/**
* Creates generic invoke method to be wrapped by real signatures.
*/
@@ -1125,7 +1125,7 @@
ArrayList classes;
HashSet handledClasses;
String currentEntry;
-
+
public ReferenceClassIterator(Collection refClasses)
{
size = refClasses.size();
@@ -1153,7 +1153,7 @@
{
return currentEntry;
}
-
+
void addSuperClass(CtClass clazz)throws NotFoundException
{
if (clazz != null)
@@ -1171,7 +1171,7 @@
}
}
}
-
+
AspectManager getManager()
{
return manager;
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/NonOptimizedFieldAccessTransformer.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/NonOptimizedFieldAccessTransformer.java 2007-11-27 13:04:10 UTC (rev 67492)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/NonOptimizedFieldAccessTransformer.java 2007-11-27 13:19:25 UTC (rev 67493)
@@ -43,7 +43,7 @@
{
super(instrumentor);
}
-
+
protected void doBuildFieldWrappers(CtClass clazz, CtField field, int fieldIndex, boolean shouldReplaceArrayAccess, JoinpointClassification classificationGet, JoinpointClassification classificationSet)
throws NotFoundException, CannotCompileException
{
@@ -51,9 +51,9 @@
boolean wrappedGet = classificationGet.equals(JoinpointClassification.WRAPPED);
boolean wrappedSet = classificationSet.equals(JoinpointClassification.WRAPPED);
int mod = getStaticModifiers(field);
-
- //Create placeholder static wrappers, since without these methods replaceFieldAccessInternally()
- //will not compile.
+
+ //Create placeholder static wrappers, since without these methods replaceFieldAccessInternally()
+ //will not compile.
//If we add the actual static wrappers before calling replaceFieldAccessInternally()
//field access done in the inner invocation classes as well as in the static wrappers
//is replaced with a call to the wrapper instead, which means infinite recursion
@@ -66,19 +66,19 @@
// prepareForWrapping
wrapper.prepareForWrapping(field, GET_INDEX);
}
-
+
if (isPrepared(classificationSet))
{
addFieldWriteInfoField(Modifier.PRIVATE | Modifier.STATIC, clazz, field);
OptimizedFieldInvocations.createOptimizedInvocationClass(instrumentor, clazz, field, false);
// prepareForWrapping
wrapper.prepareForWrapping(field, SET_INDEX);
- }
+ }
} catch (Exception e)
{
throw new CannotCompileException(e);
}
-
+
// wrap
if (wrappedGet)
{
@@ -96,19 +96,19 @@
instrumentor.dynamicTransformationObserver.fieldWriteDynamicalyWrapped(field);
}
}
-
+
// executeWrapping
replaceFieldAccessInternally(clazz, field, wrappedGet, wrappedSet, fieldIndex);
buildWrappers(clazz, field, shouldReplaceArrayAccess, wrappedGet, wrappedSet, fieldIndex);
-
+
}
-
+
private void buildWrappers(CtClass clazz, CtField field, boolean shouldReplaceArrayAccess, boolean doGet, boolean doSet, int index)
throws NotFoundException, CannotCompileException
{
if (doGet)
{
- String code = getReadWrapperBody(clazz, field, index);
+ String code = getReadWrapperBody(clazz, field, index);
CtMethod method = clazz.getDeclaredMethod(fieldRead(field.getName()));
method.setBody(code);
}
@@ -116,10 +116,10 @@
{
String code = getWriteWrapperBody(clazz, field, shouldReplaceArrayAccess, index);
CtMethod method = clazz.getDeclaredMethod(fieldWrite(field.getName()));
- method.setBody(code);
+ method.setBody(code);
}
}
-
+
protected String getWrapperBody(CtClass clazz, CtField field, boolean get, int index) throws NotFoundException, CannotCompileException
{
if (get)
@@ -129,7 +129,7 @@
// TODO: set replaceArrayAccess=false as default, must be verified.
return getWriteWrapperBody(clazz, field, false, index);
}
-
+
private String getReadWrapperBody(CtClass clazz, CtField field, int index)
throws NotFoundException, CannotCompileException
{
@@ -142,10 +142,10 @@
access = "((" + clazz.getName() + ")$1).";
instanceCheck = " || ((org.jboss.aop.ClassInstanceAdvisor)((org.jboss.aop.InstanceAdvised)$1)._getInstanceAdvisor()).hasInstanceAspects";
}
-
+
// read wrapper
-
- return
+
+ return
"{ " +
" if (" + Instrumentor.HELPER_FIELD_NAME + ".hasAspects() " + instanceCheck + " ) " +
" { " +
@@ -153,10 +153,10 @@
" } " +
" return " + access + name + "; " +
"}";
-
+
}
-
- private String getWriteWrapperBody(CtClass clazz, CtField field, boolean shouldReplaceArrayAccess, int index)
+
+ private String getWriteWrapperBody(CtClass clazz, CtField field, boolean shouldReplaceArrayAccess, int index)
throws NotFoundException, CannotCompileException
{
String name = field.getName();
@@ -178,9 +178,8 @@
fieldString = clazz.getName() + "." + field.getName();
}
// write wrapper
- return
+ return
"{ " +
- " System.out.println(\"INSIDE getWriteWrapperBody for class: "+clazz.getName()+", field: "+field.getName()+", modifier: "+field.getModifiers()+"\");\n" +
" " + getArrayWriteRegistration(shouldReplaceArrayAccess, targetString, field, fieldString, "$2") +
" if (" + Instrumentor.HELPER_FIELD_NAME + ".hasAspects() " + instanceCheck + " ) " +
" { " +
@@ -253,7 +252,7 @@
fieldAccess.replace(code);
}
}
-
+
}//End Inner class FieldAccessExprEditor
}
More information about the jboss-cvs-commits
mailing list