]> source.dussan.org Git - aspectj.git/commitdiff
failure when lock()/unlock() used in XML defined pointcut and would require synchroni...
authoraclement <aclement>
Wed, 2 Aug 2006 08:45:44 +0000 (08:45 +0000)
committeraclement <aclement>
Wed, 2 Aug 2006 08:45:44 +0000 (08:45 +0000)
tests/features152/synchronization/transformed/CaptureLock.aj [new file with mode: 0644]
tests/features152/synchronization/transformed/Program.java [new file with mode: 0644]
tests/features152/synchronization/transformed/aop1.xml [new file with mode: 0644]

diff --git a/tests/features152/synchronization/transformed/CaptureLock.aj b/tests/features152/synchronization/transformed/CaptureLock.aj
new file mode 100644 (file)
index 0000000..3e1f270
--- /dev/null
@@ -0,0 +1,8 @@
+public abstract aspect CaptureLock {
+
+  abstract pointcut lockPC();
+
+  before(): lockPC() {
+    System.out.println("Before a lock or unlock");
+  }
+}
diff --git a/tests/features152/synchronization/transformed/Program.java b/tests/features152/synchronization/transformed/Program.java
new file mode 100644 (file)
index 0000000..2d92cfa
--- /dev/null
@@ -0,0 +1,35 @@
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+public class Program {
+       public static void main(String[] args) {
+         new Program().b();    
+         new Program().c();    
+         new Program().d();    
+       }
+       
+       //       ... that does something ...
+       public synchronized void b() {
+               System.out.println("hello from b()");
+       }
+       
+       // ... that includes try/catch ...
+       public synchronized void c() {
+               try {
+                       File f = new File("fred");
+                       FileInputStream fis = new FileInputStream(f);
+               } catch (IOException ioe) {
+                       System.out.println("bang in c()");
+               }
+       }
+       
+       // ... with nested synchronized blocks ...
+       public synchronized void d() {
+               System.out.println("hello from d()");
+               synchronized (new String()) {
+                       System.out.println("hello from block in d()");
+               }
+       }
+
+}
diff --git a/tests/features152/synchronization/transformed/aop1.xml b/tests/features152/synchronization/transformed/aop1.xml
new file mode 100644 (file)
index 0000000..660f20b
--- /dev/null
@@ -0,0 +1,12 @@
+<aspectj>
+  <aspects>
+    <concrete-aspect name="G8"
+              extends="CaptureLock">
+                         
+       <pointcut name="lockPC" expression="(within(*) AND (lock() || unlock()))" />                         
+                        
+    </concrete-aspect>
+  </aspects>
+
+  <weaver options="-verbose -showWeaveInfo -Xjoinpoints:synchronization"/>
+</aspectj>