diff --git a/j2cl-maven-plugin/src/it/annotation-processor-in-reactor/processor/src/main/java/com/example/MyProcessor.java b/j2cl-maven-plugin/src/it/annotation-processor-in-reactor/processor/src/main/java/com/example/MyProcessor.java
index a83b1f6e..121e4a40 100644
--- a/j2cl-maven-plugin/src/it/annotation-processor-in-reactor/processor/src/main/java/com/example/MyProcessor.java
+++ b/j2cl-maven-plugin/src/it/annotation-processor-in-reactor/processor/src/main/java/com/example/MyProcessor.java
@@ -47,6 +47,9 @@ public boolean process(Set extends TypeElement> annotations, RoundEnvironment
Filer filer = processingEnv.getFiler();
elements.stream().filter(e -> e.getKind().isInterface()).forEach(type -> {
+
+ System.out.println("Found annotated type: " + type);
+
//emit a new class for that type, with no-arg string methods
try {
ClassName origClassName = ClassName.get((TypeElement) type);
@@ -79,7 +82,9 @@ public boolean process(Set extends TypeElement> annotations, RoundEnvironment
}
}
JavaFile newFile = JavaFile.builder(origClassName.packageName(), builder.build()).build();
+ System.out.println("writing: " + origClassName.simpleName() + "_Impl");
newFile.writeTo(filer);
+ System.out.println("wrote: " + origClassName.simpleName() + "_Impl");
} catch (IOException e) {
throw new UncheckedIOException(e);
}
diff --git a/j2cl-tasks/pom.xml b/j2cl-tasks/pom.xml
index 5ff39cf7..c1f9a9db 100644
--- a/j2cl-tasks/pom.xml
+++ b/j2cl-tasks/pom.xml
@@ -86,7 +86,7 @@
org.eclipse.jdt
org.eclipse.jdt.core
- 3.34.0
+ 3.37.0
org.eclipse.platform
@@ -96,6 +96,14 @@
org.eclipse.platform
org.eclipse.equinox.common
+
+ org.eclipse.platform
+ org.eclipse.equinox.preferences
+
+
+ org.eclipse.platform
+ org.eclipse.core.runtime
+
diff --git a/j2cl-tasks/src/main/java/com/vertispan/j2cl/build/provided/BytecodeTask.java b/j2cl-tasks/src/main/java/com/vertispan/j2cl/build/provided/BytecodeTask.java
index 14d46cd8..fd77f7e5 100644
--- a/j2cl-tasks/src/main/java/com/vertispan/j2cl/build/provided/BytecodeTask.java
+++ b/j2cl-tasks/src/main/java/com/vertispan/j2cl/build/provided/BytecodeTask.java
@@ -48,7 +48,7 @@ public String getOutputType() {
@Override
public String getTaskName() {
- return "default";
+ return "javac";
}
@Override
@@ -161,10 +161,7 @@ protected File getGeneratedClassesDir(TaskContext context) {
return context.outputPath().toFile();
}
- private Set maybeAddInReactorAptProcessor(List reactorProcessors, Set processors) {
- if (processors.isEmpty()) {
- return Collections.emptySet();
- }
+ public Set maybeAddInReactorAptProcessor(List reactorProcessors, Set processors) {
Set existingProcessors = new HashSet<>(processors);
reactorProcessors.forEach(input -> input.getFilesAndHashes().forEach(file -> {
try (Stream lines = Files.lines(file.getAbsolutePath())) {
diff --git a/j2cl-tasks/src/main/java/com/vertispan/j2cl/build/provided/JdtBytecodeTask.java b/j2cl-tasks/src/main/java/com/vertispan/j2cl/build/provided/JdtBytecodeTask.java
index 0a8191de..fba47458 100644
--- a/j2cl-tasks/src/main/java/com/vertispan/j2cl/build/provided/JdtBytecodeTask.java
+++ b/j2cl-tasks/src/main/java/com/vertispan/j2cl/build/provided/JdtBytecodeTask.java
@@ -61,7 +61,7 @@ public Task resolve(Project project, Config config) {
.stream()
//.filter(dependency -> !dependency.isJsZip())
.forEach(dependency -> {
- System.out.println("Dependency: " + dependency.getKey());
+ //System.out.println("Dependency: " + dependency.getKey());
});
List bytecodeClasspath = scope(project.getDependencies()
@@ -142,23 +142,16 @@ public Task resolve(Project project, Config config) {
File generatedClassesDir = getGeneratedClassesDir(context);
File classOutputDir = context.outputPath().toFile();
-
- sourcePaths.forEach(s -> {
- System.out.println("Source Path: " + s.getAbsolutePath());
- });
-
- classpathDirs.forEach(f -> {
- System.out.println("Classpath Dir: " + f.getAbsolutePath());
- });
-
-
+ System.out.println("started : " + project.getKey());
Jdt javac = new Jdt(context, generatedClassesDir, sourcePaths, classpathDirs, classOutputDir, aptProcessors);
+ System.out.println("finished : " + project.getKey());
+
// TODO convention for mapping to original file paths, provide FileInfo out of Inputs instead of Paths,
// automatically relativized?
List sources = inputSources.getFilesAndHashes()
.stream()
- .filter(p -> !p.getAbsolutePath().toFile().getName().equals("moduleinfo.java"))
+ .filter(p -> !p.getAbsolutePath().toFile().getName().equals("module-info.java"))
.map(p -> SourceUtils.FileInfo.create(p.getAbsolutePath().toString(), p.getSourcePath().toString()))
.collect(Collectors.toUnmodifiableList());
diff --git a/j2cl-tasks/src/main/java/com/vertispan/j2cl/tools/Jdt.java b/j2cl-tasks/src/main/java/com/vertispan/j2cl/tools/Jdt.java
new file mode 100644
index 00000000..b745bc7e
--- /dev/null
+++ b/j2cl-tasks/src/main/java/com/vertispan/j2cl/tools/Jdt.java
@@ -0,0 +1,89 @@
+package com.vertispan.j2cl.tools;
+
+import com.google.j2cl.common.SourceUtils;
+import com.vertispan.j2cl.build.task.BuildLog;
+import org.eclipse.jdt.core.compiler.batch.BatchCompiler;
+import org.eclipse.jdt.internal.compiler.DefaultErrorHandlingPolicies;
+import org.eclipse.jdt.internal.compiler.batch.Main;
+
+import javax.lang.model.SourceVersion;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.PrintWriter;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+public class Jdt {
+
+ private final BuildLog log;
+ private final List javacOptions;
+
+ public Jdt(BuildLog log, File generatedClassesPath, List sourcePaths, List classpath, File classesDirFile, Set processors) {
+ this.log = log;
+ this.javacOptions = new ArrayList<>(Arrays.asList("-encoding", "utf8"));
+ //this.javacOptions = new ArrayList<>();
+
+
+
+ if (generatedClassesPath == null) {
+ javacOptions.add("-proc:none");
+ }
+ if (SourceVersion.latestSupported().compareTo(SourceVersion.RELEASE_11) >= 0) {
+ //none
+ }
+ javacOptions.add("-11");
+
+ if (!processors.isEmpty()) {
+ javacOptions.add("-processor");
+ javacOptions.add(String.join(",", processors));
+ System.out.println("processors: " + String.join(",", processors));
+
+ } else {
+ System.out.println("No processors");
+ javacOptions.add("-proc:none");
+ }
+
+ javacOptions.add("-sourcepath");
+ javacOptions.add(sourcePaths.stream().map(File::getAbsolutePath).collect(Collectors.joining(":")));
+
+ System.out.println("sourcepath: " + sourcePaths.stream().map(File::getAbsolutePath).collect(Collectors.joining(":")));
+
+ javacOptions.add("-classpath");
+
+ System.out.println("classpath: ");
+ classpath.stream().map(File::getAbsolutePath).forEach(e -> {
+ //System.out.println(e);
+ });
+
+ javacOptions.add(classpath.stream().map(File::getAbsolutePath).collect(Collectors.joining(":")));
+
+ javacOptions.add("-d"); // -d destination directory
+ javacOptions.add(classesDirFile.getAbsolutePath());
+ javacOptions.add("-s"); //-s destination directory for generated source files
+ javacOptions.add(generatedClassesPath.getAbsolutePath());
+ javacOptions.add("-time");
+ javacOptions.add("-XprintProcessorInfo");
+ javacOptions.add("-XprintRounds");
+
+ System.out.println("-D " + classesDirFile.getAbsolutePath());
+ System.out.println("-S " + generatedClassesPath.getAbsolutePath());
+
+ }
+
+ public boolean compile(List modifiedJavaFiles) {
+ modifiedJavaFiles.forEach(f -> javacOptions.add(f.sourcePath()));
+
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ ByteArrayOutputStream errorOutputStream = new ByteArrayOutputStream();
+
+ boolean result = BatchCompiler.compile(javacOptions.toArray(new String[javacOptions.size()]), new PrintWriter(outputStream), new PrintWriter(errorOutputStream), null);
+
+ log.info(outputStream.toString(Charset.defaultCharset()));
+ log.error(errorOutputStream.toString(Charset.defaultCharset()));
+ return result;
+ }
+}
diff --git a/j2cl-tasks/src/main/java/com/vertispan/j2cl/tools/JdtCompiler.java b/j2cl-tasks/src/main/java/com/vertispan/j2cl/tools/JdtCompiler.java
deleted file mode 100644
index 21747199..00000000
--- a/j2cl-tasks/src/main/java/com/vertispan/j2cl/tools/JdtCompiler.java
+++ /dev/null
@@ -1,2 +0,0 @@
-package com.vertispan.j2cl.tools;public class JdtCompiler {
-}