--- /dev/null
+@interface Annotation {}
\ No newline at end of file
--- /dev/null
+public aspect Aspect {
+
+ declare @method : public static void main(String[]) : @Annotation;
+
+ before () : execution(public Class*.new()) {
+ System.out.println("? Aspect.before()");
+ }
+
+}
\ No newline at end of file
--- /dev/null
+public class Class1 /*implements MissingInterface*/ {
+
+ @Annotation
+ public static void main(String[] args) {
+ System.out.println("? Class1.main()");
+ new Class1();
+ }
+}
\ No newline at end of file
--- /dev/null
+public class Class2 /*implements MissingInterface*/ {
+
+ @Annotation
+ public static void main(String[] args) {
+ System.out.println("? Class2.main()");
+ new Class2();
+ }
+}
\ No newline at end of file
--- /dev/null
+public class Class3 {
+
+ public static void main(String[] args) {
+ System.out.println("? Class3.main()");
+ new Class3();
+ }
+}
\ No newline at end of file
--- /dev/null
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+public class MultipleDumpTest {
+
+ public static void main(String[] args) throws Exception {
+ System.out.println("? MultipleDumpTest.main()");
+ invokeMain("Class1",args);
+ invokeMain("Class2",args);
+ invokeMain("Class3",args);
+ }
+
+ private static void invokeMain (String className, String[] args) throws Exception
+ {
+ Class clazz = Class.forName(className);
+ Class[] paramTypes = new Class[1];
+ paramTypes[0] = args.getClass();
+
+ Method method = clazz.getDeclaredMethod("main",paramTypes);
+ Object[] params = new Object[1];
+ params[0] = args;
+ method.invoke(null,params);
+ }
+}
\ No newline at end of file
--- /dev/null
+<!-- ajc-ant script, not to be used from Ant commant line - see AntSpec -->
+<project name="ltw">
+
+ <!-- using this we can debug the forked VM -->
+ <property
+ name="jdwp"
+ value="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"/>
+ <property name="aj.bootpath" refid="aj.path"/>
+
+ <target name="multiple dump on error">
+ <copy file="aop-multipledumponerror.xml"
+ tofile="${aj.sandbox}/META-INF/aop.xml"/>
+ <java fork="yes" classname="MultipleDumpTest" failonerror="yes">
+ <classpath refid="aj.path"/>
+ <jvmarg value="-Dorg.aspectj.weaver.Dump.condition=error"/>
+ <sysproperty key="org.aspectj.dump.directory" path="${aj.sandbox}"/>
+ <jvmarg value="-javaagent:${aj.root}/lib/test/loadtime5.jar"/>
+<!-- <jvmarg line="${jdwp}"/>-->
+<!--
+ <jvmarg value="-Dorg.aspectj.tracing.enabled=true"/>
+ <jvmarg value="-Dorg.aspectj.tracing.factory=default"/>
+ <jvmarg value="-Dorg.aspectj.tracing.messages=true"/>
+-->
+ </java>
+ </target>
+
+</project>
--- /dev/null
+<aspectj>
+ <!--<weaver options="-XmessageHandlerClass:AbortingMessageHandler -debug -XnoInline -Xlint:error"/>-->
+ <weaver options="-1.5 -Xlint:error"/>
+</aspectj>
\ No newline at end of file
+++ /dev/null
-public class HelloWorld {
-
- public static void main (String[] args) throws Exception {
- System.out.println("Hello World!");
- throw new Exception();
- }
-
-}
\ No newline at end of file
--- /dev/null
+public class HelloWorldWithException {
+
+ public static void main (String[] args) throws Exception {
+ System.out.println("Hello World!");
+ throw new Exception();
+ }
+
+}
\ No newline at end of file
<property name="aj.bootpath" refid="aj.path"/>
<target name="JDK14 LTW with XML">
- <java fork="yes" classname="HelloWorld" failonerror="yes">
+ <java fork="yes" classname="HelloWorldWithException" failonerror="yes">
<classpath refid="aj.path"/>
<jvmarg value="-Djava.system.class.loader=org.aspectj.weaver.loadtime.WeavingURLClassLoader"/>
<sysproperty key="aj.class.path" path="${aj.sandbox}/hello.jar:${aj.sandbox}/handler.jar"/>
</target>
<target name="JDK14 LTW with ASPECTPATH">
- <java fork="yes" classname="HelloWorld" failonerror="yes">
+ <java fork="yes" classname="HelloWorldWithException" failonerror="yes">
<classpath refid="aj.path"/>
<jvmarg value="-Djava.system.class.loader=org.aspectj.weaver.loadtime.WeavingURLClassLoader"/>
<sysproperty key="aj.class.path" path="${aj.sandbox}/hello.jar:${aj.sandbox}/handler.jar"/>
<target name="override default path using -Dorg.aspectj.weaver.loadtime.configuration">
<copy file="${aj.root}/tests/ltw/aop-orgaspectjweaverloadtimeconfiguration.xml"
tofile="${aj.sandbox}/META-INF/aop-random.xml"/>
- <java fork="yes" classname="HelloWorld" failonerror="yes">
+ <java fork="yes" classname="HelloWorldWithException" failonerror="yes">
<classpath refid="aj.path"/>
<classpath>
<pathelement path="${aj.sandbox}/hello.jar:${aj.sandbox}/handler.jar:${aj.sandbox}/tracing.jar"/>
SecurityManager that will be loaded _before_ the class loader
hierarch is fully initialized. -->
<target name="NPE with custom agent">
- <java fork="yes" classname="HelloWorld" failonerror="yes">
+ <java fork="yes" classname="HelloWorldWithException" failonerror="yes">
<!-- Prepend custom URLClassLoader and append AspectJ
to bootclasspath -->
<target name="simple LTW">
<copy file="${aj.root}/tests/ltw/aop-simple.xml"
tofile="${aj.sandbox}/META-INF/aop.xml"/>
- <java fork="yes" classname="HelloWorld" failonerror="yes">
+ <java fork="yes" classname="HelloWorldWithException" failonerror="yes">
<classpath refid="aj.path"/>
<!-- use META-INF/aop.xml style -->
<jvmarg value="-javaagent:${aj.root}/lib/test/loadtime5.jar"/>
</java>
</target>
+ <target name="dump on error">
+ <copy file="${aj.root}/tests/ltw/aop-dumponerror.xml"
+ tofile="${aj.sandbox}/META-INF/aop.xml"/>
+ <java fork="yes" classname="HelloWorldWithException" failonerror="no">
+ <classpath refid="aj.path"/>
+ <jvmarg value="-Dorg.aspectj.weaver.Dump.condition=error"/>
+ <sysproperty key="org.aspectj.dump.directory" path="${aj.sandbox}"/>
+ <!-- use META-INF/aop.xml style -->
+ <jvmarg value="-javaagent:${aj.root}/lib/test/loadtime5.jar"/>
+<!-- <jvmarg line="${jdwp}"/>-->
+ <jvmarg value="-Dorg.aspectj.tracing.factory=default"/>
+ </java>
+ </target>
+
</project>
--- /dev/null
+<aspectj>
+ <aspects>
+ <concrete-aspect name="SubAspect" extends="MissingAspect">
+ <pointcut name="scope" expression=""/>
+ </concrete-aspect>
+ </aspects>
+</aspectj>
\ No newline at end of file
loader.application=Application,hello.jar;handler.jar
# main=Class,Loader
-main=HelloWorld,Application
\ No newline at end of file
+main=HelloWorldWithException,Application
\ No newline at end of file
loader.child=Child,child.jar,Parent
# main=Class,Loader
-main=Child,Child
\ No newline at end of file
+main=HelloWorldWithException,Child
\ No newline at end of file
public void testConfigutationSystemProperty_pr149289 () {
runTest("override default path using -Dorg.aspectj.weaver.loadtime.configuration");
-
}
public void testSimpleLTW_pr159854 () {
runTest("simple LTW");
-
}
+
+ public void testDumpOnError_pr155033 () {
+ runTest("dump on error");
+
+ File dir = getSandboxDirectory();
+ CountingFilenameFilter cff = new CountingFilenameFilter(".txt");
+ dir.listFiles(cff);
+ assertEquals("Missing ajcore file in " + dir.getAbsolutePath(),1,cff.getCount());
+ }
+
+ public void testMultipleDumpOnError_pr155033 () {
+ runTest("multiple dump on error");
+
+ File dir = getSandboxDirectory();
+ CountingFilenameFilter cff = new CountingFilenameFilter(".txt");
+ dir.listFiles(cff);
+ assertEquals("Missing ajcore file in " + dir.getAbsolutePath(),2,cff.getCount());
+ }
/*
* Allow system properties to be set and restored
</ajc-test>
<ajc-test dir="ltw" title="JDK14 LTW with XML" keywords="ltw">
- <compile files="HelloWorld.java" options="-outjar hello.jar"/>
+ <compile files="HelloWorldWithException.java" options="-outjar hello.jar"/>
<compile files="ExceptionHandler.aj" options="-outxml -outjar handler.jar"/>
<ant file="ant.xml" target="JDK14 LTW with XML" verbose="true">
<stdout>
</ajc-test>
<ajc-test dir="ltw" title="JDK14 LTW with ASPECTPATH" keywords="ltw">
- <compile files="HelloWorld.java" options="-outjar hello.jar"/>
+ <compile files="HelloWorldWithException.java" options="-outjar hello.jar"/>
<compile files="ExceptionHandler.aj" options="-outjar handler.jar"/>
<ant file="ant.xml" target="JDK14 LTW with ASPECTPATH" verbose="true">
<stdout>
</ajc-test>
<ajc-test dir="ltw" title="TestServer with HelloWorld" keywords="ltw,server">
- <compile files="HelloWorld.java" options="-outjar hello.jar"/>
+ <compile files="HelloWorldWithException.java" options="-outjar hello.jar"/>
<compile files="ExceptionHandler.aj" options="-outxml -outjar handler.jar"/>
<ant file="ant-server.xml" target="TestServer with HelloWorld" verbose="true">
<stdout>
</stdout>
</ant>
</ajc-test>
-
+<!--
<ajc-test dir="ltw" title="TestServer with Parent and Child" keywords="ltw,server">
<compile files="Parent.java" options="-outjar parent.jar"/>
<compile files="Child.java" options="-classpath parent.jar -outjar child.jar"/>
</stdout>
</ant>
</ajc-test>
+-->
+ <ajc-test dir="ltw" title="TestServer with Parent and Child" keywords="ltw,server">
+ <compile files="HelloWorldWithException.java" options="-outjar child.jar"/>
+ <compile files="ExceptionHandler.aj" options="-outxml -outjar parent.jar"/>
+ <ant file="ant-server.xml" target="TestServer with Parent and Child" verbose="true">
+ <stdout>
+ <line text="Starting ..."/>
+ <line text="Running HelloWorld"/>
+ <line text="Hello World!"/>
+ <line text="Stopping ..."/>
+ </stdout>
+ </ant>
+ </ajc-test>
<ajc-test dir="ltw" title="override default path using -Dorg.aspectj.weaver.loadtime.configuration" keywords="ltw">
- <compile files="HelloWorld.java" options="-outjar hello.jar"/>
+ <compile files="HelloWorldWithException.java" options="-outjar hello.jar"/>
<compile files="ExceptionHandler.aj" options="-outxml -outjar handler.jar"/>
<compile files="Tracing.aj" options="-outxml -outjar tracing.jar"/>
<ant file="ant.xml" target="override default path using -Dorg.aspectj.weaver.loadtime.configuration" verbose="true">
</ajc-test>
<ajc-test dir="ltw" title="simple LTW" keywords="ltw">
- <compile files="HelloWorld.java"/>
+ <compile files="HelloWorldWithException.java"/>
<compile files="ExceptionHandler.aj" options="-outxml"/>
<ant file="ant.xml" target="simple LTW" verbose="true">
<stdout>
</stdout>
</ant>
</ajc-test>
+
+ <ajc-test dir="ltw" title="dump on error" keywords="ltw">
+ <compile files="HelloWorldWithException.java"/>
+ <compile files="ExceptionHandler.aj" options="-outxml"/>
+ <ant file="ant.xml" target="dump on error" verbose="true">
+ <stdout>
+ <line text="Hello World!"/>
+ </stdout>
+ </ant>
+ </ajc-test>
+
+ <ajc-test dir="bugs153/pr155033" title="multiple dump on error" keywords="ltw">
+ <compile files="Annotation.java" options="-1.5"/>
+ <compile files="MultipleDumpTest.java, Class1.java, Class2.java, Class3.java" options="-1.5"/>
+ <compile files="Aspect.aj" options="-1.5 -outxml -Xlint:ignore"/>
+<!--
+ <run class="MultipleDumpTest" ltw="aop-multipledumponerror.xml">
+ <stdout>
+ <line text="? AbortingMessageHandler.AbortingMessageHandler()"/>
+ </stdout>
+ </run>
+-->
+ <ant file="ant.xml" target="multiple dump on error" verbose="true">
+ <stdout>
+ <line text="? MultipleDumpTest.main()"/>
+ <line text="? Class1.main()"/>
+ <line text="? Aspect.before()"/>
+ <line text="? Class2.main()"/>
+ <line text="? Aspect.before()"/>
+ <line text="? Class3.main()"/>
+ <line text="? Aspect.before()"/>
+ </stdout>
+ </ant>
+ </ajc-test>
\ No newline at end of file