|
3 | 3 | import static io.avaje.http.generator.core.Util.typeDef;
|
4 | 4 |
|
5 | 5 | import io.avaje.http.generator.core.javadoc.Javadoc;
|
| 6 | +import io.swagger.v3.oas.models.media.StringSchema; |
6 | 7 | import java.util.ArrayList;
|
7 | 8 | import java.util.List;
|
8 | 9 | import java.util.Map;
|
|
11 | 12 |
|
12 | 13 | import javax.lang.model.element.AnnotationMirror;
|
13 | 14 | import javax.lang.model.element.Element;
|
| 15 | +import javax.lang.model.element.ElementKind; |
14 | 16 | import javax.lang.model.element.Modifier;
|
15 | 17 | import javax.lang.model.element.TypeElement;
|
16 | 18 | import javax.lang.model.element.VariableElement;
|
@@ -149,9 +151,24 @@ Schema<?> toSchema(TypeMirror type) {
|
149 | 151 | if (types.isAssignable(type, iterableType)) {
|
150 | 152 | return buildIterableSchema(type);
|
151 | 153 | }
|
| 154 | + Element e = types.asElement(type); |
| 155 | + if (e != null && e.getKind() == ElementKind.ENUM) { |
| 156 | + return buildEnumSchema(e); |
| 157 | + } |
152 | 158 | return buildObjectSchema(type);
|
153 | 159 | }
|
154 | 160 |
|
| 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 | + |
155 | 172 | private Schema<?> buildObjectSchema(TypeMirror type) {
|
156 | 173 | String objectSchemaKey = getObjectSchemaName(type);
|
157 | 174 |
|
|
0 commit comments