diff options
author | mwebster <mwebster> | 2006-08-09 15:52:23 +0000 |
---|---|---|
committer | mwebster <mwebster> | 2006-08-09 15:52:23 +0000 |
commit | e42bdf150dc7dda76eacf36cdb8d7ea1baa75a9e (patch) | |
tree | ca888a933ad5b543e625644150eb7aa0fd00b6a1 /loadtime | |
parent | fe2b911d4aaeb0fd1a853ff2a95bd501e1dccfe3 (diff) | |
download | aspectj-e42bdf150dc7dda76eacf36cdb8d7ea1baa75a9e.tar.gz aspectj-e42bdf150dc7dda76eacf36cdb8d7ea1baa75a9e.zip |
Bug 150487 "Tracing and Logging Framework" (TraceMessageHandler)
Diffstat (limited to 'loadtime')
3 files changed, 141 insertions, 0 deletions
diff --git a/loadtime/src/org/aspectj/weaver/loadtime/TraceMessageHandler.java b/loadtime/src/org/aspectj/weaver/loadtime/TraceMessageHandler.java new file mode 100644 index 000000000..b661bc799 --- /dev/null +++ b/loadtime/src/org/aspectj/weaver/loadtime/TraceMessageHandler.java @@ -0,0 +1,81 @@ +/******************************************************************************* + * Copyright (c) 2006 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Matthew Webster - initial implementation + *******************************************************************************/ +package org.aspectj.weaver.loadtime; + +import org.aspectj.bridge.AbortException; +import org.aspectj.bridge.IMessage; +import org.aspectj.bridge.IMessageHandler; +import org.aspectj.bridge.WeaveMessage; +import org.aspectj.bridge.IMessage.Kind; +import org.aspectj.weaver.tools.Trace; +import org.aspectj.weaver.tools.TraceFactory; + +public class TraceMessageHandler implements IMessageHandler { + + private Trace trace; + + public TraceMessageHandler () { + this(TraceFactory.getTraceFactory().getTrace(TraceMessageHandler.class)); + } + + /** + * Used for testing + * + */ + protected TraceMessageHandler (Trace t) { + this.trace = t; + } + + /* Ignore this and defer all decisions about what we log to the Trace + * configuration + */ + public void dontIgnore(Kind kind) { + } + + public boolean handleMessage(IMessage message) throws AbortException { + if (message instanceof WeaveMessage) { + trace.debug(render(message)); + } + else if (message.isDebug()) { + trace.debug(render(message)); + } + else if (message.isInfo()) { + trace.info(render(message)); + } + else if (message.isWarning()) { + trace.warn(render(message),message.getThrown()); + } + else if (message.isError()) { + trace.error(render(message),message.getThrown()); + } + else if (message.isFailed()) { + trace.fatal(render(message),message.getThrown()); + } + else if (message.isAbort()) { + trace.fatal(render(message),message.getThrown()); + } + else return false; + + return true; + } + + /* Ignore this and defer all decisions about what we log to the Trace + * configuration + */ + public boolean isIgnoring(Kind kind) { + return false; + } + + protected String render(IMessage message) { + return message.toString(); + } + +} diff --git a/loadtime/testsrc/org/aspectj/loadtime/LoadtimeModuleTests.java b/loadtime/testsrc/org/aspectj/loadtime/LoadtimeModuleTests.java index da7509b6f..bfd89b8de 100644 --- a/loadtime/testsrc/org/aspectj/loadtime/LoadtimeModuleTests.java +++ b/loadtime/testsrc/org/aspectj/loadtime/LoadtimeModuleTests.java @@ -19,6 +19,7 @@ import junit.textui.TestRunner; import org.aspectj.weaver.loadtime.AjTest; import org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptorTest; import org.aspectj.weaver.loadtime.JRockitAgentTest; +import org.aspectj.weaver.loadtime.TraceMessageHandlerTest; import org.aspectj.weaver.loadtime.WeavingContextTest; import org.aspectj.weaver.loadtime.WeavingURLClassLoaderTest; import org.aspectj.weaver.loadtime.test.DocumentParserTest; @@ -35,6 +36,7 @@ public class LoadtimeModuleTests extends TestCase { suite.addTestSuite(AjTest.class); suite.addTestSuite(ClassLoaderWeavingAdaptorTest.class); suite.addTestSuite(JRockitAgentTest.class); + suite.addTestSuite(TraceMessageHandlerTest.class); suite.addTestSuite(WeavingContextTest.class); suite.addTestSuite(WeavingURLClassLoaderTest.class); return suite; diff --git a/loadtime/testsrc/org/aspectj/weaver/loadtime/TraceMessageHandlerTest.java b/loadtime/testsrc/org/aspectj/weaver/loadtime/TraceMessageHandlerTest.java new file mode 100644 index 000000000..7bd499a44 --- /dev/null +++ b/loadtime/testsrc/org/aspectj/weaver/loadtime/TraceMessageHandlerTest.java @@ -0,0 +1,58 @@ +/******************************************************************************* + * Copyright (c) 2006 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Matthew Webster - initial implementation + *******************************************************************************/ +package org.aspectj.weaver.loadtime; + +import junit.framework.TestCase; + +import org.aspectj.bridge.IMessage; +import org.aspectj.bridge.MessageUtil; +import org.aspectj.bridge.IMessage.Kind; + +public class TraceMessageHandlerTest extends TestCase { + + private TraceMessageHandler messageHandler; + + protected void setUp() throws Exception { + super.setUp(); + messageHandler = new TraceMessageHandler(); + } + + public void testTraceMessageHandler() { + TraceMessageHandler tmh = new TraceMessageHandler(); + } + + public void testDontIgnore() { + Kind kind = IMessage.WEAVEINFO; + messageHandler.dontIgnore(kind); + boolean b = messageHandler.isIgnoring(kind); + assertFalse("Don't filter message kinds",b); + } + + public void testHandleMessageInfo () { + IMessage message = MessageUtil.info("testHandleMessage"); + boolean b = messageHandler.handleMessage(message); + assertTrue("Message not handled",b); + } + + public void testIsIgnoring() { + Kind kind = IMessage.WEAVEINFO; + boolean b = messageHandler.isIgnoring(kind); + assertFalse("Don't filter message kinds",b); + } + + public void testRender() { + String text = "testRender"; + IMessage message = MessageUtil.info(text); + String s = messageHandler.render(message); + assertTrue("Message not rendered correctly",s.indexOf(text) != -1); + } + +} |