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

David Liu commented on CXF-3472:
--------------------------------

Hi,

  Yup, this is the problem. I can extend both HttpConduit and its 
WrappedOutputStream class, and also I can override the handleResponse() and 
handleResponseInternal() method in the sub class.
  However, the problem is that I cannot access WrappedOutputStream's protected 
field to construct my sub class (java does not allow it). please see my code:

{code} 
public class MyHTTPConduit extends HTTPConduit {

    public MyHTTPConduit(Bus b, EndpointInfo ei) throws IOException {
        super(b, ei);
    }

    public void prepare(Message message) throws IOException {
        super.prepare(message);

        WrappedOutputStream wos = (WrappedOutputStream) 
message.getContent(OutputStream.class);
        MyWrappedOutputStream my = new MyWrappedOutputStream(wos);//compile 
error
        message.put(OutputStream.class, my);
    }

    protected class MyWrappedOutputStream extends WrappedOutputStream {

        protected MyWrappedOutputStream(WrappedOutputStream wos) {
            //Message m = wos.outMessage;// java access restriction, cannot 
access protected outMessage in WrappedOutputStream  
            super(m, c, possibleRetransmit, isChunking, chunkThreshold);
        }

        protected void handleResponse() throws IOException {
            super.handleResponse();
        }

        protected void handleResponseInternal() throws IOException {
            super.handleResponseInternal();
        }
    }
}

{code} 


> Cannot override HTTPConduit's handleResponse() method
> -----------------------------------------------------
>
>                 Key: CXF-3472
>                 URL: https://issues.apache.org/jira/browse/CXF-3472
>             Project: CXF
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.2, 2.4
>            Reporter: David Liu
>            Assignee: Willem Jiang
>
>   Current, all response message processing of HTTPConduit is in the class 
> WrappedOutputStream, e.g. handleResponse(), and handleResponseInternal() 
> method, so we cannot extend HTTPConduit to override both method if we want to 
> add more functions during processing response. because the class 
> WrappedOutputStream need some input parameter and the its sub-class cannot 
> get these private properties.
>   My use case is: I have my customized HTTPConduit which needs to override 
> handleResponse() method to catch its instead of cxf's default logic.
>   Can cxf move both meothd from WrappedOutputStream class to HTTPConduit so 
> that we can override them? thanks.
> David

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to