From bebb3640698bf2c465b64d9565123ec699dac45d Mon Sep 17 00:00:00 2001 From: mwebster Date: Tue, 1 Aug 2006 20:41:52 +0000 Subject: Bug 151938 "Handle Duplicate -javaagent entries more gracefully" (ignore duplicate agents) --- lib/test/loadtime5.jar | Bin 2720 -> 2834 bytes .../org/aspectj/weaver/loadtime/Agent.java | 4 +++ tests/java5/ataspectj/Aspect.aj | 5 ++++ tests/java5/ataspectj/HelloWorld.java | 7 ++++++ tests/java5/ataspectj/MessageHandler.java | 27 +++++++++++++++++++++ tests/java5/ataspectj/ajc-ant.xml | 19 +++++++++++++++ tests/java5/ataspectj/aop-messagehandler.xml | 3 +++ .../org/aspectj/systemtest/ajc153/Ajc153Tests.java | 4 ++- tests/src/org/aspectj/systemtest/ajc153/ajc153.xml | 8 ++++++ weaver5/testdata/logging.properties | 1 + 10 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 tests/java5/ataspectj/Aspect.aj create mode 100644 tests/java5/ataspectj/HelloWorld.java create mode 100644 tests/java5/ataspectj/MessageHandler.java create mode 100644 tests/java5/ataspectj/aop-messagehandler.xml diff --git a/lib/test/loadtime5.jar b/lib/test/loadtime5.jar index 18892227d..ed95dc5c4 100644 Binary files a/lib/test/loadtime5.jar and b/lib/test/loadtime5.jar differ diff --git a/loadtime5/java5-src/org/aspectj/weaver/loadtime/Agent.java b/loadtime5/java5-src/org/aspectj/weaver/loadtime/Agent.java index bb3489841..4989c0275 100644 --- a/loadtime5/java5-src/org/aspectj/weaver/loadtime/Agent.java +++ b/loadtime5/java5-src/org/aspectj/weaver/loadtime/Agent.java @@ -39,6 +39,10 @@ public class Agent { * @param instrumentation */ public static void premain(String options, Instrumentation instrumentation) { + /* Handle duplicate agents */ + if (s_instrumentation != null) { + return; + } s_instrumentation = instrumentation; s_instrumentation.addTransformer(s_transformer); } diff --git a/tests/java5/ataspectj/Aspect.aj b/tests/java5/ataspectj/Aspect.aj new file mode 100644 index 000000000..03a4403a3 --- /dev/null +++ b/tests/java5/ataspectj/Aspect.aj @@ -0,0 +1,5 @@ +public aspect Aspect { + before () : execution(public static void main(String[])) { + System.out.println(thisJoinPoint); + } +} \ No newline at end of file diff --git a/tests/java5/ataspectj/HelloWorld.java b/tests/java5/ataspectj/HelloWorld.java new file mode 100644 index 000000000..58cd14253 --- /dev/null +++ b/tests/java5/ataspectj/HelloWorld.java @@ -0,0 +1,7 @@ +public class HelloWorld { + + public static void main (String[] args) { + System.out.println("Hello World!"); + } + +} \ No newline at end of file diff --git a/tests/java5/ataspectj/MessageHandler.java b/tests/java5/ataspectj/MessageHandler.java new file mode 100644 index 000000000..111b32fc0 --- /dev/null +++ b/tests/java5/ataspectj/MessageHandler.java @@ -0,0 +1,27 @@ +import org.aspectj.bridge.AbortException; +import org.aspectj.bridge.IMessage; +import org.aspectj.bridge.IMessageHandler; +import org.aspectj.bridge.IMessage.Kind; + +public class MessageHandler implements IMessageHandler { + + public boolean handleMessage(IMessage message) throws AbortException { + System.out.println(message); + if (message.getKind() == IMessage.ERROR) { + System.exit(-1); + } + else if (message.getKind() == IMessage.ABORT) { + throw new AbortException(message.toString()); + } + return true; + } + + public boolean isIgnoring(IMessage.Kind kind) { + return false; + } + + public void dontIgnore(IMessage.Kind kind) { + + } + +} \ No newline at end of file diff --git a/tests/java5/ataspectj/ajc-ant.xml b/tests/java5/ataspectj/ajc-ant.xml index 695e8ac07..8dccebac7 100644 --- a/tests/java5/ataspectj/ajc-ant.xml +++ b/tests/java5/ataspectj/ajc-ant.xml @@ -221,4 +221,23 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/java5/ataspectj/aop-messagehandler.xml b/tests/java5/ataspectj/aop-messagehandler.xml new file mode 100644 index 000000000..9d7c34be0 --- /dev/null +++ b/tests/java5/ataspectj/aop-messagehandler.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java b/tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java index 100426762..954e223f7 100644 --- a/tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java +++ b/tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java @@ -48,7 +48,9 @@ public class Ajc153Tests extends org.aspectj.testing.XMLBasedAjcTestCase { public void testCantFindType_pr149322_03() {runTest("can't find type on interface call 3");} public void testMatchVolatileField_pr150671() {runTest("match volatile field");}; - + + public void testDuplicateJVMTIAgents_pr151938() {runTest("Duplicate JVMTI agents");}; + ///////////////////////////////////////// public static Test suite() { return XMLBasedAjcTestCase.loadSuite(Ajc153Tests.class); diff --git a/tests/src/org/aspectj/systemtest/ajc153/ajc153.xml b/tests/src/org/aspectj/systemtest/ajc153/ajc153.xml index 46b3db42a..7a8c50131 100644 --- a/tests/src/org/aspectj/systemtest/ajc153/ajc153.xml +++ b/tests/src/org/aspectj/systemtest/ajc153/ajc153.xml @@ -240,6 +240,14 @@ + + + + + + + + diff --git a/weaver5/testdata/logging.properties b/weaver5/testdata/logging.properties index fb96358eb..b65bfeaa5 100644 --- a/weaver5/testdata/logging.properties +++ b/weaver5/testdata/logging.properties @@ -57,3 +57,4 @@ java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter #com.xyz.foo.level = SEVERE org.aspectj.weaver.level = FINER org.aspectj.weaver.loadtime.level = FINER +org.aspectj.weaver.weaver.level = FINER -- cgit v1.2.3