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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jun 20 07:53:48 EDT 2007


Author: kabir.khan at jboss.com
Date: 2007-06-20 07:53:47 -0400 (Wed, 20 Jun 2007)
New Revision: 63578

Added:
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOA.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOB.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerClassAndPerVmAspects.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerClassJoinpointAspects.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerInstanceAspects.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerJoinpointAspects.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerClassAspect.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerClassJoinpointAspect.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerJoinpointAspect.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerVmAspect.java
Removed:
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJO.java
Modified:
   projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
   projects/aop/trunk/aop/src/resources/test/beforeafterthrowingscoped/jboss-aop.xml
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/BeforeAfterThrowingScopedTestCase.java
Log:
[JBAOP-424] More tests of scoped lightweight aspects

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-20 07:29:47 UTC (rev 63577)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java	2007-06-20 11:53:47 UTC (rev 63578)
@@ -684,7 +684,6 @@
 
       code.append("   try");
       code.append("   {");
-//      code.append("System.out.println(\"invokeJP - \" + java.lang.System.identityHashCode(this));");
       boolean argsFoundBefore = defaultCall.
          addInvokeCode(this, setups.getByType(AdviceType.BEFORE), code, info);
       

Modified: projects/aop/trunk/aop/src/resources/test/beforeafterthrowingscoped/jboss-aop.xml
===================================================================
--- projects/aop/trunk/aop/src/resources/test/beforeafterthrowingscoped/jboss-aop.xml	2007-06-20 07:29:47 UTC (rev 63577)
+++ projects/aop/trunk/aop/src/resources/test/beforeafterthrowingscoped/jboss-aop.xml	2007-06-20 11:53:47 UTC (rev 63578)
@@ -1,10 +1,54 @@
 <aop>
 	<aspect class="org.jboss.test.aop.beforeafterthrowingscoped.PerInstanceAspect" scope="PER_INSTANCE"/>
+	<aspect class="org.jboss.test.aop.beforeafterthrowingscoped.PerJoinpointAspect" scope="PER_JOINPOINT"/>
+	<aspect class="org.jboss.test.aop.beforeafterthrowingscoped.PerClassJoinpointAspect" scope="PER_CLASS_JOINPOINT"/>
+	<aspect class="org.jboss.test.aop.beforeafterthrowingscoped.PerClassAspect" scope="PER_CLASS"/>
+	<aspect class="org.jboss.test.aop.beforeafterthrowingscoped.PerVmAspect" scope="PER_VM"/>
 	
-	<bind pointcut="execution(* org.jboss.test.aop.beforeafterthrowingscoped.POJO->methodWithPerInstanceAspects(..))">
+	<bind pointcut="execution(* org.jboss.test.aop.beforeafterthrowingscoped.POJOWithPerInstanceAspects->methodWithPerInstanceAspects(..))">
 		<before aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerInstanceAspect" name="before"/>
 		<after aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerInstanceAspect" name="after"/>
 		<throwing aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerInstanceAspect" name="throwing"/>		
 		<finally aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerInstanceAspect" name="finaly"/>
 	</bind>
+	
+	<bind pointcut="field(* org.jboss.test.aop.beforeafterthrowingscoped.POJOWithPerInstanceAspects->field)">
+		<before aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerInstanceAspect" name="before"/>
+		<after aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerInstanceAspect" name="after"/>
+		<throwing aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerInstanceAspect" name="throwing"/>		
+		<finally aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerInstanceAspect" name="finaly"/>
+	</bind>
+	
+	<bind pointcut="execution(* org.jboss.test.aop.beforeafterthrowingscoped.POJOWithPerJoinpointAspects->method*(..))">
+		<before aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerJoinpointAspect" name="before"/>
+		<after aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerJoinpointAspect" name="after"/>
+		<throwing aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerJoinpointAspect" name="throwing"/>		
+		<finally aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerJoinpointAspect" name="finaly"/>
+	</bind>
+
+	<bind pointcut="field(* org.jboss.test.aop.beforeafterthrowingscoped.POJOWithPerJoinpointAspects->field*)">
+		<before aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerJoinpointAspect" name="before"/>
+		<after aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerJoinpointAspect" name="after"/>
+		<throwing aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerJoinpointAspect" name="throwing"/>		
+		<finally aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerJoinpointAspect" name="finaly"/>
+	</bind>
+	
+	<bind pointcut="all(org.jboss.test.aop.beforeafterthrowingscoped.POJOWithPerClassJoinpointAspects)">
+		<before aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerClassJoinpointAspect" name="before"/>
+		<after aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerClassJoinpointAspect" name="after"/>
+		<throwing aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerClassJoinpointAspect" name="throwing"/>		
+		<finally aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerClassJoinpointAspect" name="finaly"/>
+	</bind>
+	
+	<bind pointcut="all(org.jboss.test.aop.beforeafterthrowingscoped.POJOWithPerClassAndPerVmAspects)">
+		<before aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerVmAspect" name="before"/>
+		<after aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerVmAspect" name="after"/>
+		<throwing aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerVmAspect" name="throwing"/>		
+		<finally aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerVmAspect" name="finaly"/>
+		<before aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerClassAspect" name="before"/>
+		<after aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerClassAspect" name="after"/>
+		<throwing aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerClassAspect" name="throwing"/>		
+		<finally aspect="org.jboss.test.aop.beforeafterthrowingscoped.PerClassAspect" name="finaly"/>
+	</bind>
+	
 </aop>
\ No newline at end of file

Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/BeforeAfterThrowingScopedTestCase.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/BeforeAfterThrowingScopedTestCase.java	2007-06-20 07:29:47 UTC (rev 63577)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/BeforeAfterThrowingScopedTestCase.java	2007-06-20 11:53:47 UTC (rev 63578)
@@ -51,12 +51,12 @@
       return suite;
    }
 
-   public void testPerInstanceAspects()
+   public void testPerInstanceVoidMethodAspects()
    {
-      System.out.println("===== testPerInstanceAspects()");
+      System.out.println("===== testPerInstanceVoidMethodAspects()");
       System.out.println("Calling POJO 1");
       PerInstanceAspect.reset();
-      POJO pojo1 = new POJO();
+      POJOWithPerInstanceAspects pojo1 = new POJOWithPerInstanceAspects();
       try
       {
          pojo1.methodWithPerInstanceAspects(false);
@@ -76,7 +76,7 @@
       
       System.out.println("Calling POJO 2");
       PerInstanceAspect.reset();
-      POJO pojo2 = new POJO();
+      POJOWithPerInstanceAspects pojo2 = new POJOWithPerInstanceAspects();
       try
       {
          pojo2.methodWithPerInstanceAspects(true);
@@ -112,4 +112,634 @@
       assertSame(aspect1, aspect1a);
       System.out.println("DONE");
    }
+
+   public void testPerInstanceReturnMethodAspects()
+   {
+      System.out.println("===== testPerInstanceReturnMethodAspects()");
+      System.out.println("Calling POJO 1");
+      PerInstanceAspect.reset();
+      POJOWithPerInstanceAspects pojo1 = new POJOWithPerInstanceAspects();
+      assertEquals(10, pojo1.methodWithPerInstanceAspects());
+    
+      assertNotNull(PerInstanceAspect.before);
+      assertNotNull(PerInstanceAspect.after);
+      assertNull(PerInstanceAspect.throwing);
+      assertNotNull(PerInstanceAspect.finaly);
+      assertSame(PerInstanceAspect.before, PerInstanceAspect.after);
+      assertSame(PerInstanceAspect.after, PerInstanceAspect.finaly);
+      PerInstanceAspect aspect1 = PerInstanceAspect.before;
+      
+      System.out.println("Calling POJO 2");
+      PerInstanceAspect.reset();
+      POJOWithPerInstanceAspects pojo2 = new POJOWithPerInstanceAspects();
+      assertEquals(10, pojo2.methodWithPerInstanceAspects());
+      
+      assertNotNull(PerInstanceAspect.before);
+      assertNotNull(PerInstanceAspect.after);
+      assertNull(PerInstanceAspect.throwing);
+      assertNotNull(PerInstanceAspect.finaly);
+      assertSame(PerInstanceAspect.before, PerInstanceAspect.after);
+      assertSame(PerInstanceAspect.after, PerInstanceAspect.finaly);
+      PerInstanceAspect aspect2 = PerInstanceAspect.before;
+    
+      assertNotSame(aspect1, aspect2);
+      
+      
+      System.out.println("Calling POJO 1 again");
+      assertEquals(10, pojo1.methodWithPerInstanceAspects());
+    
+      PerInstanceAspect aspect1a = PerInstanceAspect.before;
+      
+      assertSame(aspect1, aspect1a);
+      System.out.println("DONE");
+   }
+
+   public void testPerInstanceFieldAspects()
+   {
+      System.out.println("===== testPerInstanceReturnMethodAspects()");
+      System.out.println("Calling POJO 1");
+      PerInstanceAspect.reset();
+      POJOWithPerInstanceAspects pojo1 = new POJOWithPerInstanceAspects();
+      
+      pojo1.field = 10;
+      assertNotNull(PerInstanceAspect.before);
+      assertNotNull(PerInstanceAspect.after);
+      assertNull(PerInstanceAspect.throwing);
+      assertNotNull(PerInstanceAspect.finaly);
+      assertSame(PerInstanceAspect.before, PerInstanceAspect.after);
+      assertSame(PerInstanceAspect.after, PerInstanceAspect.finaly);
+      PerInstanceAspect aspect1w = PerInstanceAspect.before;
+      
+      PerInstanceAspect.reset();
+      assertEquals(10, pojo1.field);
+      assertNotNull(PerInstanceAspect.before);
+      assertNotNull(PerInstanceAspect.after);
+      assertNull(PerInstanceAspect.throwing);
+      assertNotNull(PerInstanceAspect.finaly);
+      assertSame(PerInstanceAspect.before, PerInstanceAspect.after);
+      assertSame(PerInstanceAspect.after, PerInstanceAspect.finaly);
+      PerInstanceAspect aspect1r = PerInstanceAspect.before;
+      
+      assertSame(aspect1w, aspect1r);
+      
+      PerInstanceAspect.reset();
+      POJOWithPerInstanceAspects pojo2 = new POJOWithPerInstanceAspects();
+      
+      pojo2.field = 10;
+      assertNotNull(PerInstanceAspect.before);
+      assertNotNull(PerInstanceAspect.after);
+      assertNull(PerInstanceAspect.throwing);
+      assertNotNull(PerInstanceAspect.finaly);
+      assertSame(PerInstanceAspect.before, PerInstanceAspect.after);
+      assertSame(PerInstanceAspect.after, PerInstanceAspect.finaly);
+      PerInstanceAspect aspect2w = PerInstanceAspect.before;
+      
+      PerInstanceAspect.reset();
+      assertEquals(10, pojo2.field);
+      assertNotNull(PerInstanceAspect.before);
+      assertNotNull(PerInstanceAspect.after);
+      assertNull(PerInstanceAspect.throwing);
+      assertNotNull(PerInstanceAspect.finaly);
+      assertSame(PerInstanceAspect.before, PerInstanceAspect.after);
+      assertSame(PerInstanceAspect.after, PerInstanceAspect.finaly);
+      PerInstanceAspect aspect2r = PerInstanceAspect.before;
+      
+      assertSame(aspect2w, aspect2r);
+      assertNotSame(aspect1w, aspect2w);
+    
+      PerInstanceAspect.reset();
+      pojo1.field = 10;
+      assertSame(aspect1w, PerInstanceAspect.before);
+   }
+   
+   public void testAllPerInstanceAspectsSame() 
+   {
+      POJOWithPerInstanceAspects pojo = new POJOWithPerInstanceAspects();
+
+      PerInstanceAspect.reset();
+      pojo.methodWithPerInstanceAspects();
+      assertNotNull(PerInstanceAspect.before);
+      PerInstanceAspect aspect1 = PerInstanceAspect.before;
+
+      PerInstanceAspect.reset();
+      pojo.field = 10;
+      assertNotNull(PerInstanceAspect.before);
+      PerInstanceAspect aspect2 = PerInstanceAspect.before;
+      
+      assertSame(aspect1, aspect2);
+      
+      PerInstanceAspect.reset();
+      try
+      {
+         pojo.methodWithPerInstanceAspects(false);
+      }
+      catch (ThrownByTestException e)
+      {
+         fail("unexpected exception");
+      }
+      assertNotNull(PerInstanceAspect.before);
+      PerInstanceAspect aspect3 = PerInstanceAspect.before;
+      
+      assertSame(aspect1, aspect3);
+   }
+   
+   public void testPerJoinpointMethodAspects()
+   {
+      POJOWithPerJoinpointAspects pojo1 = new POJOWithPerJoinpointAspects();
+      
+      PerJoinpointAspect.reset();
+      assertEquals(10, pojo1.methodA(10));
+      
+      assertNotNull(PerJoinpointAspect.before);
+      assertNotNull(PerJoinpointAspect.after);
+      assertNull(PerJoinpointAspect.throwing);
+      assertNotNull(PerJoinpointAspect.finaly);
+      assertSame(PerJoinpointAspect.before, PerJoinpointAspect.after);
+      assertSame(PerJoinpointAspect.finaly, PerJoinpointAspect.after);
+      PerJoinpointAspect aspect1a = PerJoinpointAspect.before; 
+      
+      POJOWithPerJoinpointAspects pojo2 = new POJOWithPerJoinpointAspects();
+      
+      PerJoinpointAspect.reset();
+      assertEquals(10, pojo2.methodA(10));
+      
+      assertNotNull(PerJoinpointAspect.before);
+      assertNotNull(PerJoinpointAspect.after);
+      assertNull(PerJoinpointAspect.throwing);
+      assertNotNull(PerJoinpointAspect.finaly);
+      assertSame(PerJoinpointAspect.before, PerJoinpointAspect.after);
+      assertSame(PerJoinpointAspect.finaly, PerJoinpointAspect.after);
+      PerJoinpointAspect aspect2a = PerJoinpointAspect.before;
+      assertNotSame(aspect1a, aspect2a);
+      
+      
+      PerJoinpointAspect.reset();
+      pojo1.methodB();
+      
+      assertNotNull(PerJoinpointAspect.before);
+      assertNotNull(PerJoinpointAspect.after);
+      assertNull(PerJoinpointAspect.throwing);
+      assertNotNull(PerJoinpointAspect.finaly);
+      assertSame(PerJoinpointAspect.before, PerJoinpointAspect.after);
+      assertSame(PerJoinpointAspect.finaly, PerJoinpointAspect.after);
+      PerJoinpointAspect aspect1b = PerJoinpointAspect.before;
+      assertNotSame(aspect1b, aspect1a);
+      
+      PerJoinpointAspect.reset();
+      pojo2.methodB();
+      
+      assertNotNull(PerJoinpointAspect.before);
+      assertNotNull(PerJoinpointAspect.after);
+      assertNull(PerJoinpointAspect.throwing);
+      assertNotNull(PerJoinpointAspect.finaly);
+      assertSame(PerJoinpointAspect.before, PerJoinpointAspect.after);
+      assertSame(PerJoinpointAspect.finaly, PerJoinpointAspect.after);
+      PerJoinpointAspect aspect2b = PerJoinpointAspect.before;
+      assertNotSame(aspect2a, aspect2b);
+      assertNotSame(aspect1b, aspect2b);
+      
+      PerJoinpointAspect.reset();
+      assertEquals(100, pojo1.methodA(100));
+
+      assertNotNull(PerJoinpointAspect.before);
+      assertEquals(aspect1a, PerJoinpointAspect.before); 
+      
+   }
+   
+   public void testPerClassjoinpointConstructorAspects()
+   {
+      PerClassJoinpointAspect.reset();
+      POJOWithPerClassJoinpointAspects pojo1 = new POJOWithPerClassJoinpointAspects();
+      
+      assertNotNull(PerClassJoinpointAspect.before);
+      assertNotNull(PerClassJoinpointAspect.after);
+      assertNull(PerClassJoinpointAspect.throwing);
+      assertNotNull(PerClassJoinpointAspect.finaly);
+      assertSame(PerClassJoinpointAspect.before, PerClassJoinpointAspect.after);
+      assertSame(PerClassJoinpointAspect.finaly, PerClassJoinpointAspect.after);
+      PerClassJoinpointAspect aspect1c = PerClassJoinpointAspect.before;
+      
+      PerClassJoinpointAspect.reset();
+      POJOWithPerClassJoinpointAspects pojo2 = new POJOWithPerClassJoinpointAspects();
+      
+      assertNotNull(PerClassJoinpointAspect.before);
+      assertNotNull(PerClassJoinpointAspect.after);
+      assertNull(PerClassJoinpointAspect.throwing);
+      assertNotNull(PerClassJoinpointAspect.finaly);
+      assertSame(PerClassJoinpointAspect.before, PerClassJoinpointAspect.after);
+      assertSame(PerClassJoinpointAspect.finaly, PerClassJoinpointAspect.after);
+      PerClassJoinpointAspect aspect2c = PerClassJoinpointAspect.before;
+      assertSame(aspect1c, aspect2c);
+   }
+   
+   public void testPerClassJoinpointFieldAspects()
+   {
+      PerClassJoinpointAspect.reset();
+      POJOWithPerClassJoinpointAspects pojo1 = new POJOWithPerClassJoinpointAspects();
+      PerClassJoinpointAspect ctorAspect = PerClassJoinpointAspect.before;
+      assertNotNull(ctorAspect);
+      POJOWithPerClassJoinpointAspects pojo2 = new POJOWithPerClassJoinpointAspects();
+
+      PerClassJoinpointAspect.reset();
+      pojo1.field = 10;
+      
+      assertNotNull(PerClassJoinpointAspect.before);
+      assertNotNull(PerClassJoinpointAspect.after);
+      assertNull(PerClassJoinpointAspect.throwing);
+      assertNotNull(PerClassJoinpointAspect.finaly);
+      assertSame(PerClassJoinpointAspect.before, PerClassJoinpointAspect.after);
+      assertSame(PerClassJoinpointAspect.finaly, PerClassJoinpointAspect.after);
+      PerClassJoinpointAspect aspect1fw = PerClassJoinpointAspect.before;
+
+      PerClassJoinpointAspect.reset();
+      assertEquals(10, pojo1.field );
+      
+      assertNotNull(PerClassJoinpointAspect.before);
+      assertNotNull(PerClassJoinpointAspect.after);
+      assertNull(PerClassJoinpointAspect.throwing);
+      assertNotNull(PerClassJoinpointAspect.finaly);
+      assertSame(PerClassJoinpointAspect.before, PerClassJoinpointAspect.after);
+      assertSame(PerClassJoinpointAspect.finaly, PerClassJoinpointAspect.after);
+      PerClassJoinpointAspect aspect1fr = PerClassJoinpointAspect.before;
+      assertSame(aspect1fw, aspect1fr);
+      assertNotSame(ctorAspect, aspect1fr);
+
+      PerClassJoinpointAspect.reset();
+      pojo2.field = 100;
+      
+      assertNotNull(PerClassJoinpointAspect.before);
+      assertNotNull(PerClassJoinpointAspect.after);
+      assertNull(PerClassJoinpointAspect.throwing);
+      assertNotNull(PerClassJoinpointAspect.finaly);
+      assertSame(PerClassJoinpointAspect.before, PerClassJoinpointAspect.after);
+      assertSame(PerClassJoinpointAspect.finaly, PerClassJoinpointAspect.after);
+      PerClassJoinpointAspect aspect2fw = PerClassJoinpointAspect.before;
+      assertSame(aspect1fw, aspect1fr);
+
+      PerClassJoinpointAspect.reset();
+      assertEquals(100, pojo2.field );
+
+      assertNotNull(PerClassJoinpointAspect.before);
+      assertNotNull(PerClassJoinpointAspect.after);
+      assertNull(PerClassJoinpointAspect.throwing);
+      assertNotNull(PerClassJoinpointAspect.finaly);
+      assertSame(PerClassJoinpointAspect.before, PerClassJoinpointAspect.after);
+      assertSame(PerClassJoinpointAspect.finaly, PerClassJoinpointAspect.after);
+      PerClassJoinpointAspect aspect2fr = PerClassJoinpointAspect.before;
+      assertSame(aspect2fr, aspect2fw);
+      
+      PerClassJoinpointAspect.reset();
+      pojo1.field = 1000;
+      assertNotNull(PerClassJoinpointAspect.before);
+      assertSame(aspect1fw, PerClassJoinpointAspect.before);
+   }
+   
+   
+   public void testPerClassJoinpointMethodAspects()
+   {
+      PerClassJoinpointAspect.reset();
+      POJOWithPerClassJoinpointAspects pojo1 = new POJOWithPerClassJoinpointAspects();
+      PerClassJoinpointAspect ctorAspect = PerClassJoinpointAspect.before;
+      assertNotNull(ctorAspect);
+      POJOWithPerClassJoinpointAspects pojo2 = new POJOWithPerClassJoinpointAspects();
+
+      PerClassJoinpointAspect.reset();
+      pojo1.method();
+      
+      assertNotNull(PerClassJoinpointAspect.before);
+      assertNotNull(PerClassJoinpointAspect.after);
+      assertNull(PerClassJoinpointAspect.throwing);
+      assertNotNull(PerClassJoinpointAspect.finaly);
+      assertSame(PerClassJoinpointAspect.before, PerClassJoinpointAspect.after);
+      assertSame(PerClassJoinpointAspect.finaly, PerClassJoinpointAspect.after);
+      PerClassJoinpointAspect aspect1 = PerClassJoinpointAspect.before;
+
+      PerClassJoinpointAspect.reset();
+      pojo2.method();
+      
+      assertNotNull(PerClassJoinpointAspect.before);
+      assertNotNull(PerClassJoinpointAspect.after);
+      assertNull(PerClassJoinpointAspect.throwing);
+      assertNotNull(PerClassJoinpointAspect.finaly);
+      assertSame(PerClassJoinpointAspect.before, PerClassJoinpointAspect.after);
+      assertSame(PerClassJoinpointAspect.finaly, PerClassJoinpointAspect.after);
+      PerClassJoinpointAspect aspect2 = PerClassJoinpointAspect.before;
+      assertSame(aspect2, aspect1);
+
+      PerClassJoinpointAspect.reset();
+      pojo1.method();
+      assertNotNull(PerClassJoinpointAspect.before);
+      assertEquals(aspect1, PerClassJoinpointAspect.before);
+   }
+   
+   public void testPerClassJoinpointStaticMethodAndFieldAspects()
+   {
+      PerClassJoinpointAspect.reset();
+      POJOWithPerClassJoinpointAspects.staticField = 1000;
+      
+      assertNotNull(PerClassJoinpointAspect.before);
+      assertNotNull(PerClassJoinpointAspect.after);
+      assertNull(PerClassJoinpointAspect.throwing);
+      assertNotNull(PerClassJoinpointAspect.finaly);
+      assertSame(PerClassJoinpointAspect.before, PerClassJoinpointAspect.after);
+      assertSame(PerClassJoinpointAspect.finaly, PerClassJoinpointAspect.after);
+      PerClassJoinpointAspect fieldW = PerClassJoinpointAspect.after;
+      
+      PerClassJoinpointAspect.reset();
+      assertEquals(1000, POJOWithPerClassJoinpointAspects.staticField);
+      
+      assertNotNull(PerClassJoinpointAspect.before);
+      assertNotNull(PerClassJoinpointAspect.after);
+      assertNull(PerClassJoinpointAspect.throwing);
+      assertNotNull(PerClassJoinpointAspect.finaly);
+      assertSame(PerClassJoinpointAspect.before, PerClassJoinpointAspect.after);
+      assertSame(PerClassJoinpointAspect.finaly, PerClassJoinpointAspect.after);
+      assertSame(fieldW, PerClassJoinpointAspect.after);
+      
+      PerClassJoinpointAspect.reset();
+      POJOWithPerClassJoinpointAspects.staticMethod();
+      
+      assertNotNull(PerClassJoinpointAspect.before);
+      assertNotNull(PerClassJoinpointAspect.after);
+      assertNull(PerClassJoinpointAspect.throwing);
+      assertNotNull(PerClassJoinpointAspect.finaly);
+      assertSame(PerClassJoinpointAspect.before, PerClassJoinpointAspect.after);
+      assertSame(PerClassJoinpointAspect.finaly, PerClassJoinpointAspect.after);
+      PerClassJoinpointAspect method = PerClassJoinpointAspect.after;
+      assertNotSame(method, fieldW);
+      
+      PerClassJoinpointAspect.reset();
+      POJOWithPerClassJoinpointAspects.staticMethod();
+      assertNotNull(PerClassJoinpointAspect.before);
+      assertSame(method, PerClassJoinpointAspect.before);
+   }
+   
+   public void testPerClassAndPerVmConstructorAspects()
+   {
+      //Call constructors
+      PerVmAspect.reset();
+      PerClassAspect.reset();
+      POJOWithPerClassAndPerVmAspects pojo1 = new POJOWithPerClassAndPerVmAspects();
+      
+      assertNotNull(PerClassAspect.before);
+      assertNotNull(PerClassAspect.after);
+      assertNull(PerClassAspect.throwing);
+      assertNotNull(PerClassAspect.finaly);
+      assertSame(PerClassAspect.before, PerClassAspect.after);
+      assertSame(PerClassAspect.finaly, PerClassAspect.after);
+      PerClassAspect pc1 = PerClassAspect.before;
+      
+      assertNotNull(PerVmAspect.before);
+      assertNotNull(PerVmAspect.after);
+      assertNull(PerVmAspect.throwing);
+      assertNotNull(PerVmAspect.finaly);
+      assertSame(PerVmAspect.before, PerVmAspect.after);
+      assertSame(PerVmAspect.finaly, PerVmAspect.after);
+      PerVmAspect pv1 = PerVmAspect.before;
+      
+      PerVmAspect.reset();
+      PerClassAspect.reset();
+      
+      POJOWithPerClassAndPerVmAspects pojo2 = new POJOWithPerClassAndPerVmAspects();
+      
+      assertNotNull(PerClassAspect.before);
+      assertNotNull(PerClassAspect.after);
+      assertNull(PerClassAspect.throwing);
+      assertNotNull(PerClassAspect.finaly);
+      assertSame(PerClassAspect.before, PerClassAspect.after);
+      assertSame(PerClassAspect.finaly, PerClassAspect.after);
+      assertEquals(pc1, PerClassAspect.before);
+      
+      assertNotNull(PerVmAspect.before);
+      assertNotNull(PerVmAspect.after);
+      assertNull(PerVmAspect.throwing);
+      assertNotNull(PerVmAspect.finaly);
+      assertSame(PerVmAspect.before, PerVmAspect.after);
+      assertSame(PerVmAspect.finaly, PerVmAspect.after);
+      assertEquals(pv1, PerVmAspect.before);
+   }
+   
+   public void testPerClassAndPerVmFieldAspects()
+   {
+      PerVmAspect.reset();
+      PerClassAspect.reset();
+      POJOWithPerClassAndPerVmAspects pojo1 = new POJOWithPerClassAndPerVmAspects();
+      assertNotNull(PerClassAspect.before);
+      PerClassAspect pc1 = PerClassAspect.before;
+      
+      assertNotNull(PerVmAspect.before);
+      PerVmAspect pv1 = PerVmAspect.before;
+      
+      POJOWithPerClassAndPerVmAspects pojo2 = new POJOWithPerClassAndPerVmAspects();
+      
+      //Call fields
+      PerVmAspect.reset();
+      PerClassAspect.reset();
+      pojo1.field = 10; 
+      
+      assertNotNull(PerClassAspect.before);
+      assertNotNull(PerClassAspect.after);
+      assertNull(PerClassAspect.throwing);
+      assertNotNull(PerClassAspect.finaly);
+      assertSame(PerClassAspect.before, PerClassAspect.after);
+      assertSame(PerClassAspect.finaly, PerClassAspect.after);
+      assertEquals(pc1, PerClassAspect.before);
+      
+      assertNotNull(PerVmAspect.before);
+      assertNotNull(PerVmAspect.after);
+      assertNull(PerVmAspect.throwing);
+      assertNotNull(PerVmAspect.finaly);
+      assertSame(PerVmAspect.before, PerVmAspect.after);
+      assertSame(PerVmAspect.finaly, PerVmAspect.after);
+      assertEquals(pv1, PerVmAspect.before);
+      
+      PerVmAspect.reset();
+      PerClassAspect.reset();
+      assertEquals(10, pojo1.field); 
+      
+      assertNotNull(PerClassAspect.before);
+      assertNotNull(PerClassAspect.after);
+      assertNull(PerClassAspect.throwing);
+      assertNotNull(PerClassAspect.finaly);
+      assertSame(PerClassAspect.before, PerClassAspect.after);
+      assertSame(PerClassAspect.finaly, PerClassAspect.after);
+      assertEquals(pc1, PerClassAspect.before);
+      
+      assertNotNull(PerVmAspect.before);
+      assertNotNull(PerVmAspect.after);
+      assertNull(PerVmAspect.throwing);
+      assertNotNull(PerVmAspect.finaly);
+      assertSame(PerVmAspect.before, PerVmAspect.after);
+      assertSame(PerVmAspect.finaly, PerVmAspect.after);
+      assertEquals(pv1, PerVmAspect.before);
+      
+      PerVmAspect.reset();
+      PerClassAspect.reset();
+      pojo2.field = 100; 
+      
+      assertNotNull(PerClassAspect.before);
+      assertNotNull(PerClassAspect.after);
+      assertNull(PerClassAspect.throwing);
+      assertNotNull(PerClassAspect.finaly);
+      assertSame(PerClassAspect.before, PerClassAspect.after);
+      assertSame(PerClassAspect.finaly, PerClassAspect.after);
+      assertEquals(pc1, PerClassAspect.before);
+      
+      assertNotNull(PerVmAspect.before);
+      assertNotNull(PerVmAspect.after);
+      assertNull(PerVmAspect.throwing);
+      assertNotNull(PerVmAspect.finaly);
+      assertSame(PerVmAspect.before, PerVmAspect.after);
+      assertSame(PerVmAspect.finaly, PerVmAspect.after);
+      assertEquals(pv1, PerVmAspect.before);
+      
+      PerVmAspect.reset();
+      PerClassAspect.reset();
+      assertEquals(100, pojo2.field); 
+      
+      assertNotNull(PerClassAspect.before);
+      assertNotNull(PerClassAspect.after);
+      assertNull(PerClassAspect.throwing);
+      assertNotNull(PerClassAspect.finaly);
+      assertSame(PerClassAspect.before, PerClassAspect.after);
+      assertSame(PerClassAspect.finaly, PerClassAspect.after);
+      assertEquals(pc1, PerClassAspect.before);
+      
+      assertNotNull(PerVmAspect.before);
+      assertNotNull(PerVmAspect.after);
+      assertNull(PerVmAspect.throwing);
+      assertNotNull(PerVmAspect.finaly);
+      assertSame(PerVmAspect.before, PerVmAspect.after);
+      assertSame(PerVmAspect.finaly, PerVmAspect.after);
+      assertEquals(pv1, PerVmAspect.before);
+   }
+   
+   public void testPerClassAndPerVmMethodAspects()
+   {
+      PerVmAspect.reset();
+      PerClassAspect.reset();
+      POJOWithPerClassAndPerVmAspects pojo1 = new POJOWithPerClassAndPerVmAspects();
+      assertNotNull(PerClassAspect.before);
+      PerClassAspect pc1 = PerClassAspect.before;
+      
+      assertNotNull(PerVmAspect.before);
+      PerVmAspect pv1 = PerVmAspect.before;
+      
+      POJOWithPerClassAndPerVmAspects pojo2 = new POJOWithPerClassAndPerVmAspects();
+      
+      //Call fields
+      PerVmAspect.reset();
+      PerClassAspect.reset();
+      assertEquals(10, pojo1.method(10)); 
+      
+      assertNotNull(PerClassAspect.before);
+      assertNotNull(PerClassAspect.after);
+      assertNull(PerClassAspect.throwing);
+      assertNotNull(PerClassAspect.finaly);
+      assertSame(PerClassAspect.before, PerClassAspect.after);
+      assertSame(PerClassAspect.finaly, PerClassAspect.after);
+      assertEquals(pc1, PerClassAspect.before);
+      
+      assertNotNull(PerVmAspect.before);
+      assertNotNull(PerVmAspect.after);
+      assertNull(PerVmAspect.throwing);
+      assertNotNull(PerVmAspect.finaly);
+      assertSame(PerVmAspect.before, PerVmAspect.after);
+      assertSame(PerVmAspect.finaly, PerVmAspect.after);
+      assertEquals(pv1, PerVmAspect.before);
+           
+      PerVmAspect.reset();
+      PerClassAspect.reset();
+      assertEquals(100, pojo2.method(100)); 
+      
+      assertNotNull(PerClassAspect.before);
+      assertNotNull(PerClassAspect.after);
+      assertNull(PerClassAspect.throwing);
+      assertNotNull(PerClassAspect.finaly);
+      assertSame(PerClassAspect.before, PerClassAspect.after);
+      assertSame(PerClassAspect.finaly, PerClassAspect.after);
+      assertEquals(pc1, PerClassAspect.before);
+      
+      assertNotNull(PerVmAspect.before);
+      assertNotNull(PerVmAspect.after);
+      assertNull(PerVmAspect.throwing);
+      assertNotNull(PerVmAspect.finaly);
+      assertSame(PerVmAspect.before, PerVmAspect.after);
+      assertSame(PerVmAspect.finaly, PerVmAspect.after);
+      assertEquals(pv1, PerVmAspect.before);
+      
+   }
+   
+
+   public void testPerClassAndPerVmStaticFieldAspects()
+   {
+      PerVmAspect.reset();
+      PerClassAspect.reset();
+      
+      //Call fields
+      PerVmAspect.reset();
+      PerClassAspect.reset();
+      POJOWithPerClassAndPerVmAspects.staticField = 10; 
+      
+      assertNotNull(PerClassAspect.before);
+      assertNotNull(PerClassAspect.after);
+      assertNull(PerClassAspect.throwing);
+      assertNotNull(PerClassAspect.finaly);
+      assertSame(PerClassAspect.before, PerClassAspect.after);
+      assertSame(PerClassAspect.finaly, PerClassAspect.after);
+      PerClassAspect pc1 = PerClassAspect.before;
+      
+      assertNotNull(PerVmAspect.before);
+      assertNotNull(PerVmAspect.after);
+      assertNull(PerVmAspect.throwing);
+      assertNotNull(PerVmAspect.finaly);
+      assertSame(PerVmAspect.before, PerVmAspect.after);
+      assertSame(PerVmAspect.finaly, PerVmAspect.after);
+      PerVmAspect pv1 = PerVmAspect.before;
+      
+      PerVmAspect.reset();
+      PerClassAspect.reset();
+      assertEquals(10, POJOWithPerClassAndPerVmAspects.staticField); 
+      
+      assertNotNull(PerClassAspect.before);
+      assertNotNull(PerClassAspect.after);
+      assertNull(PerClassAspect.throwing);
+      assertNotNull(PerClassAspect.finaly);
+      assertSame(PerClassAspect.before, PerClassAspect.after);
+      assertSame(PerClassAspect.finaly, PerClassAspect.after);
+      assertEquals(pc1, PerClassAspect.before);
+      
+      assertNotNull(PerVmAspect.before);
+      assertNotNull(PerVmAspect.after);
+      assertNull(PerVmAspect.throwing);
+      assertNotNull(PerVmAspect.finaly);
+      assertSame(PerVmAspect.before, PerVmAspect.after);
+      assertSame(PerVmAspect.finaly, PerVmAspect.after);
+      assertEquals(pv1, PerVmAspect.before);
+      
+      //Call fields
+      PerVmAspect.reset();
+      PerClassAspect.reset();
+      assertEquals(10, POJOWithPerClassAndPerVmAspects.staticMethod(10)); 
+      
+      assertNotNull(PerClassAspect.before);
+      assertNotNull(PerClassAspect.after);
+      assertNull(PerClassAspect.throwing);
+      assertNotNull(PerClassAspect.finaly);
+      assertSame(PerClassAspect.before, PerClassAspect.after);
+      assertSame(PerClassAspect.finaly, PerClassAspect.after);
+      assertEquals(pc1, PerClassAspect.before);
+      
+      assertNotNull(PerVmAspect.before);
+      assertNotNull(PerVmAspect.after);
+      assertNull(PerVmAspect.throwing);
+      assertNotNull(PerVmAspect.finaly);
+      assertSame(PerVmAspect.before, PerVmAspect.after);
+      assertSame(PerVmAspect.finaly, PerVmAspect.after);
+      assertEquals(pv1, PerVmAspect.before);
+   }
+   
+   
+   //PER_INSTANCE with contructors, static fields and methods should be ignored
+   //PER_JOINPOINT should be ignored for ctors, and act like PER_CLASS_JOINPOINT for static fields and methods  
 }

Deleted: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJO.java	2007-06-20 07:29:47 UTC (rev 63577)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJO.java	2007-06-20 11:53:47 UTC (rev 63578)
@@ -1,39 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source.
-* Copyright 2006, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file 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.beforeafterthrowingscoped;
-
-/**
- * 
- * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
- * @version $Revision: 1.1 $
- */
-public class POJO
-{
-   public void methodWithPerInstanceAspects(boolean error) throws ThrownByTestException
-   {
-      if (error)
-      {
-         throw new ThrownByTestException();
-      }
-   }
-   
-}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOA.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOA.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOA.java	2007-06-20 11:53:47 UTC (rev 63578)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.beforeafterthrowingscoped;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class POJOA
+{
+
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOB.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOB.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOB.java	2007-06-20 11:53:47 UTC (rev 63578)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.beforeafterthrowingscoped;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class POJOB
+{
+
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerClassAndPerVmAspects.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerClassAndPerVmAspects.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerClassAndPerVmAspects.java	2007-06-20 11:53:47 UTC (rev 63578)
@@ -0,0 +1,43 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.beforeafterthrowingscoped;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class POJOWithPerClassAndPerVmAspects
+{
+   public int field;
+   public static int staticField;
+   
+   public int method(int i)
+   {
+      return i;
+   }
+   
+   public static int staticMethod(int i)
+   {
+      return i;
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerClassJoinpointAspects.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerClassJoinpointAspects.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerClassJoinpointAspects.java	2007-06-20 11:53:47 UTC (rev 63578)
@@ -0,0 +1,43 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.beforeafterthrowingscoped;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class POJOWithPerClassJoinpointAspects
+{
+   public int field;
+   public static int staticField;
+   
+   public void method()
+   {
+      
+   }
+   
+   public static void staticMethod()
+   {
+      
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerInstanceAspects.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerInstanceAspects.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerInstanceAspects.java	2007-06-20 11:53:47 UTC (rev 63578)
@@ -0,0 +1,45 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.beforeafterthrowingscoped;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class POJOWithPerInstanceAspects
+{
+   public int field;
+   
+   public void methodWithPerInstanceAspects(boolean error) throws ThrownByTestException
+   {
+      if (error)
+      {
+         throw new ThrownByTestException();
+      }
+   }
+   
+   public int methodWithPerInstanceAspects() 
+   {
+      return 10;
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerJoinpointAspects.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerJoinpointAspects.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/POJOWithPerJoinpointAspects.java	2007-06-20 11:53:47 UTC (rev 63578)
@@ -0,0 +1,41 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.beforeafterthrowingscoped;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class POJOWithPerJoinpointAspects
+{
+   public int fieldA;
+   public int fieldB;
+   
+   public int methodA(int i)
+   {
+      return i;
+   }
+   public void methodB()
+   {
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerClassAspect.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerClassAspect.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerClassAspect.java	2007-06-20 11:53:47 UTC (rev 63578)
@@ -0,0 +1,65 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.beforeafterthrowingscoped;
+
+import org.jboss.aop.advice.annotation.Thrown;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class PerClassAspect
+{
+   public static PerClassAspect before;
+   public static PerClassAspect after;
+   public static PerClassAspect throwing;
+   public static PerClassAspect finaly;
+   
+   public void before()
+   {
+      before = this;
+   }
+   
+   public void after()
+   {
+      after = this;
+   }
+   
+   public void throwing(@Thrown Throwable e)
+   {
+      throwing = this;
+   }
+   
+   public void finaly()
+   {
+      finaly = this;
+   }
+   
+   public static void reset()
+   {
+      before = null;
+      after = null;
+      throwing = null;
+      finaly = null;
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerClassJoinpointAspect.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerClassJoinpointAspect.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerClassJoinpointAspect.java	2007-06-20 11:53:47 UTC (rev 63578)
@@ -0,0 +1,65 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.beforeafterthrowingscoped;
+
+import org.jboss.aop.advice.annotation.Thrown;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class PerClassJoinpointAspect
+{
+   public static PerClassJoinpointAspect before;
+   public static PerClassJoinpointAspect after;
+   public static PerClassJoinpointAspect throwing;
+   public static PerClassJoinpointAspect finaly;
+   
+   public void before()
+   {
+      before = this;
+   }
+   
+   public void after()
+   {
+      after = this;
+   }
+   
+   public void throwing(@Thrown Throwable e)
+   {
+      throwing = this;
+   }
+   
+   public void finaly()
+   {
+      finaly = this;
+   }
+   
+   public static void reset()
+   {
+      before = null;
+      after = null;
+      throwing = null;
+      finaly = null;
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerJoinpointAspect.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerJoinpointAspect.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerJoinpointAspect.java	2007-06-20 11:53:47 UTC (rev 63578)
@@ -0,0 +1,65 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.beforeafterthrowingscoped;
+
+import org.jboss.aop.advice.annotation.Thrown;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class PerJoinpointAspect
+{
+   public static PerJoinpointAspect before;
+   public static PerJoinpointAspect after;
+   public static PerJoinpointAspect throwing;
+   public static PerJoinpointAspect finaly;
+   
+   public void before()
+   {
+      before = this;
+   }
+   
+   public void after()
+   {
+      after = this;
+   }
+   
+   public void throwing(@Thrown Throwable e)
+   {
+      throwing = this;
+   }
+   
+   public void finaly()
+   {
+      finaly = this;
+   }
+   
+   public static void reset()
+   {
+      before = null;
+      after = null;
+      throwing = null;
+      finaly = null;
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerVmAspect.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerVmAspect.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/beforeafterthrowingscoped/PerVmAspect.java	2007-06-20 11:53:47 UTC (rev 63578)
@@ -0,0 +1,65 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.beforeafterthrowingscoped;
+
+import org.jboss.aop.advice.annotation.Thrown;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class PerVmAspect
+{
+   public static PerVmAspect before;
+   public static PerVmAspect after;
+   public static PerVmAspect throwing;
+   public static PerVmAspect finaly;
+   
+   public void before()
+   {
+      before = this;
+   }
+   
+   public void after()
+   {
+      after = this;
+   }
+   
+   public void throwing(@Thrown Throwable e)
+   {
+      throwing = this;
+   }
+   
+   public void finaly()
+   {
+      finaly = this;
+   }
+   
+   public static void reset()
+   {
+      before = null;
+      after = null;
+      throwing = null;
+      finaly = null;
+   }
+}




More information about the jboss-cvs-commits mailing list