[jboss-cvs] JBossAS SVN: r64564 - in projects/aop/trunk/aop: src/main/org/jboss/aop/advice and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Aug 13 21:08:00 EDT 2007


Author: stalep
Date: 2007-08-13 21:08:00 -0400 (Mon, 13 Aug 2007)
New Revision: 64564

Modified:
   projects/aop/trunk/aop/base-tests.xml
   projects/aop/trunk/aop/build-tests-jdk50.xml
   projects/aop/trunk/aop/src/main/org/jboss/aop/advice/PerVmAdvice.java
   projects/aop/trunk/aop/src/resources/test/args/jboss-aop.xml
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgAspect.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgPOJOInterface.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgTestCase.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/POJO.java
Log:
[JBAOP-382] All method params must now implement org.jboss.aop.pointcut.Invocation.
args tests are included again and will only run with the generated advisors instrumentor 

Modified: projects/aop/trunk/aop/base-tests.xml
===================================================================
--- projects/aop/trunk/aop/base-tests.xml	2007-08-13 19:23:10 UTC (rev 64563)
+++ projects/aop/trunk/aop/base-tests.xml	2007-08-14 01:08:00 UTC (rev 64564)
@@ -1,9 +1,11 @@
 <project name="code-generation" default="help">
 
    <target name="_base-tests">
+   <!-- only used with generated advisors
       <antcall target="${test-target}" inheritRefs="true">
          <param name="test" value="args"/>
       </antcall>
+      -->
       <antcall target="${test-target}" inheritRefs="true">
          <param name="test" value="packagedotdot"/>
       </antcall>

Modified: projects/aop/trunk/aop/build-tests-jdk50.xml
===================================================================
--- projects/aop/trunk/aop/build-tests-jdk50.xml	2007-08-13 19:23:10 UTC (rev 64563)
+++ projects/aop/trunk/aop/build-tests-jdk50.xml	2007-08-14 01:08:00 UTC (rev 64564)
@@ -383,6 +383,10 @@
          <param name="exclude" value="**/OverrideTestCase.class"/>
       </antcall>
       <antcall target="_run-javaagent-test" inheritRefs="true">
+         <param name="test" value="args"/>
+         <param name="caller" value="javaagent-genadvisor-tests"/>
+      </antcall>
+      <antcall target="_run-javaagent-test" inheritRefs="true">
          <param name="test" value="dynamicgenadvisor"/>
          <param name="caller" value="javaagent-genadvisor-tests"/>
       </antcall>
@@ -573,6 +577,10 @@
          <param name="caller" value="precompiled-genadvisor-tests"/>
       </antcall>
       <antcall target="_run-precompiled-test" inheritRefs="true">
+         <param name="test" value="args"/>
+         <param name="caller" value="precompiled-genadvisor-tests"/>
+      </antcall>
+      <antcall target="_run-precompiled-test" inheritRefs="true">
          <param name="test" value="beforeafter"/>
          <param name="caller" value="precompiled-genadvisor-tests"/>
       </antcall>

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/advice/PerVmAdvice.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/advice/PerVmAdvice.java	2007-08-13 19:23:10 UTC (rev 64563)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/advice/PerVmAdvice.java	2007-08-14 01:08:00 UTC (rev 64564)
@@ -127,6 +127,23 @@
                {
                   throw new RuntimeException("Only one argument of type invocations is supported. Method "+method.toString()+" does not comply!");
                }
+               
+               // we only support params that implements org.jboss.aop.joinpoint.Invocation
+               Class paramClass = method.getParameterTypes()[0];
+               boolean foundInterface = false;
+               if(paramClass.isInterface() && paramClass.getName().equals("org.jboss.aop.joinpoint.Invocation"))
+                  foundInterface = true;
+               else
+               {
+                  Class superParamClass = findSuperClass(paramClass);
+                  for(Class iClass : superParamClass.getInterfaces())
+                  {
+                     if(iClass.getName().equals("org.jboss.aop.joinpoint.Invocation"))
+                        foundInterface = true;
+                  }
+               }
+               if(!foundInterface)
+                  throw new RuntimeException("Aspect method must have a parameter that implements Invocation. "+method.getName()+"class: "+paramClass.getCanonicalName());
             }
 
             CtClass clazz = TransformerCommon.makeClass(pool, name);
@@ -196,5 +213,15 @@
       f.set(rtn, aspect);
       return rtn;
    }
+   
+   private static Class findSuperClass(Class clazz)
+   {
+      if(clazz.getSuperclass() == null || clazz.getSuperclass().getName().equals("java.lang.Object"))
+         return clazz;
+      else
+         return findSuperClass(clazz.getSuperclass());
 
+   }
+      
+
 }
\ No newline at end of file

Modified: projects/aop/trunk/aop/src/resources/test/args/jboss-aop.xml
===================================================================
--- projects/aop/trunk/aop/src/resources/test/args/jboss-aop.xml	2007-08-13 19:23:10 UTC (rev 64563)
+++ projects/aop/trunk/aop/src/resources/test/args/jboss-aop.xml	2007-08-14 01:08:00 UTC (rev 64564)
@@ -67,7 +67,7 @@
 
    <!-- @Arg test -->
    <aspect class="org.jboss.test.aop.args.ArgAspect" scope="PER_VM"/>
-<!--
+
    <bind pointcut="execution(* org.jboss.test.aop.args.POJO->bunchArgs(..))">
       <advice name="bunchArgs" aspect="org.jboss.test.aop.args.ArgAspect"/>
    </bind>
@@ -95,7 +95,7 @@
    <bind pointcut="execution(java.lang.String org.jboss.test.aop.args.POJO->echo(java.lang.String))">
       <advice name="echo" aspect="org.jboss.test.aop.args.ArgAspect"/>
    </bind>
--->
+
    <!-- @Invocation test -->
 	<aspect class="org.jboss.test.aop.args.InvocationAspect" scope="PER_VM"/>
 	

Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgAspect.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgAspect.java	2007-08-13 19:23:10 UTC (rev 64563)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgAspect.java	2007-08-14 01:08:00 UTC (rev 64564)
@@ -105,41 +105,41 @@
       return (Integer) invocation.invokeNext();
    }
 
-//   public int bunch(@Arg int x, @Arg double y, @Arg float z, @Arg String str, @Arg int q)
-//   {
-//      bunchCalled = true;
-//
-//      Assert.assertEquals("Arguments don't match", 1, x);
-//      Assert.assertEquals("Arguments don't match", 2.2, y);
-//      Assert.assertEquals("Arguments don't match", 3.3F, z);
-//      Assert.assertEquals("Arguments don't match", "four", str);
-//      try
-//      {
-//         return ((Integer) CurrentInvocation.proceed()).intValue();
-//      }
-//      catch (Throwable throwable)
-//      {
-//         throw new RuntimeException(throwable);
-//      }
-//   }
-//
-//   public int bunch1(@Arg int x, @Arg int q, @Arg String str, @Arg double y, @Arg float z)
-//   {
-//      bunch2Called = true;
-//
-//      Assert.assertEquals("Arguments don't match", 1, x);
-//      Assert.assertEquals("Arguments don't match", 2.2, y);
-//      Assert.assertEquals("Arguments don't match", 3.3F, z);
-//      Assert.assertEquals("Arguments don't match", "four", str);
-//      try
-//      {
-//         return ((Integer) CurrentInvocation.proceed()).intValue();
-//      }
-//      catch (Throwable throwable)
-//      {
-//         throw new RuntimeException(throwable);
-//      }
-//   }
+   public int bunch(@Arg int x, @Arg double y, @Arg float z, @Arg String str, @Arg int q)
+   {
+      bunchCalled = true;
+
+      Assert.assertEquals("Arguments don't match", 1, x);
+      Assert.assertEquals("Arguments don't match", 2.2, y);
+      Assert.assertEquals("Arguments don't match", 3.3F, z);
+      Assert.assertEquals("Arguments don't match", "four", str);
+      try
+      {
+         return ((Integer) CurrentInvocation.proceed()).intValue();
+      }
+      catch (Throwable throwable)
+      {
+         throw new RuntimeException(throwable);
+      }
+   }
+
+   public int bunch1(@Arg int x, @Arg int q, @Arg String str, @Arg double y, @Arg float z)
+   {
+      bunch2Called = true;
+
+      Assert.assertEquals("Arguments don't match", 1, x);
+      Assert.assertEquals("Arguments don't match", 2.2, y);
+      Assert.assertEquals("Arguments don't match", 3.3F, z);
+      Assert.assertEquals("Arguments don't match", "four", str);
+      try
+      {
+         return ((Integer) CurrentInvocation.proceed()).intValue();
+      }
+      catch (Throwable throwable)
+      {
+         throw new RuntimeException(throwable);
+      }
+   }
    
    public Object arg1(@Arg int x) throws Throwable
    {

Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgPOJOInterface.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgPOJOInterface.java	2007-08-13 19:23:10 UTC (rev 64563)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgPOJOInterface.java	2007-08-14 01:08:00 UTC (rev 64564)
@@ -31,6 +31,6 @@
 {
    String echo(String echo);
 
-//   int bunch(int x, double y, float z, String str, int q);
+   int bunch(int x, double y, float z, String str, int q);
 
 }

Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgTestCase.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgTestCase.java	2007-08-13 19:23:10 UTC (rev 64563)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgTestCase.java	2007-08-14 01:08:00 UTC (rev 64564)
@@ -62,59 +62,59 @@
       ArgAspect.clear();
    }
    
-//   public void testBench()
-//   {
-//      {
-//         long start = System.currentTimeMillis();
-//         for (int i = 0; i < 1000000; i++)
-//         {
-//            pojo.bunchArgs(1, 2.2, 3.3F, "four", 5);
-//         }
-//         long end = System.currentTimeMillis() - start;
-//         System.out.println("bunchArgs: " + end);
-//      }
-//
-//      {
-//         long start = System.currentTimeMillis();
-//         for (int i = 0; i < 1000000; i++)
-//         {
-//            pojo.bunchWrapped(1, 2.2, 3.3F, "four", 5);
-//         }
-//         long end = System.currentTimeMillis() - start;
-//         System.out.println("bunchWrapped: " + end);
-//      }
-//
-//      {
-//         long start = System.currentTimeMillis();
-//         for (int i = 0; i < 1000000; i++)
-//         {
-//            pojo.bunchArgsWithInvocation(1, 2.2, 3.3F, "four", 5);
-//         }
-//         long end = System.currentTimeMillis() - start;
-//         System.out.println("bunchArgsWithInvocation: " + end);
-//      }
-//      assertTrue(ArgAspect.argsWithInvocation);
-//      assertTrue(ArgAspect.args);
-//      assertTrue(ArgAspect.wrapped);
-//   }
+   public void testBench()
+   {
+      {
+         long start = System.currentTimeMillis();
+         for (int i = 0; i < 1000000; i++)
+         {
+            pojo.bunchArgs(1, 2.2, 3.3F, "four", 5);
+         }
+         long end = System.currentTimeMillis() - start;
+         System.out.println("bunchArgs: " + end);
+      }
 
+      {
+         long start = System.currentTimeMillis();
+         for (int i = 0; i < 1000000; i++)
+         {
+            pojo.bunchWrapped(1, 2.2, 3.3F, "four", 5);
+         }
+         long end = System.currentTimeMillis() - start;
+         System.out.println("bunchWrapped: " + end);
+      }
+
+      {
+         long start = System.currentTimeMillis();
+         for (int i = 0; i < 1000000; i++)
+         {
+            pojo.bunchArgsWithInvocation(1, 2.2, 3.3F, "four", 5);
+         }
+         long end = System.currentTimeMillis() - start;
+         System.out.println("bunchArgsWithInvocation: " + end);
+      }
+      assertTrue(ArgAspect.argsWithInvocation);
+      assertTrue(ArgAspect.args);
+      assertTrue(ArgAspect.wrapped);
+   }
+
    public void testEcho()
    {
       pojo.echo("hello");
-      //assertTrue(ArgAspect.echoCalled);
+      assertTrue(ArgAspect.echoCalled);
    }
 
-//   public void testBunch()
-//   {
-//      pojo.bunch(1, 2.2, 3.3F, "four", 5);
-//      assertTrue(ArgAspect.bunchCalled);
-//      assertTrue(ArgAspect.bunch2Called);
-//      assertTrue(ArgAspect.arg1Called);
-//      assertTrue(ArgAspect.arg2Called);
-//      assertTrue(ArgAspect.arg3Called);
-//      assertTrue(ArgAspect.arg4Called);
-//      assertTrue(ArgAspect.arg15Called);
-//      assertTrue(ArgAspect.arg24Called);
-//      assertTrue(ArgAspect.emptyArgCalled);
-//   }
+   public void testBunch()
+   {
+      pojo.bunch(1, 2.2, 3.3F, "four", 5);
+      assertTrue(ArgAspect.bunchCalled);
+      assertTrue(ArgAspect.bunch2Called);
+      assertTrue(ArgAspect.arg1Called);
+      assertTrue(ArgAspect.arg2Called);
+      assertTrue(ArgAspect.arg3Called);
+      assertTrue(ArgAspect.arg4Called);
+      assertTrue(ArgAspect.arg15Called);
+      assertTrue(ArgAspect.arg24Called);
+      assertTrue(ArgAspect.emptyArgCalled);
+   }
 }
\ No newline at end of file

Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/POJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/POJO.java	2007-08-13 19:23:10 UTC (rev 64563)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/POJO.java	2007-08-14 01:08:00 UTC (rev 64564)
@@ -37,25 +37,25 @@
       return echo;
    }
 
-//   public int bunch(int x, double y, float z, String str, int q)
-//   {
-//      return x + (int) y + (int) z + q;
-//   }
-//
-//   public int bunchArgs(int x, double y, float z, String str, int q)
-//   {
-//      return x + (int) y + (int) z + q;
-//   }
-//
-//   public int bunchArgsWithInvocation(int x, double y, float z, String str, int q)
-//   {
-//      return x + (int) y + (int) z + q;
-//   }
-//
-//   public int bunchWrapped(int x, double y, float z, String str, int q)
-//   {
-//      return x + (int) y + (int) z + q;
-//   }
+   public int bunch(int x, double y, float z, String str, int q)
+   {
+      return x + (int) y + (int) z + q;
+   }
+
+   public int bunchArgs(int x, double y, float z, String str, int q)
+   {
+      return x + (int) y + (int) z + q;
+   }
+
+   public int bunchArgsWithInvocation(int x, double y, float z, String str, int q)
+   {
+      return x + (int) y + (int) z + q;
+   }
+
+   public int bunchWrapped(int x, double y, float z, String str, int q)
+   {
+      return x + (int) y + (int) z + q;
+   }
    
    /* InvocationTestCase */
    




More information about the jboss-cvs-commits mailing list