< prev index next >
test/langtools/tools/lib/toolbox/JavacTask.java
Print this page
rev 48841 : imported patch 8187950
*** 32,41 ****
--- 32,42 ----
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,65 ****
--- 57,67 ----
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,261 ****
--- 254,273 ----
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,297 ****
--- 300,312 ----
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,341 ****
fileManager,
null, // diagnostic listener; should optionally collect diags
allOpts,
classes,
allFiles);
! return ((JavacTaskImpl) task).doCall().exitCode;
} finally {
if (internalFileManager != null)
internalFileManager.close();
}
}
--- 346,360 ----
fileManager,
null, // diagnostic listener; should optionally collect diags
allOpts,
classes,
allFiles);
! JavacTaskImpl taskImpl = (JavacTaskImpl) task;
! if (callback != null) {
! callback.accept(taskImpl);
! }
! return taskImpl.doCall().exitCode;
} finally {
if (internalFileManager != null)
internalFileManager.close();
}
}
< prev index next >