summaryrefslogtreecommitdiffstats
path: root/tests/java5
diff options
context:
space:
mode:
authoravasseur <avasseur>2005-07-11 15:05:44 +0000
committeravasseur <avasseur>2005-07-11 15:05:44 +0000
commit639b4fd0a436e19726dc9f2a47dc66a726794b3d (patch)
tree0dc463eab5ba20571630940397722bb9d782a78a /tests/java5
parentb468ecc0132d75fdade0c403f78d99212342176d (diff)
downloadaspectj-639b4fd0a436e19726dc9f2a47dc66a726794b3d.tar.gz
aspectj-639b4fd0a436e19726dc9f2a47dc66a726794b3d.zip
fix 83935 where Jp / Pjp is an arg and bound in a formal binding as well as another (or 2+) used as implicit bindings in @AJ
Diffstat (limited to 'tests/java5')
-rw-r--r--tests/java5/ataspectj/ataspectj/MultipleBindingTest.java167
-rw-r--r--tests/java5/ataspectj/ataspectj/SingletonAspectBindingsTest.java10
2 files changed, 172 insertions, 5 deletions
diff --git a/tests/java5/ataspectj/ataspectj/MultipleBindingTest.java b/tests/java5/ataspectj/ataspectj/MultipleBindingTest.java
new file mode 100644
index 000000000..366a127cb
--- /dev/null
+++ b/tests/java5/ataspectj/ataspectj/MultipleBindingTest.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * Copyright (c) 2005 Contributors.
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Alexandre Vasseur initial implementation
+ *******************************************************************************/
+package ataspectj;
+
+import junit.framework.TestCase;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.Signature;
+import org.aspectj.lang.reflect.SourceLocation;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.runtime.internal.AroundClosure;
+
+/**
+ * @author <a href="mailto:alex AT gnilux DOT com">Alexandre Vasseur</a>
+ */
+public class MultipleBindingTest extends TestCase {
+
+ static StringBuffer s_log = new StringBuffer();
+ static void log(String s) {
+ s_log.append(s).append(" ");
+ }
+
+ public static void main(String[] args) {
+ TestHelper.runAndThrowOnFailure(suite());
+ }
+
+ public static junit.framework.Test suite() {
+ return new junit.framework.TestSuite(MultipleBindingTest.class);
+ }
+
+ public void testMultipleJoinPoint() {
+ s_log = new StringBuffer();
+ Target.dump(new JoinPoint() {
+ public String toShortString() {
+ return "jpFromApp";
+ }
+
+ public String toLongString() {
+ return null;
+ }
+
+ public Object getThis() {
+ return null;
+ }
+
+ public Object getTarget() {
+ return null;
+ }
+
+ public Object[] getArgs() {
+ return new Object[0];
+ }
+
+ public Signature getSignature() {
+ return null;
+ }
+
+ public SourceLocation getSourceLocation() {
+ return null;
+ }
+
+ public String getKind() {
+ return null;
+ }
+
+ public StaticPart getStaticPart() {
+ return null;
+ }
+ });
+ assertEquals("jpFromApp execution(MultipleBindingTest.Target.dump(..)) execution(MultipleBindingTest.Target.dump(..)) jpFromApp ", s_log.toString());
+ }
+
+ public void testMultipleProceedingJoinPoint() {
+ s_log = new StringBuffer();
+ Target.dump2(new ProceedingJoinPoint() {
+ public void set$AroundClosure(AroundClosure arc) {
+
+ }
+
+ public Object proceed() throws Throwable {
+ return null;
+ }
+
+ public Object proceed(Object[] args) throws Throwable {
+ return null;
+ }
+
+ public String toShortString() {
+ return "pjpFromApp";
+ }
+
+ public String toLongString() {
+ return null;
+ }
+
+ public Object getThis() {
+ return null;
+ }
+
+ public Object getTarget() {
+ return null;
+ }
+
+ public Object[] getArgs() {
+ return new Object[0];
+ }
+
+ public Signature getSignature() {
+ return null;
+ }
+
+ public SourceLocation getSourceLocation() {
+ return null;
+ }
+
+ public String getKind() {
+ return null;
+ }
+
+ public StaticPart getStaticPart() {
+ return null;
+ }
+
+ });
+ assertEquals("pjpFromApp execution(MultipleBindingTest.Target.dump2(..)) execution(MultipleBindingTest.Target.dump2(..)) pjpFromApp ", s_log.toString());
+ }
+
+ static class Target {
+ static void dump(JoinPoint jp) {
+ log(jp.toShortString());
+ }
+ static void dump2(ProceedingJoinPoint pjp) {
+ log(pjp.toShortString());
+ }
+ }
+
+ @Aspect
+ public static class TestAspect {
+
+ @Before("execution(* ataspectj.MultipleBindingTest.Target.dump(..)) && args(ajp)")
+ public void before(JoinPoint ajp, JoinPoint jp, JoinPoint jpbis) {
+ log(ajp.toShortString());
+ log(jp.toShortString());
+ log(jpbis.toShortString());
+ }
+
+ @Around("execution(* ataspectj.MultipleBindingTest.Target.dump2(..)) && args(apjp)")
+ public Object around(ProceedingJoinPoint apjp, ProceedingJoinPoint pjp, ProceedingJoinPoint pjpbis) throws Throwable {
+ log(apjp.toShortString());
+ log(pjp.toShortString());
+ log(pjpbis.toShortString());
+ return pjp.proceed();
+ }
+ }
+
+}
diff --git a/tests/java5/ataspectj/ataspectj/SingletonAspectBindingsTest.java b/tests/java5/ataspectj/ataspectj/SingletonAspectBindingsTest.java
index e59821cb8..d94d2af0a 100644
--- a/tests/java5/ataspectj/ataspectj/SingletonAspectBindingsTest.java
+++ b/tests/java5/ataspectj/ataspectj/SingletonAspectBindingsTest.java
@@ -134,15 +134,15 @@ public class SingletonAspectBindingsTest extends TestCase {
}
// public void testHe() throws Throwable {
-// //Allow to look inn file based on advises/advised-by offset numbers
-// File f = new File("../tests/java5/ataspectj/ataspectj/SingletonAspectBindingsTest2.aj");
+// //Allow to look inn file based on advises/advised-by offset numbers
+// File f = new File("../tests/java5/ataspectj/ataspectj/SingletonAspectBindingsTest.java");
// FileReader r = new FileReader(f);
// int i = 0;
-// for (i = 0; i < 2800; i++) {
+// for (i = 0; i < 3700; i++) {
// r.read();
// }
-// for (;i < 2900; i++) {
-// if (i == 2817) System.out.print("X");
+// for (;i < 3800; i++) {
+// if (i==3721 || i == 3742 || i == 3777) System.out.print("X");
// System.out.print((char)r.read());
// }
// System.out.print("|DONE");