]> source.dussan.org Git - aspectj.git/commitdiff
Fix for Bugzilla 43891: Example aspect A in pointcut composition section in prog...
authorehilsdal <ehilsdal>
Tue, 18 Nov 2003 03:49:06 +0000 (03:49 +0000)
committerehilsdal <ehilsdal>
Tue, 18 Nov 2003 03:49:06 +0000 (03:49 +0000)
  * manually applied excellent doc patch contributed by Nick Brett

docs/progGuideDB/language.xml

index 77c09a58db34320ff3ed266a9ff4252556d3c2c3..e337d79ec171c93280415f3d850da916cde549ad 100644 (file)
@@ -701,16 +701,25 @@ aspect A  {
     pointcut gooPC(): execution(void Test.goo());
     pointcut printPC(): call(void java.io.PrintStream.println(String));
 
-    before(): cflow(fooPC()) && cflow(gooPC()) && printPC() {
+    before(): cflow(fooPC()) && cflow(gooPC()) && printPC() && !within(A) {
         System.out.println("should occur");
     }
 
-    before(): cflow(fooPC() && gooPC()) && printPC() {
+    before(): cflow(fooPC() && gooPC()) && printPC() && !within(A) {
         System.out.println("should not occur");
     }
 }
 ]]></programlisting>
 
+      <para>
+          The <literal>!within(<replaceable>A</replaceable>)</literal>
+          pointcut above is required to avoid the <literal>printPC</literal> 
+          pointcut applying to the <literal>System.out.println</literal>
+          call in the advice body. If this was not present a recursive call
+          would result as the pointcut would apply to it's own advice.
+          (See <xref linkend="pitfalls-infiniteLoops"/> for more details.)
+      </para>
+
     </sect2>
 
 <!-- ============================== -->