View | Details | Raw Unified | Return to bug 36747 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/aspectj/weaver/bcel/BcelAdvice.java (+5 lines)
Lines 135-140 Link Here
135
        } else {
135
        } else {
136
            throw new BCException("unimplemented kind: " + getKind());
136
            throw new BCException("unimplemented kind: " + getKind());
137
        }
137
        }
138
139
		String wovenAspect = this.getDeclaringAspect().getClassName();
140
		String wovenClass = shadow.getEnclosingClass().getClassName();
141
		WovenMessage message = new WovenMessage(wovenAspect, wovenClass);
142
		shadow.getIWorld().getMessageHandler().handleMessage(message);
138
    }
143
    }
139
144
140
    // ---- implementations
145
    // ---- implementations
(-)src/org/aspectj/weaver/bcel/WovenMessage.java (+27 lines)
Added Link Here
1
package org.aspectj.weaver.bcel;
2
3
import org.aspectj.bridge.IMessage;
4
import org.aspectj.bridge.ISourceLocation;
5
import org.aspectj.bridge.Message;
6
import org.aspectj.bridge.IMessage.Kind;
7
8
public class WovenMessage extends Message {
9
	
10
	private String wovenAspect;
11
	private String wovenClass;
12
13
	public WovenMessage(String wovenAspect, String wovenClass) {
14
		super("aspect " + wovenAspect + " woven into class " + wovenClass, IMessage.INFO, null, null);
15
		this.wovenAspect = wovenAspect;
16
		this.wovenClass = wovenClass;
17
	}
18
19
	public String getWovenAspect() {
20
		return wovenAspect;
21
	}
22
23
	public String getWovenClass() {
24
		return wovenClass;
25
	}
26
27
}
(-)testsrc/org/aspectj/weaver/bcel/WovenMessageTest.java (+49 lines)
Added Link Here
1
package org.aspectj.weaver.bcel;
2
3
import java.io.IOException;
4
5
import org.aspectj.bridge.IMessage;
6
import org.aspectj.bridge.IMessageHolder;
7
import org.aspectj.bridge.MessageHandler;
8
import org.aspectj.bridge.IMessage.Kind;
9
10
public class WovenMessageTest extends WeaveTestCase {
11
12
	{
13
		regenerate = false;
14
	}
15
16
	public IMessageHolder messageHolder = null;
17
18
	public WovenMessageTest(String name) {
19
		super(name);
20
	}
21
22
	public void setUp () {
23
		messageHolder = new MessageHandler();
24
		world.setMessageHandler(messageHolder);
25
	}
26
27
	public void testWovenMessageSimple() throws IOException {
28
		weaveTest(getStandardTargets(), "Before", makeAdviceAll("before"));
29
30
		assertTrue(messageHolder.numMessages(IMessage.INFO, false) > 0);
31
32
		boolean helloWorldWoven = false;
33
		boolean fancyHelloWorldWoven = false;
34
		IMessage[] messages = messageHolder.getMessages(IMessage.INFO, false);
35
		for (int i = 0; i < messages.length; i++) {
36
			IMessage message = messages[i];
37
			if (message instanceof WovenMessage) {
38
				WovenMessage wovenMessage = (WovenMessage) message;
39
				if (wovenMessage.getWovenClass().equals("HelloWorld")) {
40
					helloWorldWoven = true;
41
				} else if (wovenMessage.getWovenClass().equals("FancyHelloWorld")) {
42
					fancyHelloWorldWoven = true;
43
				}
44
			}
45
		}
46
		assertTrue("Class HelloWorld woven", helloWorldWoven);
47
		assertTrue("Class FancyHelloWorld woven", fancyHelloWorldWoven);
48
	}
49
}

Return to bug 36747