Skip to content

Commit c40f51a

Browse files
committed
code review
1 parent 40a700d commit c40f51a

File tree

7 files changed

+51
-42
lines changed

7 files changed

+51
-42
lines changed

springdoc-openapi-common/src/main/java/org/springdoc/api/AbstractOpenApiResource.java

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
import org.springdoc.core.fn.RouterFunctionData;
9393
import org.springdoc.core.fn.RouterOperation;
9494
import org.springdoc.core.providers.ActuatorProvider;
95+
import org.springdoc.core.providers.CloudFunctionProvider;
9596
import org.springdoc.core.providers.JavadocProvider;
9697

9798
import org.springframework.aop.support.AopUtils;
@@ -321,11 +322,13 @@ protected synchronized OpenAPI getOpenApi(Locale locale) {
321322
}
322323
getPaths(mappingsMap, finalLocale);
323324

324-
if (springDocProviders.getSpringCloudFunctionProvider().isPresent()) {
325-
List<RouterOperation> routerOperationList = springDocProviders.getSpringCloudFunctionProvider().get().getRouterOperations(openApi);
326-
if (!CollectionUtils.isEmpty(routerOperationList))
327-
this.calculatePath(routerOperationList, locale);
328-
}
325+
Optional<CloudFunctionProvider> cloudFunctionProviderOptional = springDocProviders.getSpringCloudFunctionProvider();
326+
cloudFunctionProviderOptional.ifPresent(cloudFunctionProvider -> {
327+
List<RouterOperation> routerOperationList = cloudFunctionProvider.getRouterOperations(openApi);
328+
if (!CollectionUtils.isEmpty(routerOperationList))
329+
this.calculatePath(routerOperationList, locale);
330+
}
331+
);
329332

330333
if (!CollectionUtils.isEmpty(openApi.getServers()))
331334
openAPIService.setServersPresent(true);
@@ -1161,11 +1164,12 @@ protected String writeYamlValue(OpenAPI openAPI) throws JsonProcessingException
11611164
* @return the actuator uri
11621165
*/
11631166
protected URI getActuatorURI(String scheme, String host) {
1164-
int port;
1165-
String path;
1167+
final Optional<ActuatorProvider> actuatorProviderOptional = springDocProviders.getActuatorProvider();
11661168
URI uri = null;
1167-
if (springDocProviders.getActuatorProvider().isPresent()) {
1168-
ActuatorProvider actuatorProvider = springDocProviders.getActuatorProvider().get();
1169+
if (actuatorProviderOptional.isPresent()) {
1170+
ActuatorProvider actuatorProvider = actuatorProviderOptional.get();
1171+
int port;
1172+
String path;
11691173
if (ACTUATOR_DEFAULT_GROUP.equals(this.groupName)) {
11701174
port = actuatorProvider.getActuatorPort();
11711175
path = actuatorProvider.getActuatorPath();
@@ -1184,19 +1188,9 @@ protected URI getActuatorURI(String scheme, String host) {
11841188
LOGGER.error("Unable to parse the URL: scheme {}, host {}, port {}, path {}", scheme, host, port, path);
11851189
}
11861190
}
1187-
11881191
return uri;
11891192
}
11901193

1191-
/**
1192-
* Is show actuator boolean.
1193-
*
1194-
* @return the boolean
1195-
*/
1196-
protected boolean isShowActuator() {
1197-
return springDocConfigProperties.isShowActuator() && springDocProviders.getActuatorProvider().isPresent();
1198-
}
1199-
12001194
/**
12011195
* Is actuator rest controller boolean.
12021196
*
@@ -1205,7 +1199,11 @@ protected boolean isShowActuator() {
12051199
* @return the boolean
12061200
*/
12071201
protected boolean isActuatorRestController(String operationPath, HandlerMethod handlerMethod) {
1208-
return isShowActuator() && springDocProviders.getActuatorProvider().get().isRestController(operationPath, handlerMethod);
1202+
Optional<ActuatorProvider> actuatorProviderOptional = springDocProviders.getActuatorProvider();
1203+
boolean isActuatorRestController = false;
1204+
if (actuatorProviderOptional.isPresent())
1205+
isActuatorRestController = actuatorProviderOptional.get().isRestController(operationPath, handlerMethod);
1206+
return springDocConfigProperties.isShowActuator() && isActuatorRestController;
12091207
}
12101208

12111209
/**

springdoc-openapi-common/src/main/java/org/springdoc/core/providers/impl/SpringCloudFunctionProvider.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -252,26 +252,26 @@ private ApiResponses buildResponses(OpenAPI openAPI, FunctionInvocationWrapper f
252252
*/
253253
protected RouterOperation getRouterFunctionPaths(String beanName, RequestMethod requestMethod) {
254254
RouterOperations routerOperations = applicationContext.findAnnotationOnBean(beanName, RouterOperations.class);
255+
RouterOperation routerOperationResult = null;
255256
if (routerOperations == null) {
256257
org.springdoc.core.annotations.RouterOperation routerOperation = applicationContext.findAnnotationOnBean(beanName, org.springdoc.core.annotations.RouterOperation.class);
257258
if (routerOperation != null)
258-
return new RouterOperation(routerOperation);
259+
routerOperationResult = new RouterOperation(routerOperation);
259260
}
260261
else {
261262
org.springdoc.core.annotations.RouterOperation[] routerOperationArray = routerOperations.value();
262263
if (ArrayUtils.isNotEmpty(routerOperationArray)) {
263264
if (routerOperationArray.length == 1)
264-
return new RouterOperation(routerOperationArray[0]);
265+
routerOperationResult = new RouterOperation(routerOperationArray[0]);
265266
else {
266-
for (org.springdoc.core.annotations.RouterOperation routerOperation : routerOperationArray) {
267-
if (Arrays.stream(routerOperation.method()).anyMatch(requestMethod1 -> requestMethod.equals(requestMethod1))) {
268-
return new RouterOperation(routerOperation, requestMethod);
269-
}
270-
}
267+
Optional<org.springdoc.core.annotations.RouterOperation> routerOperationOptional = Arrays.stream(routerOperationArray)
268+
.filter(routerOperation -> Arrays.asList(routerOperation.method()).contains(requestMethod)).findAny();
269+
if (routerOperationOptional.isPresent())
270+
routerOperationResult = new RouterOperation(routerOperationOptional.get(), requestMethod);
271271
}
272272
}
273273
}
274-
return null;
274+
return routerOperationResult;
275275
}
276276

277277

springdoc-openapi-ui/src/main/java/org/springdoc/webmvc/ui/SwaggerConfig.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3939
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
4040
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
41+
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
42+
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
4143
import org.springframework.context.ApplicationContext;
4244
import org.springframework.context.annotation.Bean;
4345
import org.springframework.context.annotation.Configuration;
@@ -55,6 +57,7 @@
5557
@Lazy(false)
5658
@Configuration(proxyBeanMethods = false)
5759
@ConditionalOnProperty(name = SPRINGDOC_SWAGGER_UI_ENABLED, matchIfMissing = true)
60+
@ConditionalOnWebApplication(type = Type.SERVLET)
5861
@ConditionalOnBean(SpringDocConfiguration.class)
5962
public class SwaggerConfig {
6063

springdoc-openapi-webflux-core/src/main/java/org/springdoc/webflux/api/MultipleOpenApiResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public abstract class MultipleOpenApiResource implements InitializingBean {
9797
* @param operationParser the operation parser
9898
* @param springDocConfigProperties the spring doc config properties
9999
*/
100-
public MultipleOpenApiResource(List<GroupedOpenApi> groupedOpenApis,
100+
protected MultipleOpenApiResource(List<GroupedOpenApi> groupedOpenApis,
101101
ObjectFactory<OpenAPIService> defaultOpenAPIBuilder, AbstractRequestService requestBuilder,
102102
GenericResponseService responseBuilder, OperationService operationParser,
103103
SpringDocConfigProperties springDocConfigProperties, SpringDocProviders springDocProviders) {

springdoc-openapi-webflux-core/src/main/java/org/springdoc/webflux/api/OpenApiResource.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.springdoc.core.SpringDocProviders;
4444
import org.springdoc.core.customizers.OpenApiCustomiser;
4545
import org.springdoc.core.customizers.OperationCustomizer;
46+
import org.springdoc.core.providers.ActuatorProvider;
4647
import org.springdoc.webflux.core.visitor.RouterFunctionVisitor;
4748
import reactor.core.publisher.Mono;
4849

@@ -107,7 +108,7 @@ public OpenApiResource(ObjectFactory<OpenAPIService> openAPIBuilderObjectFactory
107108
Optional<List<OpenApiCustomiser>> openApiCustomisers,
108109
SpringDocConfigProperties springDocConfigProperties,
109110
SpringDocProviders springDocProviders) {
110-
super(DEFAULT_GROUP_NAME, openAPIBuilderObjectFactory, requestBuilder, responseBuilder, operationParser, operationCustomizers, openApiCustomisers, springDocConfigProperties,springDocProviders);
111+
super(DEFAULT_GROUP_NAME, openAPIBuilderObjectFactory, requestBuilder, responseBuilder, operationParser, operationCustomizers, openApiCustomisers, springDocConfigProperties, springDocProviders);
111112
}
112113

113114

@@ -152,12 +153,13 @@ protected Mono<String> openapiYaml(ServerHttpRequest serverHttpRequest, String a
152153
@Override
153154
@SuppressWarnings("unchecked")
154155
protected void getPaths(Map<String, Object> restControllers, Locale locale) {
155-
Map<String, RequestMappingHandlerMapping> beansOfTypeRequestMappingHandlerMapping = openAPIService.getContext().getBeansOfType(RequestMappingHandlerMapping.class);
156+
Map<String, RequestMappingHandlerMapping> beansOfTypeRequestMappingHandlerMapping = openAPIService.getContext().getBeansOfType(RequestMappingHandlerMapping.class);
156157
for (RequestMappingHandlerMapping requestMappingHandlerMapping : beansOfTypeRequestMappingHandlerMapping.values()) {
157158
Map<RequestMappingInfo, HandlerMethod> map = requestMappingHandlerMapping.getHandlerMethods();
158159
calculatePath(restControllers, map, locale);
159-
if (isShowActuator()) {
160-
map = springDocProviders.getActuatorProvider().get().getMethods();
160+
Optional<ActuatorProvider> actuatorProviderOptional = springDocProviders.getActuatorProvider();
161+
if (actuatorProviderOptional.isPresent() && springDocConfigProperties.isShowActuator()) {
162+
map = actuatorProviderOptional.get().getMethods();
161163
this.openAPIService.addTag(new HashSet<>(map.values()), getTag());
162164
calculatePath(restControllers, map, locale);
163165
}
@@ -206,7 +208,7 @@ && isFilterCondition(handlerMethod, operationPath, produces, consumes, headers))
206208
*/
207209
private Comparator<Map.Entry<RequestMappingInfo, HandlerMethod>> byReversedRequestMappingInfos() {
208210
return Comparator.<Map.Entry<RequestMappingInfo, HandlerMethod>, String>
209-
comparing(a -> a.getKey().toString())
211+
comparing(a -> a.getKey().toString())
210212
.reversed();
211213
}
212214

@@ -235,7 +237,7 @@ protected void getWebFluxRouterFunctionPaths(Locale locale) {
235237
*/
236238
protected void calculateServerUrl(ServerHttpRequest serverHttpRequest, String apiDocsUrl, Locale locale) {
237239
initOpenAPIBuilder(locale);
238-
String serverUrl = getServerUrl(serverHttpRequest,apiDocsUrl);
240+
String serverUrl = getServerUrl(serverHttpRequest, apiDocsUrl);
239241
openAPIService.setServerBaseUrl(serverUrl);
240242
}
241243

springdoc-openapi-webflux-ui/src/main/java/org/springdoc/webflux/ui/SwaggerConfig.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
4040
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
4141
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
42+
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
43+
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
4244
import org.springframework.boot.autoconfigure.web.reactive.WebFluxProperties;
4345
import org.springframework.context.ApplicationContext;
4446
import org.springframework.context.annotation.Bean;
@@ -58,6 +60,7 @@
5860
@Lazy(false)
5961
@Configuration(proxyBeanMethods = false)
6062
@ConditionalOnProperty(name = SPRINGDOC_SWAGGER_UI_ENABLED, matchIfMissing = true)
63+
@ConditionalOnWebApplication(type = Type.REACTIVE)
6164
@ConditionalOnBean(SpringDocConfiguration.class)
6265
public class SwaggerConfig implements WebFluxConfigurer {
6366

springdoc-openapi-webmvc-core/src/main/java/org/springdoc/webmvc/api/OpenApiResource.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import org.springdoc.core.customizers.OpenApiCustomiser;
4747
import org.springdoc.core.customizers.OperationCustomizer;
4848
import org.springdoc.core.fn.RouterOperation;
49+
import org.springdoc.core.providers.ActuatorProvider;
4950
import org.springdoc.core.providers.RepositoryRestResourceProvider;
5051
import org.springdoc.core.providers.SecurityOAuth2Provider;
5152

@@ -148,8 +149,8 @@ protected void getPaths(Map<String, Object> restControllers, Locale locale) {
148149
Map<String, RequestMappingHandlerMapping> beansOfTypeRequestMappingHandlerMapping = openAPIService.getContext().getBeansOfType(RequestMappingHandlerMapping.class);
149150
for (RequestMappingHandlerMapping requestMappingHandlerMapping : beansOfTypeRequestMappingHandlerMapping.values()) {
150151
Map<RequestMappingInfo, HandlerMethod> map = requestMappingHandlerMapping.getHandlerMethods();
151-
if (springDocProviders.getRepositoryRestResourceProvider().isPresent()) {
152-
RepositoryRestResourceProvider restResourceProvider = springDocProviders.getRepositoryRestResourceProvider().get();
152+
Optional<RepositoryRestResourceProvider> repositoryRestResourceProviderOptional = springDocProviders.getRepositoryRestResourceProvider();
153+
repositoryRestResourceProviderOptional.ifPresent(restResourceProvider -> {
153154
List<RouterOperation> operationList = restResourceProvider.getRouterOperations(openAPIService.getCalculatedOpenAPI(), locale);
154155
calculatePath(operationList, locale);
155156
restResourceProvider.customize(openAPIService.getCalculatedOpenAPI());
@@ -158,19 +159,21 @@ protected void getPaths(Map<String, Object> restControllers, Locale locale) {
158159
Class[] additionalRestClasses = requestMappingMap.values().stream().map(Object::getClass).toArray(Class[]::new);
159160
AbstractOpenApiResource.addRestControllers(additionalRestClasses);
160161
calculatePath(requestMappingMap, mapDataRest, locale);
161-
}
162+
});
162163

163164
calculatePath(restControllers, map, locale);
164165

165-
if (isShowActuator()) {
166-
map = springDocProviders.getActuatorProvider().get().getMethods();
166+
Optional<ActuatorProvider> actuatorProviderOptional = springDocProviders.getActuatorProvider();
167+
if (actuatorProviderOptional.isPresent() && springDocConfigProperties.isShowActuator()) {
168+
map = actuatorProviderOptional.get().getMethods();
167169
this.openAPIService.addTag(new HashSet<>(map.values()), getTag());
168170
calculatePath(restControllers, map, locale);
169171
}
170172
}
171173

172-
if (springDocProviders.getSpringSecurityOAuth2Provider().isPresent()) {
173-
SecurityOAuth2Provider securityOAuth2Provider = springDocProviders.getSpringSecurityOAuth2Provider().get();
174+
Optional<SecurityOAuth2Provider> securityOAuth2ProviderOptional = springDocProviders.getSpringSecurityOAuth2Provider();
175+
if (securityOAuth2ProviderOptional.isPresent()) {
176+
SecurityOAuth2Provider securityOAuth2Provider = securityOAuth2ProviderOptional.get();
174177
Map<RequestMappingInfo, HandlerMethod> mapOauth = securityOAuth2Provider.getHandlerMethods();
175178
Map<String, Object> requestMappingMapSec = securityOAuth2Provider.getFrameworkEndpoints();
176179
Class[] additionalRestClasses = requestMappingMapSec.values().stream().map(Object::getClass).toArray(Class[]::new);

0 commit comments

Comments
 (0)