[ 
https://issues.apache.org/jira/browse/CXF-6544?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14934990#comment-14934990
 ] 

Sergey Beryozkin edited comment on CXF-6544 at 9/29/15 10:56 AM:
-----------------------------------------------------------------

Yes, making sure close() is called can be easily done from AbstractClient, 
wrapping an abstract doWriteBody call.
I guess HttpUrlConnection simply calls close() on its OutputStream so if we 
start calling close() earlier - would that cause side-effects, i.e, would that 
upset somehow HTTP writes ?

But also : the headers have already been written by that time so it won't work 
after all, how would you pass the digest value ?  HTTPUrlConnection can still 
have the internal buffer, but we won;t be able to update the headers it has 
cached - unless we go CXF specific way (doing it all at the CXF interceptor 
level - where we can possibly try to set headers on HTTPUrlConnection after 
close() and also hoping the internal buffer is still live) 


was (Author: sergey_beryozkin):
Yes, making sure close() is called can be easily done from AbstractClient, 
wrapping an abstract doWriteBody call.
I guess HttpUrlConnection simply calls close() on its OutputStream so if we 
start calling close() earlier - would that cause side-effects, i.e, would that 
upset somehow HTTP writes ?

But also : the headers have already been written by that time so it won't work 
after all, how would you pass the digest value ?  

> OutputStream#close not called for WriterInterceptor
> ---------------------------------------------------
>
>                 Key: CXF-6544
>                 URL: https://issues.apache.org/jira/browse/CXF-6544
>             Project: CXF
>          Issue Type: Bug
>            Reporter: Romain Manni-Bucau
>
> Hi
> close() is called later in the JAXRS client lifecycle so no way to add code 
> properly at this moment:
> {code}
> ClientBuilder.newBuilder()
>                 .build()
>                 .register(new WriterInterceptor() {
>                     @Override
>                     public void aroundWriteTo(final WriterInterceptorContext 
> writerInterceptorContext) throws IOException, WebApplicationException {
>                         writerInterceptorContext.setOutputStream(new 
> FilterOutputStream(writerInterceptorContext.getOutputStream()) {
>                             @Override
>                             public void close() throws IOException {
>                                 // need code here
>                                 super.close();
>                             }
>                         });
>                     }
>                 })
> {code}
> Overall idea can need more work since i'd like to be able to add a final 
> trailer to a HTTP chunk communication.
> Managed to do it with httpclient but I'd like to stick to JAXRS 2 if possible.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to