Skip to content

Commit 54c2e86

Browse files
committed
Renamed getSupportedMimeTypes() in [En|De]coder
Renamed getSupportedMimeTypes() to getEncodableMimeTypes and getDecodableMimeTypes. This will allow for both Encoder and Decoder to be implemented in the same class. This issue fixes spring-projects#113.
1 parent b5394a1 commit 54c2e86

File tree

5 files changed

+29
-29
lines changed

5 files changed

+29
-29
lines changed

spring-web-reactive/src/main/java/org/springframework/core/codec/Decoder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,6 @@ Flux<T> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType,
6363
/**
6464
* Return the list of MIME types this decoder supports.
6565
*/
66-
List<MimeType> getSupportedMimeTypes();
66+
List<MimeType> getDecodableMimeTypes();
6767

6868
}

spring-web-reactive/src/main/java/org/springframework/core/codec/Encoder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,6 @@ Flux<DataBuffer> encode(Publisher<? extends T> inputStream, DataBufferFactory bu
6666
/**
6767
* Return the list of mime types this encoder supports.
6868
*/
69-
List<MimeType> getSupportedMimeTypes();
69+
List<MimeType> getEncodableMimeTypes();
7070

7171
}

spring-web-reactive/src/main/java/org/springframework/core/codec/support/AbstractDecoder.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,32 +26,29 @@
2626

2727
/**
2828
* @author Sebastien Deleuze
29+
* @author Arjen Poutsma
2930
*/
3031
public abstract class AbstractDecoder<T> implements Decoder<T> {
3132

32-
private List<MimeType> supportedMimeTypes = Collections.emptyList();
33+
private List<MimeType> decodableMimeTypes = Collections.emptyList();
3334

3435
protected AbstractDecoder(MimeType... supportedMimeTypes) {
35-
this.supportedMimeTypes = Arrays.asList(supportedMimeTypes);
36+
this.decodableMimeTypes = Arrays.asList(supportedMimeTypes);
3637
}
3738

3839

3940
@Override
40-
public List<MimeType> getSupportedMimeTypes() {
41-
return this.supportedMimeTypes;
41+
public List<MimeType> getDecodableMimeTypes() {
42+
return this.decodableMimeTypes;
4243
}
4344

4445
@Override
4546
public boolean canDecode(ResolvableType elementType, MimeType mimeType, Object... hints) {
4647
if (mimeType == null) {
4748
return true;
4849
}
49-
for (MimeType supportedMimeType : this.supportedMimeTypes) {
50-
if (supportedMimeType.isCompatibleWith(mimeType)) {
51-
return true;
52-
}
53-
}
54-
return false;
50+
return this.decodableMimeTypes.stream().
51+
anyMatch(mt -> mt.isCompatibleWith(mimeType));
5552
}
5653

5754
}

spring-web-reactive/src/main/java/org/springframework/core/codec/support/AbstractEncoder.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,32 +26,29 @@
2626

2727
/**
2828
* @author Sebastien Deleuze
29+
* @author Arjen Poutsma
2930
*/
3031
public abstract class AbstractEncoder<T> implements Encoder<T> {
3132

32-
private List<MimeType> supportedMimeTypes = Collections.emptyList();
33+
private List<MimeType> encodableMimeTypes = Collections.emptyList();
3334

3435
protected AbstractEncoder(MimeType... supportedMimeTypes) {
35-
this.supportedMimeTypes = Arrays.asList(supportedMimeTypes);
36+
this.encodableMimeTypes = Arrays.asList(supportedMimeTypes);
3637
}
3738

3839

3940
@Override
40-
public List<MimeType> getSupportedMimeTypes() {
41-
return this.supportedMimeTypes;
41+
public List<MimeType> getEncodableMimeTypes() {
42+
return this.encodableMimeTypes;
4243
}
4344

4445
@Override
4546
public boolean canEncode(ResolvableType elementType, MimeType mimeType, Object... hints) {
4647
if (mimeType == null) {
4748
return true;
4849
}
49-
for (MimeType supportedMimeType : this.supportedMimeTypes) {
50-
if (supportedMimeType.isCompatibleWith(mimeType)) {
51-
return true;
52-
}
53-
}
54-
return false;
50+
return this.encodableMimeTypes.stream().
51+
anyMatch(mt -> mt.isCompatibleWith(mimeType));
5552
}
5653

5754
}

spring-web-reactive/src/main/java/org/springframework/http/converter/reactive/CodecHttpMessageConverter.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import java.util.Collections;
2020
import java.util.List;
21-
import java.util.stream.Collectors;
2221

2322
import org.reactivestreams.Publisher;
2423
import reactor.core.publisher.Flux;
@@ -47,6 +46,10 @@ public class CodecHttpMessageConverter<T> implements HttpMessageConverter<T> {
4746

4847
private final Decoder<T> decoder;
4948

49+
private final List<MediaType> readableMediaTypes;
50+
51+
private final List<MediaType> writableMediaTypes;
52+
5053
/**
5154
* Create a {@code CodecHttpMessageConverter} with the given {@link Encoder}. When
5255
* using this constructor, all read-related methods will in {@code false} or an
@@ -76,6 +79,13 @@ public CodecHttpMessageConverter(Decoder<T> decoder) {
7679
public CodecHttpMessageConverter(Encoder<T> encoder, Decoder<T> decoder) {
7780
this.encoder = encoder;
7881
this.decoder = decoder;
82+
83+
this.readableMediaTypes = decoder != null ?
84+
MediaTypeUtils.toMediaTypes(decoder.getDecodableMimeTypes()) :
85+
Collections.emptyList();
86+
this.writableMediaTypes = encoder != null ?
87+
MediaTypeUtils.toMediaTypes(encoder.getEncodableMimeTypes()) :
88+
Collections.emptyList();
7989
}
8090

8191
@Override
@@ -90,16 +100,12 @@ public boolean canWrite(ResolvableType type, MediaType mediaType) {
90100

91101
@Override
92102
public List<MediaType> getReadableMediaTypes() {
93-
return this.decoder != null ? this.decoder.getSupportedMimeTypes().stream().
94-
map(MediaTypeUtils::toMediaType).
95-
collect(Collectors.toList()) : Collections.emptyList();
103+
return this.readableMediaTypes;
96104
}
97105

98106
@Override
99107
public List<MediaType> getWritableMediaTypes() {
100-
return this.encoder != null ? this.encoder.getSupportedMimeTypes().stream().
101-
map(MediaTypeUtils::toMediaType).
102-
collect(Collectors.toList()) : Collections.emptyList();
108+
return this.writableMediaTypes;
103109
}
104110

105111
@Override

0 commit comments

Comments
 (0)