diff options
author | aclement <aclement> | 2005-12-19 21:20:03 +0000 |
---|---|---|
committer | aclement <aclement> | 2005-12-19 21:20:03 +0000 |
commit | 10b88f0c2342124f35425a8c3cac54fad32fa8aa (patch) | |
tree | d9956fa123d2b1c0dd693e0c56b63c2c8cf6a0c5 /weaver | |
parent | 22966838cb6460a0a3fcff882611ba71e0a60225 (diff) | |
download | aspectj-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.java | 44 |
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 { |