Skip to content

Commit aec354c

Browse files
committed
- Fix stackover flow on OpenAPI generation
1 parent 1f21da2 commit aec354c

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,10 @@ private void writeControllerAdapter(Element controller) {
7373
try {
7474
ControllerRouteWriter writer = new ControllerRouteWriter(reader, ctx);
7575
writer.write();
76-
} catch (Exception e) {
76+
} catch (Throwable e) {
7777
e.printStackTrace();
78-
ctx.logError(reader.getBeanType(), "Failed to write $route class");
78+
ctx.logError(reader.getBeanType(), "Failed to write $route class " + e);
7979
}
8080
}
8181
}
82-
8382
}

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,10 @@ private Schema<?> buildObjectSchema(TypeMirror type) {
148148

149149
Schema objectSchema = schemas.get(objectSchemaKey);
150150
if (objectSchema == null) {
151-
objectSchema = createObjectSchema(type);
151+
// Put first to resolve recursive stack overflow
152+
objectSchema = new ObjectSchema();
152153
schemas.put(objectSchemaKey, objectSchema);
154+
populateObjectSchema(type, objectSchema);
153155
}
154156

155157
Schema ref = new Schema();
@@ -209,10 +211,7 @@ private String getObjectSchemaName(TypeMirror type) {
209211
return canonicalName;
210212
}
211213

212-
private ObjectSchema createObjectSchema(TypeMirror objectType) {
213-
214-
ObjectSchema objectSchema = new ObjectSchema();
215-
214+
private <T> void populateObjectSchema(TypeMirror objectType, Schema<T> objectSchema) {
216215
Element element = types.asElement(objectType);
217216
for (VariableElement field : allFields(element)) {
218217
Schema<?> propSchema = toSchema(field.asType());
@@ -223,7 +222,6 @@ private ObjectSchema createObjectSchema(TypeMirror objectType) {
223222
setFormatFromValidation(field, propSchema);
224223
objectSchema.addProperties(field.getSimpleName().toString(), propSchema);
225224
}
226-
return objectSchema;
227225
}
228226

229227
private void setFormatFromValidation(Element element, Schema<?> propSchema) {

0 commit comments

Comments
 (0)