cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Beryozkin (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (CXF-5349) Provide ability to disable chunked transfer encoding for java.io.File entity
Date Wed, 23 Oct 2013 15:13:42 GMT

     [ https://issues.apache.org/jira/browse/CXF-5349?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Sergey Beryozkin resolved CXF-5349.
-----------------------------------

    Resolution: Fixed
      Assignee: Sergey Beryozkin

Unfortunately won't fix as getSize() has been deprecated.
I can still do it for CXF 2.7.x only if you'd like to continue with the getSize() option while
on CXF 2.7.x, before migrating to CXF 3.0.0, please reopen and set Fix version to 2.7.8 if
you'd like me to do it, thanks

> 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
>            Assignee: Sergey Beryozkin
>
> 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)

Mime
View raw message