Skip to content

Commit 5732561

Browse files
author
bnasslahsen
committed
code reivew
1 parent 8242518 commit 5732561

File tree

7 files changed

+42
-22
lines changed

7 files changed

+42
-22
lines changed

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@
4040
import java.util.concurrent.Executors;
4141
import java.util.stream.Collectors;
4242

43-
import javax.annotation.PostConstruct;
44-
4543
import com.fasterxml.jackson.annotation.JsonView;
4644
import com.fasterxml.jackson.databind.ObjectMapper;
4745
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;

springdoc-openapi-common/src/main/java/org/springdoc/core/AbstractRequestBuilder.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -355,13 +355,26 @@ protected Parameter customiseParameter(Parameter parameter, ParameterInfo parame
355355
public boolean isParamToIgnore(MethodParameter parameter) {
356356
if (SpringDocAnnotationsUtils.isAnnotationToIgnore(parameter))
357357
return true;
358-
if ((parameter.getParameterAnnotation(PathVariable.class) != null && parameter.getParameterAnnotation(PathVariable.class).required())
359-
|| (parameter.getParameterAnnotation(RequestParam.class) != null && parameter.getParameterAnnotation(RequestParam.class).required())
360-
|| (parameter.getParameterAnnotation(org.springframework.web.bind.annotation.RequestBody.class) != null && parameter.getParameterAnnotation(org.springframework.web.bind.annotation.RequestBody.class).required()))
358+
if (isRequiredAnnotation(parameter))
361359
return false;
362360
return isRequestTypeToIgnore(parameter.getParameterType());
363361
}
364362

363+
/**
364+
* Is required annotation boolean.
365+
*
366+
* @param parameter the parameter
367+
* @return the boolean
368+
*/
369+
private boolean isRequiredAnnotation(MethodParameter parameter) {
370+
RequestParam requestParam = parameter.getParameterAnnotation(RequestParam.class);
371+
PathVariable pathVariable = parameter.getParameterAnnotation(PathVariable.class);
372+
org.springframework.web.bind.annotation.RequestBody requestBody = parameter.getParameterAnnotation(org.springframework.web.bind.annotation.RequestBody.class);
373+
return (requestParam != null && requestParam.required())
374+
|| (pathVariable != null && pathVariable.required())
375+
|| (requestBody != null && requestBody.required());
376+
}
377+
365378
/**
366379
* Sets params.
367380
*

springdoc-openapi-common/src/main/java/org/springdoc/core/GenericResponseBuilder.java

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import java.util.LinkedHashMap;
3131
import java.util.List;
3232
import java.util.Map;
33+
import java.util.Objects;
3334
import java.util.Optional;
3435
import java.util.Set;
3536
import java.util.stream.Collectors;
@@ -185,7 +186,7 @@ public void buildGenericResponse(Components components, Map<String, Object> find
185186
private Map<String, ApiResponse> computeResponseFromDoc(Components components, MethodParameter methodParameter, ApiResponses apiResponsesOp,
186187
MethodAttributes methodAttributes) {
187188
// Parsing documentation, if present
188-
Set<io.swagger.v3.oas.annotations.responses.ApiResponse> responsesArray = getApiResponses(methodParameter.getMethod());
189+
Set<io.swagger.v3.oas.annotations.responses.ApiResponse> responsesArray = getApiResponses(Objects.requireNonNull(methodParameter.getMethod()));
189190
if (!responsesArray.isEmpty()) {
190191
methodAttributes.setWithApiResponseDoc(true);
191192
for (io.swagger.v3.oas.annotations.responses.ApiResponse apiResponseAnnotations : responsesArray) {
@@ -271,7 +272,7 @@ private void buildGenericApiResponses(Components components, MethodParameter met
271272
else {
272273
// Use response parameters with no description filled - No documentation
273274
// available
274-
String httpCode = evaluateResponseStatus(methodParameter.getMethod(), methodParameter.getMethod().getClass(), true);
275+
String httpCode = evaluateResponseStatus(methodParameter.getMethod(), Objects.requireNonNull(methodParameter.getMethod()).getClass(), true);
275276
ApiResponse apiResponse = methodAttributes.getGenericMapResponse().containsKey(httpCode) ? methodAttributes.getGenericMapResponse().get(httpCode)
276277
: new ApiResponse();
277278
if (httpCode != null)
@@ -304,7 +305,7 @@ private void buildApiResponses(Components components, MethodParameter methodPara
304305
else {
305306
// Use response parameters with no description filled - No documentation
306307
// available
307-
String httpCode = evaluateResponseStatus(methodParameter.getMethod(), methodParameter.getMethod().getClass(), false);
308+
String httpCode = evaluateResponseStatus(methodParameter.getMethod(), Objects.requireNonNull(methodParameter.getMethod()).getClass(), false);
308309
ApiResponse apiResponse = new ApiResponse();
309310
if (httpCode != null)
310311
buildApiResponses(components, methodParameter, apiResponsesOp, methodAttributes, httpCode, apiResponse, false);
@@ -546,19 +547,23 @@ private Map<String, ApiResponse> getGenericMapResponse(Class<?> beanType) {
546547
*/
547548
private boolean isValidHttpCode(String httpCode, MethodParameter methodParameter) {
548549
boolean result = false;
549-
Set<io.swagger.v3.oas.annotations.responses.ApiResponse> responseSet = getApiResponses(methodParameter.getMethod());
550-
if (isHttpCodePresent(httpCode, responseSet))
551-
result = true;
552-
else if (AnnotatedElementUtils.findMergedAnnotation(methodParameter.getMethod(),
553-
io.swagger.v3.oas.annotations.Operation.class) != null) {
554-
io.swagger.v3.oas.annotations.Operation apiOperation = AnnotatedElementUtils.findMergedAnnotation(methodParameter.getMethod(),
555-
io.swagger.v3.oas.annotations.Operation.class);
556-
responseSet = new HashSet<>(Arrays.asList(apiOperation.responses()));
550+
final Method method = methodParameter.getMethod();
551+
if(method!=null){
552+
Set<io.swagger.v3.oas.annotations.responses.ApiResponse> responseSet = getApiResponses(method);
557553
if (isHttpCodePresent(httpCode, responseSet))
558554
result = true;
555+
else {
556+
final io.swagger.v3.oas.annotations.Operation apiOperation = AnnotatedElementUtils.findMergedAnnotation(method,
557+
io.swagger.v3.oas.annotations.Operation.class);
558+
if (apiOperation != null) {
559+
responseSet = new HashSet<>(Arrays.asList(apiOperation.responses()));
560+
if (isHttpCodePresent(httpCode, responseSet))
561+
result = true;
562+
}
563+
else if (httpCode.equals(evaluateResponseStatus(method, method.getClass(), false)))
564+
result = true;
565+
}
559566
}
560-
else if (httpCode.equals(evaluateResponseStatus(methodParameter.getMethod(), methodParameter.getMethod().getClass(), false)))
561-
result = true;
562567
return result;
563568
}
564569

springdoc-openapi-common/src/main/java/org/springdoc/core/ReturnTypeParser.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.lang.reflect.ParameterizedType;
2424
import java.lang.reflect.Type;
2525
import java.lang.reflect.TypeVariable;
26+
import java.util.Objects;
2627

2728
import org.springframework.core.MethodParameter;
2829
import org.springframework.core.ResolvableType;
@@ -66,7 +67,7 @@ else if (genericType instanceof ParameterizedType) {
6667
else if (resolvedType.hasGenerics()) {
6768
ResolvableType[] resolvableTypes = resolvedType.getGenerics();
6869
resolveType(resolvableTypes, contextClass);
69-
return ResolvableType.forClassWithGenerics(resolvedType.getRawClass(), resolvableTypes).getType();
70+
return ResolvableType.forClassWithGenerics(Objects.requireNonNull(resolvedType.getRawClass()), resolvableTypes).getType();
7071
}
7172
}
7273
}
@@ -89,7 +90,7 @@ static void resolveType(ResolvableType[] resolvableTypes, Class<?> contextClass)
8990
else if (resolvableTypes[i].hasGenerics()) {
9091
resolveType(resolvableTypes[i].getGenerics(), contextClass);
9192
if (resolvableTypes[i].getRawClass() != null)
92-
resolvableTypes[i] = ResolvableType.forClassWithGenerics(resolvableTypes[i].getRawClass(), resolvableTypes[i].getGenerics());
93+
resolvableTypes[i] = ResolvableType.forClassWithGenerics(Objects.requireNonNull(resolvableTypes[i].getRawClass()), resolvableTypes[i].getGenerics());
9394
}
9495
}
9596
}

springdoc-openapi-kotlin/src/main/java/org/springdoc/kotlin/KotlinCoroutinesReturnTypeParser.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public class KotlinCoroutinesReturnTypeParser implements ReturnTypeParser {
4343
public Type getReturnType(MethodParameter methodParameter) {
4444
Method method = methodParameter.getMethod();
4545
Type returnType = Object.class;
46+
assert method != null;
4647
Optional<Parameter> continuationParameter = Arrays.stream(method.getParameters())
4748
.filter(parameter -> parameter.getType().getCanonicalName().equals(Continuation.class.getCanonicalName()))
4849
.findFirst();

springdoc-openapi-security/src/main/java/org/springdoc/security/SpringSecurityOAuth2Provider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
package org.springdoc.security;
2222

2323
import java.util.Map;
24+
import java.util.Objects;
2425

2526
import org.springdoc.core.SecurityOAuth2Provider;
2627

@@ -65,7 +66,7 @@ public Map<RequestMappingInfo, HandlerMethod> getHandlerMethods() {
6566

6667
@Override
6768
public Map getFrameworkEndpoints() {
68-
return oauth2EndpointHandlerMapping.getApplicationContext().getBeansWithAnnotation(FrameworkEndpoint.class);
69+
return Objects.requireNonNull(oauth2EndpointHandlerMapping.getApplicationContext()).getBeansWithAnnotation(FrameworkEndpoint.class);
6970
}
7071

7172
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.util.LinkedHashMap;
2525
import java.util.List;
2626
import java.util.Map;
27+
import java.util.Objects;
2728
import java.util.Optional;
2829
import java.util.Set;
2930

@@ -215,7 +216,7 @@ && isPackageToScan(handlerMethod.getBeanType().getPackage()) && isPathToMatch(op
215216
*/
216217
protected void getWebFluxRouterFunctionPaths() {
217218
ApplicationContext applicationContext = requestMappingHandlerMapping.getApplicationContext();
218-
Map<String, RouterFunction> routerBeans = applicationContext.getBeansOfType(RouterFunction.class);
219+
Map<String, RouterFunction> routerBeans = Objects.requireNonNull(applicationContext).getBeansOfType(RouterFunction.class);
219220
for (Map.Entry<String, RouterFunction> entry : routerBeans.entrySet()) {
220221
RouterFunction routerFunction = entry.getValue();
221222
RouterFunctionVisitor routerFunctionVisitor = new RouterFunctionVisitor();

0 commit comments

Comments
 (0)