From 144143c2970a1e874d74cdbd0f8c622d4282a3c3 Mon Sep 17 00:00:00 2001 From: wisberg <wisberg> Date: Mon, 16 Dec 2002 18:51:06 +0000 Subject: initial version --- .../new/subaspects/parent/ForeignChildHelper.java | 16 ++++ tests/new/subaspects/parent/ParentCE.java | 15 ++++ tests/new/subaspects/parent/ParentMethodCE.java | 10 +++ tests/new/subaspects/parent/PrivatePointcut.java | 26 ++++++ .../parent/PrivatePointcutOuterClass.java | 26 ++++++ .../new/subaspects/parent/SubAspectVisibility.java | 95 ++++++++++++++++++++++ 6 files changed, 188 insertions(+) create mode 100644 tests/new/subaspects/parent/ForeignChildHelper.java create mode 100644 tests/new/subaspects/parent/ParentCE.java create mode 100644 tests/new/subaspects/parent/ParentMethodCE.java create mode 100644 tests/new/subaspects/parent/PrivatePointcut.java create mode 100644 tests/new/subaspects/parent/PrivatePointcutOuterClass.java create mode 100644 tests/new/subaspects/parent/SubAspectVisibility.java (limited to 'tests/new/subaspects/parent') diff --git a/tests/new/subaspects/parent/ForeignChildHelper.java b/tests/new/subaspects/parent/ForeignChildHelper.java new file mode 100644 index 000000000..31b929eb1 --- /dev/null +++ b/tests/new/subaspects/parent/ForeignChildHelper.java @@ -0,0 +1,16 @@ + +package parent; + +import child.ForeignChildAspect; +import parent.SubAspectVisibility; + +import org.aspectj.testing.*; + +/** @testcase PR#647 inner, outer, and outside-package subaspects of an aspect with abstract protected-, public-, and default-access pointcuts */ +public abstract aspect ForeignChildHelper extends SubAspectVisibility { + /** @testCase override package-private pointcut in outer class */ + pointcut definePackagePrivate() : execution(void ForeignChildAspect.main(..)); + before() : definePackagePrivate() { + Tester.event("ForeignChildHelper.definePackagePrivate"); + } +} diff --git a/tests/new/subaspects/parent/ParentCE.java b/tests/new/subaspects/parent/ParentCE.java new file mode 100644 index 000000000..a28dd83d7 --- /dev/null +++ b/tests/new/subaspects/parent/ParentCE.java @@ -0,0 +1,15 @@ + +package parent; + +import org.aspectj.testing.*; + +/** @testcase PR#647 concrete aspect unable to access abstract package-private pointcut in parent for overriding */ +public abstract aspect ParentCE { + abstract pointcut define(); + before() : define() { + Tester.event("define"); + } +} +aspect Child extends ParentCE { + pointcut define() : call(public void Target.run()); +} diff --git a/tests/new/subaspects/parent/ParentMethodCE.java b/tests/new/subaspects/parent/ParentMethodCE.java new file mode 100644 index 000000000..0f25fe2d5 --- /dev/null +++ b/tests/new/subaspects/parent/ParentMethodCE.java @@ -0,0 +1,10 @@ + +package parent; + +import org.aspectj.testing.*; + +/** @testcase PR#647 concrete aspect unable to access abstract package-private method in parent for overriding */ +public abstract class ParentMethodCE { + /** cannot be implemented outside this class */ + abstract void defineMethod(); +} diff --git a/tests/new/subaspects/parent/PrivatePointcut.java b/tests/new/subaspects/parent/PrivatePointcut.java new file mode 100644 index 000000000..1c09fb040 --- /dev/null +++ b/tests/new/subaspects/parent/PrivatePointcut.java @@ -0,0 +1,26 @@ + +package parent; + +import org.aspectj.testing.*; + +/** @testcase PR#647 inner subaspects of an aspect with private pointcut */ +public abstract aspect PrivatePointcut { + public static void main (String[] args) { + Tester.event("main"); + Tester.checkAllEvents(); + } + static { + Tester.expectEvent("main"); + Tester.expectEvent("definePrivate"); + } + + before() : definePrivate() { + Tester.event("definePrivate"); + } + + /** private must be implemented in defining class */ + private pointcut definePrivate() : execution(void PrivatePointcut.main(..)); +} +aspect InnerChild extends PrivatePointcut { +} + diff --git a/tests/new/subaspects/parent/PrivatePointcutOuterClass.java b/tests/new/subaspects/parent/PrivatePointcutOuterClass.java new file mode 100644 index 000000000..7ae3752c0 --- /dev/null +++ b/tests/new/subaspects/parent/PrivatePointcutOuterClass.java @@ -0,0 +1,26 @@ + +package parent; + +import org.aspectj.testing.*; + +/** PR#647 outer subaspects of an aspect with private pointcut */ +public abstract aspect PrivatePointcutOuterClass { + public static void main (String[] args) { + Tester.event("main"); + Tester.checkAllEvents(); + } + static { + Tester.expectEvent("main"); + Tester.expectEvent("definePrivate"); + } + + before() : definePrivate() { + Tester.event("definePrivate"); + } + + /** private must be implemented in defining class */ + private pointcut definePrivate() + : execution(void PrivatePointcutOuterClass.main(..)); +} +aspect InnerChild extends PrivatePointcutOuterClass { } + diff --git a/tests/new/subaspects/parent/SubAspectVisibility.java b/tests/new/subaspects/parent/SubAspectVisibility.java new file mode 100644 index 000000000..e7af8c345 --- /dev/null +++ b/tests/new/subaspects/parent/SubAspectVisibility.java @@ -0,0 +1,95 @@ + +package parent; + +import child.ForeignChildAspect; + +import org.aspectj.testing.*; + +/** @testcase PR#647 inner, outer, and outside-package subaspects of an aspect with abstract protected-, public-, and default-access pointcuts */ +public abstract aspect SubAspectVisibility { + public static void main (String[] args) { + Tester.event("main"); + OuterChild.main(args); + ForeignChildAspect.main(args); + Tester.checkAllEventsIgnoreDups(); + } + static { + Tester.expectEvent("main"); + Tester.expectEvent("definePrivate"); + Tester.expectEvent("definePackagePrivate"); + Tester.expectEvent("defineProtected"); + Tester.expectEvent("definePublic"); + + Tester.expectEvent("Outer.main"); + Tester.expectEvent("Outer.definePackagePrivate"); + Tester.expectEvent("Outer.defineProtected"); + Tester.expectEvent("Outer.definePublic"); + + Tester.expectEvent("ForeignChildAspect.main"); + Tester.expectEvent("ForeignChildHelper.definePackagePrivate"); + Tester.expectEvent("ForeignChildAspect.defineProtected"); + Tester.expectEvent("ForeignChildAspect.definePublic"); + } + + before() : definePrivate() { + Tester.event("definePrivate"); + } + + before() : definePackagePrivate() { + Tester.event("definePackagePrivate"); + } + + before() : defineProtected() { + Tester.event("defineProtected"); + } + + before() : definePublic() { + Tester.event("definePublic"); + } + + /** public can be implemented in outer or inner child class */ + abstract public pointcut definePublic(); + + /** protected can be can be implemented in outer or inner child class */ + abstract protected pointcut defineProtected(); + + /** package-private can be can be implemented in outer or inner child class */ + abstract pointcut definePackagePrivate(); + + /** private must be implemented in defining class */ + private pointcut definePrivate() : execution(void SubAspectVisibility.main(..)); + + // bug? says definePrivate() is not defined in InnerChild + static aspect InnerChild extends SubAspectVisibility { + /** @testCase override protected pointcut in inner class */ + protected pointcut defineProtected() : execution(void SubAspectVisibility.main(..)); + /** @testCase override package-private pointcut in inner class */ + pointcut definePackagePrivate() : execution(void SubAspectVisibility.main(..)); + /** @testCase override public pointcut in inner class */ + public pointcut definePublic() : execution(void SubAspectVisibility.main(..)); + } +} + +aspect OuterChild extends SubAspectVisibility { + public static void main (String[] args) { + Tester.event("Outer.main"); + } + + /** @testCase override package-private pointcut in outer class */ + pointcut definePackagePrivate() : execution(void OuterChild.main(..)); + /** @testCase override protected pointcut in outer class */ + protected pointcut defineProtected() : execution(void OuterChild.main(..)); + /** @testCase override public pointcut in outer class */ + public pointcut definePublic() : execution(void OuterChild.main(..)); + + before() : definePackagePrivate() { + Tester.event("Outer.definePackagePrivate"); + } + before() : defineProtected() { + Tester.event("Outer.defineProtected"); + } + before() : definePublic() { + Tester.event("Outer.definePublic"); + } +} + -- cgit v1.2.3