1
18
19 package org.springdoc.core.converters;
20
21 import java.util.Iterator;
22 import java.util.List;
23 import java.util.Optional;
24
25 import io.swagger.v3.core.converter.AnnotatedType;
26 import io.swagger.v3.core.converter.ModelConverter;
27 import io.swagger.v3.core.converter.ModelConverterContext;
28 import io.swagger.v3.oas.models.media.Schema;
29 import org.springdoc.core.customizers.PropertyCustomizer;
30
31 public class PropertyCustomizingConverter implements ModelConverter {
32
33 private final Optional<List<PropertyCustomizer>> propertyCustomizers;
34
35 public PropertyCustomizingConverter(Optional<List<PropertyCustomizer>> customizers) {
36 this.propertyCustomizers = customizers;
37 }
38
39 @Override
40 public Schema resolve(AnnotatedType type, ModelConverterContext context, Iterator<ModelConverter> chain) {
41 if (chain.hasNext()) {
42 Schema<?> resolvedSchema = chain.next().resolve(type, context, chain);
43 if (type.isSchemaProperty() && propertyCustomizers.isPresent()) {
44 List<PropertyCustomizer> propertyCustomizerList = propertyCustomizers.get();
45 for (PropertyCustomizer propertyCustomizer : propertyCustomizerList)
46 resolvedSchema = propertyCustomizer.customize(resolvedSchema, type);
47 }
48 return resolvedSchema;
49 }
50 else {
51 return null;
52 }
53 }
54 }
55