Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 90ccae6

Browse files
committed
Fix for issue 1916 where document level consumes and produces media types are always added to resource level consumes and produces media types. This change won't add those media types anymore but will make sure default media types are set when no document level media types are defined.
1 parent 7ebc417 commit 90ccae6

2 files changed

Lines changed: 17 additions & 18 deletions

File tree

springfox-spi/src/main/java/springfox/documentation/spi/service/contexts/OperationContext.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import com.google.common.base.Predicate;
2525
import com.google.common.collect.ImmutableSet;
2626
import com.google.common.collect.Iterables;
27-
import com.google.common.collect.Sets;
2827
import org.springframework.http.HttpMethod;
2928
import org.springframework.http.MediaType;
3029
import org.springframework.web.bind.annotation.RequestMethod;
@@ -43,7 +42,6 @@
4342

4443
import static com.google.common.collect.Lists.*;
4544
import static springfox.documentation.builders.BuilderDefaults.*;
46-
import static springfox.documentation.service.MediaTypes.*;
4745

4846
public class OperationContext {
4947
private final OperationBuilder operationBuilder;
@@ -119,14 +117,12 @@ public ResolvedType alternateFor(ResolvedType resolved) {
119117
return getAlternateTypeProvider().alternateFor(resolved);
120118
}
121119

122-
public Set<MediaType> produces() {
123-
return Sets.union(requestContext.produces(),
124-
toMediaTypes(getDocumentationContext().getProduces()));
120+
public Set<? extends MediaType> produces() {
121+
return requestContext.produces();
125122
}
126123

127-
public Set<MediaType> consumes() {
128-
return Sets.union(requestContext.consumes(),
129-
toMediaTypes(getDocumentationContext().getConsumes()));
124+
public Set<? extends MediaType> consumes() {
125+
return requestContext.consumes();
130126
}
131127

132128
public ImmutableSet<Class> getIgnorableParameterTypes() {

springfox-spring-web/src/main/java/springfox/documentation/spring/web/scanners/MediaTypeReader.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import springfox.documentation.spi.service.ApiListingBuilderPlugin;
3232
import springfox.documentation.spi.service.OperationBuilderPlugin;
3333
import springfox.documentation.spi.service.contexts.ApiListingContext;
34+
import springfox.documentation.spi.service.contexts.DocumentationContext;
3435
import springfox.documentation.spi.service.contexts.OperationContext;
3536

3637
import java.util.List;
@@ -47,21 +48,23 @@ public class MediaTypeReader implements OperationBuilderPlugin, ApiListingBuilde
4748
@Override
4849
public void apply(OperationContext context) {
4950

50-
Set<String> consumesList = toSet(context.consumes());
51-
Set<String> producesList = toSet(context.produces());
51+
DocumentationContext documentationContext = context.getDocumentationContext();
52+
53+
Set<String> operationConsumesList = toSet(context.consumes());
54+
Set<String> operationProducesList = toSet(context.produces());
5255

5356
if (handlerMethodHasFileParameter(context)) {
54-
consumesList = newHashSet(MediaType.MULTIPART_FORM_DATA_VALUE);
57+
operationConsumesList = newHashSet(MediaType.MULTIPART_FORM_DATA_VALUE);
5558
}
5659

57-
if (producesList.isEmpty()) {
58-
producesList.add(MediaType.ALL_VALUE);
60+
if (operationProducesList.isEmpty() && documentationContext.getProduces().isEmpty()) {
61+
operationProducesList.add(MediaType.ALL_VALUE);
5962
}
60-
if (consumesList.isEmpty()) {
61-
consumesList.add(MediaType.APPLICATION_JSON_VALUE);
63+
if (operationConsumesList.isEmpty() && documentationContext.getConsumes().isEmpty()) {
64+
operationConsumesList.add(MediaType.APPLICATION_JSON_VALUE);
6265
}
63-
context.operationBuilder().consumes(consumesList);
64-
context.operationBuilder().produces(producesList);
66+
context.operationBuilder().consumes(operationConsumesList);
67+
context.operationBuilder().produces(operationProducesList);
6568
}
6669

6770
@Override
@@ -93,7 +96,7 @@ private boolean handlerMethodHasFileParameter(OperationContext context) {
9396
return false;
9497
}
9598

96-
private Set<String> toSet(Set<MediaType> mediaTypeSet) {
99+
private Set<String> toSet(Set<? extends MediaType> mediaTypeSet) {
97100
Set<String> mediaTypes = newHashSet();
98101
for (MediaType mediaType : mediaTypeSet) {
99102
mediaTypes.add(mediaType.toString());

0 commit comments

Comments
 (0)