diff --git a/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/configuration/SpringDocSecurityOAuth2Customizer.java b/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/configuration/SpringDocSecurityOAuth2Customizer.java index c9daa89db..4e7da4d91 100644 --- a/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/configuration/SpringDocSecurityOAuth2Customizer.java +++ b/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/configuration/SpringDocSecurityOAuth2Customizer.java @@ -66,6 +66,11 @@ */ public class SpringDocSecurityOAuth2Customizer implements GlobalOpenApiCustomizer, ApplicationContextAware { + /** + * The constant REQUEST_MATCHER. + */ + private static final String REQUEST_MATCHER = "requestMatcher"; + /** * The constant LOGGER. */ @@ -170,7 +175,7 @@ private void getOAuth2AuthorizationServerMetadataEndpoint(OpenAPI openAPI, Secur buildApiResponsesOnSuccess(apiResponses, AnnotationsUtils.resolveSchemaFromType(SpringDocOAuth2AuthorizationServerMetadata.class, openAPI.getComponents(), null, openapi31)); buildApiResponsesOnInternalServerError(apiResponses); Operation operation = buildOperation(apiResponses); - buildPath(oAuth2EndpointFilter, "requestMatcher", openAPI, operation, HttpMethod.GET); + buildPath(oAuth2EndpointFilter, REQUEST_MATCHER, openAPI, operation, HttpMethod.GET); } } @@ -198,7 +203,7 @@ private void getNimbusJwkSetEndpoint(OpenAPI openAPI, SecurityFilterChain securi Operation operation = buildOperation(apiResponses); operation.responses(apiResponses); - buildPath(oAuth2EndpointFilter, "requestMatcher", openAPI, operation, HttpMethod.GET); + buildPath(oAuth2EndpointFilter, REQUEST_MATCHER, openAPI, operation, HttpMethod.GET); } } @@ -291,7 +296,7 @@ private void getOidcProviderConfigurationEndpoint(OpenAPI openAPI, SecurityFilte buildApiResponsesOnSuccess(apiResponses, AnnotationsUtils.resolveSchemaFromType(SpringDocOidcProviderConfiguration.class, openAPI.getComponents(), null, openapi31)); buildApiResponsesOnInternalServerError(apiResponses); Operation operation = buildOperation(apiResponses); - buildPath(oAuth2EndpointFilter, "requestMatcher", openAPI, operation, HttpMethod.GET); + buildPath(oAuth2EndpointFilter, REQUEST_MATCHER, openAPI, operation, HttpMethod.GET); } } diff --git a/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/customizers/SpecPropertiesCustomizer.java b/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/customizers/SpecPropertiesCustomizer.java index b9d62f1e9..b0a1fbe87 100644 --- a/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/customizers/SpecPropertiesCustomizer.java +++ b/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/customizers/SpecPropertiesCustomizer.java @@ -179,7 +179,7 @@ private void setComponentsProperties(OpenAPI openApi) { for (Schema componentSchema : components.getSchemas().values()) { // set component description String schemaPropertyPrefix = MessageFormat.format("components.schemas.{0}", componentSchema.getName()); - resolveString(componentSchema::setDescription, schemaPropertyPrefix + ".description"); + resolveString(componentSchema::setDescription, schemaPropertyPrefix + DESCRIPTION); Map properties = componentSchema.getProperties(); if (CollectionUtils.isEmpty(properties)) { @@ -190,7 +190,7 @@ private void setComponentsProperties(OpenAPI openApi) { String propertyNode = MessageFormat.format("components.schemas.{0}.properties.{1}", componentSchema.getName(), propSchema.getName()); - resolveString(propSchema::setDescription, propertyNode + ".description"); + resolveString(propSchema::setDescription, propertyNode + DESCRIPTION); resolveString(propSchema::setExample, propertyNode + ".example"); } } diff --git a/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/fn/builders/content/Builder.java b/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/fn/builders/content/Builder.java index 24727f631..827fbe58c 100644 --- a/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/fn/builders/content/Builder.java +++ b/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/fn/builders/content/Builder.java @@ -97,7 +97,7 @@ public class Builder { /** * The Content schem. */ - private Schema contentSchem = org.springdoc.core.fn.builders.schema.Builder.schemaBuilder().build(); + private Schema contentSchema = org.springdoc.core.fn.builders.schema.Builder.schemaBuilder().build(); /** * The Property names. @@ -285,7 +285,7 @@ public DependentSchema[] dependentSchemas() { @Override public Schema contentSchema() { - return contentSchem; + return contentSchema; } @Override diff --git a/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/providers/SpringRepositoryRestResourceProvider.java b/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/providers/SpringRepositoryRestResourceProvider.java index 717a49bd1..e6a5e4e84 100644 --- a/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/providers/SpringRepositoryRestResourceProvider.java +++ b/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/providers/SpringRepositoryRestResourceProvider.java @@ -349,17 +349,18 @@ private List getHandlerMappingList() { private void findSearchResourceMappings(OpenAPI openAPI, List routerOperationList, List handlerMappingList, DataRestRepository dataRestRepository, ResourceMetadata resourceMetadata) { for (HandlerMapping handlerMapping : handlerMappingList) { - if (handlerMapping instanceof RepositoryRestHandlerMapping) { - RepositoryRestHandlerMapping repositoryRestHandlerMapping = (RepositoryRestHandlerMapping) handlerMapping; + if (handlerMapping instanceof RepositoryRestHandlerMapping repositoryRestHandlerMapping) { Map handlerMethodMap = repositoryRestHandlerMapping.getHandlerMethods(); Map handlerMethodMapFiltered = handlerMethodMap.entrySet().stream() .filter(requestMappingInfoHandlerMethodEntry -> REPOSITORY_SERACH_CONTROLLER.equals(requestMappingInfoHandlerMethodEntry .getValue().getBeanType().getName())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a1, a2) -> a1)); ResourceMetadata metadata = associations.getMetadataFor(dataRestRepository.getDomainType()); - SearchResourceMappings searchResourceMappings = metadata.getSearchResourceMappings(); - if (searchResourceMappings.isExported()) { - findSearchControllers(routerOperationList, handlerMethodMapFiltered, resourceMetadata, dataRestRepository, openAPI, searchResourceMappings); + if(metadata!=null && metadata.isExported()) { + SearchResourceMappings searchResourceMappings = metadata.getSearchResourceMappings(); + if (searchResourceMappings.isExported()) { + findSearchControllers(routerOperationList, handlerMethodMapFiltered, resourceMetadata, dataRestRepository, openAPI, searchResourceMappings); + } } } } diff --git a/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/service/AbstractRequestService.java b/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/service/AbstractRequestService.java index b55ac0181..7fe94dad5 100644 --- a/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/service/AbstractRequestService.java +++ b/springdoc-openapi-starter-common/src/main/java/org/springdoc/core/service/AbstractRequestService.java @@ -767,19 +767,21 @@ else if (methodParameter.getParameterAnnotation(org.springframework.web.bind.ann private boolean checkOperationRequestBody(MethodParameter methodParameter) { if (AnnotatedElementUtils.findMergedAnnotation(Objects.requireNonNull(methodParameter.getMethod()), io.swagger.v3.oas.annotations.Operation.class) != null) { io.swagger.v3.oas.annotations.Operation operation = AnnotatedElementUtils.findMergedAnnotation(Objects.requireNonNull(methodParameter.getMethod()), io.swagger.v3.oas.annotations.Operation.class); - io.swagger.v3.oas.annotations.parameters.RequestBody requestBody = operation.requestBody(); - if (StringUtils.isNotBlank(requestBody.description())) - return true; - else if (StringUtils.isNotBlank(requestBody.ref())) - return true; - else if (requestBody.required()) - return true; - else if (requestBody.useParameterTypeSchema()) - return true; - else if (requestBody.content().length > 0) - return true; - else - return requestBody.extensions().length > 0; + if(operation!=null){ + io.swagger.v3.oas.annotations.parameters.RequestBody requestBody = operation.requestBody(); + if (StringUtils.isNotBlank(requestBody.description())) + return true; + else if (StringUtils.isNotBlank(requestBody.ref())) + return true; + else if (requestBody.required()) + return true; + else if (requestBody.useParameterTypeSchema()) + return true; + else if (requestBody.content().length > 0) + return true; + else + return requestBody.extensions().length > 0; + } } return false; }