aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorehilsdal <ehilsdal>2003-11-18 03:49:06 +0000
committerehilsdal <ehilsdal>2003-11-18 03:49:06 +0000
commitbcf40bc8dde11336c4579851f094e1fecb7aef2d (patch)
tree702e294ab33066618f6c4fe6531b76fb40b46a9d /docs
parent46acd3435c42eedaa8f6a07594b6536fe7752a8a (diff)
downloadaspectj-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
Diffstat (limited to 'docs')
-rw-r--r--docs/progGuideDB/language.xml13
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>
<!-- ============================== -->