< 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 >