import org.aspectj.lang.annotation.*; | |||||
import java.lang.annotation.*; | |||||
import java.lang.reflect.*; | |||||
@Aspect("perthis(transactional())") | |||||
public class Code { | |||||
@Pointcut("execution(@Transactional * * (..))") | |||||
public void transactional() { } | |||||
public static void main(String[] args) { | |||||
print(AAA.class); | |||||
print(BBB.class); | |||||
print(CCC.class); | |||||
} | |||||
public static void print(Class clazz) { | |||||
System.out.println(clazz.getName()); | |||||
Class[] ifs = clazz.getInterfaces(); | |||||
if (ifs!=null) { | |||||
for (int i=0;i<ifs.length;i++) { | |||||
System.out.println(ifs[i]); | |||||
} | |||||
} | |||||
Field[] fs = clazz.getDeclaredFields(); | |||||
if (fs!=null) { | |||||
for (int i=0;i<fs.length;i++) { | |||||
System.out.println(fs[i]); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
class AAA { | |||||
public void m() { } | |||||
} | |||||
class BBB { | |||||
public void m() { } | |||||
} | |||||
class CCC { | |||||
@Transactional | |||||
public void m() { } | |||||
} | |||||
@Retention(RetentionPolicy.RUNTIME) @interface Transactional {} | |||||
import org.aspectj.lang.annotation.*; | |||||
import java.lang.annotation.*; | |||||
import java.lang.reflect.*; | |||||
import org.aspectj.lang.*; | |||||
@Aspect("perthis(transactional())") | |||||
public class Code2 { | |||||
@Pointcut("execution(@Transactional * * (..))") | |||||
public void transactional() { } | |||||
@Before("execution(* *(..))") | |||||
public void m(JoinPoint.StaticPart thisJoinPointStaticPart) { | |||||
System.out.println(thisJoinPointStaticPart); | |||||
} | |||||
public static void main(String[] args) { | |||||
new AAA().m(); | |||||
new BBB().m(); | |||||
new CCC().m(); | |||||
} | |||||
} | |||||
class AAA { | |||||
public void m() { } | |||||
} | |||||
class BBB { | |||||
public void m() { } | |||||
} | |||||
class CCC { | |||||
@Transactional | |||||
public void m() { } | |||||
} | |||||
@Retention(RetentionPolicy.RUNTIME) @interface Transactional {} | |||||
import org.aspectj.lang.annotation.*; | |||||
import java.lang.annotation.*; | |||||
import java.lang.reflect.*; | |||||
import org.aspectj.lang.*; | |||||
@Aspect("perthis(transactional())") | |||||
public class Code3 { | |||||
@Pointcut("execution(@Transactional * * (..))") | |||||
public void transactional() { } | |||||
@Before("execution(* *(..))") | |||||
public void m(JoinPoint.StaticPart thisJoinPointStaticPart) { | |||||
System.out.println(thisJoinPointStaticPart); | |||||
} | |||||
public static void main(String[] args) { | |||||
new AAA().m(); | |||||
new BBB().m(); | |||||
new CCC().m(); | |||||
} | |||||
} | |||||
aspect XXX { | |||||
@Transactional public void CCC.m() {} | |||||
} | |||||
class AAA { | |||||
public void m() { } | |||||
} | |||||
class BBB { | |||||
public void m() { } | |||||
} | |||||
class CCC { | |||||
} | |||||
@Retention(RetentionPolicy.RUNTIME) @interface Transactional {} | |||||
// runTest("itd split compilation"); | // runTest("itd split compilation"); | ||||
// } | // } | ||||
public void testPervasivePerthis_354470() throws Exception { | |||||
runTest("perthis too pervasive"); | |||||
} | |||||
public void testPervasivePerthis_354470_2() throws Exception { | |||||
runTest("perthis too pervasive 2"); | |||||
} | |||||
public void testPervasivePerthis_354470_3() throws Exception { | |||||
runTest("perthis too pervasive 3"); | |||||
} | |||||
public void testNotEqualWithAnnotationValues_357013() throws Exception { | public void testNotEqualWithAnnotationValues_357013() throws Exception { | ||||
runTest("annotation values not equal"); | runTest("annotation values not equal"); | ||||
} | } |
<suite> | <suite> | ||||
<ajc-test dir="bugs1612/pr354470" title="perthis too pervasive"> | |||||
<compile files="Code.java" options="-1.5"/> | |||||
<run class="Code"> | |||||
<stdout> | |||||
<line text="AAA"/> | |||||
<line text="BBB"/> | |||||
<line text="CCC"/> | |||||
<line text="interface Code$ajcMightHaveAspect"/> | |||||
<line text="private transient Code CCC.ajc$Code$perObjectField"/> | |||||
</stdout></run> | |||||
</ajc-test> | |||||
<ajc-test dir="bugs1612/pr354470" title="perthis too pervasive 2"> | |||||
<compile files="Code2.java" options="-1.5"/> | |||||
<run class="Code2"> | |||||
<stdout> | |||||
<line text="execution(void CCC.m())"/> | |||||
</stdout></run> | |||||
</ajc-test> | |||||
<ajc-test dir="bugs1612/pr354470" title="perthis too pervasive 3"> | |||||
<compile files="Code3.java" options="-1.5"/> | |||||
<run class="Code3"> | |||||
<stdout> | |||||
<line text="execution(void CCC.m())"/> | |||||
</stdout></run> | |||||
</ajc-test> | |||||
<ajc-test dir="bugs1612/prx" title="class reference in annotation value"> | <ajc-test dir="bugs1612/prx" title="class reference in annotation value"> | ||||
<compile files="C.java" options="-1.5 -showWeaveInfo"> | <compile files="C.java" options="-1.5 -showWeaveInfo"> | ||||
<message kind="weave" text="Join point 'field-get(int C.i)' in Type 'C' (C.java:17) advised by before advice from 'X' (C.java:22)"/> | <message kind="weave" text="Join point 'field-get(int C.i)' in Type 'C' (C.java:17) advised by before advice from 'X' (C.java:22)"/> |