Eliminate the need for Encoder#getContentLength

Issue: SPR-16892
This commit is contained in:
Rossen Stoyanchev
2018-06-04 15:46:58 -04:00
parent 124d4c833c
commit 010352163b
9 changed files with 55 additions and 72 deletions

View File

@@ -55,8 +55,4 @@ public class ByteArrayEncoder extends AbstractEncoder<byte[]> {
return Flux.from(inputStream).map(bufferFactory::wrap);
}
@Override
public Long getContentLength(byte[] bytes, @Nullable MimeType mimeType) {
return (long) bytes.length;
}
}

View File

@@ -56,8 +56,4 @@ public class ByteBufferEncoder extends AbstractEncoder<ByteBuffer> {
return Flux.from(inputStream).map(bufferFactory::wrap);
}
@Override
public Long getContentLength(ByteBuffer byteBuffer, @Nullable MimeType mimeType) {
return (long) byteBuffer.array().length;
}
}

View File

@@ -82,11 +82,6 @@ public class CharSequenceEncoder extends AbstractEncoder<CharSequence> {
return charset;
}
@Override
public Long getContentLength(CharSequence data, @Nullable MimeType mimeType) {
return (long) data.toString().getBytes(getCharset(mimeType)).length;
}
/**
* Create a {@code CharSequenceEncoder} that supports only "text/plain".
*/

View File

@@ -55,9 +55,4 @@ public class DataBufferEncoder extends AbstractEncoder<DataBuffer> {
return Flux.from(inputStream);
}
@Override
public Long getContentLength(DataBuffer dataBuffer, @Nullable MimeType mimeType) {
return (long) dataBuffer.readableByteCount();
}
}

View File

@@ -67,17 +67,6 @@ public interface Encoder<T> {
Flux<DataBuffer> encode(Publisher<? extends T> inputStream, DataBufferFactory bufferFactory,
ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints);
/**
* Return the length for the given item, if known.
* @param t the item to check
* @return the length in bytes, or {@code null} if not known.
* @since 5.0.5
*/
@Nullable
default Long getContentLength(T t, @Nullable MimeType mimeType) {
return null;
}
/**
* Return the list of mime types this encoder supports.
*/

View File

@@ -16,13 +16,11 @@
package org.springframework.core.codec;
import java.io.IOException;
import java.util.Map;
import reactor.core.publisher.Flux;
import org.springframework.core.ResolvableType;
import org.springframework.core.io.InputStreamResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.DataBufferFactory;
@@ -70,17 +68,4 @@ public class ResourceEncoder extends AbstractSingleValueEncoder<Resource> {
return DataBufferUtils.read(resource, dataBufferFactory, this.bufferSize);
}
@Override
public Long getContentLength(Resource resource, @Nullable MimeType mimeType) {
// Don't consume InputStream...
if (InputStreamResource.class != resource.getClass()) {
try {
return resource.contentLength();
}
catch (IOException ignored) {
}
}
return null;
}
}