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)