Skip to content

Commit dda695f

Browse files
committed
#24 - Support use of Java9+ javax.annotation.processing.Generated based on source version
1 parent 1783776 commit dda695f

File tree

4 files changed

+24
-8
lines changed

4 files changed

+24
-8
lines changed

pom.xml

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

55
<groupId>io.dinject</groupId>
66
<artifactId>javalin-generator</artifactId>
7-
<version>1.10-SNAPSHOT</version>
7+
<version>1.11-SNAPSHOT</version>
88

99
<parent>
1010
<groupId>org.avaje</groupId>

src/main/java/io/dinject/javalin/generator/Constants.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ class Constants {
1111
static final String OPENAPIDEFINITION = "io.swagger.v3.oas.annotations.OpenAPIDefinition";
1212

1313
static final String SINGLETON = "javax.inject.Singleton";
14-
static final String GENERATED = "javax.annotation.Generated";
14+
static final String GENERATED_9 = "javax.annotation.processing.Generated";
15+
static final String GENERATED_8 = "javax.annotation.Generated";
1516
static final String API_BUILDER = "io.javalin.apibuilder.ApiBuilder";
1617

1718
static final String AT_GENERATED = "@Generated(\"io.dinject.javalin.generator\")";

src/main/java/io/dinject/javalin/generator/ControllerReader.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,9 @@ class ControllerReader {
5959
this.interfaces = initInterfaces();
6060
this.interfaceMethods = initInterfaceMethods();
6161
this.roles = Util.findRoles(beanType);
62-
if (ctx.isGeneratedAvailable()) {
63-
importTypes.add(Constants.GENERATED);
62+
final String generated = ctx.getGeneratedAnnotation();
63+
if (generated != null) {
64+
importTypes.add(generated);
6465
}
6566
if (ctx.isOpenApiAvailable()) {
6667
docHidden = initDocHidden();

src/main/java/io/dinject/javalin/generator/ProcessingContext.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import javax.annotation.processing.Filer;
66
import javax.annotation.processing.Messager;
77
import javax.annotation.processing.ProcessingEnvironment;
8+
import javax.lang.model.SourceVersion;
89
import javax.lang.model.element.Element;
910
import javax.lang.model.element.TypeElement;
1011
import javax.lang.model.type.DeclaredType;
@@ -15,7 +16,8 @@
1516
import javax.tools.JavaFileObject;
1617
import java.io.IOException;
1718

18-
import static io.dinject.javalin.generator.Constants.GENERATED;
19+
import static io.dinject.javalin.generator.Constants.GENERATED_8;
20+
import static io.dinject.javalin.generator.Constants.GENERATED_9;
1921
import static io.dinject.javalin.generator.Constants.JAVALIN3_CONTEXT;
2022
import static io.dinject.javalin.generator.Constants.OPENAPIDEFINITION;
2123

@@ -25,7 +27,7 @@ public class ProcessingContext {
2527
private final Filer filer;
2628
private final Elements elements;
2729
private final Types types;
28-
private final boolean generatedAvailable;
30+
private final String generatedAnnotation;
2931
private final boolean openApiAvailable;
3032
private final boolean javalin3;
3133

@@ -36,10 +38,18 @@ public class ProcessingContext {
3638
this.filer = env.getFiler();
3739
this.elements = env.getElementUtils();
3840
this.types = env.getTypeUtils();
39-
this.generatedAvailable = isTypeAvailable(GENERATED);
4041
this.openApiAvailable = isTypeAvailable(OPENAPIDEFINITION);
4142
this.javalin3 = isTypeAvailable(JAVALIN3_CONTEXT);
4243
this.docContext = new DocContext(env, openApiAvailable);
44+
boolean jdk8 = env.getSourceVersion().compareTo(SourceVersion.RELEASE_8) <= 0;
45+
this.generatedAnnotation = generatedAnnotation(jdk8);
46+
}
47+
48+
private String generatedAnnotation(boolean jdk8) {
49+
if (jdk8) {
50+
return isTypeAvailable(GENERATED_8) ? GENERATED_8 : null;
51+
}
52+
return isTypeAvailable(GENERATED_9) ? GENERATED_9 : null;
4353
}
4454

4555
private boolean isTypeAvailable(String canonicalName) {
@@ -51,7 +61,11 @@ TypeElement getTypeElement(String canonicalName) {
5161
}
5262

5363
boolean isGeneratedAvailable() {
54-
return generatedAvailable;
64+
return generatedAnnotation != null;
65+
}
66+
67+
String getGeneratedAnnotation() {
68+
return generatedAnnotation;
5569
}
5670

5771
boolean isOpenApiAvailable() {

0 commit comments

Comments
 (0)