@@ -9,13 +9,10 @@ | |||
* Contributors: | |||
* PARC initial implementation | |||
* ******************************************************************/ | |||
package org.aspectj.weaver; | |||
import java.lang.reflect.Modifier; | |||
//import org.aspectj.weaver.ResolvedType.Name; | |||
/** | |||
* The AjcMemberMaker is responsible for creating the representations of methods/fields/etc that are placed in both aspects and | |||
* affected target types. It uses the NameMangler class to create the actual names that will be used. | |||
@@ -69,7 +66,7 @@ public class AjcMemberMaker { | |||
} | |||
public static ResolvedMember perCflowField(UnresolvedType declaringType) { | |||
return new ResolvedMemberImpl(Member.FIELD, declaringType, PUBLIC_STATIC_FINAL, NameMangler.PERCFLOW_FIELD_NAME, | |||
return new ResolvedMemberImpl(Member.FIELD, declaringType, PUBLIC_STATIC, NameMangler.PERCFLOW_FIELD_NAME, | |||
CFLOW_STACK_TYPE.getSignature()); | |||
} | |||
@@ -64,9 +64,6 @@ public class CflowPointcut extends Pointcut { | |||
pointcutKind = CFLOW; | |||
} | |||
/** | |||
* @return Returns true is this is a cflowbelow pointcut | |||
*/ | |||
public boolean isCflowBelow() { | |||
return isBelow; | |||
} | |||
@@ -230,8 +227,8 @@ public class CflowPointcut extends Pointcut { | |||
} else { | |||
// Create a counter field in the aspect | |||
localCflowField = new ResolvedMemberImpl(Member.FIELD, concreteAspect, Modifier.STATIC | Modifier.PUBLIC | |||
| Modifier.FINAL, NameMangler.cflowCounter(xcut), UnresolvedType.forName(NameMangler.CFLOW_COUNTER_TYPE) | |||
localCflowField = new ResolvedMemberImpl(Member.FIELD, concreteAspect, Modifier.STATIC | Modifier.PUBLIC, | |||
NameMangler.cflowCounter(xcut), UnresolvedType.forName(NameMangler.CFLOW_COUNTER_TYPE) | |||
.getSignature()); | |||
// Create type munger to add field to the aspect | |||
@@ -294,8 +291,8 @@ public class CflowPointcut extends Pointcut { | |||
localCflowField = (ResolvedMember) field; | |||
} else { | |||
localCflowField = new ResolvedMemberImpl(Member.FIELD, concreteAspect, Modifier.STATIC | Modifier.PUBLIC | |||
| Modifier.FINAL, NameMangler.cflowStack(xcut), UnresolvedType.forName(NameMangler.CFLOW_STACK_TYPE) | |||
localCflowField = new ResolvedMemberImpl(Member.FIELD, concreteAspect, Modifier.STATIC | Modifier.PUBLIC, | |||
NameMangler.cflowStack(xcut), UnresolvedType.forName(NameMangler.CFLOW_STACK_TYPE) | |||
.getSignature()); | |||
// System.out.println("adding field to: " + inAspect + " field " | |||
// + cflowField); |
@@ -88,7 +88,7 @@ public class PerCflow extends PerClause { | |||
return ret; | |||
} | |||
Member cflowStackField = new ResolvedMemberImpl(Member.FIELD, inAspect, Modifier.STATIC | Modifier.PUBLIC | Modifier.FINAL, | |||
Member cflowStackField = new ResolvedMemberImpl(Member.FIELD, inAspect, Modifier.PUBLIC | Modifier.STATIC, | |||
UnresolvedType.forName(NameMangler.CFLOW_STACK_TYPE), NameMangler.PERCFLOW_FIELD_NAME, UnresolvedType.NONE); | |||
World world = inAspect.getWorld(); |
@@ -21,6 +21,18 @@ import junit.framework.Test; | |||
*/ | |||
public class Ajc192Tests extends XMLBasedAjcTestCase { | |||
public void testCflowFinal() { | |||
runTest("no final on cflow elements"); | |||
} | |||
public void testAroundAdvice_AnnoStyle() { | |||
runTest("around advice"); | |||
} | |||
public void testAroundAdvice_CodeStyle() { | |||
runTest("around advice - 2"); | |||
} | |||
public void testPTW_nonPrivileged() { | |||
runTest("ptw"); | |||
} |
@@ -2,6 +2,43 @@ | |||
<suite> | |||
<ajc-test dir="bugs192/537825" title="no final on cflow elements"> | |||
<compile files="Code.java" options="-9"> | |||
</compile> | |||
<run class="Code"> | |||
<stdout> | |||
<line text="call(void B.methodB())"/> | |||
<line text="staticinitialization(B.<clinit>)"/> | |||
<line text="execution(void B.methodB())"/> | |||
<line text="call(void C.methodC())"/> | |||
<line text="staticinitialization(C.<clinit>)"/> | |||
<line text="execution(void C.methodC())"/> | |||
<line text="call(void D.methodD())"/> | |||
<line text="staticinitialization(D.<clinit>)"/> | |||
<line text="execution(void D.methodD())"/> | |||
<line text="get(PrintStream java.lang.System.out)"/> | |||
<line text="call(void java.io.PrintStream.println(int))"/> | |||
<line text="3"/> | |||
</stdout> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs192/535156" title="around advice"> | |||
<compile files="DemoApp.java" options="-8 -showWeaveInfo"> | |||
<message kind="weave" text="Join point 'method-call(void DemoApp.say())' in Type 'DemoApp' (DemoApp.java:6) advised by around advice from 'X' (DemoApp.java:14)"/> | |||
</compile> | |||
<run class="DemoApp"> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs192/535156" title="around advice - 2"> | |||
<compile files="DemoApp2.java" options="-8 -showWeaveInfo"> | |||
<message kind="weave" text="Join point 'method-call(void DemoApp2.say())' in Type 'DemoApp2' (DemoApp2.java:6) advised by around advice from 'X' (DemoApp2.java:13)"/> | |||
</compile> | |||
<run class="DemoApp2"> | |||
</run> | |||
</ajc-test> | |||
<ajc-test dir="bugs192/ptw" title="ptw"> | |||
<compile files="a/b/c/Code.java a/b/d/Foo.java" options="-8"> | |||
</compile> |
@@ -1,5 +1,5 @@ | |||
/******************************************************************************* | |||
* Copyright (c) 2014 Contributors | |||
* Copyright (c) 2014,2018 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 | |||
@@ -10,12 +10,12 @@ | |||
*******************************************************************************/ | |||
package org.aspectj.systemtest.apt; | |||
import junit.framework.Test; | |||
import org.aspectj.apache.bcel.classfile.Method; | |||
import java.io.File; | |||
import org.aspectj.testing.XMLBasedAjcTestCase; | |||
import org.aspectj.util.LangUtil; | |||
import java.io.File; | |||
import junit.framework.Test; | |||
/** | |||
* Annotation processing tool tests. |