Index: src/org/aspectj/weaver/bcel/BcelAdvice.java =================================================================== RCS file: /home/technology/org.aspectj/modules/weaver/src/org/aspectj/weaver/bcel/BcelAdvice.java,v retrieving revision 1.10 diff -u -r1.10 BcelAdvice.java --- src/org/aspectj/weaver/bcel/BcelAdvice.java 12 Mar 2003 19:51:43 -0000 1.10 +++ src/org/aspectj/weaver/bcel/BcelAdvice.java 22 Apr 2003 09:44:39 -0000 @@ -135,6 +135,11 @@ } else { throw new BCException("unimplemented kind: " + getKind()); } + + String wovenAspect = this.getDeclaringAspect().getClassName(); + String wovenClass = shadow.getEnclosingClass().getClassName(); + WovenMessage message = new WovenMessage(wovenAspect, wovenClass); + shadow.getIWorld().getMessageHandler().handleMessage(message); } // ---- implementations Index: src/org/aspectj/weaver/bcel/WovenMessage.java =================================================================== RCS file: src/org/aspectj/weaver/bcel/WovenMessage.java diff -N src/org/aspectj/weaver/bcel/WovenMessage.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/aspectj/weaver/bcel/WovenMessage.java 22 Apr 2003 09:44:39 -0000 @@ -0,0 +1,27 @@ +package org.aspectj.weaver.bcel; + +import org.aspectj.bridge.IMessage; +import org.aspectj.bridge.ISourceLocation; +import org.aspectj.bridge.Message; +import org.aspectj.bridge.IMessage.Kind; + +public class WovenMessage extends Message { + + private String wovenAspect; + private String wovenClass; + + public WovenMessage(String wovenAspect, String wovenClass) { + super("aspect " + wovenAspect + " woven into class " + wovenClass, IMessage.INFO, null, null); + this.wovenAspect = wovenAspect; + this.wovenClass = wovenClass; + } + + public String getWovenAspect() { + return wovenAspect; + } + + public String getWovenClass() { + return wovenClass; + } + +} Index: testsrc/org/aspectj/weaver/bcel/WovenMessageTest.java =================================================================== RCS file: testsrc/org/aspectj/weaver/bcel/WovenMessageTest.java diff -N testsrc/org/aspectj/weaver/bcel/WovenMessageTest.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ testsrc/org/aspectj/weaver/bcel/WovenMessageTest.java 22 Apr 2003 09:44:40 -0000 @@ -0,0 +1,49 @@ +package org.aspectj.weaver.bcel; + +import java.io.IOException; + +import org.aspectj.bridge.IMessage; +import org.aspectj.bridge.IMessageHolder; +import org.aspectj.bridge.MessageHandler; +import org.aspectj.bridge.IMessage.Kind; + +public class WovenMessageTest extends WeaveTestCase { + + { + regenerate = false; + } + + public IMessageHolder messageHolder = null; + + public WovenMessageTest(String name) { + super(name); + } + + public void setUp () { + messageHolder = new MessageHandler(); + world.setMessageHandler(messageHolder); + } + + public void testWovenMessageSimple() throws IOException { + weaveTest(getStandardTargets(), "Before", makeAdviceAll("before")); + + assertTrue(messageHolder.numMessages(IMessage.INFO, false) > 0); + + boolean helloWorldWoven = false; + boolean fancyHelloWorldWoven = false; + IMessage[] messages = messageHolder.getMessages(IMessage.INFO, false); + for (int i = 0; i < messages.length; i++) { + IMessage message = messages[i]; + if (message instanceof WovenMessage) { + WovenMessage wovenMessage = (WovenMessage) message; + if (wovenMessage.getWovenClass().equals("HelloWorld")) { + helloWorldWoven = true; + } else if (wovenMessage.getWovenClass().equals("FancyHelloWorld")) { + fancyHelloWorldWoven = true; + } + } + } + assertTrue("Class HelloWorld woven", helloWorldWoven); + assertTrue("Class FancyHelloWorld woven", fancyHelloWorldWoven); + } +}