Attempting to fix test data compilation on JDK 8.
diff --git a/java/java.source.base/test/unit/src/org/netbeans/modules/java/source/parsing/PatchModuleTest.java b/java/java.source.base/test/unit/src/org/netbeans/modules/java/source/parsing/PatchModuleTest.java
index 518e65b..0dfcf60 100644
--- a/java/java.source.base/test/unit/src/org/netbeans/modules/java/source/parsing/PatchModuleTest.java
+++ b/java/java.source.base/test/unit/src/org/netbeans/modules/java/source/parsing/PatchModuleTest.java
@@ -19,15 +19,26 @@
package org.netbeans.modules.java.source.parsing;
-import com.sun.tools.javac.Main;
+import com.sun.tools.javac.api.JavacTool;
import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import javax.swing.event.ChangeListener;
+import javax.tools.ForwardingJavaFileManager;
+import javax.tools.JavaFileManager;
+import javax.tools.JavaFileManager.Location;
+import javax.tools.JavaFileObject;
+import javax.tools.JavaFileObject.Kind;
+import javax.tools.SimpleJavaFileObject;
import static junit.framework.TestCase.assertEquals;
import org.netbeans.api.java.queries.BinaryForSourceQuery;
+import org.netbeans.api.java.source.ClasspathInfo;
import org.netbeans.api.java.source.CompilationController;
import org.netbeans.api.java.source.JavaSource;
import org.netbeans.api.java.source.JavaSource.Phase;
@@ -36,6 +47,7 @@
import org.netbeans.api.java.source.TestUtilities;
import org.netbeans.junit.NbTestCase;
import org.netbeans.modules.java.source.tasklist.CompilerSettings;
+import org.netbeans.modules.java.source.usages.ClasspathInfoAccessor;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.netbeans.spi.java.queries.BinaryForSourceQueryImplementation;
@@ -71,18 +83,19 @@
FileObject sourceModule = createFile("module-info.java", "module patch {}"); SourceUtilsTestUtil.setSourceLevel(sourceModule, "11");
FileObject source1 = createFile("patch/Patch.java", "package patch; class Patch { Dep dep; }"); SourceUtilsTestUtil.setSourceLevel(source1, "11");
FileObject source2 = createFile("patch/Dep.java", "package patch; class Dep { }"); SourceUtilsTestUtil.setSourceLevel(source2, "11");
- File classDir = FileUtil.toFile(classRoot);
- List<String> options = new ArrayList<>();
- options.add("-d");
- options.add(classDir.getAbsolutePath());
- Enumeration<? extends FileObject> en = sourceRoot.getChildren(true);
- while (en.hasMoreElements()) {
- FileObject f = en.nextElement();
- if (f.isData()) {
- options.add(FileUtil.toFile(f).getAbsolutePath());
+ ClasspathInfo cpInfo = ClasspathInfo.create(sourceModule);
+ try (JavaFileManager fm = ClasspathInfoAccessor.getINSTANCE().createFileManager(cpInfo, "11");
+ JavaFileManager output = new OutputFileManager(fm)) {
+ List<JavaFileObject> files = new ArrayList<>();
+ Enumeration<? extends FileObject> en = sourceRoot.getChildren(true);
+ while (en.hasMoreElements()) {
+ FileObject f = en.nextElement();
+ if (f.isData()) {
+ files.add(FileObjects.fileObjectFileObject(f, sourceRoot, null, null));
+ }
}
+ assertTrue(JavacTool.create().getTask(null, output, null, null, null, files).call());
}
- assertEquals(0, Main.compile(options.toArray(new String[0])));
JavaSource js = JavaSource.forFileObject(source1);
js.runUserActionTask(new Task<CompilationController>() {
@@ -145,4 +158,25 @@
}
}
+
+ private class OutputFileManager extends ForwardingJavaFileManager {
+
+ public OutputFileManager(JavaFileManager fileManager) {
+ super(fileManager);
+ }
+
+ @Override
+ public JavaFileObject getJavaFileForOutput(Location location, String className, Kind kind, javax.tools.FileObject sibling) throws IOException {
+ try {
+ return new SimpleJavaFileObject(new URI("mem://" + className + kind.extension), kind) {
+ @Override
+ public OutputStream openOutputStream() throws IOException {
+ return FileUtil.createData(classRoot, className.replace(".", "/") + kind.extension).getOutputStream();
+ }
+ };
+ } catch (URISyntaxException ex) {
+ throw new IOException(ex);
+ }
+ }
+ }
}