diff --git a/src/main/java/it/aboutbits/springboot/toolbox/swagger/customization/default_not_null/NullableCustomizer.java b/src/main/java/it/aboutbits/springboot/toolbox/swagger/customization/default_not_null/NullableCustomizer.java index 48574c5..c57af64 100644 --- a/src/main/java/it/aboutbits/springboot/toolbox/swagger/customization/default_not_null/NullableCustomizer.java +++ b/src/main/java/it/aboutbits/springboot/toolbox/swagger/customization/default_not_null/NullableCustomizer.java @@ -5,6 +5,7 @@ import org.springdoc.core.customizers.OpenApiCustomizer; import java.util.ArrayList; +import java.util.Map; public class NullableCustomizer implements OpenApiCustomizer { @Override @@ -15,18 +16,32 @@ public void customise(OpenAPI openApi) { } openApi.getComponents().getSchemas().values() .forEach(schema -> { + var requiredProperties = new ArrayList(); if (((Schema) schema).getProperties() != null) { - var requiredProperties = new ArrayList(); - ((Schema) schema).getProperties().forEach((propertyName, property) -> { - if (property.getTitle() == null || !property.getTitle().equals("NULLABLE")) { - requiredProperties.add(propertyName); - } - if (property.getTitle() != null && property.getTitle().equals("NULLABLE")) { - property.setTitle(null); + var properties = ((Schema) schema).getProperties(); + processProperties(properties, requiredProperties); + } + if (schema.getAllOf() != null) { + schema.getAllOf().forEach(allOfSchema -> { + var allOfSchemaTyped = (Schema) allOfSchema; + if (allOfSchemaTyped.getProperties() != null) { + var properties = allOfSchemaTyped.getProperties(); + processProperties(properties, requiredProperties); } }); - schema.setRequired(requiredProperties); } + schema.setRequired(requiredProperties); }); } + + private static void processProperties(Map properties, ArrayList requiredProperties) { + properties.forEach((propertyName, property) -> { + if (property.getTitle() == null || !property.getTitle().equals("NULLABLE")) { + requiredProperties.add(propertyName); + } + if (property.getTitle() != null && property.getTitle().equals("NULLABLE")) { + property.setTitle(null); + } + }); + } }