diff --git a/spring-core/src/main/java/org/springframework/core/codec/AbstractSingleValueEncoder.java b/spring-core/src/main/java/org/springframework/core/codec/AbstractSingleValueEncoder.java index 7242a490c9..286cd4acde 100644 --- a/spring-core/src/main/java/org/springframework/core/codec/AbstractSingleValueEncoder.java +++ b/spring-core/src/main/java/org/springframework/core/codec/AbstractSingleValueEncoder.java @@ -47,14 +47,7 @@ public abstract class AbstractSingleValueEncoder extends AbstractEncoder { return Flux.from(inputStream). take(1). - concatMap(t -> { - try { - return encode(t, bufferFactory, elementType, mimeType, hints); - } - catch (Exception ex) { - return Flux.error(ex); - } - }); + concatMap(t -> encode(t, bufferFactory, elementType, mimeType, hints)); } /** @@ -65,9 +58,8 @@ public abstract class AbstractSingleValueEncoder extends AbstractEncoder { * @param mimeType the mime type to process * @param hints Additional information about how to do decode, optional * @return the output stream - * @throws Exception in case of errors */ protected abstract Flux encode(T t, DataBufferFactory dataBufferFactory, - ResolvableType type, MimeType mimeType, Map hints) throws Exception; + ResolvableType type, MimeType mimeType, Map hints); } diff --git a/spring-core/src/main/java/org/springframework/core/codec/ResourceEncoder.java b/spring-core/src/main/java/org/springframework/core/codec/ResourceEncoder.java index 5f5fab3443..ece9ba8143 100644 --- a/spring-core/src/main/java/org/springframework/core/codec/ResourceEncoder.java +++ b/spring-core/src/main/java/org/springframework/core/codec/ResourceEncoder.java @@ -64,10 +64,15 @@ public class ResourceEncoder extends AbstractSingleValueEncoder { @Override protected Flux encode(Resource resource, DataBufferFactory dataBufferFactory, - ResolvableType type, MimeType mimeType, Map hints) throws IOException { + ResolvableType type, MimeType mimeType, Map hints) { - ReadableByteChannel channel = resource.readableChannel(); - return DataBufferUtils.read(channel, dataBufferFactory, bufferSize); + try { + ReadableByteChannel channel = resource.readableChannel(); + return DataBufferUtils.read(channel, dataBufferFactory, this.bufferSize); + } + catch (IOException ex) { + return Flux.error(ex); + } } }