< prev index next >
test/langtools/tools/lib/toolbox/JavacTask.java
Print this page
rev 48841 : imported patch 8187950
@@ -32,10 +32,11 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.tools.JavaCompiler;
import javax.tools.JavaFileManager;
import javax.tools.JavaFileObject;
@@ -56,10 +57,11 @@
private List<String> options;
private List<String> classes;
private List<String> files;
private List<JavaFileObject> fileObjects;
private JavaFileManager fileManager;
+ private Consumer<com.sun.source.util.JavacTask> callback;
private JavaCompiler compiler;
private StandardJavaFileManager internalFileManager;
/**
@@ -252,10 +254,20 @@
this.fileManager = fileManager;
return this;
}
/**
+ * Set a callback to be used by this task.
+ * @param callback the callback
+ * @return this task object
+ */
+ public JavacTask callback(Consumer<com.sun.source.util.JavacTask> callback) {
+ this.callback = callback;
+ return this;
+ }
+
+ /**
* {@inheritDoc}
* @return the name "javac"
*/
@Override
public String name() {
@@ -288,10 +300,13 @@
break;
case CMDLINE:
if (fileManager != null) {
throw new IllegalStateException("file manager set in CMDLINE mode");
}
+ if (callback != null) {
+ throw new IllegalStateException("callback set in CMDLINE mode");
+ }
rc = runCommand(direct.pw);
break;
default:
throw new IllegalStateException("unknown mode " + mode);
}
@@ -331,11 +346,15 @@
fileManager,
null, // diagnostic listener; should optionally collect diags
allOpts,
classes,
allFiles);
- return ((JavacTaskImpl) task).doCall().exitCode;
+ JavacTaskImpl taskImpl = (JavacTaskImpl) task;
+ if (callback != null) {
+ callback.accept(taskImpl);
+ }
+ return taskImpl.doCall().exitCode;
} finally {
if (internalFileManager != null)
internalFileManager.close();
}
}
< prev index next >