Skip to content

Commit adb5e48

Browse files
committed
#16 - Support Javalin version 3 and version 2
1 parent 25a2692 commit adb5e48

File tree

9 files changed

+46
-14
lines changed

9 files changed

+46
-14
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
class Constants {
44

5-
static final String JAVALIN_CONTEXT = "io.javalin.Context";
5+
static final String JAVALIN2_CONTEXT = "io.javalin.Context";
6+
static final String JAVALIN3_CONTEXT = "io.javalin.http.Context";
67

7-
static final String JAVALIN_ROLES = "io.javalin.security.SecurityUtil.roles";
8+
static final String JAVALIN2_ROLES = "io.javalin.security.SecurityUtil.roles";
9+
static final String JAVALIN3_ROLES = "io.javalin.core.security.SecurityUtil.roles";
810

911
static final String OPENAPIDEFINITION = "io.swagger.v3.oas.annotations.OpenAPIDefinition";
1012

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
import java.util.Set;
2020
import java.util.TreeSet;
2121

22-
import static io.dinject.javalin.generator.Constants.JAVALIN_ROLES;
22+
import static io.dinject.javalin.generator.Constants.JAVALIN2_ROLES;
23+
import static io.dinject.javalin.generator.Constants.JAVALIN3_ROLES;
2324

2425
/**
2526
* Reads the type information for the Controller (bean).
@@ -147,7 +148,7 @@ boolean isDocHidden() {
147148

148149
void read() {
149150
if (!roles.isEmpty()) {
150-
addStaticImportType(JAVALIN_ROLES);
151+
addStaticImportType(ctx.isJavalin3() ? JAVALIN3_ROLES : JAVALIN2_ROLES);
151152
for (String role : roles) {
152153
addStaticImportType(role);
153154
}

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313
import javax.lang.model.element.Element;
1414
import javax.lang.model.element.TypeElement;
1515

16+
import static io.dinject.javalin.generator.Constants.JAVALIN2_CONTEXT;
17+
import static io.dinject.javalin.generator.Constants.JAVALIN3_CONTEXT;
18+
import static io.dinject.javalin.generator.Util.typeDef;
19+
1620
public class ElementReader {
1721

1822
private final ProcessingContext ctx;
@@ -29,7 +33,7 @@ public class ElementReader {
2933
private String paramDefault;
3034

3135
ElementReader(Element element, ProcessingContext ctx, ParamType defaultType, boolean formMarker) {
32-
this(element, element.asType().toString(), ctx, defaultType, formMarker);
36+
this(element, typeDef(element.asType()), ctx, defaultType, formMarker);
3337
}
3438

3539
ElementReader(Element element, String rawType, ProcessingContext ctx, ParamType defaultType, boolean formMarker) {
@@ -114,7 +118,7 @@ private boolean hasParamDefault() {
114118
}
115119

116120
private boolean isJavalinContext() {
117-
return Constants.JAVALIN_CONTEXT.equals(rawType);
121+
return JAVALIN3_CONTEXT.equals(rawType) || JAVALIN2_CONTEXT.equals(rawType);
118122
}
119123

120124
private String shortType() {

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
2020
import java.util.ArrayList;
2121
import java.util.List;
2222

23-
import static io.dinject.javalin.generator.Constants.JAVALIN_ROLES;
23+
import static io.dinject.javalin.generator.Constants.JAVALIN2_ROLES;
24+
import static io.dinject.javalin.generator.Constants.JAVALIN3_ROLES;
25+
import static io.dinject.javalin.generator.Util.typeDef;
2426

2527
public class MethodReader {
2628

@@ -92,7 +94,7 @@ public <A extends Annotation> A findAnnotation(Class<A> type) {
9294

9395
void read() {
9496
if (!methodRoles.isEmpty()) {
95-
bean.addStaticImportType(JAVALIN_ROLES);
97+
bean.addStaticImportType(ctx.isJavalin3() ? JAVALIN3_ROLES : JAVALIN2_ROLES);
9698
for (String role : methodRoles) {
9799
bean.addStaticImportType(role);
98100
}
@@ -109,9 +111,9 @@ void read() {
109111

110112
String rawType;
111113
if (actualParams != null) {
112-
rawType = actualParams.get(i).toString();
114+
rawType = typeDef(actualParams.get(i));
113115
} else {
114-
rawType = p.asType().toString();
116+
rawType = typeDef(p.asType());
115117
}
116118

117119
MethodParam param = new MethodParam(p, rawType, ctx, defaultParamType, formMarker);

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.io.IOException;
1717

1818
import static io.dinject.javalin.generator.Constants.GENERATED;
19+
import static io.dinject.javalin.generator.Constants.JAVALIN3_CONTEXT;
1920
import static io.dinject.javalin.generator.Constants.OPENAPIDEFINITION;
2021

2122
public class ProcessingContext {
@@ -26,6 +27,7 @@ public class ProcessingContext {
2627
private final Types types;
2728
private final boolean generatedAvailable;
2829
private final boolean openApiAvailable;
30+
private final boolean javalin3;
2931

3032
private final DocContext docContext;
3133

@@ -36,6 +38,7 @@ public class ProcessingContext {
3638
this.types = env.getTypeUtils();
3739
this.generatedAvailable = isTypeAvailable(GENERATED);
3840
this.openApiAvailable = isTypeAvailable(OPENAPIDEFINITION);
41+
this.javalin3 = isTypeAvailable(JAVALIN3_CONTEXT);
3942
this.docContext = new DocContext(env, openApiAvailable);
4043
}
4144

@@ -55,6 +58,10 @@ boolean isOpenApiAvailable() {
5558
return openApiAvailable;
5659
}
5760

61+
boolean isJavalin3() {
62+
return javalin3;
63+
}
64+
5865
void logError(Element e, String msg, Object... args) {
5966
messager.printMessage(Diagnostic.Kind.ERROR, String.format(msg, args), e);
6067
}

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,24 @@
44
import javax.lang.model.element.AnnotationValue;
55
import javax.lang.model.element.Element;
66
import javax.lang.model.type.DeclaredType;
7+
import javax.lang.model.type.TypeKind;
8+
import javax.lang.model.type.TypeMirror;
79
import java.util.ArrayList;
810
import java.util.List;
911

10-
class Util {
12+
public class Util {
13+
14+
/**
15+
* Return the type removing validation annotations etc.
16+
*/
17+
public static String typeDef(TypeMirror typeMirror) {
18+
if (typeMirror.getKind() == TypeKind.DECLARED) {
19+
DeclaredType declaredType = (DeclaredType) typeMirror;
20+
return declaredType.asElement().toString();
21+
} else {
22+
return typeMirror.toString();
23+
}
24+
}
1125

1226
static String trimPath(String value) {
1327
return value.length() <= 1 ? value : trimTrailingSlash(value);

src/main/java/io/dinject/javalin/generator/openapi/DocContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ private ObjectMapper createObjectMapper() {
163163
}
164164

165165
private Writer createMetaWriter() throws IOException {
166-
FileObject writer = filer.createResource(StandardLocation.CLASS_OUTPUT, "META-INF", "openapi.json", null);
166+
FileObject writer = filer.createResource(StandardLocation.CLASS_OUTPUT, "meta", "openapi.json", null);
167167
return writer.openWriter();
168168
}
169169

src/main/java/io/dinject/javalin/generator/openapi/KnownTypes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ interface KnownType {
3939
private final Map<String, KnownType> typeMap = new HashMap<>();
4040

4141
KnownTypes() {
42-
add(new StringType(), String.class);
42+
add(new StringType(), String.class, char[].class, CharSequence.class);
4343
add(new BoolType(), boolean.class, Boolean.class);
4444
add(new IntegerType(), int.class, Integer.class);
4545
add(new LongType(), long.class, Long.class);

src/main/java/io/dinject/javalin/generator/openapi/SchemaDocBuilder.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import java.util.Set;
2929
import java.util.TreeMap;
3030

31+
import static io.dinject.javalin.generator.Util.typeDef;
32+
3133
/**
3234
* Help build OpenAPI Schema objects.
3335
*/
@@ -119,7 +121,7 @@ private RequestBody requestBody(Operation operation) {
119121

120122
Schema<?> toSchema(TypeMirror type) {
121123

122-
Schema<?> schema = knownTypes.createSchema(type.toString());
124+
Schema<?> schema = knownTypes.createSchema(typeDef(type));
123125
if (schema != null) {
124126
return schema;
125127
}

0 commit comments

Comments
 (0)