aboutsummaryrefslogtreecommitdiffstats
path: root/tests/bugs169
diff options
context:
space:
mode:
authoraclement <aclement>2010-01-25 22:47:06 +0000
committeraclement <aclement>2010-01-25 22:47:06 +0000
commitd36b87d2f0b22991ffc8d111367fdb7c97943477 (patch)
tree85355c0aedc8e8b4ca4510f5d948e9bf94cc842f /tests/bugs169
parent046261e20078530352a063c6c1eef9f44bb98f23 (diff)
downloadaspectj-d36b87d2f0b22991ffc8d111367fdb7c97943477.tar.gz
aspectj-d36b87d2f0b22991ffc8d111367fdb7c97943477.zip
292584, 295491, 298388: testcode
Diffstat (limited to 'tests/bugs169')
-rw-r--r--tests/bugs169/pr292584/AbstractAspect.java13
-rw-r--r--tests/bugs169/pr292584/ClassWithJoinPoint.java17
-rw-r--r--tests/bugs169/pr292584/ConcreteAspect.java10
-rw-r--r--tests/bugs169/pr295491/SpringConfigurableMixin.java30
-rw-r--r--tests/bugs169/pr298388/PR298388.java42
5 files changed, 112 insertions, 0 deletions
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 <T> Thing<T> createThingImplementation() {
+ return new ThingImpl<T>();
+ }
+
+ public static void main(String[] args) {
+ Thing<String> ts = (Thing<String>) new Thing2<String>();
+ ts.wibble();
+ ts.wibble("abc");
+ String s = ts.wibbleBack("wobble");
+ System.out.println("done");
+ }
+
+}
+
+class Thing2<X> {
+}
+
+interface Thing<X> {
+ void wibble();
+ void wibble(X x);
+ X wibbleBack(X x);
+}
+
+class ThingImpl<X> implements Thing<X> {
+ ThingImpl() {
+ }
+
+ public void wibble() {
+ }
+
+ public void wibble(X x) {}
+
+ public X wibbleBack(X x) { return x;}
+
+}