summaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authoraclement <aclement>2005-12-19 21:20:03 +0000
committeraclement <aclement>2005-12-19 21:20:03 +0000
commit10b88f0c2342124f35425a8c3cac54fad32fa8aa (patch)
treed9956fa123d2b1c0dd693e0c56b63c2c8cf6a0c5 /weaver
parent22966838cb6460a0a3fcff882611ba71e0a60225 (diff)
downloadaspectj-10b88f0c2342124f35425a8c3cac54fad32fa8aa.tar.gz
aspectj-10b88f0c2342124f35425a8c3cac54fad32fa8aa.zip
matthews message accumulation changes for ltw
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/org/aspectj/weaver/tools/WeavingAdaptor.java44
1 files changed, 38 insertions, 6 deletions
diff --git a/weaver/src/org/aspectj/weaver/tools/WeavingAdaptor.java b/weaver/src/org/aspectj/weaver/tools/WeavingAdaptor.java
index e47022a9a..2934e6c6f 100644
--- a/weaver/src/org/aspectj/weaver/tools/WeavingAdaptor.java
+++ b/weaver/src/org/aspectj/weaver/tools/WeavingAdaptor.java
@@ -69,9 +69,10 @@ public class WeavingAdaptor {
protected boolean enabled = true;
protected boolean verbose = getVerbose();
- protected BcelWorld bcelWorld = null;
- protected BcelWeaver weaver = null;
- protected IMessageHandler/*WeavingAdaptorMessageHandler*/ messageHandler = null;
+ protected BcelWorld bcelWorld;
+ protected BcelWeaver weaver;
+ private IMessageHandler messageHandler;
+ private WeavingAdaptorMessageHandler messageHolder;
protected GeneratedClassHandler generatedClassHandler;
protected Map generatedClasses = new HashMap(); /* String -> UnwovenClassFile */
@@ -159,14 +160,27 @@ public class WeavingAdaptor {
registerAspectLibraries(aspectPath);
}
-
private void createMessageHandler() {
- messageHandler = new WeavingAdaptorMessageHandler(new PrintWriter(System.err));
+ messageHolder = new WeavingAdaptorMessageHandler(new PrintWriter(System.err));
+ messageHandler = messageHolder;
if (verbose) messageHandler.dontIgnore(IMessage.INFO);
if (Boolean.getBoolean(SHOW_WEAVE_INFO_PROPERTY)) messageHandler.dontIgnore(IMessage.WEAVEINFO);
info("AspectJ Weaver Version " + Version.text + " built on " + Version.time_text); //$NON-NLS-1$
}
+ protected IMessageHandler getMessageHandler () {
+ return messageHandler;
+ }
+
+ protected void setMessageHandler (IMessageHandler mh) {
+ if (messageHolder != null) {
+ messageHolder.flushMessages();
+ messageHolder = null;
+ }
+ messageHandler = mh;
+ bcelWorld.setMessageHandler(mh);
+ }
+
/**
* Appends URL to path used by the WeavingAdptor to resolve classes
* @param url to be appended to search path
@@ -381,6 +395,8 @@ public class WeavingAdaptor {
private Set ignoring = new HashSet();
private IMessage.Kind failKind;
+ private boolean accumulating = true;
+ private List messages = new ArrayList();
public WeavingAdaptorMessageHandler (PrintWriter writer) {
super(writer,true);
@@ -388,10 +404,10 @@ public class WeavingAdaptor {
ignore(IMessage.WEAVEINFO);
ignore(IMessage.INFO);
this.failKind = IMessage.ERROR;
-
}
public boolean handleMessage(IMessage message) throws AbortException {
+ addMessage(message);
boolean result = super.handleMessage(message);
if (0 <= message.getKind().compareTo(failKind)) {
throw new AbortException(message);
@@ -418,8 +434,24 @@ public class WeavingAdaptor {
public void dontIgnore (IMessage.Kind kind) {
if (null != kind) {
ignoring.remove(kind);
+ if (kind.equals(IMessage.INFO)) accumulating = false;
+ }
+ }
+
+ private void addMessage (IMessage message) {
+ if (accumulating && isIgnoring(message.getKind())) {
+ messages.add(message);
}
}
+
+ public void flushMessages () {
+ for (Iterator iter = messages.iterator(); iter.hasNext();) {
+ IMessage message = (IMessage)iter.next();
+ super.handleMessage(message);
+ }
+ accumulating = false;
+ messages.clear();
+ }
}
private class WeavingClassFileProvider implements IClassFileProvider {