aboutsummaryrefslogtreecommitdiffstats
path: root/org.aspectj.matcher/src/org/aspectj/weaver/Dump.java
diff options
context:
space:
mode:
Diffstat (limited to 'org.aspectj.matcher/src/org/aspectj/weaver/Dump.java')
-rw-r--r--org.aspectj.matcher/src/org/aspectj/weaver/Dump.java421
1 files changed, 213 insertions, 208 deletions
diff --git a/org.aspectj.matcher/src/org/aspectj/weaver/Dump.java b/org.aspectj.matcher/src/org/aspectj/weaver/Dump.java
index bdc6ec463..c9978ce57 100644
--- a/org.aspectj.matcher/src/org/aspectj/weaver/Dump.java
+++ b/org.aspectj.matcher/src/org/aspectj/weaver/Dump.java
@@ -34,9 +34,8 @@ import org.aspectj.weaver.tools.Traceable;
/**
* @author websterm
- *
- * To change the template for this generated type comment go to
- * Window>Preferences>Java>Code Generation>Code and Comments
+ *
+ * To change the template for this generated type comment go to Window>Preferences>Java>Code Generation>Code and Comments
*/
public class Dump {
@@ -45,14 +44,14 @@ public class Dump {
/* Format for unique filename based on date & time */
private static final String FILENAME_PREFIX = "ajcore";
-// private static final DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
-// private static final DateFormat timeFormat = new SimpleDateFormat("HHmmss.SSS");
+ // private static final DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
+ // private static final DateFormat timeFormat = new SimpleDateFormat("HHmmss.SSS");
private static final String FILENAME_SUFFIX = "txt";
-
+
public static final String UNKNOWN_FILENAME = "Unknown";
public static final String DUMP_EXCLUDED = "Excluded";
public static final String NULL_OR_EMPTY = "Empty";
-
+
private static Class exceptionClass;
private static IMessage.Kind conditionKind = IMessage.ABORT;
private static File directory = new File(".");
@@ -60,129 +59,133 @@ public class Dump {
private String reason;
private String fileName;
private PrintStream print;
-
+
private static String[] savedCommandLine;
private static List savedFullClasspath;
private static IMessageHolder savedMessageHolder;
-
+
private static Map nodes = new WeakHashMap();
private static String lastDumpFileName = UNKNOWN_FILENAME;
-
+
private static boolean preserveOnNextReset = false;
-
+
private static Trace trace = TraceFactory.getTraceFactory().getTrace(Dump.class);
-
+
/**
- * for testing only, so that we can verify dump contents
- * after compilation has completely finished
+ * for testing only, so that we can verify dump contents after compilation has completely finished
*/
public static void preserveOnNextReset() {
- preserveOnNextReset = true;
+ preserveOnNextReset = true;
}
-
+
public static void reset() {
if (preserveOnNextReset) {
preserveOnNextReset = false;
return;
- }
- else {
+ } else {
nodes.clear();
savedMessageHolder = null;
}
}
-
-
+
/*
* Dump methods
*/
- public static String dump (String reason) {
+ public static String dump(String reason) {
String fileName = UNKNOWN_FILENAME;
Dump dump = null;
try {
dump = new Dump(reason);
fileName = dump.getFileName();
dump.dumpDefault();
- }
- finally {
- if (dump != null) dump.close();
+ } finally {
+ if (dump != null)
+ dump.close();
}
return fileName;
}
-
- public static String dumpWithException (Throwable th) {
- return dumpWithException(savedMessageHolder,th);
+
+ public static String dumpWithException(Throwable th) {
+ return dumpWithException(savedMessageHolder, th);
}
-
- public static String dumpWithException (IMessageHolder messageHolder, Throwable th) {
- if (trace.isTraceEnabled()) trace.enter("dumpWithException",null,new Object[] {messageHolder, th});
+
+ public static String dumpWithException(IMessageHolder messageHolder, Throwable th) {
+ if (trace.isTraceEnabled())
+ trace.enter("dumpWithException", null, new Object[] { messageHolder, th });
String fileName = UNKNOWN_FILENAME;
Dump dump = null;
try {
dump = new Dump(th.getClass().getName());
fileName = dump.getFileName();
- dump.dumpException(messageHolder,th);
+ dump.dumpException(messageHolder, th);
+ } finally {
+ if (dump != null)
+ dump.close();
}
- finally {
- if (dump != null) dump.close();
- }
-
- if (trace.isTraceEnabled()) trace.exit("dumpWithException",fileName);
+
+ if (trace.isTraceEnabled())
+ trace.exit("dumpWithException", fileName);
return fileName;
}
- public static String dumpOnExit () {
+ public static String dumpOnExit() {
return dumpOnExit(savedMessageHolder, false);
}
- public static String dumpOnExit (IMessageHolder messageHolder, boolean reset) {
- if (trace.isTraceEnabled()) trace.enter("dumpOnExit",null,messageHolder);
+ public static String dumpOnExit(IMessageHolder messageHolder, boolean reset) {
+ if (trace.isTraceEnabled())
+ trace.enter("dumpOnExit", null, messageHolder);
String fileName = UNKNOWN_FILENAME;
-
+
if (!shouldDumpOnExit(messageHolder)) {
fileName = DUMP_EXCLUDED;
- }
- else {
+ } else {
Dump dump = null;
try {
dump = new Dump(conditionKind.toString());
fileName = dump.getFileName();
dump.dumpDefault(messageHolder);
- }
- finally {
- if (dump != null) dump.close();
+ } finally {
+ if (dump != null)
+ dump.close();
}
}
-
- if (reset) messageHolder.clearMessages();
- if (trace.isTraceEnabled()) trace.exit("dumpOnExit",fileName);
+ if (reset)
+ messageHolder.clearMessages();
+
+ if (trace.isTraceEnabled())
+ trace.exit("dumpOnExit", fileName);
return fileName;
}
- private static boolean shouldDumpOnExit (IMessageHolder messageHolder) {
- if (trace.isTraceEnabled()) trace.enter("shouldDumpOnExit",null,messageHolder);
- if (trace.isTraceEnabled()) trace.event("shouldDumpOnExit",null,conditionKind);
- boolean result = (messageHolder == null) || messageHolder.hasAnyMessage(conditionKind,true);
-
- if (trace.isTraceEnabled()) trace.exit("shouldDumpOnExit",result);
+ private static boolean shouldDumpOnExit(IMessageHolder messageHolder) {
+ if (trace.isTraceEnabled())
+ trace.enter("shouldDumpOnExit", null, messageHolder);
+ if (trace.isTraceEnabled())
+ trace.event("shouldDumpOnExit", null, conditionKind);
+ boolean result = (messageHolder == null) || messageHolder.hasAnyMessage(conditionKind, true);
+
+ if (trace.isTraceEnabled())
+ trace.exit("shouldDumpOnExit", result);
return result;
}
/*
* Dump configuration
*/
- public static void setDumpOnException (boolean b) {
+ public static void setDumpOnException(boolean b) {
if (b) {
exceptionClass = java.lang.Throwable.class;
- }
- else {
+ } else {
exceptionClass = null;
}
}
-
- public static boolean setDumpDirectory (String directoryName) {
- if (trace.isTraceEnabled()) trace.enter("setDumpDirectory",null,directoryName);
+
+ public static boolean setDumpDirectory(String directoryName) {
+ if (trace.isTraceEnabled())
+ trace.enter("setDumpDirectory", null, directoryName);
boolean success = false;
File newDirectory = new File(directoryName);
@@ -190,94 +193,100 @@ public class Dump {
directory = newDirectory;
success = true;
}
-
- if (trace.isTraceEnabled()) trace.exit("setDumpDirectory",success);
+
+ if (trace.isTraceEnabled())
+ trace.exit("setDumpDirectory", success);
return success;
-
+
}
-
- public static boolean getDumpOnException () {
+
+ public static boolean getDumpOnException() {
return (exceptionClass != null);
}
- public static boolean setDumpOnExit (IMessage.Kind condition) {
- if (trace.isTraceEnabled()) trace.event("setDumpOnExit",null,condition);
+ public static boolean setDumpOnExit(IMessage.Kind condition) {
+ if (trace.isTraceEnabled())
+ trace.event("setDumpOnExit", null, condition);
conditionKind = condition;
return true;
}
- public static boolean setDumpOnExit (String condition) {
+ public static boolean setDumpOnExit(String condition) {
for (Iterator i = IMessage.KINDS.iterator(); i.hasNext();) {
- IMessage.Kind kind = (IMessage.Kind)i.next();
+ IMessage.Kind kind = (IMessage.Kind) i.next();
if (kind.toString().equals(condition)) {
return setDumpOnExit(kind);
}
}
return false;
}
-
- public static IMessage.Kind getDumpOnExit () {
- return conditionKind;
+
+ public static IMessage.Kind getDumpOnExit() {
+ return conditionKind;
}
-
- public static String getLastDumpFileName () {
+
+ public static String getLastDumpFileName() {
return lastDumpFileName;
}
/*
* Dump registration
*/
- public static void saveCommandLine (String[] args) {
+ public static void saveCommandLine(String[] args) {
savedCommandLine = new String[args.length];
- System.arraycopy(args,0,savedCommandLine,0,args.length);
+ System.arraycopy(args, 0, savedCommandLine, 0, args.length);
}
- public static void saveFullClasspath (List list) {
+ public static void saveFullClasspath(List list) {
savedFullClasspath = list;
}
- public static void saveMessageHolder (IMessageHolder holder) {
+ public static void saveMessageHolder(IMessageHolder holder) {
savedMessageHolder = holder;
}
- public static void registerNode (Class module, INode newNode) {
- if (trace.isTraceEnabled()) trace.enter("registerNode",null,new Object[] { module, newNode} );
+ public static void registerNode(Class module, INode newNode) {
+ if (trace.isTraceEnabled())
+ trace.enter("registerNode", null, new Object[] { module, newNode });
- nodes.put(newNode,new WeakReference(newNode));
+ nodes.put(newNode, new WeakReference(newNode));
- if (trace.isTraceEnabled()) trace.exit("registerNode",nodes.size());
+ if (trace.isTraceEnabled())
+ trace.exit("registerNode", nodes.size());
}
-
+
/*
* Dump methods
*/
- private Dump (String reason) {
- if (trace.isTraceEnabled()) trace.enter("<init>",this,reason);
+ private Dump(String reason) {
+ if (trace.isTraceEnabled())
+ trace.enter("<init>", this, reason);
this.reason = reason;
-
+
openDump();
dumpAspectJProperties();
dumpDumpConfiguration();
-
- if (trace.isTraceEnabled()) trace.exit("<init>",this);
+
+ if (trace.isTraceEnabled())
+ trace.exit("<init>", this);
}
public String getFileName() {
return fileName;
}
-
- private void dumpDefault () {
+
+ private void dumpDefault() {
dumpDefault(savedMessageHolder);
}
-
- private void dumpDefault (IMessageHolder holder) {
+
+ private void dumpDefault(IMessageHolder holder) {
dumpSytemProperties();
dumpCommandLine();
dumpFullClasspath();
dumpCompilerMessages(holder);
-
+
dumpNodes();
}
@@ -288,79 +297,78 @@ public class Dump {
*/
IVisitor dumpVisitor = new IVisitor() {
- public void visitObject (Object obj) {
+ public void visitObject(Object obj) {
println(formatObj(obj));
}
- public void visitList (List list) {
+ public void visitList(List list) {
println(list);
}
};
Set keys = nodes.keySet();
for (Iterator i = keys.iterator(); i.hasNext();) {
Object module = i.next();
-// INode dumpNode = (INode)nodes.get(module);
- INode dumpNode = (INode)module;
+ // INode dumpNode = (INode)nodes.get(module);
+ INode dumpNode = (INode) module;
println("---- " + formatObj(dumpNode) + " ----");
try {
- dumpNode.accept(dumpVisitor);
- }
- catch (Exception ex) {
- trace.error(formatObj(dumpNode).toString(),ex);
+ dumpNode.accept(dumpVisitor);
+ } catch (Exception ex) {
+ trace.error(formatObj(dumpNode).toString(), ex);
}
}
}
-
- private void dumpException (IMessageHolder messageHolder, Throwable th) {
+
+ private void dumpException(IMessageHolder messageHolder, Throwable th) {
println("---- Exception Information ---");
println(th);
dumpDefault(messageHolder);
}
-
- private void dumpAspectJProperties () {
+
+ private void dumpAspectJProperties() {
println("---- AspectJ Properties ---");
println("AspectJ Compiler " + Version.text + " built on " + Version.time_text);
}
-
- private void dumpDumpConfiguration () {
+
+ private void dumpDumpConfiguration() {
println("---- Dump Properties ---");
println("Dump file: " + fileName);
println("Dump reason: " + reason);
println("Dump on exception: " + (exceptionClass != null));
println("Dump at exit condition: " + conditionKind);
}
-
- private void dumpFullClasspath () {
+
+ private void dumpFullClasspath() {
println("---- Full Classpath ---");
if (savedFullClasspath != null && savedFullClasspath.size() > 0) {
- for (Iterator iter = savedFullClasspath.iterator(); iter.hasNext(); ) {
- String fileName = (String)iter.next();
+ for (Iterator iter = savedFullClasspath.iterator(); iter.hasNext();) {
+ String fileName = (String) iter.next();
File file = new File(fileName);
println(file);
}
- }
- else {
+ } else {
println(NULL_OR_EMPTY);
}
}
-
- private void dumpSytemProperties () {
+
+ private void dumpSytemProperties() {
println("---- System Properties ---");
Properties props = System.getProperties();
println(props);
}
-
- private void dumpCommandLine () {
+
+ private void dumpCommandLine() {
println("---- Command Line ---");
println(savedCommandLine);
}
-
- private void dumpCompilerMessages (IMessageHolder messageHolder) {
+
+ private void dumpCompilerMessages(IMessageHolder messageHolder) {
println("---- Compiler Messages ---");
- if (messageHolder != null) for (Iterator i = messageHolder.getUnmodifiableListView().iterator(); i.hasNext(); ) {
- IMessage message = (IMessage)i.next();
- println(message.toString());
- }
+ if (messageHolder != null)
+ for (Iterator i = messageHolder.getUnmodifiableListView().iterator(); i.hasNext();) {
+ IMessage message = (IMessage) i.next();
+ println(message.toString());
+ }
else {
println(NULL_OR_EMPTY);
}
@@ -368,139 +376,136 @@ public class Dump {
/*
* Dump output
- */
- private void openDump () {
- if (print != null) return;
-
+ */
+ private void openDump() {
+ if (print != null)
+ return;
+
Date now = new Date();
- fileName = FILENAME_PREFIX + "."
- + new SimpleDateFormat("yyyyMMdd").format(now) + "."
- + new SimpleDateFormat("HHmmss.SSS").format(now) + "."
- + FILENAME_SUFFIX;
+ fileName = FILENAME_PREFIX + "." + new SimpleDateFormat("yyyyMMdd").format(now) + "."
+ + new SimpleDateFormat("HHmmss.SSS").format(now) + "." + FILENAME_SUFFIX;
try {
- File file = new File(directory,fileName);
- print = new PrintStream(new FileOutputStream(file),true);
+ File file = new File(directory, fileName);
+ print = new PrintStream(new FileOutputStream(file), true);
trace.info("Dumping to " + file.getAbsolutePath());
- }
- catch (Exception ex) {
+ } catch (Exception ex) {
print = System.err;
trace.info("Dumping to stderr");
fileName = UNKNOWN_FILENAME;
}
-
+
lastDumpFileName = fileName;
}
-
- public void close () {
+
+ public void close() {
print.close();
}
-
- private void println (Object obj) {
+
+ private void println(Object obj) {
print.println(obj);
}
-
- private void println (Object[] array) {
+
+ private void println(Object[] array) {
if (array == null) {
println(NULL_OR_EMPTY);
return;
}
-
+
for (int i = 0; i < array.length; i++) {
print.println(array[i]);
}
}
-
- private void println (Properties props) {
+
+ private void println(Properties props) {
Iterator iter = props.keySet().iterator();
while (iter.hasNext()) {
- String key = (String)iter.next();
+ String key = (String) iter.next();
String value = props.getProperty(key);
print.println(key + "=" + value);
}
}
-
- private void println (Throwable th) {
+
+ private void println(Throwable th) {
th.printStackTrace(print);
}
-
- private void println (File file) {
+
+ private void println(File file) {
print.print(file.getAbsolutePath());
if (!file.exists()) {
- println("(missing)");
- }
- else if (file.isDirectory()) {
+ println("(missing)");
+ } else if (file.isDirectory()) {
int count = file.listFiles().length;
- println("(" + count + " entries)");
- }
- else {
- println("(" + file.length() + " bytes)");
+ println("(" + count + " entries)");
+ } else {
+ println("(" + file.length() + " bytes)");
}
}
-
- private void println (List list) {
- if (list == null || list.isEmpty()) println(NULL_OR_EMPTY);
- else for (Iterator i = list.iterator(); i.hasNext();) {
- Object o = i.next();
- if (o instanceof Exception) {
- println((Exception)o);
- } else {
- println(o.toString());
- }
- }
+
+ private void println(List list) {
+ if (list == null || list.isEmpty())
+ println(NULL_OR_EMPTY);
+ else
+ for (Iterator i = list.iterator(); i.hasNext();) {
+ Object o = i.next();
+ if (o instanceof Exception) {
+ println((Exception) o);
+ } else {
+ println(o.toString());
+ }
+ }
}
-
+
private static Object formatObj(Object obj) {
-
+
/* These classes have a safe implementation of toString() */
- if (obj == null
- || obj instanceof String
- || obj instanceof Number
- || obj instanceof Boolean
- || obj instanceof Exception
- || obj instanceof Character
- || obj instanceof Class
- || obj instanceof File
- || obj instanceof StringBuffer
- || obj instanceof URL
- ) return obj;
- else try {
-
- /* Classes can provide an alternative implementation of toString() */
- if (obj instanceof Traceable) {
- Traceable t = (Traceable)obj;
- return t.toTraceString();
+ if (obj == null || obj instanceof String || obj instanceof Number || obj instanceof Boolean || obj instanceof Exception
+ || obj instanceof Character || obj instanceof Class || obj instanceof File || obj instanceof StringBuffer
+ || obj instanceof URL)
+ return obj;
+ else
+ try {
+
+ /* Classes can provide an alternative implementation of toString() */
+ if (obj instanceof Traceable) {
+ Traceable t = (Traceable) obj;
+ return t.toTraceString();
+ }
+
+ /* Use classname@hashcode */
+ else
+ return obj.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(obj));
+
+ /* Object.hashCode() can be override and may thow an exception */
+ } catch (Exception ex) {
+ return obj.getClass().getName() + "@FFFFFFFF";
}
-
- /* Use classname@hashcode */
- else return obj.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(obj));
-
- /* Object.hashCode() can be override and may thow an exception */
- } catch (Exception ex) {
- return obj.getClass().getName() + "@FFFFFFFF";
- }
}
-
+
static {
- String exceptionName = System.getProperty("org.aspectj.weaver.Dump.exception","true");
- if (!exceptionName.equals("false")) setDumpOnException(true);
-
+ String exceptionName = System.getProperty("org.aspectj.weaver.Dump.exception", "true");
+ if (!exceptionName.equals("false"))
+ setDumpOnException(true);
+
String conditionName = System.getProperty(DUMP_CONDITION_PROPERTY);
- if (conditionName != null) setDumpOnExit(conditionName);
-
+ if (conditionName != null)
+ setDumpOnExit(conditionName);
+
String directoryName = System.getProperty(DUMP_DIRECTORY_PROPERTY);
- if (directoryName != null) setDumpDirectory(directoryName);
+ if (directoryName != null)
+ setDumpDirectory(directoryName);
}
public interface INode {
-
- public void accept (IVisitor visior);
-
+
+ public void accept(IVisitor visior);
+
}
public interface IVisitor {
-
- public void visitObject (Object s);
- public void visitList (List list);
+
+ public void visitObject(Object s);
+
+ public void visitList(List list);
}
}