[jboss-cvs] JBossAS SVN: r63469 - in projects/aop/trunk/aop/src: test/org/jboss/test/aop/beforeafterArgs and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jun 12 09:27:40 EDT 2007
Author: flavia.rainone at jboss.com
Date: 2007-06-12 09:27:40 -0400 (Tue, 12 Jun 2007)
New Revision: 63469
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByConJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByMethodJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructionJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructorJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/FieldJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByConJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByMethodJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodJoinPointGenerator.java
projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ArgsTestCase.java
Log:
[JBAOP-389] Bug fixed.
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByConJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByConJoinPointGenerator.java 2007-06-12 10:24:20 UTC (rev 63468)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByConJoinPointGenerator.java 2007-06-12 13:27:40 UTC (rev 63469)
@@ -73,7 +73,8 @@
public ConByConJoinPointGenerator(GeneratedClassAdvisor advisor, JoinPointInfo info)
{
super(advisor, info, JoinPointParameters.CALLER_ARGS,
- ((ConByConInfo) info).getConstructor().getParameterTypes().length);
+ ((ConByConInfo) info).getConstructor().getParameterTypes().length,
+ false);
returnType = new WeakReference(((ConByConInfo)info).getCalledClass());
}
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByMethodJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByMethodJoinPointGenerator.java 2007-06-12 10:24:20 UTC (rev 63468)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByMethodJoinPointGenerator.java 2007-06-12 13:27:40 UTC (rev 63469)
@@ -73,7 +73,8 @@
public ConByMethodJoinPointGenerator(GeneratedClassAdvisor advisor, JoinPointInfo info)
{
super(advisor, info, getParameters((ConByMethodInfo) info),
- ((ConByMethodInfo) info).getConstructor().getParameterTypes().length);
+ ((ConByMethodInfo) info).getConstructor().getParameterTypes().length,
+ false);
hasCallingObject = !java.lang.reflect.Modifier.isStatic(((ConByMethodInfo)info).getCallingMethod().getModifiers());
returnType = new WeakReference(((ConByMethodInfo)info).getCalledClass());
}
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructionJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructionJoinPointGenerator.java 2007-06-12 10:24:20 UTC (rev 63468)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructionJoinPointGenerator.java 2007-06-12 13:27:40 UTC (rev 63469)
@@ -71,7 +71,8 @@
public ConstructionJoinPointGenerator(GeneratedClassAdvisor advisor, JoinPointInfo info)
{
super(advisor, info, JoinPointParameters.TARGET_ARGS,
- ((ConstructionInfo) info).getConstructor().getParameterTypes().length);
+ ((ConstructionInfo) info).getConstructor().getParameterTypes().length,
+ false);
}
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructorJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructorJoinPointGenerator.java 2007-06-12 10:24:20 UTC (rev 63468)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructorJoinPointGenerator.java 2007-06-12 13:27:40 UTC (rev 63469)
@@ -73,7 +73,8 @@
public ConstructorJoinPointGenerator(GeneratedClassAdvisor advisor, JoinPointInfo info)
{
super(advisor, info, JoinPointParameters.ONLY_ARGS,
- ((ConstructorInfo) info).getConstructor().getParameterTypes().length);
+ ((ConstructorInfo) info).getConstructor().getParameterTypes().length,
+ false);
returnType = new WeakReference(((ConstructorInfo)info).getConstructor().getDeclaringClass());
}
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/FieldJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/FieldJoinPointGenerator.java 2007-06-12 10:24:20 UTC (rev 63468)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/FieldJoinPointGenerator.java 2007-06-12 13:27:40 UTC (rev 63469)
@@ -81,7 +81,7 @@
public FieldJoinPointGenerator(GeneratedClassAdvisor advisor, JoinPointInfo info)
{
super(advisor, info, getParameters((FieldInfo) info),
- ((FieldInfo) info).isRead()? 0: 1);
+ ((FieldInfo) info).isRead()? 0: 1, ((FieldInfo) info).isRead());
if (((FieldInfo)info).isRead())
{
@@ -526,14 +526,6 @@
StringBuffer code = new StringBuffer("public java.lang.Object[] ");
code.append(OptimizedBehaviourInvocations.GET_ARGUMENTS);
code.append("(){ ");
- code.append(" if(");
- code.append(ARGUMENTS);
- code.append(" == null)");
- code.append(" {");
- code.append(" ");
- code.append(ARGUMENTS);
- code.append(" = new java.lang.Object[0];");
- code.append(" }");
code.append(" return ");
code.append(ARGUMENTS);
code.append("; ");
@@ -546,6 +538,7 @@
StringBuffer code = new StringBuffer(
"public void setArguments(java.lang.Object[] args)");
code.append("{ ");
+ code.append("if (args != null){ throw new RuntimeException(\"Arguments array of field read must be null\");}");
code.append(ARGUMENTS);
code.append("=args;");
code.append("}");
@@ -649,6 +642,10 @@
StringBuffer code = new StringBuffer(
"public void setArguments(java.lang.Object[] args)");
code.append("{ ");
+ code.append("if (args == null || args.length != 1)");
+ code.append("{throw new RuntimeException(");
+ code.append("\"Field write arguments must be a non-null array containing");
+ code.append(" a single element: the value of the field write\");}");
code.append(ARGUMENTS);
code.append("=args;");
code.append(" super.value=args[0];");
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2007-06-12 10:24:20 UTC (rev 63468)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2007-06-12 13:27:40 UTC (rev 63469)
@@ -89,8 +89,8 @@
private static final String GET_ARGUMENTS= OptimizedBehaviourInvocations.GET_ARGUMENTS + "()";
protected static final CtClass[] EMPTY_CTCLASS_ARRAY = new CtClass[0];
private final ArrayList<Integer> joinPointArguments;
+ private final boolean nullArgsArray;
-
private JoinPointParameters parameters;
private static int increment;
private Class advisorClass;
@@ -110,13 +110,25 @@
private HashMap<String, GeneratedClassInfo> generatedJoinPointClassCache =
new HashMap<String, GeneratedClassInfo>();
+ /**
+ * Constructor.
+ *
+ * @param advisor the advisor associated to this generator
+ * @param info information regarding the joinpoint to be intercepted
+ * @param parameters indicates the parameters available to the interception
+ * of this joinpoint
+ * @param argumentsSize number of joinpoint arguments
+ * @param nullArgsArray <code>true</code> to indicate that the arguments array
+ * should be null when there is not argument available
+ */
protected JoinPointGenerator(GeneratedClassAdvisor advisor, JoinPointInfo info,
- JoinPointParameters parameters, int argumentsSize)
+ JoinPointParameters parameters, int argumentsSize, boolean nullArgsArray)
{
-// this.info = info;
+ // this.info = info;
this.parameters = parameters;
-// this.advisor = advisor;
+ // this.advisor = advisor;
this.advisorClass = advisor.getClass();
+ this.nullArgsArray = nullArgsArray;
Class[] interfaces = advisorClass.getInterfaces();
for (int i = 0 ; i < interfaces.length ; i++)
@@ -649,7 +661,7 @@
// declare arguments array if necessary
if (argsFoundBefore || argsFoundAfter)
{
- code.insert(1, parameters.declareArgsArray(parameterTypes.length));
+ code.insert(1, parameters.declareArgsArray(parameterTypes.length, nullArgsArray));
}
return code.toString();
}
@@ -1819,13 +1831,31 @@
return firstArgIndex;
}
- public final String declareArgsArray(int totalParameters)
+ /**
+ * Returns an statement declaring the arguments array.
+ *
+ * @param totalParameters the total number of joinpoint parameters (including
+ * caller and target when available)
+ * @param nullArgsArray <code>true</code> to indicate that the array should
+ * be <code>null</code> where there is no argument;
+ * <code>false</code> to indicate it should be an empty
+ * array
+ * @return an statement declaring (and initializing) the arguments array
+ */
+ public final String declareArgsArray(int totalParameters, boolean nullArgsArray)
{
StringBuffer buffer = new StringBuffer("Object[] ");
buffer.append(ARGUMENTS);
if (++totalParameters == firstArgIndex)
{
- buffer.append(" = new Object[0];");
+ if (nullArgsArray)
+ {
+ buffer.append(" = null;");
+ }
+ else
+ {
+ buffer.append(" = new Object[0];");
+ }
}
else
{
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByConJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByConJoinPointGenerator.java 2007-06-12 10:24:20 UTC (rev 63468)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByConJoinPointGenerator.java 2007-06-12 13:27:40 UTC (rev 63469)
@@ -69,7 +69,7 @@
public MethodByConJoinPointGenerator(GeneratedClassAdvisor advisor, JoinPointInfo info)
{
super(advisor, info, getParameters((MethodByConInfo) info),
- ((MethodByConInfo) info).getMethod().getParameterTypes().length);
+ ((MethodByConInfo) info).getMethod().getParameterTypes().length, false);
if (!((MethodByConInfo)info).getMethod().getReturnType().equals(Void.TYPE))
{
returnType = new WeakReference(((MethodByConInfo)info).getMethod().getReturnType());
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByMethodJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByMethodJoinPointGenerator.java 2007-06-12 10:24:20 UTC (rev 63468)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByMethodJoinPointGenerator.java 2007-06-12 13:27:40 UTC (rev 63469)
@@ -69,7 +69,7 @@
public MethodByMethodJoinPointGenerator(GeneratedClassAdvisor advisor, JoinPointInfo info)
{
super(advisor, info, getParameters((MethodByMethodInfo) info),
- ((MethodByMethodInfo) info).getMethod().getParameterTypes().length);
+ ((MethodByMethodInfo) info).getMethod().getParameterTypes().length, false);
if (!((MethodByMethodInfo)info).getMethod().getReturnType().equals(Void.TYPE))
{
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodJoinPointGenerator.java 2007-06-12 10:24:20 UTC (rev 63468)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodJoinPointGenerator.java 2007-06-12 13:27:40 UTC (rev 63469)
@@ -72,7 +72,7 @@
public MethodJoinPointGenerator(GeneratedClassAdvisor advisor, MethodInfo info)
{
super(advisor, info, getParameters(info),
- info.getMethod().getParameterTypes().length);
+ info.getMethod().getParameterTypes().length, false);
if (!info.getUnadvisedMethod().getReturnType().equals(Void.TYPE))
{
returnType = new WeakReference(info.getUnadvisedMethod().getReturnType());
Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ArgsTestCase.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ArgsTestCase.java 2007-06-12 10:24:20 UTC (rev 63468)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterArgs/ArgsTestCase.java 2007-06-12 13:27:40 UTC (rev 63469)
@@ -68,7 +68,7 @@
assertTrue(ArgsAspect.before3);
assertSame(ArgsAspect.before2Args, ArgsAspect.before3Args);
- assertEquals(0, ArgsAspect.before2Args.length);
+ assertNull(ArgsAspect.before2Args);
assertFalse(ArgsAspect.before6);
assertFalse(ArgsAspect.before7);
@@ -193,13 +193,12 @@
assertTrue(ArgsAspect.after3);
assertTrue(ArgsAspect.finally1);
- assertNotNull(ArgsAspect.before2Args);
assertSame(ArgsAspect.before2Args, ArgsAspect.before3Args);
assertSame(ArgsAspect.before2Args, ArgsAspect.after2Args);
assertSame(ArgsAspect.before2Args, ArgsAspect.after3Args);
assertSame(ArgsAspect.before2Args, ArgsAspect.finally1Args);
- assertEquals(0, ArgsAspect.before2Args.length);
-
+ assertNull(ArgsAspect.before2Args);
+
assertFalse(ArgsAspect.after6);
assertFalse(ArgsAspect.after7);
assertFalse(ArgsAspect.after8);
More information about the jboss-cvs-commits
mailing list