@@ -0,0 +1,16 @@ | |||
import org.aspectj.lang.annotation.*; | |||
abstract aspect X { | |||
void around(): execution(* foo(..)) {} | |||
} | |||
@Aspect class B extends X { } | |||
public class A { | |||
public void foo() { } | |||
public static void main(String []argv) { | |||
new A().foo(); | |||
} | |||
} |
@@ -0,0 +1,11 @@ | |||
import org.aspectj.lang.annotation.*; | |||
import org.aspectj.lang.*; | |||
@Aspect | |||
public class C { | |||
@Around("execution(* say2(..)) && args(w)") | |||
public int m(ProceedingJoinPoint pjp,String w) { | |||
pjp.proceed(new Object[]{"abc"}); | |||
return 1; | |||
} | |||
} |
@@ -0,0 +1,5 @@ | |||
public aspect ConcreteWorld extends World { | |||
pointcut greeting() : | |||
execution(* Hello.sayWorld(..)) | |||
|| execution(* Hello.sayHello(..)); | |||
} |
@@ -0,0 +1,16 @@ | |||
public class Hello { | |||
public static void main(String[] args) { | |||
sayHello(); | |||
} | |||
public static void sayHello() { | |||
System.out.println("Hello"); | |||
sayWorld(); | |||
} | |||
public static int sayWorld() { | |||
System.out.println("World"); | |||
return 0; | |||
} | |||
} |
@@ -0,0 +1,16 @@ | |||
public class Hello2 { | |||
public static void main(String[] args) { | |||
say1("hello"); | |||
} | |||
public static void say1(String h) { | |||
System.out.println(h); | |||
say2("world"); | |||
} | |||
public static int say2(String w) { | |||
System.out.println(w); | |||
return 0; | |||
} | |||
} |
@@ -0,0 +1,17 @@ | |||
public class Hello3 { | |||
public static void main(String[] args) { | |||
say1("hello"); | |||
} | |||
public static void say1(String h) { | |||
System.out.println(h); | |||
String s = say2("world"); | |||
System.out.println("from say2="+s); | |||
} | |||
public static String say2(String w) { | |||
System.out.println(w); | |||
return ""; | |||
} | |||
} |
@@ -0,0 +1,40 @@ | |||
public class JavaHelper { | |||
public static void advice1() { | |||
System.out.println("in advice"); | |||
} | |||
public static void advice2(String s) { | |||
System.out.println("in advice: s="+s); | |||
} | |||
public static void advice3(String s) { | |||
System.out.println("in advice3: s="+s); | |||
} | |||
public static void advice4(org.aspectj.lang.JoinPoint tjp, String s) { | |||
System.out.println("in advice4: s="+s+" at "+tjp); | |||
} | |||
public static void advice5(org.aspectj.lang.JoinPoint tjp, String s) { | |||
System.out.println("in advice5: s="+s+" at "+tjp); | |||
} | |||
public static void advice6(org.aspectj.lang.JoinPoint.StaticPart tjp, String s) { | |||
System.out.println("in advice6: s="+s+" at "+tjp); | |||
} | |||
public static void advice7(org.aspectj.lang.JoinPoint.StaticPart tjp, String s) { | |||
System.out.println("in advice7: s="+s+" at "+tjp); | |||
} | |||
public static void around1(org.aspectj.lang.JoinPoint.StaticPart tjp, String s) { | |||
System.out.println("in around advice: s="+s+" at "+tjp); | |||
} | |||
public static int around2(org.aspectj.lang.JoinPoint.StaticPart tjp, String s) { | |||
System.out.println("in around2 advice: s="+s+" at "+tjp); | |||
return 99; | |||
} | |||
public static int around3(org.aspectj.lang.ProceedingJoinPoint pjp, String s) { | |||
pjp.proceed(new Object[]{"abcde"}); | |||
return 42; | |||
} | |||
public static String around4(org.aspectj.lang.ProceedingJoinPoint pjp, String s) { | |||
System.out.println("around4 running"); | |||
pjp.proceed(new Object[]{"abcde"}); | |||
return "xyz"; | |||
} | |||
} | |||
@@ -0,0 +1,8 @@ | |||
package a.bb.ccc; | |||
public class JavaHelper2 { | |||
public static void advice1() { | |||
System.out.println("in advice"); | |||
} | |||
} | |||
@@ -0,0 +1,24 @@ | |||
import org.aspectj.lang.Signature; | |||
import org.aspectj.lang.JoinPoint; | |||
public abstract aspect World { | |||
//private Object result; | |||
pointcut greeting() : execution(* Hello.sayWorld(..)); | |||
Object around(): greeting() { | |||
System.out.println("around start!"); | |||
Object result = proceed(); | |||
System.out.println("around end!"); | |||
return result; | |||
} | |||
// before() : greeting() { | |||
// Signature signature = thisJoinPoint.getSignature(); | |||
// System.out.println("before " + signature.getName()); | |||
// } | |||
// after() returning () : greeting() { | |||
// Signature signature = thisJoinPoint.getSignature(); | |||
// System.out.println("after " + signature.getName()); | |||
// } | |||
} |
@@ -0,0 +1,10 @@ | |||
import org.aspectj.lang.annotation.Aspect; | |||
import org.aspectj.lang.annotation.Pointcut; | |||
@Aspect | |||
public abstract class WorldAt { | |||
@Pointcut("execution(* Hello.sayWorld(..))") | |||
void greeting() {} | |||
} |
@@ -0,0 +1,13 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<aspectj> | |||
<aspects> | |||
<concrete-aspect name="ConjuredUp"> | |||
<before pointcut="execution(* Hello.sayWorld(..))" invokeClass="JavaHelper" invokeMethod="advice1()"/> | |||
</concrete-aspect> | |||
</aspects> | |||
<weaver options="-Xreweavable -verbose -XlazyTjp -showWeaveInfo"> | |||
<include within="Hello"/> | |||
</weaver> | |||
</aspectj> | |||
@@ -0,0 +1,14 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<aspectj> | |||
<aspects> | |||
<concrete-aspect name="ConjuredUp"> | |||
<around pointcut="execution(* Hello2.say2(..)) AND args(w) " invokeClass="JavaHelper" invokeMethod="around2(JoinPoint.StaticPart pjp, java.lang.String w)"/> | |||
</concrete-aspect> | |||
</aspects> | |||
<weaver options="-Xreweavable -verbose -XlazyTjp -showWeaveInfo"> | |||
<include within="Hello2"/> | |||
<dump within="*"/> | |||
</weaver> | |||
</aspectj> | |||
@@ -0,0 +1,14 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<aspectj> | |||
<aspects> | |||
<concrete-aspect name="ConjuredUp"> | |||
<around pointcut="execution(* Hello2.say2(..)) AND args(w) " invokeClass="JavaHelper" invokeMethod="around3(ProceedingJoinPoint pjp, java.lang.String w)"/> | |||
</concrete-aspect> | |||
</aspects> | |||
<weaver options="-Xreweavable -verbose -XlazyTjp -showWeaveInfo"> | |||
<include within="Hello2"/> | |||
<dump within="*"/> | |||
</weaver> | |||
</aspectj> | |||
@@ -0,0 +1,14 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<aspectj> | |||
<aspects> | |||
<concrete-aspect name="ConjuredUp"> | |||
<around pointcut="execution(* Hello3.say2(..)) AND args(w) " invokeClass="JavaHelper" invokeMethod="around4(ProceedingJoinPoint pjp, java.lang.String w)"/> | |||
</concrete-aspect> | |||
</aspects> | |||
<weaver options="-Xreweavable -verbose -XlazyTjp -showWeaveInfo"> | |||
<include within="Hello3"/> | |||
<dump within="*"/> | |||
</weaver> | |||
</aspectj> | |||
@@ -0,0 +1,13 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<aspectj> | |||
<aspects> | |||
<concrete-aspect name="ConjuredUp"> | |||
<before pointcut="execution(* Hello2.say*(..))" invokeClass="a.bb.ccc.JavaHelper2" invokeMethod="advice1()"/> | |||
</concrete-aspect> | |||
</aspects> | |||
<weaver options="-Xreweavable -verbose -XlazyTjp -showWeaveInfo"> | |||
<include within="Hello2"/> | |||
</weaver> | |||
</aspectj> | |||
@@ -0,0 +1,13 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<aspectj> | |||
<aspects> | |||
<concrete-aspect name="ConjuredUp"> | |||
<before pointcut="execution(* Hello.sayWorld(..))" invokeClass="com.DoesNotExist" invokeMethod="advice1()"/> | |||
</concrete-aspect> | |||
</aspects> | |||
<weaver options="-Xreweavable -verbose -XlazyTjp -showWeaveInfo"> | |||
<include within="Hello"/> | |||
</weaver> | |||
</aspectj> | |||
@@ -0,0 +1,13 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<aspectj> | |||
<aspects> | |||
<concrete-aspect name="ConjuredUp"> | |||
<before pointcut="execution(* Hello.sayWorld(..))" invokeClass="JavaHelper" invokeMethod="advice1(String)"/> | |||
</concrete-aspect> | |||
</aspects> | |||
<weaver options="-Xreweavable -verbose -XlazyTjp -showWeaveInfo"> | |||
<include within="Hello"/> | |||
</weaver> | |||
</aspectj> | |||
@@ -0,0 +1,13 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<aspectj> | |||
<aspects> | |||
<concrete-aspect name="ConjuredUp"> | |||
<before pointcut="execution(* Hello.sayWorld(..))" invokeClass="JavaHelper" invokeMethod="advice1(java.lang.String:List)"/> | |||
</concrete-aspect> | |||
</aspects> | |||
<weaver options="-Xreweavable -verbose -XlazyTjp -showWeaveInfo"> | |||
<include within="Hello"/> | |||
</weaver> | |||
</aspectj> | |||
@@ -0,0 +1,14 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<aspectj> | |||
<aspects> | |||
<concrete-aspect name="ConjuredUp"> | |||
<before pointcut="execution(* Hello2.say2(..)) AND args(w) " invokeClass="JavaHelper" invokeMethod="advice2(java.lang.String w)"/> | |||
</concrete-aspect> | |||
</aspects> | |||
<weaver options="-Xreweavable -verbose -XlazyTjp -showWeaveInfo"> | |||
<include within="Hello2"/> | |||
<dump within="*"/> | |||
</weaver> | |||
</aspectj> | |||
@@ -0,0 +1,15 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<aspectj> | |||
<aspects> | |||
<concrete-aspect name="ConjuredUp"> | |||
<before pointcut="execution(* Hello2.say2(..)) AND args(w) " invokeClass="JavaHelper" invokeMethod="advice2(java.lang.String w)"/> | |||
<after pointcut="execution(* Hello2.say2(..)) AND args(w) " invokeClass="JavaHelper" invokeMethod="advice3(java.lang.String w)"/> | |||
</concrete-aspect> | |||
</aspects> | |||
<weaver options="-Xreweavable -verbose -XlazyTjp -showWeaveInfo"> | |||
<include within="Hello2"/> | |||
<dump within="*"/> | |||
</weaver> | |||
</aspectj> | |||
@@ -0,0 +1,15 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<aspectj> | |||
<aspects> | |||
<concrete-aspect name="ConjuredUp"> | |||
<before pointcut="execution(* Hello2.say2(..)) AND args(w) " invokeClass="JavaHelper" invokeMethod="advice4(JoinPoint tjp, java.lang.String w)"/> | |||
<after pointcut="execution(* Hello2.say2(..)) AND args(w) " invokeClass="JavaHelper" invokeMethod="advice5(JoinPoint tjp, java.lang.String w)"/> | |||
</concrete-aspect> | |||
</aspects> | |||
<weaver options="-Xreweavable -verbose -XlazyTjp -showWeaveInfo"> | |||
<include within="Hello2"/> | |||
<dump within="*"/> | |||
</weaver> | |||
</aspectj> | |||
@@ -0,0 +1,15 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<aspectj> | |||
<aspects> | |||
<concrete-aspect name="ConjuredUp"> | |||
<before pointcut="execution(* Hello2.say2(..)) AND args(w) " invokeClass="JavaHelper" invokeMethod="advice6(JoinPoint.StaticPart tjpsp, java.lang.String w)"/> | |||
<after pointcut="execution(* Hello2.say2(..)) AND args(w) " invokeClass="JavaHelper" invokeMethod="advice7(JoinPoint.StaticPart tjpsp, java.lang.String w)"/> | |||
</concrete-aspect> | |||
</aspects> | |||
<weaver options="-Xreweavable -verbose -XlazyTjp -showWeaveInfo"> | |||
<include within="Hello2"/> | |||
<dump within="*"/> | |||
</weaver> | |||
</aspectj> | |||
@@ -0,0 +1,14 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<aspectj> | |||
<aspects> | |||
<concrete-aspect name="ConjuredUp"> | |||
<around pointcut="execution(* Hello2.say1(..)) AND args(w) " invokeClass="JavaHelper" invokeMethod="around1(JoinPoint.StaticPart tjpsp, java.lang.String w)"/> | |||
</concrete-aspect> | |||
</aspects> | |||
<weaver options="-Xreweavable -verbose -XlazyTjp -showWeaveInfo"> | |||
<include within="Hello2"/> | |||
<dump within="*"/> | |||
</weaver> | |||
</aspectj> | |||