From d36b87d2f0b22991ffc8d111367fdb7c97943477 Mon Sep 17 00:00:00 2001 From: aclement Date: Mon, 25 Jan 2010 22:47:06 +0000 Subject: 292584, 295491, 298388: testcode --- tests/bugs169/pr292584/AbstractAspect.java | 13 +++++++ tests/bugs169/pr292584/ClassWithJoinPoint.java | 17 +++++++++ tests/bugs169/pr292584/ConcreteAspect.java | 10 ++++++ .../bugs169/pr295491/SpringConfigurableMixin.java | 30 ++++++++++++++++ tests/bugs169/pr298388/PR298388.java | 42 ++++++++++++++++++++++ 5 files changed, 112 insertions(+) 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 (limited to 'tests/bugs169') 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;} + +} -- cgit v1.2.3