Skip to content

Commit 6c2f387

Browse files
authored
Merge pull request #2 from springdoc/master
Update
2 parents 34479d6 + 41c131c commit 6c2f387

File tree

19 files changed

+326
-40
lines changed

19 files changed

+326
-40
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7-
## [1.2.18] - 2019-12-08
7+
## [Unreleased]
8+
89
### Addded
910
- Globally exclude params for webflux #228
1011

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.springdoc.core;
22

33
import com.fasterxml.jackson.annotation.JsonView;
4+
import io.swagger.v3.oas.annotations.Hidden;
45
import io.swagger.v3.oas.models.Components;
56
import io.swagger.v3.oas.models.Operation;
67
import io.swagger.v3.oas.models.media.Schema;
@@ -9,6 +10,7 @@
910
import org.springdoc.core.RequestInfo.ParameterType;
1011
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
1112
import org.springframework.core.annotation.AnnotatedElementUtils;
13+
import org.springframework.core.annotation.AnnotationUtils;
1214
import org.springframework.util.CollectionUtils;
1315
import org.springframework.web.bind.annotation.*;
1416
import org.springframework.web.method.HandlerMethod;
@@ -32,6 +34,7 @@ public abstract class AbstractRequestBuilder {
3234
private final AbstractParameterBuilder parameterBuilder;
3335
private final RequestBodyBuilder requestBodyBuilder;
3436
private final OperationBuilder operationBuilder;
37+
public static List<Class> PARAM_TYPES_TO_IGNORE = new ArrayList<>();
3538

3639
protected AbstractRequestBuilder(AbstractParameterBuilder parameterBuilder, RequestBodyBuilder requestBodyBuilder,
3740
OperationBuilder operationBuilder) {
@@ -41,7 +44,9 @@ protected AbstractRequestBuilder(AbstractParameterBuilder parameterBuilder, Requ
4144
this.operationBuilder = operationBuilder;
4245
}
4346

44-
protected abstract boolean isParamTypeToIgnore(Class<?> paramType);
47+
protected boolean isParamTypeToIgnore(Class<?> paramType){
48+
return false;
49+
}
4550

4651
public Operation build(Components components, HandlerMethod handlerMethod, RequestMethod requestMethod,
4752
Operation operation, MethodAttributes methodAttributes) {
@@ -110,7 +115,7 @@ protected boolean isParamToIgnore(java.lang.reflect.Parameter parameter) {
110115
if (parameter.isAnnotationPresent(PathVariable.class)) {
111116
return false;
112117
}
113-
return parameterBuilder.isAnnotationToIgnore(parameter) || isParamTypeToIgnore(parameter.getType());
118+
return parameterBuilder.isAnnotationToIgnore(parameter) || isParamTypeToIgnore(parameter.getType()) || PARAM_TYPES_TO_IGNORE.contains(parameter.getType()) || (AnnotationUtils.findAnnotation(parameter.getType(), Hidden.class) != null);
114119
}
115120

116121
private void setParams(Operation operation, List<Parameter> operationParameters, RequestBodyInfo requestBodyInfo) {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public final class Constants {
2222
public static final String APPLICATION_OPENAPI_YAML = "application/vnd.oai.openapi";
2323
public static final String DEFAULT_SWAGGER_UI_PATH = DEFAULT_PATH_SEPARATOR + "swagger-ui.html";
2424
public static final String SWAGGER_UI_PATH = "${springdoc.swagger-ui.path:#{T(org.springdoc.core.Constants).DEFAULT_SWAGGER_UI_PATH}}";
25+
public static final String MVC_SERVLET_PATH ="${spring.mvc.servlet.path:#{null}}";
2526
public static final String GET_METHOD = "get";
2627
public static final String POST_METHOD = "post";
2728
public static final String PUT_METHOD = "put";

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,11 @@ public class SwaggerUiConfigProperties {
9595
*/
9696
private List<String> supportedSubmitMethods;
9797

98+
/**
99+
* OAuth redirect URL.
100+
*/
101+
private String oauth2RedirectUrl;
102+
98103

99104
public Map<String, String> getConfigParameters() {
100105
final Map<String, String> params = new TreeMap<>();
@@ -115,6 +120,7 @@ public Map<String, String> getConfigParameters() {
115120
put("tagsSorter", tagsSorter, params);
116121
if (!CollectionUtils.isEmpty(supportedSubmitMethods))
117122
put("supportedSubmitMethods", supportedSubmitMethods.toString(), params);
123+
put("oauth2RedirectUrl", oauth2RedirectUrl, params);
118124
return params;
119125
}
120126

@@ -271,4 +277,12 @@ public List<String> getSupportedSubmitMethods() {
271277
public void setSupportedSubmitMethods(List<String> supportedSubmitMethods) {
272278
this.supportedSubmitMethods = supportedSubmitMethods;
273279
}
280+
281+
public String getOauth2RedirectUrl() {
282+
return oauth2RedirectUrl;
283+
}
284+
285+
public void setOauth2RedirectUrl(String oauth2RedirectUrl) {
286+
this.oauth2RedirectUrl = oauth2RedirectUrl;
287+
}
274288
}

springdoc-openapi-kotlin/src/main/java/org/springdoc/core/KotlinCoroutinesRequestBuilder.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,19 @@
66
import org.springframework.stereotype.Component;
77
import org.springframework.web.method.HandlerMethod;
88

9-
import java.util.List;
10-
119
@Primary
1210
@Component
1311
public class KotlinCoroutinesRequestBuilder extends AbstractRequestBuilder {
1412

15-
private final List<AbstractRequestBuilder> requestBuilders;
1613

1714
public KotlinCoroutinesRequestBuilder(AbstractParameterBuilder parameterBuilder, RequestBodyBuilder requestBodyBuilder,
18-
OperationBuilder operationBuilder, List<AbstractRequestBuilder> requestBuilders) {
15+
OperationBuilder operationBuilder) {
1916
super(parameterBuilder, requestBodyBuilder, operationBuilder);
20-
this.requestBuilders = requestBuilders;
2117
}
2218

2319
@Override
2420
protected boolean isParamTypeToIgnore(Class<?> paramType) {
25-
return paramType.isAssignableFrom(Continuation.class) || requestBuilders.stream().anyMatch(builder -> builder.isParamTypeToIgnore(paramType));
21+
return paramType.isAssignableFrom(Continuation.class);
2622
}
2723

2824
@Override

springdoc-openapi-security/src/main/java/org/springdoc/core/IgnoredParameterAnnotationsWithSecurity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.springdoc.core;
22

33
import org.springframework.context.annotation.Primary;
4+
import org.springframework.security.core.Authentication;
45
import org.springframework.security.core.annotation.AuthenticationPrincipal;
56
import org.springframework.stereotype.Component;
67

@@ -12,5 +13,4 @@ public class IgnoredParameterAnnotationsWithSecurity implements IgnoredParameter
1213
public boolean isAnnotationToIgnore(java.lang.reflect.Parameter parameter) {
1314
return parameter.isAnnotationPresent(AuthenticationPrincipal.class);
1415
}
15-
1616
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.springdoc.core;
2+
3+
import org.springframework.security.core.Authentication;
4+
import org.springframework.stereotype.Component;
5+
6+
@Component
7+
public class IgnoredParameterTypes {
8+
static {
9+
AbstractRequestBuilder.PARAM_TYPES_TO_IGNORE.add(Authentication.class);
10+
}
11+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package test.org.springdoc.api.app2.app1;
2+
3+
import org.springframework.web.bind.annotation.GetMapping;
4+
import org.springframework.web.bind.annotation.RequestBody;
5+
import org.springframework.web.bind.annotation.RestController;
6+
7+
@RestController
8+
public class HelloController {
9+
10+
11+
@GetMapping
12+
public Object doPost(@RequestBody String req, org.springframework.security.core.Authentication auth) {
13+
return null;
14+
}
15+
16+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package test.org.springdoc.api.app2.app1;
2+
3+
import test.org.springdoc.api.AbstractSpringDocTest;
4+
5+
public class SpringDocApp2Test extends AbstractSpringDocTest {
6+
7+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package test.org.springdoc.api.app2.app1;
2+
3+
import io.swagger.v3.oas.models.OpenAPI;
4+
import io.swagger.v3.oas.models.info.Info;
5+
import io.swagger.v3.oas.models.info.License;
6+
import org.springframework.boot.SpringApplication;
7+
import org.springframework.boot.autoconfigure.SpringBootApplication;
8+
import org.springframework.context.annotation.Bean;
9+
import org.springframework.context.annotation.ComponentScan;
10+
11+
@SpringBootApplication
12+
@ComponentScan(basePackages = {"org.springdoc", "test.org.springdoc.api.app2"})
13+
public class SpringDocTestApp {
14+
public static void main(String[] args) {
15+
SpringApplication.run(SpringDocTestApp.class, args);
16+
}
17+
18+
@Bean
19+
public OpenAPI customOpenAPI() {
20+
return new OpenAPI()
21+
.info(new Info().title("Security API").version("v1")
22+
.license(new License().name("Apache 2.0").url("http://springdoc.org")));
23+
}
24+
}

0 commit comments

Comments
 (0)