diff options
author | ehilsdal <ehilsdal> | 2003-11-18 03:49:06 +0000 |
---|---|---|
committer | ehilsdal <ehilsdal> | 2003-11-18 03:49:06 +0000 |
commit | bcf40bc8dde11336c4579851f094e1fecb7aef2d (patch) | |
tree | 702e294ab33066618f6c4fe6531b76fb40b46a9d | |
parent | 46acd3435c42eedaa8f6a07594b6536fe7752a8a (diff) | |
download | aspectj-bcf40bc8dde11336c4579851f094e1fecb7aef2d.tar.gz aspectj-bcf40bc8dde11336c4579851f094e1fecb7aef2d.zip |
Fix for Bugzilla 43891: Example aspect A in pointcut composition section in prog guide causes recursion
* manually applied excellent doc patch contributed by Nick Brett
-rw-r--r-- | docs/progGuideDB/language.xml | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/docs/progGuideDB/language.xml b/docs/progGuideDB/language.xml index 77c09a58d..e337d79ec 100644 --- a/docs/progGuideDB/language.xml +++ b/docs/progGuideDB/language.xml @@ -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> <!-- ============================== --> |