From d36b87d2f0b22991ffc8d111367fdb7c97943477 Mon Sep 17 00:00:00 2001 From: aclement Date: Mon, 25 Jan 2010 22:47:06 +0000 Subject: [PATCH] 292584, 295491, 298388: testcode --- tests/bugs169/pr292584/AbstractAspect.java | 13 ++++++ .../bugs169/pr292584/ClassWithJoinPoint.java | 17 ++++++++ tests/bugs169/pr292584/ConcreteAspect.java | 10 +++++ .../pr295491/SpringConfigurableMixin.java | 30 +++++++++++++ tests/bugs169/pr298388/PR298388.java | 42 +++++++++++++++++++ .../systemtest/ajc169/Ajc169Tests.java | 10 ++++- .../org/aspectj/systemtest/ajc169/ajc169.xml | 23 ++++++++++ 7 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 tests/bugs169/pr292584/AbstractAspect.java create mode 100644 tests/bugs169/pr292584/ClassWithJoinPoint.java create mode 100644 tests/bugs169/pr292584/ConcreteAspect.java create mode 100644 tests/bugs169/pr295491/SpringConfigurableMixin.java create mode 100644 tests/bugs169/pr298388/PR298388.java diff --git a/tests/bugs169/pr292584/AbstractAspect.java b/tests/bugs169/pr292584/AbstractAspect.java new file mode 100644 index 000000000..767be601f --- /dev/null +++ b/tests/bugs169/pr292584/AbstractAspect.java @@ -0,0 +1,13 @@ + +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; + +@Aspect +public abstract class AbstractAspect { + @Around("execution(* ClassWithJoinPoint.getValue(..))") + public Object ClassWithJoinPoint_getValue() { + return getValueReplacement(); + } + + protected abstract Boolean getValueReplacement(); +} \ No newline at end of file diff --git a/tests/bugs169/pr292584/ClassWithJoinPoint.java b/tests/bugs169/pr292584/ClassWithJoinPoint.java new file mode 100644 index 000000000..32b646fc8 --- /dev/null +++ b/tests/bugs169/pr292584/ClassWithJoinPoint.java @@ -0,0 +1,17 @@ + +public class ClassWithJoinPoint { + public Boolean getValue() { + return Boolean.FALSE; + } + + public static void main(String[] arguments) { +/* + System.out.println("Testing aspect style (should print \"true\"):"); + System.out.println(new aspect_style.ClassWithJoinPoint().getValue()); + + System.out.println(); +*/ + System.out.println("Testing annotation style (should print \"true\"):"); + System.out.println(new ClassWithJoinPoint().getValue()); + } +} diff --git a/tests/bugs169/pr292584/ConcreteAspect.java b/tests/bugs169/pr292584/ConcreteAspect.java new file mode 100644 index 000000000..0f0f02011 --- /dev/null +++ b/tests/bugs169/pr292584/ConcreteAspect.java @@ -0,0 +1,10 @@ + +import org.aspectj.lang.annotation.Aspect; + +@Aspect +public class ConcreteAspect extends AbstractAspect { + @Override + protected Boolean getValueReplacement() { + return Boolean.TRUE; + } +} diff --git a/tests/bugs169/pr295491/SpringConfigurableMixin.java b/tests/bugs169/pr295491/SpringConfigurableMixin.java new file mode 100644 index 000000000..bfcda0f81 --- /dev/null +++ b/tests/bugs169/pr295491/SpringConfigurableMixin.java @@ -0,0 +1,30 @@ +package com.j4fe.aspects; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Entity; +import org.springframework.beans.factory.annotation.Configurable; +import org.springframework.beans.factory.annotation.Autowired; + +public aspect SpringConfigurableMixin { + + public static interface EntityManagerAware { + EntityManager getEntityManager(); + } + + + // not working + // declare @type : (@Entity *) : @Configurable(autowire = Autowire.BY_TYPE, preConstruction = true); + + // also not working + // declare @type : (@Entity *) : @Configurable + + declare parents : (@Entity *) implements EntityManagerAware; + + @PersistenceContext + transient private EntityManager EntityManagerAware.entityManager; + + public EntityManager EntityManagerAware.getEntityManager() { + return entityManager; + } +} diff --git a/tests/bugs169/pr298388/PR298388.java b/tests/bugs169/pr298388/PR298388.java new file mode 100644 index 000000000..dae3c1013 --- /dev/null +++ b/tests/bugs169/pr298388/PR298388.java @@ -0,0 +1,42 @@ +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.DeclareMixin; + +@Aspect +public class PR298388 { + + @DeclareMixin("Thing2") + public static Thing createThingImplementation() { + return new ThingImpl(); + } + + public static void main(String[] args) { + Thing ts = (Thing) new Thing2(); + ts.wibble(); + ts.wibble("abc"); + String s = ts.wibbleBack("wobble"); + System.out.println("done"); + } + +} + +class Thing2 { +} + +interface Thing { + void wibble(); + void wibble(X x); + X wibbleBack(X x); +} + +class ThingImpl implements Thing { + ThingImpl() { + } + + public void wibble() { + } + + public void wibble(X x) {} + + public X wibbleBack(X x) { return x;} + +} diff --git a/tests/src/org/aspectj/systemtest/ajc169/Ajc169Tests.java b/tests/src/org/aspectj/systemtest/ajc169/Ajc169Tests.java index 501325f11..54872e40d 100644 --- a/tests/src/org/aspectj/systemtest/ajc169/Ajc169Tests.java +++ b/tests/src/org/aspectj/systemtest/ajc169/Ajc169Tests.java @@ -18,6 +18,14 @@ import org.aspectj.testing.XMLBasedAjcTestCase; public class Ajc169Tests extends org.aspectj.testing.XMLBasedAjcTestCase { + public void testPr298388() { + runTest("declare mixin and generics"); + } + + public void testPr292584() { + runTest("annotation around advice verifyerror"); + } + // --- public static Test suite() { @@ -26,7 +34,7 @@ public class Ajc169Tests extends org.aspectj.testing.XMLBasedAjcTestCase { @Override protected File getSpecFile() { - return new File("../tests/src/org/aspectj/systemtest/ajc167/ajc167.xml"); + return new File("../tests/src/org/aspectj/systemtest/ajc169/ajc169.xml"); } } \ No newline at end of file diff --git a/tests/src/org/aspectj/systemtest/ajc169/ajc169.xml b/tests/src/org/aspectj/systemtest/ajc169/ajc169.xml index a701d65b8..9f2408c2a 100644 --- a/tests/src/org/aspectj/systemtest/ajc169/ajc169.xml +++ b/tests/src/org/aspectj/systemtest/ajc169/ajc169.xml @@ -2,4 +2,27 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- 2.39.5