Skip to content

Commit f39b640

Browse files
committed
code review
1 parent ee324fe commit f39b640

File tree

6 files changed

+52
-29
lines changed

6 files changed

+52
-29
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ public GroupedOpenApi build() {
435435
*
436436
* @param openApiCustomiser the open api customiser
437437
*/
438-
public void addOpenApiCustomiser(OpenApiCustomiser openApiCustomiser) {
438+
public void addOpenApiCustomizer(OpenApiCustomiser openApiCustomiser) {
439439
this.openApiCustomisers.add(openApiCustomiser);
440440
}
441441
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -357,8 +357,8 @@ OpenApiCustomiser propertiesResolverForSchema(PropertyResolverUtils propertyReso
357357
@Conditional(CacheOrGroupedOpenApiCondition.class)
358358
@ConditionalOnClass(name = BINDRESULT_CLASS)
359359
@Lazy(false)
360-
static BeanFactoryPostProcessor springdocBeanFactoryPostProcessor(List<GroupedOpenApi> groupedOpenApis) {
361-
return new SpringdocBeanFactoryConfigurer(groupedOpenApis);
360+
static BeanFactoryPostProcessor springdocBeanFactoryPostProcessor() {
361+
return new SpringdocBeanFactoryConfigurer();
362362
}
363363

364364
/**

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,18 @@
4747
*/
4848
public class SpringdocActuatorBeanFactoryConfigurer extends SpringdocBeanFactoryConfigurer{
4949

50+
/**
51+
* The Grouped open apis.
52+
*/
53+
private List<GroupedOpenApi> groupedOpenApis;
54+
5055
/**
5156
* Instantiates a new Springdoc actuator bean factory configurer.
5257
*
5358
* @param groupedOpenApis the grouped open apis
5459
*/
5560
public SpringdocActuatorBeanFactoryConfigurer(List<GroupedOpenApi> groupedOpenApis) {
56-
super(groupedOpenApis);
61+
this.groupedOpenApis = groupedOpenApis;
5762
}
5863

5964
@Override

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

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import java.util.stream.Collectors;
2828

2929
import io.swagger.v3.oas.models.OpenAPI;
30-
import org.springdoc.core.customizers.OpenApiCustomiser;
3130

3231
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
3332
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
@@ -53,20 +52,6 @@ public class SpringdocBeanFactoryConfigurer implements EnvironmentAware, BeanFac
5352
@Nullable
5453
protected Environment environment;
5554

56-
/**
57-
* The Grouped open apis.
58-
*/
59-
protected List<GroupedOpenApi> groupedOpenApis;
60-
61-
/**
62-
* Instantiates a new Springdoc bean factory configurer.
63-
*
64-
* @param groupedOpenApis the grouped open apis
65-
*/
66-
public SpringdocBeanFactoryConfigurer(List<GroupedOpenApi> groupedOpenApis) {
67-
this.groupedOpenApis = groupedOpenApis;
68-
}
69-
7055
@Override
7156
public void setEnvironment(Environment environment) {
7257
this.environment = environment;
@@ -78,7 +63,7 @@ public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
7863
.bind(SPRINGDOC_PREFIX, SpringDocConfigProperties.class);
7964
if (result.isBound()) {
8065
SpringDocConfigProperties springDocGroupConfig = result.get();
81-
List<GroupedOpenApi> groupedOpenApisList = springDocGroupConfig.getGroupConfigs().stream()
66+
List<GroupedOpenApi> groupedOpenApis = springDocGroupConfig.getGroupConfigs().stream()
8267
.map(elt -> {
8368
GroupedOpenApi.Builder builder = GroupedOpenApi.builder();
8469
if (!CollectionUtils.isEmpty(elt.getPackagesToScan()))
@@ -88,13 +73,7 @@ public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
8873
return builder.group(elt.getGroup()).build();
8974
})
9075
.collect(Collectors.toList());
91-
groupedOpenApisList.forEach(elt -> beanFactory.registerSingleton(elt.getGroup(), elt));
92-
this.groupedOpenApis.addAll(groupedOpenApisList);
93-
94-
if (springDocGroupConfig.getApiDocs().isResolveSchemaProperties()) {
95-
OpenApiCustomiser propertiesResolverForSchemaCustomizer = (OpenApiCustomiser) beanFactory.getBean("propertiesResolverForSchema");
96-
this.groupedOpenApis.forEach(groupedOpenApi -> groupedOpenApi.addOpenApiCustomiser(propertiesResolverForSchemaCustomizer));
97-
}
76+
groupedOpenApis.forEach(elt -> beanFactory.registerSingleton(elt.getGroup(), elt));
9877
}
9978
initBeanFactoryPostProcessor(beanFactory);
10079
}
@@ -110,4 +89,5 @@ public static void initBeanFactoryPostProcessor(ConfigurableListableBeanFactory
11089
for (String beanName : beanFactory.getBeanNamesForType(OpenAPI.class))
11190
beanFactory.getBeanDefinition(beanName).setScope(SCOPE_PROTOTYPE);
11291
}
92+
11393
}

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

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,21 @@
3434
import org.springdoc.core.SpringDocConfigProperties;
3535
import org.springdoc.core.SpringDocConfigProperties.GroupConfig;
3636
import org.springdoc.core.SpringDocProviders;
37+
import org.springdoc.core.customizers.OpenApiCustomiser;
3738

39+
import org.springframework.beans.BeansException;
3840
import org.springframework.beans.factory.InitializingBean;
3941
import org.springframework.beans.factory.ObjectFactory;
42+
import org.springframework.context.ApplicationContext;
43+
import org.springframework.context.ApplicationContextAware;
4044

4145
import static org.springdoc.core.Constants.ACTUATOR_DEFAULT_GROUP;
4246

4347
/**
4448
* The type Multiple open api resource.
4549
* @author bnasslahsen
4650
*/
47-
public abstract class MultipleOpenApiResource implements InitializingBean {
51+
public abstract class MultipleOpenApiResource implements InitializingBean, ApplicationContextAware {
4852

4953
/**
5054
* The Grouped open apis.
@@ -86,6 +90,11 @@ public abstract class MultipleOpenApiResource implements InitializingBean {
8690
*/
8791
private final SpringDocProviders springDocProviders;
8892

93+
/**
94+
* The Application context.
95+
*/
96+
protected ApplicationContext applicationContext;
97+
8998

9099
/**
91100
* Instantiates a new Multiple open api resource.
@@ -96,6 +105,7 @@ public abstract class MultipleOpenApiResource implements InitializingBean {
96105
* @param responseBuilder the response builder
97106
* @param operationParser the operation parser
98107
* @param springDocConfigProperties the spring doc config properties
108+
* @param springDocProviders the spring doc providers
99109
*/
100110
protected MultipleOpenApiResource(List<GroupedOpenApi> groupedOpenApis,
101111
ObjectFactory<OpenAPIService> defaultOpenAPIBuilder, AbstractRequestService requestBuilder,
@@ -113,6 +123,10 @@ protected MultipleOpenApiResource(List<GroupedOpenApi> groupedOpenApis,
113123

114124
@Override
115125
public void afterPropertiesSet() {
126+
if (springDocConfigProperties.getApiDocs().isResolveSchemaProperties()) {
127+
OpenApiCustomiser propertiesResolverForSchemaCustomizer = (OpenApiCustomiser) applicationContext.getBean("propertiesResolverForSchema");
128+
this.groupedOpenApis.forEach(groupedOpenApi -> groupedOpenApi.addOpenApiCustomizer(propertiesResolverForSchemaCustomizer));
129+
}
116130
this.groupedOpenApiResources = groupedOpenApis.stream()
117131
.collect(Collectors.toMap(GroupedOpenApi::getGroup, item ->
118132
{
@@ -168,4 +182,9 @@ protected OpenApiResource getOpenApiResourceOrThrow(String group) {
168182
}
169183
return openApiResource;
170184
}
185+
186+
@Override
187+
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
188+
this.applicationContext = applicationContext;
189+
}
171190
}

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

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,21 @@
3434
import org.springdoc.core.SpringDocConfigProperties;
3535
import org.springdoc.core.SpringDocConfigProperties.GroupConfig;
3636
import org.springdoc.core.SpringDocProviders;
37+
import org.springdoc.core.customizers.OpenApiCustomiser;
3738

39+
import org.springframework.beans.BeansException;
3840
import org.springframework.beans.factory.InitializingBean;
3941
import org.springframework.beans.factory.ObjectFactory;
42+
import org.springframework.context.ApplicationContext;
43+
import org.springframework.context.ApplicationContextAware;
4044

4145
import static org.springdoc.core.Constants.ACTUATOR_DEFAULT_GROUP;
4246

4347
/**
4448
* The type Web mvc multiple open api resource.
4549
* @author bnasslahsen
4650
*/
47-
public abstract class MultipleOpenApiResource implements InitializingBean {
51+
public abstract class MultipleOpenApiResource implements InitializingBean, ApplicationContextAware {
4852

4953
/**
5054
* The Grouped open apis.
@@ -86,6 +90,11 @@ public abstract class MultipleOpenApiResource implements InitializingBean {
8690
*/
8791
private Map<String, OpenApiResource> groupedOpenApiResources;
8892

93+
/**
94+
* The Application context.
95+
*/
96+
protected ApplicationContext applicationContext;
97+
8998
/**
9099
* Instantiates a new Multiple open api resource.
91100
*
@@ -95,6 +104,7 @@ public abstract class MultipleOpenApiResource implements InitializingBean {
95104
* @param responseBuilder the response builder
96105
* @param operationParser the operation parser
97106
* @param springDocConfigProperties the spring doc config properties
107+
* @param springDocProviders the spring doc providers
98108
*/
99109
public MultipleOpenApiResource(List<GroupedOpenApi> groupedOpenApis,
100110
ObjectFactory<OpenAPIService> defaultOpenAPIBuilder, AbstractRequestService requestBuilder,
@@ -112,6 +122,10 @@ public MultipleOpenApiResource(List<GroupedOpenApi> groupedOpenApis,
112122

113123
@Override
114124
public void afterPropertiesSet() {
125+
if (springDocConfigProperties.getApiDocs().isResolveSchemaProperties()) {
126+
OpenApiCustomiser propertiesResolverForSchemaCustomizer = (OpenApiCustomiser) applicationContext.getBean("propertiesResolverForSchema");
127+
this.groupedOpenApis.forEach(groupedOpenApi -> groupedOpenApi.addOpenApiCustomizer(propertiesResolverForSchemaCustomizer));
128+
}
115129
this.groupedOpenApiResources = groupedOpenApis.stream()
116130
.collect(Collectors.toMap(GroupedOpenApi::getGroup, item ->
117131
{
@@ -168,4 +182,9 @@ protected OpenApiResource getOpenApiResourceOrThrow(String group) {
168182
}
169183
return openApiResource;
170184
}
185+
186+
@Override
187+
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
188+
this.applicationContext = applicationContext;
189+
}
171190
}

0 commit comments

Comments
 (0)