[jboss-cvs] JBossAS SVN: r76232 - in projects/aop/branches/joinpoint_graph/aop/src: main/org/jboss/aop/instrument and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jul 25 10:35:24 EDT 2008
Author: flavia.rainone at jboss.com
Date: 2008-07-25 10:35:24 -0400 (Fri, 25 Jul 2008)
New Revision: 76232
Modified:
projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/HotSwapStrategy.java
projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/JoinPointManager.java
projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/FieldAccessTransformer.java
projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/Instrumentor.java
projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/JoinpointStatusUpdate.java
projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/MethodExecutionTransformer.java
projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/util/CtConstructorComparator.java
projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/util/CtFieldComparator.java
projects/aop/branches/joinpoint_graph/aop/src/test/org/jboss/test/aop/jdk15/dynamic/prepareAll/HotSwapEnabledTester.java
Log:
[JBAOP-617]All tests pass, except for the gc on prepareAll.
Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/HotSwapStrategy.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/HotSwapStrategy.java 2008-07-25 13:03:44 UTC (rev 76231)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/HotSwapStrategy.java 2008-07-25 14:35:24 UTC (rev 76232)
@@ -29,6 +29,8 @@
import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import java.util.WeakHashMap;
import javassist.ClassPool;
@@ -246,7 +248,7 @@
private Interceptor[][] fieldReadInterceptors;
private Interceptor[][] fieldWriteInterceptors;
private Interceptor[][] constructorInterceptors;
- private MethodInterceptors methodInterceptors;
+ private Map<MethodInfo, Interceptor[]> methodInterceptors;
private int[] constructorIndexMap;
/**
@@ -311,7 +313,14 @@
this.fieldReadInterceptors = fieldReadInterceptors;
this.fieldWriteInterceptors = fieldWriteInterceptors;
this.constructorInterceptors = constructorInterceptors;
- this.methodInterceptors = methodInterceptors;
+ this.methodInterceptors = new HashMap<MethodInfo, Interceptor[]>();
+ long[] methodKeys = methodInterceptors.keys();
+ for (int i = 0; i < methodKeys.length; i++)
+ {
+ long key = methodKeys[i];
+ MethodInfo methodInfo = methodInterceptors.getMethodInfo(key);
+ this.methodInterceptors.put(methodInfo, methodInfo.getInterceptors());
+ }
this.fields = fieldReadInterceptors.length;
this.constructors = constructorInterceptors.length;
this.methods = methodInterceptors.size();
@@ -328,17 +337,18 @@
{
if (instanceInterceptors == 0)
{
- long[] methodKeys = methodInterceptors.keys();
+ long[] methodKeys = newMethodInterceptors.keys();
for (int i = 0; i < methodKeys.length; i++)
{
long key = methodKeys[i];
- MethodInfo oldMethodInfo = methodInterceptors.getMethodInfo(key);
MethodInfo newMethodInfo = newMethodInterceptors.getMethodInfo(key);
- if (oldMethodInfo.getInterceptorChain().isEmpty() && !newMethodInfo.getInterceptorChain().isEmpty())
+ Interceptor[] oldInterceptorChain = this.methodInterceptors.get(newMethodInfo);
+ if ((oldInterceptorChain == null || oldInterceptorChain.length == 0)
+ && !newMethodInfo.getInterceptorChain().isEmpty())
{
newlyAdvised.methodExecutions.add(newMethodInfo);
}
- else if (!oldMethodInfo.getInterceptorChain().isEmpty() && newMethodInfo.getInterceptorChain().isEmpty())
+ else if ((oldInterceptorChain != null && oldInterceptorChain.length > 0) && newMethodInfo.getInterceptorChain().isEmpty())
{
newlyUnadvised.methodExecutions.add(newMethodInfo);
}
@@ -351,7 +361,13 @@
this.fieldReadInterceptors = newFieldReadInterceptors;
this.fieldWriteInterceptors = newFieldWriteInterceptors;
this.constructorInterceptors = newConstructorInterceptors;
- this.methodInterceptors = newMethodInterceptors;
+ long[] methodKeys = newMethodInterceptors.keys();
+ for (int i = 0; i < methodKeys.length; i++)
+ {
+ long key = methodKeys[i];
+ MethodInfo methodInfo = newMethodInterceptors.getMethodInfo(key);
+ this.methodInterceptors.put(methodInfo, methodInfo.getInterceptors());
+ }
}
/**
@@ -515,14 +531,11 @@
{
if (this.instanceInterceptors == 0)
{
- long[] methodKeys = this.methodInterceptors.keys();
- for (int i = 0; i < methodKeys.length; i++)
+ for (Map.Entry<MethodInfo, Interceptor[]> entry: methodInterceptors.entrySet())
{
- long key = methodKeys[i];
- MethodInfo methodInfo = this.methodInterceptors.getMethodInfo(key);
- if (methodInfo.getInterceptorChain().isEmpty())
+ if (entry.getValue() == null || entry.getValue().length == 0)
{
- joinpoints.methodExecutions.add(methodInfo);
+ joinpoints.methodExecutions.add(entry.getKey());
}
}
findUnadvisedJoinpoints(this.fieldReadInterceptors, joinpoints.fieldReads);
Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/JoinPointManager.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/JoinPointManager.java 2008-07-25 13:03:44 UTC (rev 76231)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/JoinPointManager.java 2008-07-25 14:35:24 UTC (rev 76232)
@@ -41,8 +41,7 @@
abstract class JoinPointManager
{
protected AspectManager domain;
- protected DynamicAOPStrategy dynamicWeavingStrategy;
-
+
/**
* Constructor.
*
@@ -51,7 +50,6 @@
protected JoinPointManager(AspectManager domain)
{
this.domain = domain;
- this.dynamicWeavingStrategy = domain.getDynamicAOPStrategy();
}
/**
@@ -63,7 +61,7 @@
public synchronized void bindingAdded(AdviceBinding binding)
{
this.internalBindingAdded(binding);
- dynamicWeavingStrategy.interceptorChainsUpdated();
+ domain.getDynamicAOPStrategy().interceptorChainsUpdated();
}
/**
@@ -76,7 +74,7 @@
public synchronized void bindingUpdated(AdviceBinding newBinding, AdviceBinding oldBinding)
{
this.internalBindingUpdated(newBinding, oldBinding);
- dynamicWeavingStrategy.interceptorChainsUpdated();
+ domain.getDynamicAOPStrategy().interceptorChainsUpdated();
}
/**
@@ -88,7 +86,7 @@
public synchronized void bindingRemoved(AdviceBinding binding)
{
this.internalBindingRemoved(binding);
- this.dynamicWeavingStrategy.interceptorChainsUpdated();
+ domain.getDynamicAOPStrategy().interceptorChainsUpdated();
}
/**
@@ -100,7 +98,7 @@
public synchronized void bindingsRemoved(Collection<AdviceBinding> bindings)
{
this.internalBindingsRemoved(bindings);
- this.dynamicWeavingStrategy.interceptorChainsUpdated();
+ domain.getDynamicAOPStrategy().interceptorChainsUpdated();
}
/**
Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/FieldAccessTransformer.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/FieldAccessTransformer.java 2008-07-25 13:03:44 UTC (rev 76231)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/FieldAccessTransformer.java 2008-07-25 14:35:24 UTC (rev 76232)
@@ -238,11 +238,11 @@
* @param fieldsSet a collection of <code>java.lang.Integer</code> indentifying
* the field writes to be wrapped.
*/
- public void wrap(CtClass clazz, Collection fieldsGet, Collection fieldsSet) throws CannotCompileException, NotFoundException
+ public void wrap(CtClass clazz, Collection<Integer> fieldsGet, Collection<Integer> fieldsSet) throws CannotCompileException, NotFoundException
{
- List advisableFields = Instrumentor.getAdvisableFields(clazz);
+ List<CtField> advisableFields = Instrumentor.getAdvisableFields(clazz);
CtField[] fields = new CtField[advisableFields.size()];
- fields = (CtField[] ) advisableFields.toArray(fields);
+ fields = (CtField[]) advisableFields.toArray(fields);
for (Iterator iterator = fieldsGet.iterator(); iterator.hasNext(); )
{
int fieldIndex = ((Integer) iterator.next()).intValue();
Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/Instrumentor.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/Instrumentor.java 2008-07-25 13:03:44 UTC (rev 76231)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/Instrumentor.java 2008-07-25 14:35:24 UTC (rev 76232)
@@ -824,9 +824,9 @@
}
- public List getConstructors(CtClass clazz)
+ public List<CtConstructor> getConstructors(CtClass clazz)
{
- List list = new ArrayList();
+ List<CtConstructor> list = new ArrayList<CtConstructor>();
CtConstructor[] constructors = clazz.getDeclaredConstructors();
@@ -835,16 +835,15 @@
list.add(constructors[i]);
}
Collections.sort(list, CtConstructorComparator.INSTANCE);
-
return list;
}
/**
* Gets sorted collection of advisable methods.
*/
- public static List getAdvisableFields(CtClass clazz) throws NotFoundException
+ public static List<CtField> getAdvisableFields(CtClass clazz) throws NotFoundException
{
- List list = new ArrayList();
+ List<CtField> list = new ArrayList<CtField>();
CtField[] fields = clazz.getDeclaredFields();
for (int i = 0; i < fields.length; i++)
{
@@ -947,7 +946,7 @@
//creates a converter
this.converter = new CodeConverter();
// list of instrumented classes
- Collection classes = new HashSet();
+ Collection<CtClass> classes = new HashSet<CtClass>();
try {
// transform classes whose joinpont status have changed
for (Iterator iterator = joinpointUpdates.iterator(); iterator.hasNext(); )
@@ -972,7 +971,7 @@
}
// instrument classes that access the joinpoints whose status have changed, in
// order to make this classes access the joinpoint wrapper instead
- Collection conversionsRegistered = new HashSet();
+ //Collection conversionsRegistered = new HashSet();
synchronized(this.processedClasses)
{
for (Iterator iterator2 = processedClasses.iterator(); iterator2.hasNext(); ) {
Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/JoinpointStatusUpdate.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/JoinpointStatusUpdate.java 2008-07-25 13:03:44 UTC (rev 76231)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/JoinpointStatusUpdate.java 2008-07-25 14:35:24 UTC (rev 76232)
@@ -24,10 +24,10 @@
import java.util.ArrayList;
import java.util.Collection;
+import javassist.CtClass;
+
import org.jboss.aop.MethodInfo;
-import javassist.CtClass;
-
/**
* This class contains the status update of
* all joinpoints associated to a class.
@@ -83,7 +83,7 @@
/**
* The method execution joinpoints.
- * A collection of <code>org.jboss.aop.MethodInfo</code>.
+ * A collection of <code>org.jboss.aop.Integer</code>.
*/
public Collection<MethodInfo> methodExecutions;
Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/MethodExecutionTransformer.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/MethodExecutionTransformer.java 2008-07-25 13:03:44 UTC (rev 76231)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/instrument/MethodExecutionTransformer.java 2008-07-25 14:35:24 UTC (rev 76232)
@@ -153,15 +153,16 @@
/**
* Wraps the method executions contained in <code>methodInfos</code>.
*
- * @param clazz the class being instrumented.
- * @param constructorIndexes a collection of <code>org.jboss.aop.MethodInfo</code> indentifying
- * the methods to be wrapped.
+ * @param clazz the class being instrumented.
+ * @param methodInfos a collection of <code>org.jboss.aop.MethodInfo</code>
+ * indentifying the methods to be wrapped.
*/
- public void wrap(CtClass clazz, Collection methodInfos) throws Exception
+ public void wrap(CtClass clazz, Collection<org.jboss.aop.MethodInfo> methodInfos) throws Exception
{
- for (Iterator iterator = methodInfos.iterator(); iterator.hasNext();)
+
+ for (Iterator<org.jboss.aop.MethodInfo> iterator = methodInfos.iterator(); iterator.hasNext();)
{
- org.jboss.aop.MethodInfo methodInfo = (org.jboss.aop.MethodInfo) iterator.next();
+ org.jboss.aop.MethodInfo methodInfo = iterator.next();
Method method = methodInfo.getMethod();
AOPClassPool classPool = (AOPClassPool) clazz.getClassPool();
Class[] parameterTypes = method.getParameterTypes();
Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/util/CtConstructorComparator.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/util/CtConstructorComparator.java 2008-07-25 13:03:44 UTC (rev 76231)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/util/CtConstructorComparator.java 2008-07-25 14:35:24 UTC (rev 76232)
@@ -32,13 +32,14 @@
* @author <a href="mailto:bill at jboss.org">Bill Burke</a>
* @version $Revision$
*/
-public class CtConstructorComparator implements java.util.Comparator {
+public class CtConstructorComparator implements java.util.Comparator<CtConstructor> {
private CtConstructorComparator() {}
public static final java.util.Comparator INSTANCE = new CtConstructorComparator();
- private int compare(CtConstructor m1, CtConstructor m2) {
+ public int compare(CtConstructor m1, CtConstructor m2)
+ {
try {
CtClass[] args1 = m1.getParameterTypes();
CtClass[] args2 = m2.getParameterTypes();
@@ -60,9 +61,4 @@
// unreachable.
throw new Error();
}
-
- public int compare(Object o1, Object o2) {
- return compare((CtConstructor) o1, (CtConstructor) o2);
- }
-
}
Modified: projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/util/CtFieldComparator.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/util/CtFieldComparator.java 2008-07-25 13:03:44 UTC (rev 76231)
+++ projects/aop/branches/joinpoint_graph/aop/src/main/org/jboss/aop/util/CtFieldComparator.java 2008-07-25 14:35:24 UTC (rev 76232)
@@ -30,18 +30,13 @@
* @author <a href="mailto:bill at jboss.org">Bill Burke</a>
* @version $Revision$
*/
-public class CtFieldComparator implements java.util.Comparator {
+public class CtFieldComparator implements java.util.Comparator<CtField> {
private CtFieldComparator() {}
public static final java.util.Comparator INSTANCE = new CtFieldComparator();
- private int compare(CtField m1, CtField m2) {
+ public int compare(CtField m1, CtField m2) {
return m1.getName().compareTo(m2.getName());
}
-
- public int compare(Object o1, Object o2) {
- return compare((CtField) o1, (CtField) o2);
- }
-
-}
+}
\ No newline at end of file
Modified: projects/aop/branches/joinpoint_graph/aop/src/test/org/jboss/test/aop/jdk15/dynamic/prepareAll/HotSwapEnabledTester.java
===================================================================
--- projects/aop/branches/joinpoint_graph/aop/src/test/org/jboss/test/aop/jdk15/dynamic/prepareAll/HotSwapEnabledTester.java 2008-07-25 13:03:44 UTC (rev 76231)
+++ projects/aop/branches/joinpoint_graph/aop/src/test/org/jboss/test/aop/jdk15/dynamic/prepareAll/HotSwapEnabledTester.java 2008-07-25 14:35:24 UTC (rev 76232)
@@ -187,7 +187,7 @@
* interceptions were performed.
* @throws Throwable
* @see ScenarioLoader#interceptPerInstanceGC()
- */
+ *
public void testPerInstanceGcInterception() throws Throwable
{
// run scenario
More information about the jboss-cvs-commits
mailing list