[
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