123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
-
- import org.aspectj.testing.*;
- import java.lang.reflect.*;
-
- // XXX incomplete - find all cases of generated static fields
- /** @testcase PR#704 mark generated static fields transient */
- public class GeneratedStaticAsTransient {
- public static void main (String[] args) {
- new GeneratedStaticAsTransient().callRun();
- checkStatic(GeneratedStaticAsTransient.class, false);
- Tester.checkAllEvents();
- }
- public void callRun() { run(); }
-
- public void run() {
- Tester.event("run");
- Tester.check(null != A.aspectOf(this),"null != A.hasAspect(this)");
- Tester.check(null != C.aspectOf(this),"null != C.hasAspect(this)");
- Tester.check(null != B.aspectOf(),"null != B.hasAspect()");
- }
- static {
- Tester.expectEvent("after returning - target");
- Tester.expectEvent("after returning - this");
- Tester.expectEvent("after returning - cflow");
- Tester.expectEvent("run");
- }
- public static void checkStatic(Class c, boolean requireStatic) {
- boolean gotStatic = false;
- Field[] fields = c.getFields();
- for (int i = 0; i < fields.length; i++) {
- int mods = fields[i].getModifiers();
- //System.err.println("checking " + fields[i]);
- if (Modifier.isStatic(mods)) {
- //System.err.println(" static " + fields[i]);
- if (!gotStatic) gotStatic = true;
- if (!Modifier.isTransient(mods)) {
- String m = "field " + i + " "
- + c.getName() + "." + fields[i].getName()
- + " is static but not transient. mods=" + mods;
- //System.err.println(m);
- Tester.check(false, m);
- }
- }
- }
- if (requireStatic) {
- Tester.check(gotStatic, c + "no static field");
- }
- }
- }
-
- aspect A pertarget(callRun()) {
- pointcut callRun() : call(void GeneratedStaticAsTransient.run());
- after () returning : callRun() {
- Tester.event("after returning - target");
- GeneratedStaticAsTransient.checkStatic(A.class, false);
- }
- }
- aspect B percflow(A.callRun()) {
- after () returning : A.callRun() {
- Tester.event("after returning - cflow");
- GeneratedStaticAsTransient.checkStatic(B.class, true);
- }
- }
- aspect C perthis(A.callRun()) {
- after () returning : A.callRun() {
- Tester.event("after returning - this");
- GeneratedStaticAsTransient.checkStatic(C.class, false);
- }
- }
|