[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