|
7 | 7 | import java.util.ArrayList;
|
8 | 8 | import java.util.List;
|
9 | 9 | import java.util.Map;
|
| 10 | +import java.util.Optional; |
10 | 11 | import java.util.Set;
|
11 | 12 | import java.util.TreeMap;
|
12 | 13 | import java.util.stream.Stream;
|
@@ -168,7 +169,7 @@ Schema<?> toSchema(TypeMirror type) {
|
168 | 169 | private Schema<?> buildEnumSchema(Element e) {
|
169 | 170 | var schema = new StringSchema();
|
170 | 171 | e.getEnclosedElements().stream()
|
171 |
| - .filter(ec -> ec.getKind().equals(ElementKind.ENUM_CONSTANT)) |
| 172 | + .filter(ec -> ElementKind.ENUM_CONSTANT.equals(ec.getKind())) |
172 | 173 | .forEach(ec -> schema.addEnumItem(ec.getSimpleName().toString()));
|
173 | 174 |
|
174 | 175 | var doc = Javadoc.parse(elements.getDocComment(e));
|
@@ -267,8 +268,21 @@ private void setFormatFromValidation(Element element, Schema<?> propSchema) {
|
267 | 268 |
|
268 | 269 | private void setDescription(Element element, Schema<?> propSchema) {
|
269 | 270 | var doc = Javadoc.parse(elements.getDocComment(element));
|
| 271 | + |
270 | 272 | if (!doc.getSummary().isEmpty()) {
|
271 | 273 | propSchema.setDescription(doc.getSummary());
|
| 274 | + return; |
| 275 | + } |
| 276 | + try { |
| 277 | + |
| 278 | + final var enclosingElement = element.getEnclosingElement(); |
| 279 | + if (enclosingElement.getKind() == ElementKind.valueOf("RECORD")) { |
| 280 | + Optional.of(Javadoc.parse(elements.getDocComment(enclosingElement))) |
| 281 | + .map(d -> d.getParams().get(element.getSimpleName().toString())) |
| 282 | + .ifPresent(propSchema::setDescription); |
| 283 | + } |
| 284 | + } catch (IllegalArgumentException e) { |
| 285 | + // not on jdk 16+ |
272 | 286 | }
|
273 | 287 | }
|
274 | 288 |
|
@@ -322,7 +336,9 @@ private void gatherProperties(List<VariableElement> fields, Element element) {
|
322 | 336 | }
|
323 | 337 | if (element instanceof TypeElement) {
|
324 | 338 | Element mappedSuper = types.asElement(((TypeElement) element).getSuperclass());
|
325 |
| - if (mappedSuper != null && !"java.lang.Object".equals(mappedSuper.toString())) { |
| 339 | + if (mappedSuper != null |
| 340 | + && !"java.lang.Object".equals(mappedSuper.toString()) |
| 341 | + && !"java.lang.Record".equals(mappedSuper.toString())) { |
326 | 342 | gatherProperties(fields, mappedSuper);
|
327 | 343 | }
|
328 | 344 | for (VariableElement field : ElementFilter.fieldsIn(element.getEnclosedElements())) {
|
|
0 commit comments