[jboss-cvs] JBossAS SVN: r60155 - in projects/aop/trunk/aop: src/resources/test/args and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jan 31 22:18:59 EST 2007


Author: flavia.rainone at jboss.com
Date: 2007-01-31 22:18:59 -0500 (Wed, 31 Jan 2007)
New Revision: 60155

Added:
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgumentsAspect.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgumentsPOJO.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgumentsTestCase.java
Modified:
   projects/aop/trunk/aop/base-tests.xml
   projects/aop/trunk/aop/build-tests-jdk50.xml
   projects/aop/trunk/aop/src/resources/test/args/jboss-aop.xml
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgAspect.java
Log:
[JBAOP-352] Test consistency of arguments/typed args values during execution of around advices

Modified: projects/aop/trunk/aop/base-tests.xml
===================================================================
--- projects/aop/trunk/aop/base-tests.xml	2007-02-01 03:16:44 UTC (rev 60154)
+++ projects/aop/trunk/aop/base-tests.xml	2007-02-01 03:18:59 UTC (rev 60155)
@@ -2,6 +2,9 @@
 
    <target name="_base-tests">
       <antcall target="${test-target}" inheritRefs="true">
+         <param name="test" value="args"/>
+      </antcall>
+      <antcall target="${test-target}" inheritRefs="true">
          <param name="test" value="packagedotdot"/>
       </antcall>
       <antcall target="${test-target}" inheritRefs="true">

Modified: projects/aop/trunk/aop/build-tests-jdk50.xml
===================================================================
--- projects/aop/trunk/aop/build-tests-jdk50.xml	2007-02-01 03:16:44 UTC (rev 60154)
+++ projects/aop/trunk/aop/build-tests-jdk50.xml	2007-02-01 03:18:59 UTC (rev 60155)
@@ -465,10 +465,6 @@
       </antcall>
 
    	<!-- Tests only applicable for this weaving mode -->
-      <antcall target="_run-precompiled-test" inheritRefs="true">
-         <param name="test" value="args"/>
-         <param name="caller" value="precompiled-tests"/>
-      </antcall>
 	   <antcall target="_run-precompiled-test" inheritRefs="true">
          <param name="test" value="override"/>
          <param name="caller" value="precompiled-tests"/>
@@ -501,6 +497,14 @@
          <param name="exclude" value="**/GenAdvisorOverrideTestCase.class"/>
       </antcall>
    </target>
+   
+   <target name="non-optimized-test" depends="init">
+      <taskdef name="aopc" classname="org.jboss.aop.ant.AopC" classpathref="jboss.aop.classpath"/>
+      <antcall target="_run-precompiled-test" inheritRefs="true">
+         <param name="test" value="${test}"/>
+         <param name="caller" value="non-optimized-precompiled-tests"/>
+      </antcall>
+   </target>
 
    <!-- ==================================================================================== -->
    <!-- JDK 5.0 GENERATED ADVISOR PRECOMPILED TESTS                                          -->
@@ -516,10 +520,6 @@
 
       <!-- Tests only applicable for this weaving mode -->
       <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/resources/test/args/jboss-aop.xml
===================================================================
--- projects/aop/trunk/aop/src/resources/test/args/jboss-aop.xml	2007-02-01 03:16:44 UTC (rev 60154)
+++ projects/aop/trunk/aop/src/resources/test/args/jboss-aop.xml	2007-02-01 03:18:59 UTC (rev 60155)
@@ -2,6 +2,69 @@
 <!DOCTYPE aop SYSTEM "jboss-aop_1_0.dtd">
 
 <aop>
+   <!-- get/setArguments test -->
+   <aspect class="org.jboss.test.aop.args.ArgumentsAspect" scope="PER_VM"/>
+  
+   <stack name="getAndChange">
+		<advice name="getArgumentsAdvice1" aspect="org.jboss.test.aop.args.ArgumentsAspect"/>
+      <advice name="getAndChangeArgumentsAdvice" aspect="org.jboss.test.aop.args.ArgumentsAspect"/>
+      <advice name="getArgumentsAdvice2" aspect="org.jboss.test.aop.args.ArgumentsAspect"/>      
+   </stack>
+  
+   <cflow-stack name="ArgumentsPOJO1_constructor">
+      <called expr="org.jboss.test.aop.args.ArgumentsPOJO1->new(..)"/>
+   </cflow-stack>
+   
+   <cflow-stack name="ArgumentsPOJO1_method">
+      <called expr="* org.jboss.test.aop.args.ArgumentsPOJO1->*(..)"/>
+   </cflow-stack>
+  
+   <bind pointcut="all(org.jboss.test.aop.args.ArgumentsPOJO1)">
+		<stack-ref name="getAndChange"/>
+   </bind>
+
+	<bind pointcut="call(org.jboss.test.aop.args.CalledPOJO->new(int))" cflow="(ArgumentsPOJO1_constructor OR ArgumentsPOJO1_method)">
+		<stack-ref name="getAndChange"/>
+   </bind>
+
+	<bind pointcut="call(* org.jboss.test.aop.args.CalledPOJO->*(int))" cflow="(ArgumentsPOJO1_constructor OR ArgumentsPOJO1_method)">
+		<stack-ref name="getAndChange"/>
+   </bind>
+
+	<bind pointcut="call(static * org.jboss.test.aop.args.CalledPOJO->*(int))" cflow="(ArgumentsPOJO1_constructor OR ArgumentsPOJO1_method)">
+      <advice name="setArgumentsAdvice" aspect="org.jboss.test.aop.args.ArgumentsAspect"/>
+   </bind>
+
+   <stack name="set">
+      <advice name="getArgumentsAdvice1" aspect="org.jboss.test.aop.args.ArgumentsAspect"/>
+      <advice name="setArgumentsAdvice" aspect="org.jboss.test.aop.args.ArgumentsAspect"/>
+      <advice name="getArgumentsAdvice2" aspect="org.jboss.test.aop.args.ArgumentsAspect"/>
+   </stack>
+   
+   <cflow-stack name="ArgumentsPOJO2_constructor">
+      <called expr="org.jboss.test.aop.args.ArgumentsPOJO2->new(..)"/>
+   </cflow-stack>
+   
+   <cflow-stack name="ArgumentsPOJO2_method">
+      <called expr="* org.jboss.test.aop.args.ArgumentsPOJO2->*(..)"/>
+   </cflow-stack>
+   
+   <bind pointcut="all(org.jboss.test.aop.args.ArgumentsPOJO2)">
+      <stack-ref name="set"/>
+   </bind>
+   
+   <bind pointcut="call(org.jboss.test.aop.args.CalledPOJO->new(..))" cflow="(ArgumentsPOJO2_constructor OR ArgumentsPOJO2_method)">
+      <stack-ref name="set"/>
+   </bind>
+
+	<bind pointcut="call(* org.jboss.test.aop.args.CalledPOJO->*(..))" cflow="(ArgumentsPOJO2_constructor OR ArgumentsPOJO2_method)">
+      <stack-ref name="set"/>
+   </bind>
+
+	<bind pointcut="call(static * org.jboss.test.aop.args.CalledPOJO->*(int))" cflow="(ArgumentsPOJO2_constructor OR ArgumentsPOJO2_method)">
+      <advice name="getAndChangeArgumentsAdvice" aspect="org.jboss.test.aop.args.ArgumentsAspect"/>
+   </bind>
+      
    <!-- @Arg test -->
    <aspect class="org.jboss.test.aop.args.ArgAspect" 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-02-01 03:16:44 UTC (rev 60154)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgAspect.java	2007-02-01 03:18:59 UTC (rev 60155)
@@ -21,8 +21,6 @@
   */
 package org.jboss.test.aop.args;
 
-import java.util.Collection;
-
 import junit.framework.Assert;
 
 import org.jboss.aop.advice.annotation.Arg;

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgumentsAspect.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgumentsAspect.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgumentsAspect.java	2007-02-01 03:18:59 UTC (rev 60155)
@@ -0,0 +1,139 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.aop.args;
+
+import org.jboss.aop.joinpoint.ConstructorCalledByConstructorInvocation;
+import org.jboss.aop.joinpoint.ConstructorCalledByMethodInvocation;
+import org.jboss.aop.joinpoint.ConstructorInvocation;
+import org.jboss.aop.joinpoint.Invocation;
+import org.jboss.aop.joinpoint.MethodCalledByConstructorInvocation;
+import org.jboss.aop.joinpoint.MethodCalledByMethodInvocation;
+import org.jboss.aop.joinpoint.MethodInvocation;
+
+/**
+ * Aspect class used by get/setArguments tests.
+ * 
+ * @author  <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+public class ArgumentsAspect
+{
+   public static Object[] arguments1 = null;
+   public static Object[] arguments2 = null;
+   
+   public static final void clear()
+   {
+      arguments1 = null;
+      arguments2 = null;
+   }
+   
+   public Object getAndChangeArgumentsAdvice(Invocation invocation) throws Throwable
+   {
+      Object[] arguments = getArguments(invocation);
+      if (arguments != null && arguments.length == 1)
+      {
+         arguments[0] = Integer.valueOf(((Integer) arguments[0]).intValue() /2);
+      }
+      return invocation.invokeNext();
+   }
+   
+   public Object getArgumentsAdvice1(Invocation invocation) throws Throwable
+   {
+      Object[] arguments = getArguments(invocation);
+      if (arguments != null && arguments.length == 1)
+      {
+         arguments1 = arguments;
+      }
+      return invocation.invokeNext();
+   }
+   
+   public Object getArgumentsAdvice2(Invocation invocation) throws Throwable
+   {
+
+      Object[] arguments = getArguments(invocation);
+      if (arguments != null && arguments.length == 1)
+      {
+         arguments2 = arguments;
+      }
+      return invocation.invokeNext();
+   }
+   
+   public Object setArgumentsAdvice(Invocation invocation) throws Throwable
+   {
+      Object[] arguments = new Object[] {Integer.valueOf(37)};
+      if (invocation instanceof ConstructorInvocation &&
+            // avoid constructors that receive an intance of Call enum
+            ((ConstructorInvocation) invocation).getArguments().length == 1)
+      {
+         ((ConstructorInvocation) invocation).setArguments(arguments);
+      }
+      else if (invocation instanceof MethodInvocation)
+      {
+         ((MethodInvocation) invocation).setArguments(arguments);
+      }
+      else if (invocation instanceof ConstructorCalledByConstructorInvocation)
+      {
+         ((ConstructorCalledByConstructorInvocation) invocation).setArguments(arguments);
+      }
+      else if (invocation instanceof ConstructorCalledByMethodInvocation)
+      {
+         ((ConstructorCalledByMethodInvocation) invocation).setArguments(arguments);
+      }
+      else if (invocation instanceof MethodCalledByConstructorInvocation)
+      {
+         ((MethodCalledByConstructorInvocation) invocation).setArguments(arguments);
+      }
+      else if (invocation instanceof MethodCalledByMethodInvocation)
+      {
+         ((MethodCalledByMethodInvocation) invocation).setArguments(arguments);
+      }
+      return invocation.invokeNext();
+   }
+   
+   private Object[] getArguments(Invocation invocation)
+   {
+      if (invocation instanceof ConstructorInvocation)
+      {
+         return ((ConstructorInvocation) invocation).getArguments();
+      }
+      if (invocation instanceof MethodInvocation)
+      {
+         return ((MethodInvocation) invocation).getArguments();
+      }
+      if (invocation instanceof ConstructorCalledByConstructorInvocation)
+      {
+         return ((ConstructorCalledByConstructorInvocation) invocation).getArguments();
+      }
+      if (invocation instanceof ConstructorCalledByMethodInvocation)
+      {
+         return ((ConstructorCalledByMethodInvocation) invocation).getArguments();
+      }
+      if (invocation instanceof MethodCalledByConstructorInvocation)
+      {
+         return ((MethodCalledByConstructorInvocation) invocation).getArguments();
+      }
+      if (invocation instanceof MethodCalledByMethodInvocation)
+      {
+         return ((MethodCalledByMethodInvocation) invocation).getArguments();
+      }
+      return null;
+   }
+}
\ No newline at end of file

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgumentsPOJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgumentsPOJO.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgumentsPOJO.java	2007-02-01 03:18:59 UTC (rev 60155)
@@ -0,0 +1,179 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.aop.args;
+
+
+/**
+ * Plain old java object used by get/setArguments tests.
+ * 
+ * @author  <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+class ArgumentsPOJO1
+{
+   int arg = 0;
+   
+   public ArgumentsPOJO1() {}
+   
+   public ArgumentsPOJO1(int arg)
+   {
+      this.arg = arg;
+   }
+   
+   public ArgumentsPOJO1(Call call, int arg)
+   {
+      this.arg = call.perform(arg);
+   }
+   
+   public int method(int arg)
+   {
+      return arg * 3;
+   }
+   
+   public int staticMethod(int arg)
+   {
+      return arg + 20;
+   }
+   
+   public CalledPOJO createPOJO(int arg)
+   {
+      return new CalledPOJO(arg);
+   }
+   
+   public int callPOJO(int arg)
+   {
+      CalledPOJO pojo = new CalledPOJO();
+      return pojo.method(arg);
+   }
+   
+   public int callPOJOStatic(int arg)
+   {
+      return CalledPOJO.staticMethod(arg);
+   }
+   
+}
+
+/**
+ * Plain old java object used by get/setArguments tests.
+ * 
+ * @author  <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+class ArgumentsPOJO2
+{
+   int arg = 0;
+   
+   public ArgumentsPOJO2() {}
+   
+   public ArgumentsPOJO2(int arg)
+   {
+      this.arg = arg;
+   }
+   
+   public ArgumentsPOJO2(Call call, int arg)
+   {
+      this.arg = call.perform(arg);
+   }
+   
+   public int method(int arg)
+   {
+      return arg * 3;
+   }
+   
+   public int staticMethod(int arg)
+   {
+      return arg + 20;
+   }
+   
+   public CalledPOJO createPOJO(int arg)
+   {
+      return new CalledPOJO(arg);
+   }
+   
+   public int callPOJO(int arg)
+   {
+      CalledPOJO pojo = new CalledPOJO();
+      return pojo.method(arg);
+   }
+   
+   public int callPOJOStatic(int arg)
+   {
+      return CalledPOJO.staticMethod(arg);
+   }
+   
+}
+
+enum Call
+{
+   CONSTRUCTOR
+   {
+      public int perform(int arg)
+      {
+         CalledPOJO pojo = new CalledPOJO(arg);
+         return pojo.arg;
+      }
+   },
+   
+   METHOD
+   {
+      public int perform(int arg)
+      {
+         CalledPOJO pojo = new CalledPOJO();
+         return pojo.method(arg);
+      }
+   },
+   
+   STATIC_METHOD()
+   {
+      public int perform(int arg)
+      {
+         return CalledPOJO.staticMethod(arg);
+      }
+   };
+   
+   public abstract int perform(int arg);
+}
+
+/**
+ * Plain old java object used by get/setArguments tests.
+ * 
+ * @author  <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+class CalledPOJO
+{
+   int arg = 0;
+ 
+   CalledPOJO() {}
+   
+   CalledPOJO(int arg)
+   {
+      this.arg = arg;
+   }
+   
+   public int method(int arg)
+   {
+      return arg * 7;
+   }
+   
+   public static int staticMethod(int arg)
+   {
+      return arg - 1;
+   }
+}
\ No newline at end of file

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgumentsTestCase.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgumentsTestCase.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/args/ArgumentsTestCase.java	2007-02-01 03:18:59 UTC (rev 60155)
@@ -0,0 +1,278 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.aop.args;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+import org.jboss.test.aop.AOPTestWithSetup;
+
+/**
+ * Tests the use of get/setArguments invocation methods.
+ * 
+ * @author  <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+public class ArgumentsTestCase extends AOPTestWithSetup
+{
+   private ArgumentsPOJO1 pojo1;
+   private ArgumentsPOJO2 pojo2;
+
+   public static void main(String[] args)
+   {
+      TestRunner.run(suite());
+   }
+
+   public static Test suite()
+   {
+      TestSuite suite = new TestSuite("ArgumentsTestCase");
+      suite.addTestSuite(ArgumentsTestCase.class);
+      return suite;
+   }
+
+   public ArgumentsTestCase(String name)
+   {
+      super(name);
+   }
+
+   public void setUp() throws Exception
+   {
+      super.setUp();
+      pojo1 = new ArgumentsPOJO1();
+      pojo2 = new ArgumentsPOJO2();
+      ArgumentsAspect.clear();
+   }
+   
+   public void testConstructorInvocation1()
+   {
+      ArgumentsPOJO1 pojo = new ArgumentsPOJO1(5);
+      
+      assertEquals(2, pojo.arg);
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(2, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+   }
+   
+   public void testConstructorInvocation2()
+   {
+      ArgumentsPOJO2 pojo = new ArgumentsPOJO2(23);
+      
+      assertEquals(37, pojo.arg);
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertNotSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(23, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+      assertEquals(1, ArgumentsAspect.arguments2.length);
+      assertEquals(37, ((Integer) ArgumentsAspect.arguments2[0]).intValue());
+   }
+   
+   public void testMethod1()
+   {
+      assertEquals(0, pojo1.method(1));
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(0, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+   }
+   
+   public void testMethod2()
+   {
+      assertEquals(111, pojo2.method(1100));
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertNotSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(1100, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+      assertEquals(1, ArgumentsAspect.arguments2.length);
+      assertEquals(37, ((Integer) ArgumentsAspect.arguments2[0]).intValue());
+   }
+   
+   public void testStaticMethod1()
+   {
+      assertEquals(4193, pojo1.staticMethod(8347));
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(4173, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+   }
+   
+   public void testStaticMethod2()
+   {
+      assertEquals(57, pojo2.staticMethod(148));
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertNotSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(148, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+      assertEquals(1, ArgumentsAspect.arguments2.length);
+      assertEquals(37, ((Integer) ArgumentsAspect.arguments2[0]).intValue());
+   }
+   
+   public void testConCreatePOJO1()
+   {
+      ArgumentsPOJO1 pojo = new ArgumentsPOJO1(Call.CONSTRUCTOR, 2007);
+      assertEquals(1003, pojo.arg);
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(1003, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+   }
+   
+   public void testConCreatePOJO2()
+   {
+      ArgumentsPOJO2 pojo = new ArgumentsPOJO2(Call.CONSTRUCTOR, 2037);
+      assertEquals(37, pojo.arg);
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertNotSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(2037, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+      assertEquals(1, ArgumentsAspect.arguments2.length);
+      assertEquals(37, ((Integer) ArgumentsAspect.arguments2[0]).intValue());
+   }
+   
+   public void testMethodCreatePOJO1()
+   {
+      // intercepted twice by each advice: once for caller, once for called
+      CalledPOJO pojo = pojo1.createPOJO(16);
+      assertEquals(4, pojo.arg);
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(4, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+   }
+   
+   public void testMethodCreatePOJO2()
+   {
+      // intercepted twice by each advice: once for caller, once for called
+      CalledPOJO pojo = pojo2.createPOJO(1791);
+      assertEquals(37, pojo.arg);
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertNotSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(37, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+      assertEquals(1, ArgumentsAspect.arguments2.length);
+      assertEquals(37, ((Integer) ArgumentsAspect.arguments2[0]).intValue());
+   }
+   
+   public void testConCallPOJO1()
+   {
+      ArgumentsPOJO1 pojo = new ArgumentsPOJO1(Call.METHOD, 30);
+      assertEquals(105, pojo.arg);
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(15, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+   }
+   
+   public void testConCallPOJO2()
+   {
+      ArgumentsPOJO2 pojo = new ArgumentsPOJO2(Call.METHOD, 56);
+      assertEquals(259, pojo.arg);
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertNotSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(56, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+      assertEquals(1, ArgumentsAspect.arguments2.length);
+      assertEquals(37, ((Integer) ArgumentsAspect.arguments2[0]).intValue());
+   }
+   
+   public void testMethodCallPOJO1()
+   {
+      // intercepted twice by each advice: once for caller, once for called
+      assertEquals(665, pojo1.callPOJO(382));
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(95, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+   }
+   
+   public void testMethodCallPOJO2()
+   {
+      // intercepted twice by each advice: once for caller, once for called
+      assertEquals(259, pojo2.callPOJO(1203));
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertNotSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(37, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+      assertEquals(1, ArgumentsAspect.arguments2.length);
+      assertEquals(37, ((Integer) ArgumentsAspect.arguments2[0]).intValue());
+   }
+   
+   public void testConCallStaticPOJO1()
+   {
+      ArgumentsPOJO1 pojo = new ArgumentsPOJO1(Call.STATIC_METHOD, -2041);
+      assertEquals(36, pojo.arg);
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(-1020, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+   }
+   
+   public void testConCallStaticPOJO2()
+   {
+      ArgumentsPOJO2 pojo = new ArgumentsPOJO2(Call.STATIC_METHOD, -8);
+      assertEquals(17, pojo.arg);
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertNotSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(-8, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+      assertEquals(1, ArgumentsAspect.arguments2.length);
+      assertEquals(18, ((Integer) ArgumentsAspect.arguments2[0]).intValue());
+   }
+   
+   public void testMethodCallStaticPOJO1()
+   {
+      // intercepted twice by each advice: once for caller, once for called
+      assertEquals(36, pojo1.callPOJOStatic(123456));
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(30864, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+   }
+   
+   public void testMethodCallStaticPOJO2()
+   {
+      // intercepted twice by each advice: once for caller, once for called
+      assertEquals(17, pojo2.callPOJOStatic(99999));
+      
+      assertNotNull(ArgumentsAspect.arguments1);
+      assertNotSame(ArgumentsAspect.arguments1, ArgumentsAspect.arguments2);
+      assertEquals(1, ArgumentsAspect.arguments1.length);
+      assertEquals(37, ((Integer) ArgumentsAspect.arguments1[0]).intValue());
+      assertEquals(1, ArgumentsAspect.arguments2.length);
+      assertEquals(18, ((Integer) ArgumentsAspect.arguments2[0]).intValue());
+   }
+}
\ No newline at end of file




More information about the jboss-cvs-commits mailing list