Skip to content

Commit 34580bb

Browse files
committed
add support for diagnostic feedback
1 parent a81e557 commit 34580bb

4 files changed

Lines changed: 25 additions & 7 deletions

File tree

jOOR-java-8/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
<groupId>org.jooq</groupId>
1313
<artifactId>joor-java-8</artifactId>
14-
<version>0.9.14</version>
14+
<version>0.9.14.2</version>
1515
<packaging>bundle</packaging>
1616

1717
<name>jOOR</name>

jOOR-java-8/src/main/java/org/joor/Compile.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,15 +95,15 @@ static Class<?> compile(String className, String content, CompileOptions compile
9595
options.addAll(Arrays.asList("-classpath", classpath.toString()));
9696
}
9797

98-
CompilationTask task = compiler.getTask(out, fileManager, null, options, null, files);
98+
CompilationTask task = compiler.getTask(out, fileManager, compileOptions.diagnosticListener, options, null, files);
9999

100100
if (!compileOptions.processors.isEmpty())
101101
task.setProcessors(compileOptions.processors);
102102

103103
task.call();
104104

105105
if (fileManager.isEmpty()) {
106-
if (compileOptions.hashOption("-proc:only")) {
106+
if (compileOptions.hasOption("-proc:only")) {
107107
return null;
108108
}
109109
throw new ReflectException("Compilation error: " + out);

jOOR-java-8/src/main/java/org/joor/CompileOptions.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import java.util.List;
2222

2323
import javax.annotation.processing.Processor;
24+
import javax.tools.DiagnosticListener;
25+
import javax.tools.JavaFileObject;
2426

2527
/**
2628
* @author Lukas Eder
@@ -29,6 +31,7 @@ public final class CompileOptions {
2931

3032
final List<? extends Processor> processors;
3133
final List<String> options;
34+
DiagnosticListener<JavaFileObject> diagnosticListener;
3235

3336
public CompileOptions() {
3437
this(
@@ -61,13 +64,19 @@ public final CompileOptions options(List<String> newOptions) {
6164
return new CompileOptions(processors, newOptions);
6265
}
6366

64-
public boolean hashOption(String opt) {
67+
public boolean hasOption(String opt) {
6568
for (String option : options) {
6669
if (option.equalsIgnoreCase(opt)) {
6770
return true;
6871
}
6972
}
7073
return false;
7174
}
75+
76+
public CompileOptions withDiagnosticListener(DiagnosticListener<JavaFileObject> listener) {
77+
this.diagnosticListener = listener;
78+
return this;
79+
}
80+
7281
}
7382

jOOR-java-8/src/test/java/org/joor/test/CompileOptionsTest.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@
1515

1616
import java.util.Collections;
1717

18-
18+
import java.util.Locale;
1919
import java.util.Set;
20+
import java.util.concurrent.atomic.AtomicReference;
2021

2122
import javax.annotation.processing.Completion;
2223
import javax.annotation.processing.ProcessingEnvironment;
@@ -27,6 +28,7 @@
2728
import javax.lang.model.element.Element;
2829
import javax.lang.model.element.ExecutableElement;
2930
import javax.lang.model.element.TypeElement;
31+
import javax.tools.Diagnostic;
3032

3133
import org.joor.CompileOptions;
3234
import org.joor.Reflect;
@@ -154,6 +156,7 @@ public SourceVersion getSupportedSourceVersion() {
154156

155157
@Override
156158
public void init(ProcessingEnvironment processingEnv) {
159+
processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "running " + getClass().getName());
157160
}
158161

159162
@Override
@@ -179,10 +182,16 @@ public Iterable<? extends Completion> getCompletions(Element element, Annotation
179182
* see https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html
180183
*/
181184
@Test
182-
public void testProcOnly() {
185+
public void testProcOnlyWithDiagnostics() {
186+
AtomicReference<String> diagMessage = new AtomicReference<>();
183187
Object result = Reflect.compile("p.D", "package p; public class D extends B {} class B {}",
184-
new CompileOptions().options("-proc:only").processors(new AProcessor()));
188+
new CompileOptions().options("-proc:only")
189+
.processors(new AProcessor())
190+
.withDiagnosticListener(diagnostic -> {
191+
diagMessage.set(diagnostic.getMessage(Locale.ENGLISH));
192+
}));
185193
assertNull(result);
194+
assertNotNull(diagMessage.get());
186195
}
187196

188197
}

0 commit comments

Comments
 (0)