--- a/langtools/src/share/classes/com/sun/tools/javac/api/ClientCodeWrapper.java Tue Feb 28 10:25:53 2012 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/api/ClientCodeWrapper.java Tue Feb 28 10:33:49 2012 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,8 +31,13 @@
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.net.URI;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
@@ -41,25 +46,21 @@
import java.util.Map;
import java.util.Set;
+import javax.lang.model.element.Modifier;
import javax.lang.model.element.NestingKind;
import javax.tools.Diagnostic;
+import javax.tools.DiagnosticListener;
import javax.tools.FileObject;
import javax.tools.JavaFileManager;
import javax.tools.JavaFileManager.Location;
import javax.tools.JavaFileObject;
+import javax.tools.JavaFileObject.Kind;
import com.sun.source.util.TaskEvent;
import com.sun.source.util.TaskListener;
import com.sun.tools.javac.util.ClientCodeException;
import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.JCDiagnostic;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import javax.lang.model.element.Modifier;
-import javax.tools.DiagnosticListener;
-import javax.tools.JavaFileObject.Kind;
/**
* Wrap objects to enable unchecked exceptions to be caught and handled.
@@ -160,6 +161,20 @@
return new WrappedTaskListener(tl);
}
+ TaskListener unwrap(TaskListener l) {
+ if (l instanceof WrappedTaskListener)
+ return ((WrappedTaskListener) l).clientTaskListener;
+ else
+ return l;
+ }
+
+ Collection<TaskListener> unwrap(Collection<? extends TaskListener> listeners) {
+ Collection<TaskListener> c = new ArrayList<TaskListener>(listeners.size());
+ for (TaskListener l: listeners)
+ c.add(unwrap(l));
+ return c;
+ }
+
@SuppressWarnings("unchecked")
private <T> Diagnostic<T> unwrap(final Diagnostic<T> diagnostic) {
if (diagnostic instanceof JCDiagnostic) {
@@ -181,6 +196,10 @@
return trusted;
}
+ private String wrappedToString(Class<?> wrapperClass, Object wrapped) {
+ return wrapperClass.getSimpleName() + "[" + wrapped + "]";
+ }
+
// <editor-fold defaultstate="collapsed" desc="Wrapper classes">
// FIXME: all these classes should be converted to use multi-catch when
@@ -361,6 +380,11 @@
throw new ClientCodeException(e);
}
}
+
+ @Override
+ public String toString() {
+ return wrappedToString(getClass(), clientJavaFileManager);
+ }
}
protected class WrappedFileObject implements FileObject {
@@ -486,6 +510,11 @@
throw new ClientCodeException(e);
}
}
+
+ @Override
+ public String toString() {
+ return wrappedToString(getClass(), clientFileObject);
+ }
}
protected class WrappedJavaFileObject extends WrappedFileObject implements JavaFileObject {
@@ -544,6 +573,11 @@
throw new ClientCodeException(e);
}
}
+
+ @Override
+ public String toString() {
+ return wrappedToString(getClass(), clientFileObject);
+ }
}
protected class WrappedDiagnosticListener<T /*super JavaFileObject*/> implements DiagnosticListener<T> {
@@ -565,6 +599,11 @@
throw new ClientCodeException(e);
}
}
+
+ @Override
+ public String toString() {
+ return wrappedToString(getClass(), clientDiagnosticListener);
+ }
}
public class DiagnosticSourceUnwrapper implements Diagnostic<JavaFileObject> {
@@ -610,6 +649,7 @@
return d.getMessage(locale);
}
+ @Override
public String toString() {
return d.toString();
}
@@ -647,6 +687,11 @@
throw new ClientCodeException(e);
}
}
+
+ @Override
+ public String toString() {
+ return wrappedToString(getClass(), clientTaskListener);
+ }
}
// </editor-fold>