Added api to contribute defaults · JavaCoder-Lambert/springfox@0decea3 · GitHub
Skip to content

Commit 0decea3

Browse files
committed
Added api to contribute defaults
The earlier defaults plugin API was janky and was not conducive to layering defaults and extensible. Added the apply API so that defaults can be contirbuted to via plugins (3354)
1 parent 86e8ec9 commit 0decea3

6 files changed

Lines changed: 50 additions & 7 deletions

File tree

springfox-spi/src/main/java/springfox/documentation/spi/service/DefaultsProviderPlugin.java

Lines changed: 12 additions & 2 deletions

springfox-spring-web/src/main/java/springfox/documentation/spring/web/plugins/DefaultConfiguration.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,20 @@ public DocumentationContextBuilder create(DocumentationType documentationType) {
5858
.selector(ApiSelector.DEFAULT);
5959
}
6060

61+
@Override
62+
public DocumentationContextBuilder apply(DocumentationContextBuilder builder) {
63+
return builder.operationOrdering(defaults.operationOrdering())
64+
.apiDescriptionOrdering(defaults.apiDescriptionOrdering())
65+
.apiListingReferenceOrdering(defaults.apiListingReferenceOrdering())
66+
.additionalIgnorableTypes(defaults.defaultIgnorableParameterTypes())
67+
.rules(defaults.defaultRules(typeResolver))
68+
.defaultResponses(defaults.defaultResponses())
69+
.pathProvider(pathProvider)
70+
.typeResolver(typeResolver)
71+
.enableUrlTemplating(false)
72+
.selector(ApiSelector.DEFAULT);
73+
}
74+
6175
@Override
6276
public boolean supports(DocumentationType delimiter) {
6377
return true;

springfox-spring-web/src/main/java/springfox/documentation/spring/web/plugins/DocumentationPluginsManager.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,12 @@ private DocumentationPlugin defaultDocumentationPlugin() {
171171
return new Docket(DocumentationType.OAS_30);
172172
}
173173

174-
public DocumentationContextBuilder createContextBuilder(
174+
public DocumentationContextBuilder applyDefaults(
175175
DocumentationType documentationType,
176-
DefaultsProviderPlugin defaultConfiguration) {
177-
return defaultsProviders.getPluginOrDefaultFor(documentationType, defaultConfiguration)
178-
.create(documentationType);
176+
DocumentationContextBuilder builder) {
177+
defaultsProviders.getPluginsFor(documentationType)
178+
.forEach(each -> each.apply(builder));
179+
return builder;
179180
}
180181

181182
public Function<String, String> decorator(final PathContext context) {

springfox-spring-web/src/test/groovy/springfox/documentation/spring/web/plugins/DocumentationPluginsBootstrapperSpec.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class DocumentationPluginsBootstrapperSpec extends Specification {
5050
new MockEnvironment())
5151

5252
def setup() {
53-
pluginManager.createContextBuilder(_, _) >> new DocumentationContextBuilder(DocumentationType.SWAGGER_12)
53+
pluginManager.applyDefaults(_, _) >> new DocumentationContextBuilder(DocumentationType.SWAGGER_12)
5454
handlerProvider.requestHandlers() >> []
5555
apiGroup.scan(_) >> group
5656
group.getGroupName() >> "default"

springfox-swagger-common/src/test/groovy/springfox/documentation/swagger/readers/parameter/ModelAttributeParameterExpanderSpec.groovy

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,15 @@ class ModelAttributeParameterExpanderSpec extends DocumentationContextSpec imple
108108
.rules(rules)
109109
}
110110

111+
@Override
112+
DocumentationContextBuilder apply(DocumentationContextBuilder builder) {
113+
List<AlternateTypeRule> rules = new ArrayList<>()
114+
rules.add(newRule(typeResolver.resolve(Map.class, String.class, String.class),
115+
typeResolver.resolve(Object.class)))
116+
rules.add(newMapRule(WildcardType.class, WildcardType.class))
117+
return builder.rules(rules)
118+
}
119+
111120
@Override
112121
boolean supports(DocumentationType delimiter) {
113122
return true

springfox-swagger1/src/main/java/springfox/documentation/swagger1/web/SwaggerDefaultConfiguration.java

Lines changed: 9 additions & 0 deletions

0 commit comments

Comments
 (0)