public void enter(String methodName, Object thiz, Object[] args) {
if (log.isDebugEnabled()) {
- log.debug("> " + formatMessage(className, methodName, thiz, args));
+ log.debug(formatMessage(">", className, methodName, thiz, args));
}
}
public void enter(String methodName, Object thiz) {
if (log.isDebugEnabled()) {
- log.debug("> " + formatMessage(className, methodName, thiz, null));
+ log.debug(formatMessage(">", className, methodName, thiz, null));
}
}
public void exit(String methodName, Object ret) {
if (log.isDebugEnabled()) {
- log.debug("< " + formatMessage(className, methodName, ret, null));
+ log.debug(formatMessage("<", className, methodName, ret, null));
}
}
public void exit(String methodName, Throwable th) {
if (log.isDebugEnabled()) {
- log.debug("< " + formatMessage(className, methodName, th, null));
+ log.debug(formatMessage("<", className, methodName, th, null));
}
}
public void exit(String methodName) {
if (log.isDebugEnabled()) {
- log.debug("< " + formatMessage(className, methodName, null, null));
+ log.debug(formatMessage("<", className, methodName, null, null));
}
}
+ public boolean isTraceEnabled () {
+ return log.isDebugEnabled();
+ }
+
+ public void setTraceEnabled (boolean b) {
+ }
+
}
public class DefaultTrace extends AbstractTrace {
+ private boolean traceEnabled = false;
+
public DefaultTrace (Class clazz) {
super(clazz);
}
+ public boolean isTraceEnabled () {
+ return traceEnabled;
+ }
+
+ public void setTraceEnabled (boolean b) {
+ traceEnabled = b;
+ }
+
public void enter (String methodName, Object thiz, Object[] args) {
- if (tracingEnabled) {
-// println("> " + tracedClass.getName() + "." + methodName + " " + formatObj(thiz) + " " + formatArgs(args));
- println("> " + formatMessage(tracedClass.getName(),methodName,thiz,args));
+ if (traceEnabled) {
+ println(formatMessage(">",tracedClass.getName(),methodName,thiz, args));
}
}
public void enter (String methodName, Object thiz) {
- if (tracingEnabled) {
-// println("> " + tracedClass.getName() + "." + methodName + " " + formatObj(thiz));
- println("> " + formatMessage(tracedClass.getName(),methodName,thiz,null));
+ if (traceEnabled) {
+ println(formatMessage(">",tracedClass.getName(),methodName,thiz, null));
}
}
public void exit (String methodName, Object ret) {
- if (tracingEnabled) {
-// println("< " + tracedClass.getName() + "." + methodName + " " + formatObj(ret));
- println("< " + formatMessage(tracedClass.getName(),methodName,ret,null));
+ if (traceEnabled) {
+ println(formatMessage("<",tracedClass.getName(),methodName,ret, null));
}
}
public void exit (String methodName) {
- if (tracingEnabled) {
-// println("< " + tracedClass.getName() + "." + methodName);
- println("< " + formatMessage(tracedClass.getName(),methodName,null,null));
+ if (traceEnabled) {
+ println(formatMessage("<",tracedClass.getName(),methodName,null, null));
}
}
public void exit(String methodName, Throwable th) {
- exit(methodName,th);
+ if (traceEnabled) {
+ println(formatMessage("<",tracedClass.getName(),methodName,th, null));
+ }
}
/**
System.err.println(s);
}
- private static boolean tracingEnabled = getBoolean("org.aspectj.weaver.tools.tracing",false);
-
- private static boolean getBoolean (String name, boolean def) {
- String defaultValue = String.valueOf(def);
- String value = System.getProperty(name,defaultValue);
- return Boolean.valueOf(value).booleanValue();
- }
+// private static boolean isTracingEnabled = getBoolean("org.aspectj.weaver.tools.tracing",false);
+//
+// private static boolean getBoolean (String name, boolean def) {
+// String defaultValue = String.valueOf(def);
+// String value = System.getProperty(name,defaultValue);
+// return Boolean.valueOf(value).booleanValue();
+// }
}
--- /dev/null
+/*******************************************************************************
+ * 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.tools;
+
+public class DefaultTraceFactory extends TraceFactory {
+
+ public final static String ENABLED_PROPERTY = "org.aspectj.tracing.enabled";
+
+ private boolean tracingEnabled = getBoolean(ENABLED_PROPERTY,false);
+
+ public boolean isEnabled() {
+ return tracingEnabled;
+ }
+
+ public Trace getTrace (Class clazz) {
+ DefaultTrace trace = new DefaultTrace(clazz);
+ trace.setTraceEnabled(tracingEnabled);
+ return trace;
+ }
+
+}
public void exit (String methodName, boolean b);
public boolean isTraceEnabled ();
+
+ public void setTraceEnabled (boolean b);
}
import org.aspectj.util.LangUtil;
-public class TraceFactory {
+public abstract class TraceFactory {
- public static TraceFactory instance = new TraceFactory();
+ public final static String DEBUG_PROPERTY = "org.aspectj.tracing.debug";
+ public final static String FACTORY_PROPERTY = "org.aspectj.tracing.factory";
+
+ private static boolean debug = getBoolean(DEBUG_PROPERTY,false);
+ private static TraceFactory instance = new DefaultTraceFactory();
public Trace getTrace (Class clazz) {
- return new DefaultTrace(clazz);
+ return instance.getTrace(clazz);
}
+
+ public boolean isEnabled() {
+ return true;
+ }
public static TraceFactory getTraceFactory () {
return instance;
}
- static {
+ protected static boolean getBoolean(String name, boolean def) {
+ String defaultValue = String.valueOf(def);
+ String value = System.getProperty(name,defaultValue);
+ return Boolean.valueOf(value).booleanValue();
+ }
+
+ static {
try {
if (LangUtil.is15VMOrGreater()) {
Class factoryClass = Class.forName("org.aspectj.weaver.tools.Jdk14TraceFactory");
}
}
catch (Throwable th) {
-// th.printStackTrace();
+ if (debug) th.printStackTrace();
}
-// System.out.println("TraceFactory.<clinit>() instance=" + instance);
+
+ if (debug) System.out.println("TraceFactory.instance=" + instance);
}
}
--- /dev/null
+/*******************************************************************************
+ * 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;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AllTracingTests {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(AllTracingTests.class.getName());
+ //$JUnit-BEGIN$
+ suite.addTestSuite(TraceFactoryTest.class);
+ suite.addTestSuite(DefaultTraceFactoryTest.class);
+ suite.addTestSuite(DefaultTraceTest.class);
+ suite.addTestSuite(CommonsTraceFactoryTest.class);
+ suite.addTestSuite(CommonsTraceTest.class);
+ //$JUnit-END$
+ return suite;
+ }
+
+}
suite.addTestSuite(TypeXTestCase.class);
suite.addTestSuite(WeaverMessagesTestCase.class);
suite.addTestSuite(DumpTestCase.class);
+ suite.addTest(AllTracingTests.suite());
//$JUnit-END$
return suite;
}
--- /dev/null
+/*******************************************************************************
+ * 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;
+
+import junit.framework.TestCase;
+
+import org.aspectj.weaver.tools.CommonsTraceFactory;
+import org.aspectj.weaver.tools.Trace;
+
+public class CommonsTraceFactoryTest extends TestCase {
+
+ public void testGetTraceFactory() {
+ CommonsTraceFactory factory = new CommonsTraceFactory();
+ Trace trace = factory.getTrace(getClass());
+ assertFalse("Tracing should be disbled by default",trace.isTraceEnabled());
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * 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;
+
+import org.aspectj.weaver.tools.CommonsTrace;
+
+import junit.framework.TestCase;
+
+public class CommonsTraceTest extends TestCase {
+
+ private CommonsTrace trace;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ trace = new CommonsTrace(getClass());
+ trace.setTraceEnabled(true);
+ }
+
+ public void testCommonsTrace() {
+ CommonsTrace trace = new CommonsTrace(getClass());
+ }
+
+ public void testEnterWithThisAndArgs() {
+ trace.enter("testEnterWithThisAndArgs",this,new Object[] { "arg1", "arg2" });
+ }
+
+ public void testEnterWithThis() {
+ trace.enter("testEnterWithThis",this);
+ }
+
+ public void testEnter() {
+ trace.enter("testEnter");
+ }
+
+ public void testExitWithReturn() {
+ trace.exit("testExitWithReturn","ret");
+ }
+
+ public void testExitWithThrowable() {
+ trace.exit("testExitWithThrowable",new RuntimeException());
+ }
+
+ public void testExit() {
+ trace.exit("testExit");
+ }
+
+ public void testIsTraceEnabled() {
+ CommonsTrace trace = new CommonsTrace(getClass());
+ assertFalse(trace.isTraceEnabled());
+ }
+
+ public void testSetTraceEnabled() {
+ CommonsTrace trace = new CommonsTrace(getClass());
+ trace.setTraceEnabled(true);
+ /* XXX Need to find out how to turn tracing on */
+// assertTrue(trace.isTraceEnabled());
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * 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;
+
+import org.aspectj.weaver.tools.DefaultTraceFactory;
+import org.aspectj.weaver.tools.Trace;
+
+import junit.framework.TestCase;
+
+public class DefaultTraceFactoryTest extends TestCase {
+
+ public void testGetTrace() {
+ DefaultTraceFactory factory = new DefaultTraceFactory();
+ Trace trace = factory.getTrace(getClass());
+ assertFalse("Tracing should be disbled by default",trace.isTraceEnabled());
+ }
+
+// public void testIsEnabled() {
+// fail("Not yet implemented");
+// }
+
+}
--- /dev/null
+/*******************************************************************************
+ * 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;
+
+import junit.framework.TestCase;
+
+import org.aspectj.weaver.tools.DefaultTrace;
+
+public class DefaultTraceTest extends TestCase {
+
+ private DefaultTrace trace;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ trace = new DefaultTrace(getClass());
+ trace.setTraceEnabled(true);
+ }
+
+ public void testDefaultTrace() {
+ DefaultTrace trace = new DefaultTrace(getClass());
+ }
+
+ public void testEnterWithThisAndArgs() {
+ trace.enter("testEnterWithThisAndArgs",this,new Object[] { "arg1", "arg2" });
+ }
+
+ public void testEnterWithThis() {
+ trace.enter("testEnterWithThis",this);
+ }
+
+ public void testEnter() {
+ trace.enter("testEnter");
+ }
+
+ public void testExitWithReturn() {
+ trace.exit("testExitWithReturn","ret");
+ }
+
+ public void testExitWithThrowable() {
+ trace.exit("testExitWithThrowable",new RuntimeException());
+ }
+
+ public void testExit() {
+ trace.exit("testExit");
+ }
+
+ public void testIsTraceEnabled() {
+ DefaultTrace trace = new DefaultTrace(getClass());
+ assertFalse(trace.isTraceEnabled());
+ }
+
+ public void testSetTraceEnabled() {
+ DefaultTrace trace = new DefaultTrace(getClass());
+ trace.setTraceEnabled(true);
+ assertTrue(trace.isTraceEnabled());
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * 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;
+
+import org.aspectj.weaver.tools.Trace;
+import org.aspectj.weaver.tools.TraceFactory;
+
+import junit.framework.TestCase;
+
+public class TraceFactoryTest extends TestCase {
+
+ public void testGetTraceFactory() {
+ TraceFactory traceFactory = TraceFactory.getTraceFactory();
+ assertNotNull(traceFactory);
+ }
+
+ public void testGetTrace() {
+ TraceFactory traceFactory = TraceFactory.getTraceFactory();
+ Trace trace = traceFactory.getTrace(getClass());
+ assertNotNull(trace);
+ }
+
+ public void testIsEnabled() {
+ TraceFactory traceFactory = TraceFactory.getTraceFactory();
+ assertTrue(traceFactory.isEnabled());
+ }
+
+}
*******************************************************************************/
package org.aspectj.weaver.tools;
+import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;
}
}
- @Override
public boolean isTraceEnabled() {
- return logger.isLoggable(Level.FINE);
+ return logger.isLoggable(Level.FINER);
+ }
+
+ public void setTraceEnabled (boolean b) {
+ if (b) {
+ logger.setLevel(Level.FINER);
+ Handler[] handlers = logger.getHandlers();
+ if (handlers.length == 0) {
+ Logger parent = logger.getParent();
+ if (parent != null) handlers = parent.getHandlers();
+ }
+ for (int i = 0; i < handlers.length; i++) {
+ Handler handler = handlers[i];
+ handler.setLevel(Level.FINER);
+ }
+ }
+ else {
+ logger.setLevel(Level.INFO);
+ }
}
}
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.aspectj.weaver.AllTracing5Tests;
import org.aspectj.weaver.TestJava5ReflectionBasedReferenceTypeDelegate;
import org.aspectj.weaver.patterns.ArgsTestCase;
import org.aspectj.weaver.patterns.ThisOrTargetTestCase;
import org.aspectj.weaver.tools.PointcutParserTest;
import org.aspectj.weaver.tools.TypePatternMatcherTest;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
public class AllWeaver5Tests {
public static Test suite() {
suite.addTestSuite(PointcutExpressionTest.class);
suite.addTestSuite(PointcutParserTest.class);
suite.addTestSuite(TypePatternMatcherTest.class);
+ suite.addTest(AllTracing5Tests.suite());
//$JUnit-END$
return suite;
}
--- /dev/null
+/*******************************************************************************
+ * 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;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AllTracing5Tests {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite("Test for org.aspectj.weaver");
+ //$JUnit-BEGIN$
+ suite.addTestSuite(Jdk14TraceFactoryTest.class);
+ suite.addTestSuite(Jdk14TraceTest.class);
+ //$JUnit-END$
+ return suite;
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * 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;
+
+import junit.framework.TestCase;
+
+import org.aspectj.weaver.tools.Jdk14TraceFactory;
+import org.aspectj.weaver.tools.Trace;
+
+public class Jdk14TraceFactoryTest extends TestCase {
+
+ public void testJdk14TraceFactory() {
+ Jdk14TraceFactory factory = new Jdk14TraceFactory();
+ }
+
+ public void testGetTrace() {
+ Jdk14TraceFactory factory = new Jdk14TraceFactory();
+ Trace trace = factory.getTrace(getClass());
+ assertFalse("Tracing should be disbled by default",trace.isTraceEnabled());
+ }
+
+}
--- /dev/null
+/*******************************************************************************
+ * 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;
+
+import org.aspectj.weaver.tools.DefaultTrace;
+import org.aspectj.weaver.tools.Jdk14Trace;
+
+import junit.framework.TestCase;
+
+public class Jdk14TraceTest extends TestCase {
+
+ private Jdk14Trace trace;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ trace = new Jdk14Trace(getClass());
+ trace.setTraceEnabled(true);
+ }
+
+ public void testJdk14Trace() {
+ Jdk14Trace trace = new Jdk14Trace(getClass());
+ }
+
+ public void testEnterWithThisAndArgs() {
+ trace.enter("testEnterWithThisAndArgs",this,new Object[] { "arg1", "arg2" });
+ }
+
+ public void testEnterWithThis() {
+ trace.enter("testEnterWithThis",this);
+ }
+
+ public void testEnter() {
+ trace.enter("testEnter");
+ }
+
+ public void testExitWithReturn() {
+ trace.exit("testExitWithReturn","ret");
+ }
+
+ public void testExitWithThrowable() {
+ trace.exit("testExitWithThrowable",new RuntimeException());
+ }
+
+ public void testExit() {
+ trace.exit("testExit");
+ }
+
+ public void testIsTraceEnabled() {
+ DefaultTrace trace = new DefaultTrace(getClass());
+ assertFalse(trace.isTraceEnabled());
+ }
+
+ public void testSetTraceEnabled() {
+ DefaultTrace trace = new DefaultTrace(getClass());
+ trace.setTraceEnabled(true);
+ assertTrue(trace.isTraceEnabled());
+ }
+
+}
TestSuite suite = new TestSuite(Weaver5ModuleTests.class.getName());
if (TestUtil.is15VMOrGreater()) {
TestUtil.loadTestsReflectively(suite, "org.aspectj.weaver.tools.Java15PointcutExpressionTest", false);
+ TestUtil.loadTestsReflectively(suite, "org.aspectj.weaver.AllTracing5Tests", false);
suite.addTestSuite(PointcutExpressionTest.class);
} else {
suite.addTest(TestUtil.testNamed("all tests require 1.5"));