Skip to content

Commit a976ee7

Browse files
committed
OpenAPI documents support enumeration types
1 parent c4b611e commit a976ee7

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

http-generator-core/src/main/java/io/avaje/http/generator/core/openapi/SchemaDocBuilder.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static io.avaje.http.generator.core.Util.typeDef;
44

55
import io.avaje.http.generator.core.javadoc.Javadoc;
6+
import io.swagger.v3.oas.models.media.StringSchema;
67
import java.util.ArrayList;
78
import java.util.List;
89
import java.util.Map;
@@ -11,6 +12,7 @@
1112

1213
import javax.lang.model.element.AnnotationMirror;
1314
import javax.lang.model.element.Element;
15+
import javax.lang.model.element.ElementKind;
1416
import javax.lang.model.element.Modifier;
1517
import javax.lang.model.element.TypeElement;
1618
import javax.lang.model.element.VariableElement;
@@ -149,9 +151,24 @@ Schema<?> toSchema(TypeMirror type) {
149151
if (types.isAssignable(type, iterableType)) {
150152
return buildIterableSchema(type);
151153
}
154+
Element e = types.asElement(type);
155+
if (e != null && e.getKind() == ElementKind.ENUM) {
156+
return buildEnumSchema(e);
157+
}
152158
return buildObjectSchema(type);
153159
}
154160

161+
private Schema<?> buildEnumSchema(Element e) {
162+
var schema = new StringSchema();
163+
e.getEnclosedElements().stream()
164+
.filter(ec -> ec.getKind().equals(ElementKind.ENUM_CONSTANT))
165+
.forEach(ec -> schema.addEnumItem(ec.getSimpleName().toString()));
166+
167+
var doc = Javadoc.parse(elements.getDocComment(e));
168+
schema.setDescription(doc.getDescription());
169+
return schema;
170+
}
171+
155172
private Schema<?> buildObjectSchema(TypeMirror type) {
156173
String objectSchemaKey = getObjectSchemaName(type);
157174

tests/test-jex/src/main/java/org/example/web/HelloDto.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ public class HelloDto {
88
public int id;
99
@NotNull
1010
public String name;
11+
public ServerType serverType;
1112
}

0 commit comments

Comments
 (0)