|
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