You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Fabien Thouny (JIRA)" <ji...@apache.org> on 2013/10/21 19:38:42 UTC
[jira] [Created] (CXF-5349) Provide ability to disable chunked
transfer encoding for java.io.File entity
Fabien Thouny created CXF-5349:
----------------------------------
Summary: Provide ability to disable chunked transfer encoding for java.io.File entity
Key: CXF-5349
URL: https://issues.apache.org/jira/browse/CXF-5349
Project: CXF
Issue Type: Improvement
Components: JAX-RS
Affects Versions: 2.7.7
Reporter: Fabien Thouny
As it was done for byte array in CXF-4760, it will be nice to be able to disable chunked transfer encoding for java.io.File entity in BinaryDataProvider.
I tried to provide a custom BinaryDataProvider as a workaround :
{code}
@Component
@Provider
public class CustomBinaryDataProvider extends BinaryDataProvider<Object> {
@Override
public long getSize(Object t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mt) {
if (File.class.isAssignableFrom(t.getClass())) {
return ((File) t).length();
}
return super.getSize(t, type, genericType, annotations, mt);
}
}
{code}
but it seems not to be enough because there's an explicit check in JAXRSUtils#writeMessageBody to put the "Content-Length" header only for byte arrays :
{code}
MessageBodyWriter<Object> writer = ((WriterInterceptorMBW)writers.get(0)).getMBW();
if (type == byte[].class) {
long size = writer.getSize(entity, type, genericType, annotations, mediaType);
if (size != -1) {
httpHeaders.putSingle(HttpHeaders.CONTENT_LENGTH, Long.toString(size));
}
}
writer.writeTo(entity, type, genericType, annotations, mediaType,
httpHeaders, entityStream);
{code}
Thanks for your help,
Fabien
--
This message was sent by Atlassian JIRA
(v6.1#6144)