[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