Apache CXF API

org.apache.cxf.transport.http
Class HTTPConduit.WrappedOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by org.apache.cxf.io.AbstractWrappedOutputStream
          extended by org.apache.cxf.io.AbstractThresholdOutputStream
              extended by org.apache.cxf.transport.http.HTTPConduit.WrappedOutputStream
All Implemented Interfaces:
Closeable, Flushable
Direct Known Subclasses:
AsyncHTTPConduit.AsyncWrappedOutputStream
Enclosing class:
HTTPConduit

protected abstract class HTTPConduit.WrappedOutputStream
extends AbstractThresholdOutputStream

Wrapper output stream responsible for flushing headers and handling the incoming HTTP-level response (not necessarily the MEP response).


Field Summary
protected  CacheAndWriteOutputStream cachedStream
          This field contains the output stream with which we cache the request.
protected  boolean cachingForRetransmission
          This boolean is true if the request must be cached.
protected  boolean chunking
          If we are going to be chunking, we won't flush till close which causes new chunks, small network packets, etc..
protected  String conduitName
           
protected  Message outMessage
           
protected  URI url
           
 
Fields inherited from class org.apache.cxf.io.AbstractThresholdOutputStream
buffer, threshold
 
Fields inherited from class org.apache.cxf.io.AbstractWrappedOutputStream
allowFlush, wrappedStream, written
 
Constructor Summary
protected HTTPConduit.WrappedOutputStream(HTTPConduit.WrappedOutputStream wos)
           
protected HTTPConduit.WrappedOutputStream(Message outMessage, boolean possibleRetransmit, boolean isChunking, int chunkThreshold, String conduitName, URI url)
           
 
Method Summary
protected  boolean authorizationRetransmit()
          This method performs a retransmit for authorization information.
 void close()
          Perform any actions required on stream closure (handle response etc.)
protected abstract  void closeInputStream()
           
protected abstract  HttpsURLConnectionInfo getHttpsURLConnectionInfo()
           
protected abstract  InputStream getInputStream()
           
protected  String getMethod()
           
protected abstract  InputStream getPartialResponse()
           
protected abstract  int getResponseCode()
           
protected abstract  String getResponseMessage()
           
protected  void handleHeadersTrustCaching()
           
protected  void handleHttpRetryException(HttpRetryException e)
           
protected  void handleNoOutput()
           
protected  void handleResponse()
          This procedure is called on the close of the output stream so we are ready to handle the response from the connection.
protected abstract  void handleResponseAsync()
           
protected  void handleResponseInternal()
           
protected  void handleResponseOnWorkqueue(boolean allowCurrentThread, boolean forceWQ)
           
protected  void handleRetransmits()
          This procedure handles all retransmits, if any.
protected  void makeTrustDecision()
          This call must take place before anything is written to the URLConnection.
protected  void onFirstWrite()
          Perform any actions required on stream flush (freeze headers, reset output stream ...
protected  boolean processRetransmit()
          This function processes any retransmits at the direction of redirections or "unauthorized" responses.
protected  boolean redirectRetransmit()
           
protected  void retransmit(String newURL)
           
protected abstract  void retransmitStream()
           
protected abstract  void setFixedLengthStreamingMode(int i)
           
protected abstract  void setProtocolHeaders()
           
protected abstract  void setupNewConnection(String newURL)
           
protected abstract  void setupWrappedStream()
           
 void thresholdNotReached()
           
protected abstract  void updateCookiesBeforeRetransmit()
           
protected abstract  void updateResponseHeaders(Message inMessage)
           
protected abstract  boolean usingProxy()
           
 
Methods inherited from class org.apache.cxf.io.AbstractThresholdOutputStream
thresholdReached, unBuffer, write, write
 
Methods inherited from class org.apache.cxf.io.AbstractWrappedOutputStream
allowFlush, flush, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cachingForRetransmission

protected boolean cachingForRetransmission
This boolean is true if the request must be cached.


chunking

protected final boolean chunking
If we are going to be chunking, we won't flush till close which causes new chunks, small network packets, etc..


cachedStream

protected CacheAndWriteOutputStream cachedStream
This field contains the output stream with which we cache the request. It maybe null if we are not caching.


outMessage

protected Message outMessage

conduitName

protected String conduitName

url

protected URI url
Constructor Detail

HTTPConduit.WrappedOutputStream

protected HTTPConduit.WrappedOutputStream(Message outMessage,
                                          boolean possibleRetransmit,
                                          boolean isChunking,
                                          int chunkThreshold,
                                          String conduitName,
                                          URI url)

HTTPConduit.WrappedOutputStream

protected HTTPConduit.WrappedOutputStream(HTTPConduit.WrappedOutputStream wos)
Method Detail

thresholdNotReached

public void thresholdNotReached()
Specified by:
thresholdNotReached in class AbstractThresholdOutputStream

setupWrappedStream

protected abstract void setupWrappedStream()
                                    throws IOException
Throws:
IOException

getHttpsURLConnectionInfo

protected abstract HttpsURLConnectionInfo getHttpsURLConnectionInfo()
                                                             throws IOException
Throws:
IOException

setProtocolHeaders

protected abstract void setProtocolHeaders()
                                    throws IOException
Throws:
IOException

setFixedLengthStreamingMode

protected abstract void setFixedLengthStreamingMode(int i)

getResponseCode

protected abstract int getResponseCode()
                                throws IOException
Throws:
IOException

getResponseMessage

protected abstract String getResponseMessage()
                                      throws IOException
Throws:
IOException

updateResponseHeaders

protected abstract void updateResponseHeaders(Message inMessage)
                                       throws IOException
Throws:
IOException

handleResponseAsync

protected abstract void handleResponseAsync()
                                     throws IOException
Throws:
IOException

closeInputStream

protected abstract void closeInputStream()
                                  throws IOException
Throws:
IOException

usingProxy

protected abstract boolean usingProxy()

getInputStream

protected abstract InputStream getInputStream()
                                       throws IOException
Throws:
IOException

getPartialResponse

protected abstract InputStream getPartialResponse()
                                           throws IOException
Throws:
IOException

setupNewConnection

protected abstract void setupNewConnection(String newURL)
                                    throws IOException
Throws:
IOException

retransmitStream

protected abstract void retransmitStream()
                                  throws IOException
Throws:
IOException

updateCookiesBeforeRetransmit

protected abstract void updateCookiesBeforeRetransmit()
                                               throws IOException
Throws:
IOException

handleNoOutput

protected void handleNoOutput()
                       throws IOException
Throws:
IOException

handleResponseOnWorkqueue

protected void handleResponseOnWorkqueue(boolean allowCurrentThread,
                                         boolean forceWQ)
                                  throws IOException
Throws:
IOException

retransmit

protected void retransmit(String newURL)
                   throws IOException
Throws:
IOException

onFirstWrite

protected void onFirstWrite()
                     throws IOException
Perform any actions required on stream flush (freeze headers, reset output stream ... etc.)

Overrides:
onFirstWrite in class AbstractWrappedOutputStream
Throws:
IOException

getMethod

protected String getMethod()

handleHeadersTrustCaching

protected void handleHeadersTrustCaching()
                                  throws IOException
Throws:
IOException

close

public void close()
           throws IOException
Perform any actions required on stream closure (handle response etc.)

Specified by:
close in interface Closeable
Overrides:
close in class AbstractThresholdOutputStream
Throws:
IOException

handleRetransmits

protected void handleRetransmits()
                          throws IOException
This procedure handles all retransmits, if any.

Throws:
IOException

processRetransmit

protected boolean processRetransmit()
                             throws IOException
This function processes any retransmits at the direction of redirections or "unauthorized" responses.

Returns:
true if there was a retransmit
Throws:
IOException

redirectRetransmit

protected boolean redirectRetransmit()
                              throws IOException
Throws:
IOException

authorizationRetransmit

protected boolean authorizationRetransmit()
                                   throws IOException
This method performs a retransmit for authorization information.

Parameters:
connection - The currently active connection.
message - The outbound message.
cachedStream - The cached request.
Returns:
A new connection if retransmitted. If not retransmitted then this method returns the same connection.
Throws:
IOException

handleResponse

protected void handleResponse()
                       throws IOException
This procedure is called on the close of the output stream so we are ready to handle the response from the connection. We may retransmit until we finally get a response.

Throws:
IOException

handleResponseInternal

protected void handleResponseInternal()
                               throws IOException
Throws:
IOException

handleHttpRetryException

protected void handleHttpRetryException(HttpRetryException e)
                                 throws IOException
Throws:
IOException

makeTrustDecision

protected void makeTrustDecision()
                          throws IOException
This call must take place before anything is written to the URLConnection. The URLConnection.connect() will be called in order to get the connection information. This method is invoked just after setURLRequestHeaders() from the WrappedOutputStream before it writes data to the URLConnection. If trust cannot be established the Trust Decider implemenation throws an IOException.

Parameters:
message - The message being sent.
Throws:
IOException - This exception is thrown if trust cannot be established by the configured MessageTrustDecider.
See Also:
MessageTrustDecider

Apache CXF API

Apache CXF