diff options
author | acolyer <acolyer> | 2005-04-25 16:04:10 +0000 |
---|---|---|
committer | acolyer <acolyer> | 2005-04-25 16:04:10 +0000 |
commit | 92fce1440c9017376efaf544802d8cef07546b03 (patch) | |
tree | 35640fd1a53ce26bb0097e33a9f5fdd0bd8b4e20 /aspectj5rt/testsrc | |
parent | 1ff2a95b303cd615d5b689b1bdf79a7f201c62a3 (diff) | |
download | aspectj-92fce1440c9017376efaf544802d8cef07546b03.tar.gz aspectj-92fce1440c9017376efaf544802d8cef07546b03.zip |
this patch implements the MAP for aspects, pointcuts, and advice. just enough of an implementation to provide the support needed for some of the ataspectj visitor tests.
Diffstat (limited to 'aspectj5rt/testsrc')
3 files changed, 683 insertions, 1 deletions
diff --git a/aspectj5rt/testsrc/Aspectj5rtModuleTests.java b/aspectj5rt/testsrc/Aspectj5rtModuleTests.java index 065df5479..ff1e30a2f 100644 --- a/aspectj5rt/testsrc/Aspectj5rtModuleTests.java +++ b/aspectj5rt/testsrc/Aspectj5rtModuleTests.java @@ -12,12 +12,19 @@ // default package -import junit.framework.*; +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import org.aspectj.internal.lang.reflect.AjTypeTests; +import org.aspectj.internal.lang.reflect.AjTypeTestsWithAspects; public class Aspectj5rtModuleTests extends TestCase { public static Test suite() { TestSuite suite = new TestSuite("Aspectj5rt module tests"); + suite.addTestSuite(AjTypeTests.class); + suite.addTestSuite(AjTypeTestsWithAspects.class); return suite; } diff --git a/aspectj5rt/testsrc/org/aspectj/internal/lang/reflect/AjTypeTests.java b/aspectj5rt/testsrc/org/aspectj/internal/lang/reflect/AjTypeTests.java new file mode 100644 index 000000000..bae481e72 --- /dev/null +++ b/aspectj5rt/testsrc/org/aspectj/internal/lang/reflect/AjTypeTests.java @@ -0,0 +1,304 @@ +package org.aspectj.internal.lang.reflect; + +import java.io.Serializable; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Type; +import java.lang.reflect.TypeVariable; + +import junit.framework.TestCase; + +import org.aspectj.lang.reflect.AjType; +import org.aspectj.lang.reflect.AjTypeSystem; + +public class AjTypeTests extends TestCase { + + private AjType stringType; + + @Override + protected void setUp() throws Exception { + super.setUp(); + stringType = AjTypeSystem.getAjType(String.class); + } + + public void testCreateAjType() { + assertNotNull("should find type",stringType); + } + + public void testGetName() { + assertEquals(String.class.getName(),stringType.getName()); + } + + public void testGetPackage() { + assertEquals(String.class.getPackage(),stringType.getPackage()); + } + + public void testGetInterfaces() { + Class[] i1 = String.class.getInterfaces(); + Class[] i2 = stringType.getInterfaces(); + assertEquals(i1.length,i2.length); + for (int i = 0; i < i1.length; i++) + assertEquals(i1[i],i2[i]); + } + + public void testGetModifiers() { + assertEquals(String.class.getModifiers(),stringType.getModifiers()); + } + + public void testGetSupertype() { + Class stringSuper = String.class.getSuperclass(); + AjType ajSuper = stringType.getSupertype(); + assertEquals(AjTypeSystem.getAjType(stringSuper),ajSuper); + } + + public void testGetGenericSupertype() { + Type t = AjTypeSystem.getAjType(Goo.class).getGenericSupertype(); + assertEquals(Foo.class,t); + } + + public void testGetEnclosingMethod() { + new Goo().foo(); + } + + public void testGetEnclosingConstructor() { + new Goo(); + } + + public void testGetEnclosingType() { + AjType t = AjTypeSystem.getAjType(Foo.Z.class); + assertEquals("org.aspectj.internal.lang.reflect.Foo",t.getEnclosingType().getName()); + } + + public void testGetDeclaringType() { + AjType t = AjTypeSystem.getAjType(Foo.Z.class); + assertEquals("org.aspectj.internal.lang.reflect.Foo",t.getDeclaringType().getName()); + } + + public void testIsAnnotationPresent() { + AjType<Foo> foo = AjTypeSystem.getAjType(Foo.class); + AjType<Goo> goo = AjTypeSystem.getAjType(Goo.class); + assertTrue(foo.isAnnotationPresent(SomeAnn.class)); + assertFalse(goo.isAnnotationPresent(SomeAnn.class)); + } + + public void testGetAnnotation() { + AjType<Foo> foo = AjTypeSystem.getAjType(Foo.class); + AjType<Goo> goo = AjTypeSystem.getAjType(Goo.class); + assertNotNull(foo.getAnnotation(SomeAnn.class)); + assertNull(goo.getAnnotation(SomeAnn.class)); + } + + public void testGetAnnotations() { + AjType<Foo> foo = AjTypeSystem.getAjType(Foo.class); + AjType<Goo> goo = AjTypeSystem.getAjType(Goo.class); + assertEquals(1,foo.getAnnotations().length); + assertEquals(0,goo.getAnnotations().length); + } + + public void testGetDeclaredAnnotations() { + AjType<Foo> foo = AjTypeSystem.getAjType(Foo.class); + AjType<Goo> goo = AjTypeSystem.getAjType(Goo.class); + assertEquals(0,goo.getDeclaredAnnotations().length); + assertEquals(1,foo.getDeclaredAnnotations().length); + } + + public void testGetAjTypes() { + AjType<Foo> foo = AjTypeSystem.getAjType(Foo.class); + AjType[] fooTypes = foo.getAjTypes(); + assertEquals(1,fooTypes.length); + assertEquals("org.aspectj.internal.lang.reflect.Foo$Z",fooTypes[0].getName()); + } + + public void testGetDeclaredAjTypes() { + AjType<Foo> foo = AjTypeSystem.getAjType(Foo.class); + AjType[] fooTypes = foo.getDeclaredAjTypes(); + assertEquals(2,fooTypes.length); + assertEquals("org.aspectj.internal.lang.reflect.Foo$Z",fooTypes[0].getName()); + assertEquals("org.aspectj.internal.lang.reflect.Foo$XX",fooTypes[1].getName()); + } + + public void testGetConstructor() throws Exception { + Constructor c1 = String.class.getConstructor(String.class); + Constructor c2 = stringType.getConstructor(String.class); + assertEquals(c1,c2); + } + + public void testGetConstructors() { + Constructor[] c1 = String.class.getConstructors(); + Constructor[] c2 = stringType.getConstructors(); + assertEquals(c1.length,c2.length); + for (int i = 0; i < c1.length; i++) + assertEquals(c1[i],c2[i]); + } + + public void testGetDeclaredConstructor() throws Exception { + Constructor c1 = String.class.getDeclaredConstructor(String.class); + Constructor c2 = stringType.getDeclaredConstructor(String.class); + assertEquals(c1,c2); + } + + public void testGetDeclaredConstructors() { + Constructor[] c1 = String.class.getDeclaredConstructors(); + Constructor[] c2 = stringType.getDeclaredConstructors(); + assertEquals(c1.length,c2.length); + for (int i = 0; i < c1.length; i++) + assertEquals(c1[i],c2[i]); + } + + public void testGetDeclaredField() throws Exception { + Field f1 = String.class.getDeclaredField("value"); + Field f2 = stringType.getDeclaredField("value"); + assertEquals(f1,f2); + } + + public void testGetDeclaredFields() { + Field[] f1 = String.class.getDeclaredFields(); + Field[] f2 = stringType.getDeclaredFields(); + assertEquals(f1.length,f2.length); + for (int i = 0; i < f1.length; i++) + assertEquals(f1[i],f2[i]); + } + + public void testGetField() throws Exception { + AjType<Goo> goo = AjTypeSystem.getAjType(Goo.class); + assertEquals("g",goo.getField("g").getName()); + } + + public void testGetFields() { + AjType<Goo> goo = AjTypeSystem.getAjType(Goo.class); + Field[] fields = goo.getFields(); + assertEquals(1,fields.length); + assertEquals("g",fields[0].getName()); + + } + + public void testGetDeclaredMethod() throws Exception { + Method m1 = String.class.getDeclaredMethod("toUpperCase"); + Method m2 = stringType.getDeclaredMethod("toUpperCase"); + assertEquals(m1,m2); + } + + public void testGetMethod() throws Exception { + Method m1 = String.class.getMethod("toUpperCase"); + Method m2 = stringType.getMethod("toUpperCase"); + assertEquals(m1,m2); + } + + public void testGetDeclaredMethods() { + Method[] m1 = String.class.getDeclaredMethods(); + Method[] m2 = stringType.getDeclaredMethods(); + assertEquals(m1.length,m2.length); + for (int i = 0; i < m1.length; i++) + assertEquals(m1[i],m2[i]); + } + + public void testGetMethods() { + Method[] m1 = String.class.getMethods(); + Method[] m2 = stringType.getMethods(); + assertEquals(m1.length,m2.length); + for (int i = 0; i < m1.length; i++) + assertEquals(m1[i],m2[i]); + } + + public void testGetEnumConstants() { + AjType e = AjTypeSystem.getAjType(E.class); + Object[] consts = e.getEnumConstants(); + assertEquals(3,consts.length); + } + + public void testGetTypeParameters() { + AjType<Foo> foo = AjTypeSystem.getAjType(Foo.class); + TypeVariable<Class<Foo>>[] tvs = foo.getTypeParameters(); + assertEquals(1,tvs.length); + assertEquals("T",tvs[0].getName()); + } + + public void testIsEnum() { + assertFalse(stringType.isEnum()); + } + + public void testIsInstance() { + assertTrue(stringType.isInstance("I am")); + } + + public void testIsInterface() { + assertFalse(stringType.isInterface()); + assertTrue(AjTypeSystem.getAjType(Serializable.class).isInterface()); + } + + public void testIsLocalClass() { + assertFalse(stringType.isLocalClass()); + } + + public void testIsArray() { + assertFalse(stringType.isArray()); + assertTrue(AjTypeSystem.getAjType(Integer[].class).isArray()); + } + + public void testIsPrimitive() { + assertFalse(stringType.isPrimitive()); + assertTrue(AjTypeSystem.getAjType(boolean.class).isPrimitive()); + } + + public void testIsAspect() { + assertFalse(stringType.isAspect()); + } + + public void testIsMemberAspect() { + assertFalse(stringType.isMemberAspect()); + } + + public void testIsPrivileged() { + assertFalse(stringType.isPrivileged()); + } + + public void testEquals() { + AjType stringTypeTwo = AjTypeSystem.getAjType(String.class); + assertTrue(stringType.equals(stringTypeTwo)); + } + + public void testHashCode() { + AjType stringTypeTwo = AjTypeSystem.getAjType(String.class); + assertEquals(stringType.hashCode(),stringTypeTwo.hashCode()); + } + +} + +@Retention(RetentionPolicy.RUNTIME) +@interface SomeAnn {} + +@SomeAnn +class Foo<T> { + + public Foo() { + class Y { int y; } + AjType t = AjTypeSystem.getAjType(Y.class); + Constructor c = t.getEnclosingConstructor(); + if (!c.getName().equals("org.aspectj.internal.lang.reflect.Foo")) throw new RuntimeException("should have been Foo"); + } + public void foo() { + class X { int x; } + AjType t = AjTypeSystem.getAjType(X.class); + Method m = t.getEnclosingMethod(); + if (!m.getName().equals("foo")) throw new RuntimeException("should have been foo"); + } + public class Z { int z; } + class XX { int xx; } +} + +class Goo extends Foo { + @interface IX {} + + public Goo() { + super(); + } + + public int g; + int g2; + +} + +enum E { A,B,C; } diff --git a/aspectj5rt/testsrc/org/aspectj/internal/lang/reflect/AjTypeTestsWithAspects.java b/aspectj5rt/testsrc/org/aspectj/internal/lang/reflect/AjTypeTestsWithAspects.java new file mode 100644 index 000000000..0972a67f4 --- /dev/null +++ b/aspectj5rt/testsrc/org/aspectj/internal/lang/reflect/AjTypeTestsWithAspects.java @@ -0,0 +1,371 @@ +package org.aspectj.internal.lang.reflect; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.EnumSet; +import java.util.Set; + +import junit.framework.TestCase; + +import org.aspectj.internal.lang.annotation.ajcPrivileged; +import org.aspectj.lang.annotation.AdviceName; +import org.aspectj.lang.annotation.After; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.AfterThrowing; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.reflect.Advice; +import org.aspectj.lang.reflect.AdviceType; +import org.aspectj.lang.reflect.AjType; +import org.aspectj.lang.reflect.AjTypeSystem; +import org.aspectj.lang.reflect.NoSuchAdviceException; +import org.aspectj.lang.reflect.NoSuchPointcutException; +import org.aspectj.lang.reflect.PerClause; +import org.aspectj.lang.reflect.PerClauseKind; +import org.aspectj.lang.reflect.Pointcut; + +public class AjTypeTestsWithAspects extends TestCase { + + private AjType sa; + + protected void setUp() throws Exception { + super.setUp(); + sa = AjTypeSystem.getAjType(SimpleAspect.class); + } + + public void testGetPerClause() { + AjType perThisA = AjTypeSystem.getAjType(PerThisAspect.class); + AjType perTargetA = AjTypeSystem.getAjType(PerTargetAspect.class); + AjType perCflowA = AjTypeSystem.getAjType(PerCflowAspect.class); + AjType perCflowbelowA = AjTypeSystem.getAjType(PerCflowbelowAspect.class); + AjType perTypeWithinA = AjTypeSystem.getAjType(PerTypeWithin.class); + + PerClause pc = perThisA.getPerClause(); + assertEquals(PerClauseKind.PERTHIS,pc.getKind()); + assertEquals("pc()",pc.getPointcutExpression()); + + pc= perTargetA.getPerClause(); + assertEquals(PerClauseKind.PERTARGET,pc.getKind()); + assertEquals("pc()",pc.getPointcutExpression()); + + pc= perCflowA.getPerClause(); + assertEquals(PerClauseKind.PERCFLOW,pc.getKind()); + assertEquals("pc()",pc.getPointcutExpression()); + + pc= perCflowbelowA.getPerClause(); + assertEquals(PerClauseKind.PERCFLOWBELOW,pc.getKind()); + assertEquals("pc()",pc.getPointcutExpression()); + + pc= perTypeWithinA.getPerClause(); + assertEquals(PerClauseKind.PERTYPEWITHIN,pc.getKind()); + assertEquals("org.aspectj..*",pc.getPointcutExpression()); + + } + + public void testGetDeclaredField() throws Exception{ + Field f = sa.getDeclaredField("s"); + try { + Field f2 = sa.getDeclaredField("ajc$xyz$s"); + fail("Expecting NoSuchFieldException"); + } catch (NoSuchFieldException nsf) {} + } + + public void testGetField() throws Exception { + Field f = sa.getField("s"); + try { + Field f2 = sa.getField("ajc$xyz$s"); + fail("Expecting NoSuchFieldException"); + } catch (NoSuchFieldException nsf) {} + } + + public void testGetDeclaredFields() { + Field[] fields = sa.getDeclaredFields(); + assertEquals(1,fields.length); + assertEquals("s",fields[0].getName()); + } + + public void testGetFields() { + Field[] fields = sa.getFields(); + assertEquals(1,fields.length); + assertEquals("s",fields[0].getName()); + } + + public void testGetDeclaredMethod() throws Exception { + Method m = sa.getDeclaredMethod("aMethod"); + try { + Method m2 = sa.getDeclaredMethod("logEntry"); + fail("Expecting NoSuchMethodException"); + } catch(NoSuchMethodException ex) {} + try { + Method m3 = sa.getDeclaredMethod("ajc$before$123"); + fail("Expecting NoSuchMethodException"); + } catch(NoSuchMethodException ex) {} + } + + public void testGetMethod() throws Exception { + Method m = sa.getMethod("aMethod"); + try { + Method m2 = sa.getMethod("logEntry"); + fail("Expecting NoSuchMethodException"); + } catch(NoSuchMethodException ex) {} + try { + Method m3 = sa.getMethod("ajc$before$123"); + fail("Expecting NoSuchMethodException"); + } catch(NoSuchMethodException ex) {} + } + + public void testGetDeclaredMethods() { + Method[] ms = sa.getDeclaredMethods(); + assertEquals(1,ms.length); + assertEquals("aMethod",ms[0].getName()); + } + + public void testGetMethods() { + Method[] ms = sa.getMethods(); + assertEquals(10,ms.length); + assertEquals("aMethod",ms[0].getName()); + } + + public void testGetDeclaredPointcut() throws Exception { + Pointcut p1 = sa.getDeclaredPointcut("simpleAspectMethodExecution"); + assertEquals("simpleAspectMethodExecution",p1.getName()); + assertEquals("execution(* SimpleAspect.*(..))",p1.getPointcutExpression()); + assertEquals(sa,p1.getDeclaringType()); + assertEquals(0,p1.getParameterTypes().length); + assertTrue(Modifier.isPublic(p1.getModifiers())); + Pointcut p2 = sa.getDeclaredPointcut("simpleAspectCall"); + assertEquals("simpleAspectCall",p2.getName()); + assertEquals("call(* SimpleAspect.*(..))",p2.getPointcutExpression()); + assertEquals(sa,p2.getDeclaringType()); + assertEquals(1,p2.getParameterTypes().length); + assertTrue(Modifier.isPrivate(p2.getModifiers())); + try { + Pointcut p3 = sa.getDeclaredPointcut("sausages"); + fail("Expecting NoSuchPointcutExcetpion"); + } catch (NoSuchPointcutException ex) { + assertEquals("sausages",ex.getName()); + } + } + + public void testGetPointcut() throws Exception { + Pointcut p1 = sa.getPointcut("simpleAspectMethodExecution"); + assertEquals("simpleAspectMethodExecution",p1.getName()); + assertEquals("execution(* SimpleAspect.*(..))",p1.getPointcutExpression()); + assertEquals(sa,p1.getDeclaringType()); + assertEquals(0,p1.getParameterTypes().length); + assertTrue(Modifier.isPublic(p1.getModifiers())); + Pointcut p2 = sa.getPointcut("simpleAspectCall"); + assertEquals("simpleAspectCall",p2.getName()); + assertEquals("call(* SimpleAspect.*(..))",p2.getPointcutExpression()); + assertEquals(sa,p2.getDeclaringType()); + assertEquals(1,p2.getParameterTypes().length); + assertTrue(Modifier.isPrivate(p2.getModifiers())); + try { + Pointcut p3 = sa.getPointcut("sausages"); + fail("Expecting NoSuchPointcutExcetpion"); + } catch (NoSuchPointcutException ex) { + assertEquals("sausages",ex.getName()); + } + } + + public void testGetDeclaredPointcuts() { + Pointcut[] pcs = sa.getDeclaredPointcuts(); + assertEquals(2,pcs.length); + assertEquals("simpleAspectMethodExecution",pcs[0].getName()); + assertEquals("simpleAspectCall",pcs[1].getName()); + } + + public void testGetPointcuts() { + Pointcut[] pcs = sa.getPointcuts(); + assertEquals(1,pcs.length); + assertEquals("simpleAspectMethodExecution",pcs[0].getName()); + } + + public void testGetDeclaredAdvice() { + Advice[] advice = sa.getDeclaredAdvice(); + assertEquals(10,advice.length); + advice = sa.getDeclaredAdvice(AdviceType.BEFORE); + assertEquals(2,advice.length); + advice = sa.getDeclaredAdvice(AdviceType.AFTER); + assertEquals(2,advice.length); + advice = sa.getDeclaredAdvice(AdviceType.AFTER_RETURNING); + assertEquals(2,advice.length); + advice = sa.getDeclaredAdvice(AdviceType.AFTER_THROWING); + assertEquals(2,advice.length); + advice = sa.getDeclaredAdvice(AdviceType.AROUND); + assertEquals(2,advice.length); + advice = sa.getDeclaredAdvice(AdviceType.BEFORE,AdviceType.AFTER); + assertEquals(4,advice.length); + + advice = sa.getDeclaredAdvice(AdviceType.BEFORE); + assertEquals("execution(* SimpleAspect.*(..))",advice[0].getPointcutExpression()); + assertEquals("logEntry",advice[0].getName()); + assertEquals(AdviceType.BEFORE,advice[0].getKind()); + assertEquals("execution(* SimpleAspect.*(..))",advice[1].getPointcutExpression()); + assertEquals("",advice[1].getName()); + } + + public void testGetAdvice() { + Advice[] advice = sa.getDeclaredAdvice(); + assertEquals(10,advice.length); + advice = sa.getDeclaredAdvice(AdviceType.BEFORE); + assertEquals(2,advice.length); + advice = sa.getDeclaredAdvice(AdviceType.AFTER); + assertEquals(2,advice.length); + advice = sa.getDeclaredAdvice(AdviceType.AFTER_RETURNING); + assertEquals(2,advice.length); + advice = sa.getDeclaredAdvice(AdviceType.AFTER_THROWING); + assertEquals(2,advice.length); + advice = sa.getDeclaredAdvice(AdviceType.AROUND); + assertEquals(2,advice.length); + advice = sa.getDeclaredAdvice(AdviceType.BEFORE,AdviceType.AFTER); + assertEquals(4,advice.length); + } + + public void testGetNamedAdvice() throws Exception { + Advice a = sa.getAdvice("logItAll"); + assertEquals("logItAll",a.getName()); + assertEquals(AdviceType.AROUND,a.getKind()); + a = sa.getAdvice("whatGoesAround"); + assertEquals("whatGoesAround",a.getName()); + assertEquals(AdviceType.AROUND,a.getKind()); + try { + a = sa.getAdvice("ajc$after$123"); + fail("Expecting NoSuchAdviceException"); + } catch (NoSuchAdviceException ex) { + assertEquals("ajc$after$123",ex.getName()); + } + try { + a = sa.getAdvice(""); + fail("Expecting IllegalArgumentException"); + } catch (IllegalArgumentException ex) { + ; + } + } + + public void testGetNamedDeclaredAdvice() throws Exception { + Advice a = sa.getDeclaredAdvice("logItAll"); + assertEquals("logItAll",a.getName()); + assertEquals(AdviceType.AROUND,a.getKind()); + a = sa.getDeclaredAdvice("whatGoesAround"); + assertEquals("whatGoesAround",a.getName()); + assertEquals(AdviceType.AROUND,a.getKind()); + try { + a = sa.getDeclaredAdvice("ajc$after$123"); + fail("Expecting NoSuchAdviceException"); + } catch (NoSuchAdviceException ex) { + assertEquals("ajc$after$123",ex.getName()); + } + try { + a = sa.getDeclaredAdvice(""); + fail("Expecting IllegalArgumentException"); + } catch (IllegalArgumentException ex) { + ; + } + } + + public void testIsPrivileged() { + assertFalse(sa.isPrivileged()); + assertTrue(AjTypeSystem.getAjType(SimplePrivilegedAspect.class).isPrivileged()); + } + + public void testIsAspect() { + assertTrue(sa.isAspect()); + } + + public void testIsMemberAspect() { + assertFalse(AjTypeSystem.getAjType(SimplePrivilegedAspect.class).isMemberAspect()); + assertTrue(AjTypeSystem.getAjType(SimplePrivilegedAspect.MemberAspect.class).isMemberAspect()); + + } +} + + +@Aspect +class SimpleAspect { + + // regular field + public String s; + + // synthetic field + public String ajc$xyz$s; + + // regular method + public void aMethod() {} + + // advice method, annotation style + @Before("execution(* SimpleAspect.*(..))") + public void logEntry() {} + + // advice method, code style + @Before("execution(* SimpleAspect.*(..))") + public void ajc$before$123() {} + + // advice method, annotation style + @After("execution(* SimpleAspect.*(..))") + public void logFinally() {} + + // advice method, code style + @After("execution(* SimpleAspect.*(..))") + public void ajc$after$123() {} + + // advice method, annotation style + @AfterReturning("execution(* SimpleAspect.*(..))") + public void logExit() {} + + // advice method, code style + @AfterReturning("execution(* SimpleAspect.*(..))") + public void ajc$afterReturning$123() {} + + // advice method, annotation style + @AfterThrowing("execution(* SimpleAspect.*(..))") + public void logException() {} + + // advice method, code style + @AfterThrowing("execution(* SimpleAspect.*(..))") + public void ajc$afterThrowing$123() {} + + // advice method, annotation style + @Around("execution(* SimpleAspect.*(..))") + public void logItAll() {} + + // advice method, code style + @Around("execution(* SimpleAspect.*(..))") + @AdviceName("whatGoesAround") + public void ajc$around$123() {} + + // pointcut, annotation style + @org.aspectj.lang.annotation.Pointcut("execution(* SimpleAspect.*(..))") + public void simpleAspectMethodExecution() {}; + + // pointcut, code style + @org.aspectj.lang.annotation.Pointcut("call(* SimpleAspect.*(..))") + private void ajc$pointcut$$simpleAspectCall$123(SimpleAspect target) {}; + +} + +@Aspect +@ajcPrivileged +class SimplePrivilegedAspect { + + @Aspect + static class MemberAspect {} + +} + +@Aspect("perthis(pc())") +class PerThisAspect {} + +@Aspect("pertarget(pc())") +class PerTargetAspect {} + +@Aspect("percflow(pc())") +class PerCflowAspect {} + +@Aspect("percflowbelow(pc())") +class PerCflowbelowAspect {} + +@Aspect("pertypewithin(org.aspectj..*)") +class PerTypeWithin {} |