You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ni...@apache.org on 2007/03/17 15:38:10 UTC

svn commit: r519327 [1/2] - in /incubator/cxf/trunk/rt/transports/http: ./ src/main/java/org/apache/cxf/transport/http/ src/main/java/org/apache/cxf/transport/https/ src/main/java/org/apache/cxf/transport/servlet/ src/test/java/org/apache/cxf/transport...

Author: ningjiang
Date: Sat Mar 17 07:38:09 2007
New Revision: 519327

URL: http://svn.apache.org/viewvc?view=rev&rev=519327
Log:
[CXF-462]Merged the HTTP module with HTTP2

NOTE 
1. The main difference between HTTP and HTTP2 after this merge.
Jetty6's SslSocketConnector is more stable than SslSelectChannelConnector.
I got a NPE when I run the hello_world_https sample with SslSelectChannelConnector.
I replaced the SslSelectChannelConnector with SslSocketConnector in the HTTP module.

2. About the CiphersuiteFiliter
Jetty5 provides the setCiphersuite API, but Jetty6 provides setExcudleCiphersuite API.
I changed the SSLUtils's getCiphersuites() method, added an exclude flage to get the excludedCiphersuite.
 

Added:
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyConnectorFactory.java
      - copied, changed from r518893, incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyListenerFactory.java
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPHandler.java   (with props)
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/JettySslConnectorFactory.java
      - copied, changed from r518893, incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/JettySslListenerFactory.java
    incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/https/JettySslConnectorFactoryTest.java
      - copied, changed from r518893, incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/https/JettySslListenerFactoryTest.java
Removed:
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyListenerFactory.java
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/JettySslListenerFactory.java
    incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/TestHttpRequest.java
    incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/TestHttpResponse.java
    incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/https/JettySslListenerFactoryTest.java
Modified:
    incubator/cxf/trunk/rt/transports/http/pom.xml
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyContextInspector.java
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPDestination.java
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPServerEngine.java
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/ServerEngine.java
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/HttpsURLConnectionFactory.java
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/Messages.properties
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/SSLUtils.java
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java
    incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java
    incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/JettyContextInspectorTest.java
    incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/JettyHTTPDestinationTest.java

Modified: incubator/cxf/trunk/rt/transports/http/pom.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/pom.xml?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/pom.xml (original)
+++ incubator/cxf/trunk/rt/transports/http/pom.xml Sat Mar 17 07:38:09 2007
@@ -22,7 +22,7 @@
     <artifactId>cxf-rt-transports-http</artifactId>
     <packaging>jar</packaging>
     <version>2.0-incubator-RC-SNAPSHOT</version>
-    <name>Apache CXF Runtime HTTP transport</name>
+    <name>Apache CXF Runtime HTTP transport (version2)</name>
     <url>http://cwiki.apache.org/CXF</url>
 
     <parent>
@@ -50,28 +50,35 @@
         </dependency>
         <dependency>
             <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-tools-common</artifactId>
+            <artifactId>cxf-rt-core</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-rt-core</artifactId>
+            <artifactId>cxf-tools-common</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-web</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-testutils</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>jetty</groupId>
-            <artifactId>org.mortbay.jetty</artifactId>
+            <groupId>org.mortbay.jetty</groupId>
+            <artifactId>jetty</artifactId>
+            <version>6.1.2rc0</version>
         </dependency>
         <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-web</artifactId>
+            <groupId>org.mortbay.jetty</groupId>
+            <artifactId>jetty-sslengine</artifactId>
+            <version>6.1.2rc0</version>
         </dependency>
+
         <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
             <artifactId>geronimo-servlet_2.5_spec</artifactId>
@@ -97,7 +104,7 @@
                                     <deleteDirs>
                                         <deleteDir>${basedir}/target/generated/src/main/java/org/apache/cxf/wsdl</deleteDir>
                                     </deleteDirs>
-                                </xsdOption>
+                                </xsdOption>                               
                                 <xsdOption>
                                     <xsd>${basedir}/src/main/resources/schemas/configuration/http-listener.xsd</xsd>
                                     <bindingFile>${basedir}/src/main/resources/schemas/wsdl/http-conf.xjb</bindingFile>
@@ -132,6 +139,7 @@
             </plugin>
         </plugins>
     </build>
+
 
 
     <scm>

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java Sat Mar 17 07:38:09 2007
@@ -20,14 +20,24 @@
 package org.apache.cxf.transport.http;
 
 import java.io.IOException;
+import java.io.OutputStream;
 import java.net.HttpURLConnection;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.Base64Exception;
 import org.apache.cxf.common.util.Base64Utility;
 import org.apache.cxf.common.util.StringUtils;
@@ -36,9 +46,11 @@
 import org.apache.cxf.configuration.security.SSLServerPolicy;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.helpers.HttpHeaderHelper;
+import org.apache.cxf.io.AbstractWrappedOutputStream;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.transport.AbstractDestination;
+import org.apache.cxf.transport.Conduit;
 import org.apache.cxf.transport.ConduitInitiator;
 import org.apache.cxf.transports.http.configuration.HTTPServerPolicy;
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
@@ -48,6 +60,11 @@
  */
 public abstract class AbstractHTTPDestination extends AbstractDestination implements Configurable {
     
+    public static final String HTTP_REQUEST = "HTTP.REQUEST";
+    public static final String HTTP_RESPONSE = "HTTP.RESPONSE";
+    
+    private static final Logger LOG = LogUtils.getL7dLogger(JettyHTTPDestination.class);
+    
     private static final long serialVersionUID = 1L;
 
     protected final Bus bus;
@@ -147,9 +164,51 @@
      * @param message the current message
      * @param headers the current set of headers
      */
-    protected abstract void copyRequestHeaders(Message message,
-                                               Map<String, List<String>> headers);
+    protected void copyRequestHeaders(Message message, Map<String, List<String>> headers) {
+        HttpServletRequest req = (HttpServletRequest)message.get(HTTP_REQUEST);
+        //TODO how to deal with the fields        
+        for (Enumeration e = req.getHeaderNames(); e.hasMoreElements();) {
+            String fname = (String)e.nextElement();
+            List<String> values;
+            if (headers.containsKey(fname)) {
+                values = headers.get(fname);
+            } else {
+                values = new ArrayList<String>();
+                headers.put(HttpHeaderHelper.getHeaderKey(fname), values);
+            }
+            for (Enumeration e2 = req.getHeaders(fname); e2.hasMoreElements();) {
+                String val = (String)e2.nextElement();
+                values.add(val);
+            }
+        }
+    }
 
+    /**
+     * Copy the response headers into the response.
+     * 
+     * @param message the current message
+     * @param headers the current set of headers
+     */
+    protected void copyResponseHeaders(Message message, HttpServletResponse response) {
+        Map<?, ?> headers = (Map<?, ?>)message.get(Message.PROTOCOL_HEADERS);
+        if (null != headers) {
+            
+            if (!headers.containsKey(Message.CONTENT_TYPE)) {
+                response.setContentType((String) message.get(Message.CONTENT_TYPE));
+            }
+            
+            for (Iterator<?> iter = headers.keySet().iterator(); iter.hasNext();) {
+                String header = (String)iter.next();
+                List<?> headerList = (List<?>)headers.get(header);
+                for (Object value : headerList) {
+                    response.addHeader(header, (String)value);
+                }
+            }
+        } else {
+            response.setContentType((String) message.get(Message.CONTENT_TYPE));
+        }
+    }
+    
     protected static EndpointInfo getAddressValue(EndpointInfo ei) {       
         return getAddressValue(ei, true);
     } 
@@ -157,9 +216,18 @@
     protected static EndpointInfo getAddressValue(EndpointInfo ei, boolean dp) {       
         if (dp) {
             ei.setAddress(StringUtils.addDefaultPortIfMissing(ei.getAddress()));
-        }
+        } 
         return ei;
-    }  
+    }
+    
+    /**
+     * @param inMessage the incoming message
+     * @return the inbuilt backchannel
+     */
+    protected Conduit getInbuiltBackChannel(Message inMessage) {
+        HttpServletResponse response = (HttpServletResponse)inMessage.get(HTTP_RESPONSE);
+        return new BackChannelConduit(response);
+    }
     
     /**
      * Mark message as a partial message.
@@ -208,11 +276,119 @@
                         Arrays.asList(new String[] {"close"}));
         }
         
+    
+        
     /*
      * TODO - hook up these policies
     <xs:attribute name="SuppressClientSendErrors" type="xs:boolean" use="optional" default="false">
     <xs:attribute name="SuppressClientReceiveErrors" type="xs:boolean" use="optional" default="false">
     */
+    }
+  
+   
+    protected OutputStream flushHeaders(Message outMessage) throws IOException {
+        updateResponseHeaders(outMessage);
+        Object responseObj = outMessage.get(HTTP_RESPONSE);
+        OutputStream responseStream = null;
+        if (responseObj instanceof HttpServletResponse) {
+            HttpServletResponse response = (HttpServletResponse)responseObj;
+
+            Integer i = (Integer)outMessage.get(Message.RESPONSE_CODE);
+            if (i != null) {
+                int status = i.intValue();               
+                response.setStatus(status);
+            } else {
+                response.setStatus(HttpURLConnection.HTTP_OK);
+            }
+
+            copyResponseHeaders(outMessage, response);
+            responseStream = response.getOutputStream();
+
+            if (isOneWay(outMessage)) {
+                response.flushBuffer();
+            }
+        } else if (null != responseObj) {
+            String m = (new org.apache.cxf.common.i18n.Message("UNEXPECTED_RESPONSE_TYPE_MSG",
+                LOG, responseObj.getClass())).toString();
+            LOG.log(Level.WARNING, m);
+            throw new IOException(m);   
+        } else {
+            String m = (new org.apache.cxf.common.i18n.Message("NULL_RESPONSE_MSG", LOG)).toString();
+            LOG.log(Level.WARNING, m);
+            throw new IOException(m);
+        }
+
+        if (isOneWay(outMessage)) {
+            outMessage.remove(HTTP_RESPONSE);
+        }
+        return responseStream;
+    }
+    
+    /**
+     * Backchannel conduit.
+     */
+    protected class BackChannelConduit
+        extends AbstractDestination.AbstractBackChannelConduit {
+
+        protected HttpServletResponse response;
+
+        BackChannelConduit(HttpServletResponse resp) {
+            response = resp;
+        }
+
+        /**
+         * Send an outbound message, assumed to contain all the name-value
+         * mappings of the corresponding input message (if any). 
+         * 
+         * @param message the message to be sent.
+         */
+        public void send(Message message) throws IOException {
+            message.put(HTTP_RESPONSE, response);
+            message.setContent(OutputStream.class, new WrappedOutputStream(message, response));
+        }
+    }
+
+    /**
+     * Wrapper stream responsible for flushing headers and committing outgoing
+     * HTTP-level response.
+     */
+    private class WrappedOutputStream extends AbstractWrappedOutputStream {
+
+        protected HttpServletResponse response;
+
+        WrappedOutputStream(Message m, HttpServletResponse resp) {
+            super(m);
+            response = resp;
+        }
+
+        /**
+         * Perform any actions required on stream flush (freeze headers,
+         * reset output stream ... etc.)
+         */
+        protected void doFlush() throws IOException {
+            OutputStream responseStream = flushHeaders(outMessage);
+            if (null != responseStream && !alreadyFlushed()) {
+                resetOut(responseStream, true);
+            }
+        }
+
+        /**
+         * Perform any actions required on stream closure (handle response etc.)
+         */
+        protected void doClose() {
+            commitResponse();
+        }
+
+        protected void onWrite() throws IOException {
+        }
+
+        private void commitResponse() {
+            try {
+                response.flushBuffer();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
     }
 
     boolean contextMatchOnExact() {

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java Sat Mar 17 07:38:09 2007
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.cxf.transport.http;
 
 import java.io.IOException;
@@ -60,16 +59,15 @@
 
 import static org.apache.cxf.message.Message.DECOUPLED_CHANNEL_MESSAGE;
 
+
 /**
  * HTTP Conduit implementation.
  */
-public class HTTPConduit extends AbstractConduit implements Configurable {
-    public static final String HTTP_REQUEST = "org.apache.cxf.transport.http.JettyHTTPDestination.REQUEST";
-    public static final String HTTP_RESPONSE = "org.apache.cxf.transport.http.JettyHTTPDestination.RESPONSE";
+public class HTTPConduit extends AbstractConduit implements Configurable {   
     public static final String HTTP_CONNECTION = "http.connection";
     private static final Logger LOG = LogUtils.getL7dLogger(HTTPConduit.class);
     
-    private final Bus bus;
+    private final Bus bus;    
     private final URLConnectionFactory alternateConnectionFactory;
     private URLConnectionFactory connectionFactory;
     private URL url;
@@ -84,7 +82,7 @@
     private AuthorizationPolicy authorization;
     private AuthorizationPolicy proxyAuthorization;
     private SSLClientPolicy sslClient;
-
+    
 
     /**
      * Constructor
@@ -98,7 +96,7 @@
              ei,
              null);
     }
-    
+
     /**
      * Constructor
      * 
@@ -140,21 +138,18 @@
               : new URL(t.getAddress().getValue());
     }
 
+
     protected Logger getLogger() {
         return LOG;
     }
-
     
-    /**
-     * Post-configure retreival of connection factory.
-     */
     protected void retrieveConnectionFactory() {
         connectionFactory = alternateConnectionFactory != null
                             ? alternateConnectionFactory
                             : HTTPTransportFactory.getConnectionFactory(
-                                  getSslClient());
+                                getSslClient());
     }
-        
+   
     /**
      * Send an outbound message.
      * 
@@ -162,7 +157,7 @@
      */
     public void send(Message message) throws IOException {
         Map<String, List<String>> headers = setHeaders(message);
-        URL currentURL = setupURL(message);
+        URL currentURL = setupURL(message);        
         URLConnection connection = 
             connectionFactory.createConnection(getProxy(), currentURL);
         connection.setDoOutput(true);        
@@ -186,7 +181,7 @@
             } else {
                 hc.setInstanceFollowRedirects(false);
                 if (!hc.getRequestMethod().equals("GET")
-                        && getClient().isAllowChunking()) {
+                    && getClient().isAllowChunking()) {
                     hc.setChunkedStreamingMode(2048);
                 }
             }
@@ -220,15 +215,14 @@
      * @return the backchannel Destination (or null if the backchannel is
      * built-in)
      */
-    @Override
     public synchronized Destination getBackChannel() {
         if (decoupledDestination == null
-            && getClient().getDecoupledEndpoint() != null) {
+            &&  getClient().getDecoupledEndpoint() != null) {
             setUpDecoupledDestination(); 
         }
         return decoupledDestination;
     }
-    
+
     /**
      * Close the conduit
      */
@@ -402,7 +396,7 @@
     }
 
     private void initConfig() {
-        // Initialize some default values for the configuration
+        //Initialize some default values for the configuration
         client = endpointInfo.getTraversedExtensor(new HTTPClientPolicy(), HTTPClientPolicy.class);
         authorization = endpointInfo.getTraversedExtensor(new AuthorizationPolicy(),
                                                           AuthorizationPolicy.class);
@@ -632,7 +626,7 @@
             incomingObserver.onMessage(inMessage);
         }
     }
-       
+    
     /**
      * Used to set appropriate message properties, exchange etc.
      * as required for an incoming decoupled response (as opposed
@@ -655,11 +649,13 @@
             inMessage.put(Message.RESPONSE_CODE, HttpURLConnection.HTTP_OK);
 
             // remove server-specific properties
-            inMessage.remove(HTTP_REQUEST);
-            inMessage.remove(HTTP_RESPONSE);
+            inMessage.remove(AbstractHTTPDestination.HTTP_REQUEST);
+            inMessage.remove(AbstractHTTPDestination.HTTP_RESPONSE);
             inMessage.remove(Message.ASYNC_POST_RESPONSE_DISPATCH);
 
             incomingObserver.onMessage(inMessage);
         }
     }
+    
 }
+

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPTransportFactory.java Sat Mar 17 07:38:09 2007
@@ -50,11 +50,12 @@
 import org.apache.cxf.transport.DestinationFactory;
 import org.apache.cxf.transport.DestinationFactoryManager;
 import org.apache.cxf.transport.https.HttpsURLConnectionFactory;
-import org.apache.cxf.transport.https.JettySslListenerFactory;
+import org.apache.cxf.transport.https.JettySslConnectorFactory;
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
 import org.apache.cxf.wsdl11.WSDLEndpointFactory;
-import org.mortbay.http.SocketListener;
-import org.mortbay.util.InetAddrPort;
+import org.mortbay.jetty.AbstractConnector;
+//import org.mortbay.jetty.bio.SocketConnector;
+import org.mortbay.jetty.nio.SelectChannelConnector;
 import org.xmlsoap.schemas.wsdl.http.AddressType;
 
 public class HTTPTransportFactory extends AbstractTransportFactory implements ConduitInitiator,
@@ -99,8 +100,7 @@
             for (String ns : activationNamespaces) {
                 dfm.registerDestinationFactory(ns, this);
             }
-        }       
-       
+        }
     }
 
     public Conduit getConduit(EndpointInfo endpointInfo) throws IOException {
@@ -118,7 +118,7 @@
     public Destination getDestination(EndpointInfo endpointInfo) throws IOException {
         JettyHTTPDestination destination = new JettyHTTPDestination(bus, this, endpointInfo);
         configure(destination);
-        destination.retrieveEngine();
+        destination.retrieveEngine();        
         return destination;
     }
 
@@ -165,21 +165,24 @@
                ? new URLConnectionFactory() {
                        public URLConnection createConnection(Proxy proxy, URL u)
                            throws IOException {
-                           return proxy != null
+                           return proxy != null 
                                   ? u.openConnection(proxy)
                                   : u.openConnection();
                        }
                    }
                : new HttpsURLConnectionFactory(policy);
     }
-
-    protected static JettyListenerFactory getListenerFactory(SSLServerPolicy policy) {
+    
+    protected static JettyConnectorFactory getConnectorFactory(SSLServerPolicy policy) {
         return policy == null
-               ? new JettyListenerFactory() {
-                       public SocketListener createListener(int port) {
-                           return new SocketListener(new InetAddrPort(port));
-                       }
+               ? new JettyConnectorFactory() {                     
+                   public AbstractConnector createConnector(int port) {
+                       SelectChannelConnector result = new SelectChannelConnector();
+                       //SocketConnector result = new SocketConnector();
+                       result.setPort(port);
+                       return result;
                    }
-               : new JettySslListenerFactory(policy);
+               }
+               : new JettySslConnectorFactory(policy);
     }
-}
+}
\ No newline at end of file

Copied: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyConnectorFactory.java (from r518893, incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyListenerFactory.java)
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyConnectorFactory.java?view=diff&rev=519327&p1=incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyListenerFactory.java&r1=518893&p2=incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyConnectorFactory.java&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyListenerFactory.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyConnectorFactory.java Sat Mar 17 07:38:09 2007
@@ -16,20 +16,20 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.cxf.transport.http;
 
-import org.mortbay.http.SocketListener;
+import org.mortbay.jetty.AbstractConnector;
+
 
 /**
  * Encapsulates creation of Jetty listener.
  */
-public interface JettyListenerFactory {
+public interface JettyConnectorFactory {
 
     /**
      * Create a Listener.
      * 
      * @param port the listen port
      */
-    SocketListener createListener(int port);
+    AbstractConnector createConnector(int port);
 }

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyContextInspector.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyContextInspector.java?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyContextInspector.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyContextInspector.java Sat Mar 17 07:38:09 2007
@@ -20,13 +20,13 @@
 package org.apache.cxf.transport.http;
 
 import org.apache.cxf.endpoint.ContextInspector;
-import org.mortbay.http.HttpContext;
+import org.mortbay.jetty.handler.ContextHandler;
 
 public class JettyContextInspector implements ContextInspector {
     
     public String getAddress(Object serverContext) {
-        if (HttpContext.class.isAssignableFrom(serverContext.getClass())) {
-            return ((HttpContext)serverContext).getContextPath();
+        if (ContextHandler.class.isAssignableFrom(serverContext.getClass())) {
+            return ((ContextHandler)serverContext).getContextPath();
         } else {
             return null;
         }

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPDestination.java?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPDestination.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPDestination.java Sat Mar 17 07:38:09 2007
@@ -21,39 +21,27 @@
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
 import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.cxf.Bus;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.helpers.HttpHeaderHelper;
-import org.apache.cxf.io.AbstractWrappedOutputStream;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.message.MessageImpl;
 import org.apache.cxf.service.model.EndpointInfo;
-import org.apache.cxf.transport.AbstractDestination;
-import org.apache.cxf.transport.Conduit;
 import org.apache.cxf.transport.ConduitInitiator;
 import org.apache.cxf.transport.https.SSLUtils;
 import org.apache.cxf.transports.http.QueryHandler;
 import org.apache.cxf.transports.http.QueryHandlerRegistry;
-import org.mortbay.http.HttpRequest;
-import org.mortbay.http.HttpResponse;
-import org.mortbay.http.handler.AbstractHttpHandler;
+import org.mortbay.jetty.HttpConnection;
+import org.mortbay.jetty.Request;
 
 public class JettyHTTPDestination extends AbstractHTTPDestination {
-   
-    public static final String HTTP_REQUEST = JettyHTTPDestination.class.getName() + ".REQUEST";
-    public static final String HTTP_RESPONSE = JettyHTTPDestination.class.getName() + ".RESPONSE";
     
     private static final Logger LOG = LogUtils.getL7dLogger(JettyHTTPDestination.class);
 
@@ -111,25 +99,8 @@
         LOG.log(Level.FINE, "Activating receipt of incoming messages");
         try {
             URL url = new URL(endpointInfo.getAddress());
-            if (contextMatchOnExact()) {
-                engine.addServant(url, new AbstractHttpHandler() {
-                    public void handle(String pathInContext, String pathParams, HttpRequest req,
-                                       HttpResponse resp) throws IOException {
-                        if (pathInContext.equals(getName())) {
-                            doService(req, resp);
-                        }
-                    }
-                });
-            } else {
-                engine.addServant(url, new AbstractHttpHandler() {
-                    public void handle(String pathInContext, String pathParams, HttpRequest req,
-                                       HttpResponse resp) throws IOException {                            
-                        if (pathInContext.startsWith(getName())) {
-                            doService(req, resp);
-                        }
-                    }
-                });
-            }
+            engine.addServant(url, new JettyHTTPHandler(this, contextMatchOnExact()));
+            
         } catch (Exception e) {
             LOG.log(Level.WARNING, "URL creation failed: ", e);
         }
@@ -141,17 +112,8 @@
     protected void deactivate() {
         LOG.log(Level.FINE, "Deactivating receipt of incoming messages");
         engine.removeServant(nurl);   
-    }
-    
-    /**
-     * @param inMessage the incoming message
-     * @return the inbuilt backchannel
-     */
-    protected Conduit getInbuiltBackChannel(Message inMessage) {
-        HttpResponse response = (HttpResponse)inMessage.get(HTTP_RESPONSE);
-        return new BackChannelConduit(response);
-    }
-   
+    }   
+     
 
     /**
      * @return the associated conduit initiator
@@ -160,75 +122,27 @@
         return conduitInitiator;
     }
 
-    /**
-     * Copy the request headers into the message.
-     * 
-     * @param message the current message
-     * @param headers the current set of headers
-     */
-    protected void copyRequestHeaders(Message message, Map<String, List<String>> headers) {
-        HttpRequest req = (HttpRequest)message.get(HTTP_REQUEST);
-        for (Enumeration e = req.getFieldNames(); e.hasMoreElements();) {
-            String fname = (String)e.nextElement();
-            List<String> values;
-            if (headers.containsKey(fname)) {
-                values = headers.get(fname);
-            } else {
-                values = new ArrayList<String>();
-                headers.put(HttpHeaderHelper.getHeaderKey(fname), values);
-            }
-            for (Enumeration e2 = req.getFieldValues(fname); e2.hasMoreElements();) {
-                String val = (String)e2.nextElement();
-                values.add(val);
-            }
-        }
-    }
-
-    /**
-     * Copy the response headers into the response.
-     * 
-     * @param message the current message
-     * @param headers the current set of headers
-     */
-    protected void copyResponseHeaders(Message message, HttpResponse response) {
-        Map<?, ?> headers = (Map<?, ?>)message.get(Message.PROTOCOL_HEADERS);
-        if (null != headers) {
-            
-            if (!headers.containsKey(Message.CONTENT_TYPE)) {
-                response.setContentType((String) message.get(Message.CONTENT_TYPE));
-            }
+   
+   
+    protected void doService(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+        Request baseRequest = (req instanceof Request) 
+            ? (Request)req : HttpConnection.getCurrentConnection().getRequest();
             
-            for (Iterator<?> iter = headers.keySet().iterator(); iter.hasNext();) {
-                String header = (String)iter.next();
-                List<?> headerList = (List<?>)headers.get(header);
-                for (Object value : headerList) {
-                    response.addField(header, (String)value);
-                }
-            }
-        } else {
-            response.setContentType((String) message.get(Message.CONTENT_TYPE));
-        }
-    }
-
-    protected void doService(HttpRequest req, HttpResponse resp) throws IOException {
         if (getServer().isSetRedirectURL()) {
             resp.sendRedirect(getServer().getRedirectURL());
-            resp.commit();
-            req.setHandled(true);
+            resp.flushBuffer();
+            baseRequest.setHandled(true);
             return;
         }
         QueryHandlerRegistry queryHandlerRegistry = bus.getExtension(QueryHandlerRegistry.class);
         if (queryHandlerRegistry != null) { 
             for (QueryHandler qh : queryHandlerRegistry.getHandlers()) {
-                if (qh.isRecognizedQuery(req.getURI().toString(), endpointInfo)) {
-                    if (resp.getField(HttpHeaderHelper.CONTENT_TYPE) == null) {
-                        resp.addField(HttpHeaderHelper.CONTENT_TYPE, 
-                                      qh.getResponseContentType(req.getURI().toString()));
-                    }
-                    qh.writeResponse(req.getURI().toString(), endpointInfo, resp.getOutputStream());
-                    resp.getOutputStream().flush(); 
-                    resp.commit();
-                    req.setHandled(true);
+                String requestURL = req.getPathInfo() + "?" + req.getQueryString();                
+                if (qh.isRecognizedQuery(requestURL, endpointInfo)) {
+                    resp.setContentType(qh.getResponseContentType(requestURL));
+                    qh.writeResponse(requestURL, endpointInfo, resp.getOutputStream());
+                    resp.getOutputStream().flush();                     
+                    baseRequest.setHandled(true);
                     return;
                 }
             }
@@ -238,8 +152,10 @@
         serviceRequest(req, resp);
     }
 
-    protected void serviceRequest(final HttpRequest req, final HttpResponse resp)
+    protected void serviceRequest(final HttpServletRequest req, final HttpServletResponse resp)
         throws IOException {
+        Request baseRequest = (req instanceof Request) 
+            ? (Request)req : HttpConnection.getCurrentConnection().getRequest();
         try {
             if (LOG.isLoggable(Level.FINE)) {
                 LOG.fine("Service http request on thread: " + Thread.currentThread());
@@ -250,8 +166,8 @@
             inMessage.put(HTTP_REQUEST, req);
             inMessage.put(HTTP_RESPONSE, resp);
             inMessage.put(Message.HTTP_REQUEST_METHOD, req.getMethod());
-            inMessage.put(Message.PATH_INFO, req.getPath());
-            inMessage.put(Message.QUERY_STRING, req.getQuery());
+            inMessage.put(Message.PATH_INFO, req.getContextPath() + req.getPathInfo()); 
+            inMessage.put(Message.QUERY_STRING, req.getQueryString());
             inMessage.put(Message.CONTENT_TYPE, req.getContentType());
             if (!StringUtils.isEmpty(endpointInfo.getAddress())) {
                 inMessage.put(Message.BASE_PATH, new URL(endpointInfo.getAddress()).getPath());
@@ -265,126 +181,13 @@
 
             incomingObserver.onMessage(inMessage);
 
-            resp.commit();
-            req.setHandled(true);
+            resp.flushBuffer();
+            baseRequest.setHandled(true);
         } finally {
             if (LOG.isLoggable(Level.FINE)) {
                 LOG.fine("Finished servicing http request on thread: " + Thread.currentThread());
             }
         }
     }
-
-    protected OutputStream flushHeaders(Message outMessage) throws IOException {
-        updateResponseHeaders(outMessage);
-        Object responseObj = outMessage.get(HTTP_RESPONSE);
-        OutputStream responseStream = null;
-        if (responseObj instanceof HttpResponse) {
-            HttpResponse response = (HttpResponse)responseObj;
-
-            Integer i = (Integer)outMessage.get(Message.RESPONSE_CODE);
-            if (i != null) {
-                int status = i.intValue();
-                /*if (status == HttpURLConnection.HTTP_INTERNAL_ERROR) {
-                    response.setStatus(status, "Fault Occurred");
-                } else if (status == HttpURLConnection.HTTP_ACCEPTED) {
-                    response.setStatus(status, "Accepted");
-                } else {
-                    response.setStatus(status);
-                }*/
-                response.setStatus(status);
-            } else {
-                response.setStatus(HttpURLConnection.HTTP_OK);
-            }
-
-            copyResponseHeaders(outMessage, response);
-            responseStream = response.getOutputStream();
-
-            if (isOneWay(outMessage)) {
-                response.commit();
-            }
-        } else if (null != responseObj) {
-            String m = (new org.apache.cxf.common.i18n.Message("UNEXPECTED_RESPONSE_TYPE_MSG",
-                LOG, responseObj.getClass())).toString();
-            LOG.log(Level.WARNING, m);
-            throw new IOException(m);   
-        } else {
-            String m = (new org.apache.cxf.common.i18n.Message("NULL_RESPONSE_MSG", LOG)).toString();
-            LOG.log(Level.WARNING, m);
-            throw new IOException(m);            
-        }
-
-        if (isOneWay(outMessage)) {
-            outMessage.remove(HTTP_RESPONSE);
-        }
-        return responseStream;
-    }
-
-    /**
-     * Backchannel conduit.
-     */
-    protected class BackChannelConduit 
-        extends AbstractDestination.AbstractBackChannelConduit {
-
-        protected HttpResponse response;
-
-        BackChannelConduit(HttpResponse resp) {
-            response = resp;
-        }
-
-        /**
-         * Send an outbound message, assumed to contain all the name-value
-         * mappings of the corresponding input message (if any). 
-         * 
-         * @param message the message to be sent.
-         */
-        public void send(Message message) throws IOException {
-            message.put(HTTP_RESPONSE, response);
-            message.setContent(OutputStream.class, new WrappedOutputStream(message, response));
-        }
-    }
-
-    /**
-     * Wrapper stream responsible for flushing headers and committing outgoing
-     * HTTP-level response.
-     */
-    private class WrappedOutputStream extends AbstractWrappedOutputStream {
-
-        protected HttpResponse response;
-
-        WrappedOutputStream(Message m, HttpResponse resp) {
-            super(m);
-            response = resp;
-        }
-
-        /**
-         * Perform any actions required on stream flush (freeze headers,
-         * reset output stream ... etc.)
-         */
-        protected void doFlush() throws IOException {
-            if (!alreadyFlushed()) {
-                OutputStream responseStream = flushHeaders(outMessage);
-                if (null != responseStream) {
-                    resetOut(responseStream, true);
-                }
-            }
-        }
-
-        /**
-         * Perform any actions required on stream closure (handle response etc.)
-         */
-        protected void doClose() {
-            commitResponse();
-        }
-
-        protected void onWrite() throws IOException {
-        }
-
-        private void commitResponse() {
-            try {
-                response.commit();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-    }
+   
 }

Added: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPHandler.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPHandler.java?view=auto&rev=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPHandler.java (added)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPHandler.java Sat Mar 17 07:38:09 2007
@@ -0,0 +1,61 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.transport.http;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.mortbay.jetty.handler.AbstractHandler;
+
+public class JettyHTTPHandler extends AbstractHandler {
+    private String urlName;
+    private boolean contextMatchExact;
+    private JettyHTTPDestination jettyHTTPDestination;
+    
+    public JettyHTTPHandler(JettyHTTPDestination jhd, boolean cmExact) {
+        contextMatchExact = cmExact;
+        jettyHTTPDestination = jhd;
+    }
+    
+    public void setName(String name) {
+        urlName = name;
+    }
+    
+    public String getName() {
+        return urlName;
+    }
+    
+    public void handle(String target, HttpServletRequest req,
+                       HttpServletResponse resp, int dispatch) throws IOException {        
+        if (contextMatchExact) {
+            if (target.equals(urlName)) {
+                jettyHTTPDestination.doService(req, resp);
+            }
+        } else {
+            if (target.startsWith(urlName)) {
+                jettyHTTPDestination.doService(req, resp);
+            }
+        }
+    }
+    
+    
+
+}

Propchange: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPHandler.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPServerEngine.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPServerEngine.java?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPServerEngine.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/JettyHTTPServerEngine.java Sat Mar 17 07:38:09 2007
@@ -19,7 +19,6 @@
 
 package org.apache.cxf.transport.http;
 
-import java.io.IOException;
 import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
@@ -30,11 +29,11 @@
 import org.apache.cxf.transport.HttpUriMapper;
 import org.apache.cxf.transport.http.listener.HTTPListenerConfigBean;
 import org.apache.cxf.transports.http.configuration.HTTPListenerPolicy;
-import org.mortbay.http.HttpContext;
-import org.mortbay.http.HttpHandler;
-import org.mortbay.http.HttpServer;
-import org.mortbay.http.SocketListener;
-import org.mortbay.http.handler.AbstractHttpHandler;
+import org.mortbay.jetty.AbstractConnector;
+import org.mortbay.jetty.Handler;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.handler.ContextHandler;
+import org.mortbay.jetty.handler.ContextHandlerCollection;
 
 
 
@@ -45,9 +44,11 @@
         new HashMap<Integer, JettyHTTPServerEngine>();
    
     private int servantCount;
-    private HttpServer server;
-    private SocketListener listener;
-    private JettyListenerFactory listenerFactory;
+    private Server server;
+    private AbstractConnector connector;
+    private JettyConnectorFactory connectorFactory;
+    private ContextHandlerCollection contexts;
+    
     private final int port;
     
     JettyHTTPServerEngine(Bus bus, String protocol, int p) {
@@ -81,17 +82,15 @@
         JettyHTTPServerEngine ref = portMap.remove(p);
         if (ref != null && ref.server != null) {
             try {
-                ref.listener.getServerSocket().close();
-                ref.server.stop(true);
+                ref.connector.close();
+                ref.server.stop();
                 ref.server.destroy();
                 ref.server = null;
-                ref.listener = null;
-            } catch (InterruptedException ex) {
-                ex.printStackTrace();
-            } catch (IOException ex) {
-                ex.printStackTrace();
-            }
-            
+                ref.listener = null;            
+            } catch (Exception e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }            
         }
     }
     
@@ -101,12 +100,13 @@
      * @param url the URL associated with the servant
      * @param handler notified on incoming HTTP requests
      */
-    public synchronized void addServant(URL url, AbstractHttpHandler handler) {
+    public synchronized void addServant(URL url, JettyHTTPHandler handler) {
         if (server == null) {
-            server = new HttpServer();
+            server = new Server();
             
-            listener = listenerFactory.createListener(port);
-           
+            connector = connectorFactory.createConnector(port);
+            //REVISITION for setup the connector's threadPool
+            /*
             if (getListener().isSetMinThreads()) {
                 listener.setMinThreads(getListener().getMinThreads());
             }
@@ -120,18 +120,20 @@
                 int lowResourcePersistTime = 
                     getListener().getLowResourcePersistTimeMs().intValue();
                 listener.setLowResourcePersistTimeMs(lowResourcePersistTime);
-            }
+            }*/
 
-            server.addListener(listener);
+            server.addConnector(connector);
+            contexts = new ContextHandlerCollection();
+            server.addHandler(contexts);
             try {
                 server.start();
             } catch (Exception e) {
                 e.printStackTrace();
                 //problem starting server
-                try {
-                    server.stop(true);
+                try {                    
+                    server.stop();
                     server.destroy();
-                } catch (InterruptedException ex) {
+                } catch (Exception ex) {
                     ex.printStackTrace();
                 }    
             }
@@ -139,24 +141,19 @@
         
         String contextName = HttpUriMapper.getContextName(url.getPath());
         final String smap = HttpUriMapper.getResourceBase(url.getPath());
-        
-        HttpContext context = server.getContext(contextName);
-        try {
-            context.start();
-        } catch (Exception e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
+        ContextHandler context = new ContextHandler();
+        context.setContextPath(contextName);
+        context.setHandler(handler);
+        contexts.addHandler(context);
+        if (contexts.isStarted()) {           
+            try {                
+                context.start();
+            } catch (Exception ex) {
+                ex.printStackTrace();
+            }
         }
         
         handler.setName(smap);        
-        context.addHandler(handler);
-        
-        try {
-            handler.start();
-        } catch (Exception e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
         ++servantCount;
     }
     
@@ -168,21 +165,39 @@
     public synchronized void removeServant(URL url) {        
         
         String contextName = HttpUriMapper.getContextName(url.getPath());
-        final String smap = HttpUriMapper.getResourceBase(url.getPath());
+        //final String smap = HttpUriMapper.getResourceBase(url.getPath());
 
         boolean found = false;
         // REVISIT: how come server can be null?
         if (server != null) {
-            HttpContext context = server.getContext(contextName);
-            for (HttpHandler handler : context.getHandlers()) {
-                if (smap.equals(handler.getName())) {
-                    try {
-                        handler.stop();
-                    } catch (InterruptedException e) {
-                        // TODO Auto-generated catch block
-                        e.printStackTrace();
+            for (Handler handler : contexts.getChildHandlersByClass(ContextHandler.class)) {
+                ContextHandler contextHandler = null;
+                if (handler instanceof ContextHandler) {
+                    contextHandler = (ContextHandler) handler;
+                    if (contextName.equals(contextHandler.getContextPath())) {
+                        try {
+                            contexts.removeHandler(handler);
+                            handler.stop();
+                            handler.destroy();
+                        } catch (Exception e) {
+                            // TODO Auto-generated catch block
+                            e.printStackTrace();
+                        }
+                        /*for (Handler httpHandler
+                            : contextHandler.getChildHandlersByClass(JettyHTTPHandler.class)) {
+                            if (smap.equals(((JettyHTTPHandler)httpHandler).getName())) {
+                                contexts.removeHandler(httpHandler);
+                                try {
+                                    handler.stop();                               
+                                    handler.destroy();
+                                } catch (Exception e) {
+                                    // TODO Auto-generated catch block
+                                    e.printStackTrace();
+                                }    
+                            }
+                        
+                        }*/
                     }
-                    context.removeHandler(handler);
                     found = true;
                 }
             }
@@ -206,20 +221,23 @@
      * @param url the associated URL
      * @return the HttpHandler if registered
      */
-    public synchronized HttpHandler getServant(URL url)  {
+    public synchronized Handler getServant(URL url)  {
         String contextName = HttpUriMapper.getContextName(url.getPath());
-        final String smap = HttpUriMapper.getResourceBase(url.getPath());
+        //final String smap = HttpUriMapper.getResourceBase(url.getPath());
         
-        HttpHandler ret = null;
+        Handler ret = null;
         // REVISIT: how come server can be null?
-        if (server != null) {
-            HttpContext context = server.getContext(contextName);
-            for (HttpHandler handler : context.getHandlers()) {
-                if (smap.equals(handler.getName())) {
-                    ret = handler;
-                    break;
+        if (server != null) {           
+            for (Handler handler : server.getChildHandlersByClass(ContextHandler.class)) {
+                ContextHandler contextHandler = null;
+                if (handler instanceof ContextHandler) {
+                    contextHandler = (ContextHandler) handler;
+                    if (contextName.equals(contextHandler.getContextPath())) {           
+                        ret = contextHandler.getHandler();
+                        break;
+                    }
                 }
-            }
+            }    
         }
         return ret;
     }
@@ -232,7 +250,7 @@
     }
 
     private void retrieveListenerFactory() {
-        listenerFactory = HTTPTransportFactory.getListenerFactory(getSslServer());
+        connectorFactory = HTTPTransportFactory.getConnectorFactory(getSslServer());
     }
     
     private void init(SSLServerPolicy sslServerPolicy) {

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/ServerEngine.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/ServerEngine.java?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/ServerEngine.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/ServerEngine.java Sat Mar 17 07:38:09 2007
@@ -21,8 +21,7 @@
 
 import java.net.URL;
 
-import org.mortbay.http.HttpHandler;
-import org.mortbay.http.handler.AbstractHttpHandler;
+import org.mortbay.jetty.Handler;
 
 public interface ServerEngine {
     /**
@@ -31,7 +30,7 @@
      * @param url the URL associated with the servant
      * @param handler notified on incoming HTTP requests
      */
-    void addServant(URL url, AbstractHttpHandler handler);
+    void addServant(URL url, JettyHTTPHandler handler);
     
     /**
      * Remove a previously registered servant.
@@ -46,5 +45,5 @@
      * @param url the associated URL
      * @return the HttpHandler if registered
      */
-    HttpHandler getServant(URL url);
+    Handler getServant(URL url);
 }

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/HttpsURLConnectionFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/HttpsURLConnectionFactory.java?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/HttpsURLConnectionFactory.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/HttpsURLConnectionFactory.java Sat Mar 17 07:38:09 2007
@@ -125,7 +125,7 @@
                 SSLUtils.getCiphersuites(sslPolicy.getCiphersuites(),
                                          SSLUtils.getSupportedCipherSuites(ctx),
                                          sslPolicy.getCiphersuiteFilters(),
-                                         LOG);
+                                         LOG, false);
             secureConnection.setSSLSocketFactory(
                 new SSLSocketFactoryWrapper(ctx.getSocketFactory(),
                                             cipherSuites));

Copied: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/JettySslConnectorFactory.java (from r518893, incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/JettySslListenerFactory.java)
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/JettySslConnectorFactory.java?view=diff&rev=519327&p1=incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/JettySslListenerFactory.java&r1=518893&p2=incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/JettySslConnectorFactory.java&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/JettySslListenerFactory.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/JettySslConnectorFactory.java Sat Mar 17 07:38:09 2007
@@ -27,14 +27,14 @@
 
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.configuration.security.SSLServerPolicy;
-import org.apache.cxf.transport.http.JettyListenerFactory;
-import org.mortbay.http.SocketListener;
-import org.mortbay.http.SslListener;
-import org.mortbay.util.InetAddrPort;
+import org.apache.cxf.transport.http.JettyConnectorFactory;
+import org.mortbay.jetty.AbstractConnector;
+import org.mortbay.jetty.security.SslSocketConnector;
 
-public final class JettySslListenerFactory implements JettyListenerFactory {
+
+public final class JettySslConnectorFactory implements JettyConnectorFactory {
     private static final long serialVersionUID = 1L;
-    private static final Logger LOG = LogUtils.getL7dLogger(JettySslListenerFactory.class);    
+    private static final Logger LOG = LogUtils.getL7dLogger(JettySslConnectorFactory.class);    
     
     private static final String[] UNSUPPORTED =
     {"SessionCaching", "SessionCacheKey", "MaxChainLength",
@@ -49,19 +49,21 @@
      * 
      * @param policy the applicable SSLServerPolicy (guaranteed non-null)
      */
-    public JettySslListenerFactory(SSLServerPolicy policy) {
+    public JettySslConnectorFactory(SSLServerPolicy policy) {
         this.sslPolicy = policy;
-    }
+    }    
+    
     
     /**
-     * Create a Listener.
+     * Create a SSL Connector.
      * 
      * @param p the listen port
      */
-    public SocketListener createListener(int port) {
-        SslListener secureListener = new SslListener(new InetAddrPort(port));
-        decorate(secureListener);
-        return secureListener;
+    public AbstractConnector createConnector(int port) {
+        SslSocketConnector secureConnector = new SslSocketConnector();
+        secureConnector.setPort(port);
+        decorate(secureConnector);
+        return secureConnector;
     }
     
     /**
@@ -69,7 +71,7 @@
      * 
      * @param listener the secure listener
      */
-    public void decorate(SslListener secureListener) {
+    public void decorate(SslSocketConnector secureListener) {
         String keyStoreLocation =
             SSLUtils.getKeystore(sslPolicy.getKeystore(), LOG);
         secureListener.setKeystore(keyStoreLocation);
@@ -85,7 +87,7 @@
         String keyStoreMgrFactoryAlgorithm =
             SSLUtils.getKeystoreAlgorithm(sslPolicy.getKeystoreAlgorithm(),
                                           LOG);
-        secureListener.setAlgorithm(keyStoreMgrFactoryAlgorithm);
+        secureListener.setSslKeyManagerFactoryAlgorithm(keyStoreMgrFactoryAlgorithm);
         
         System.setProperty("javax.net.ssl.trustStore",
                            SSLUtils.getTrustStore(sslPolicy.getTrustStore(),
@@ -94,7 +96,7 @@
             SSLUtils.getSecureSocketProtocol(sslPolicy.getSecureSocketProtocol(),
                                              LOG);
         secureListener.setProtocol(secureSocketProtocol);
-        
+        //need to Check it
         secureListener.setWantClientAuth(
             SSLUtils.getWantClientAuthentication(
                                    sslPolicy.isSetWantClientAuthentication(),
@@ -117,11 +119,11 @@
                                              secureSocketProtocol,
                                              LOG),
                 null);
-            secureListener.setCipherSuites(
+            secureListener.setExcludeCipherSuites(
                 SSLUtils.getCiphersuites(sslPolicy.getCiphersuites(),
                                          SSLUtils.getServerSupportedCipherSuites(ctx),
                                          sslPolicy.getCiphersuiteFilters(),
-                                         LOG));
+                                         LOG, true));
         } catch (Exception e) {
             LogUtils.log(LOG, Level.SEVERE, "SSL_CONTEXT_INIT_FAILURE", e);
         }
@@ -146,4 +148,5 @@
     protected String[] getDerivative() {
         return DERIVATIVE;
     }
+    
 }

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/Messages.properties
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/Messages.properties?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/Messages.properties (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/Messages.properties Sat Mar 17 07:38:09 2007
@@ -59,7 +59,8 @@
 CIPHERSUITE_EXCLUDED = The {0} cipher suite is excluded by the filter.
 CIPHERSUITE_INCLUDE_FILTER = Ciphersuite include filter: {0}
 CIPHERSUITE_EXCLUDE_FILTER = Ciphersuite exclude filter: {0}
-CIPHERSUITES_FILTERED = The enabled cipher suites have been filtered down to {0}.  
+CIPHERSUITES_FILTERED = The enabled cipher suites have been filtered down to {0}.
+CIPHERSUITES_EXCLUDED = The excluded cipher suites have been filtered down to {0}.  
 SUCCESS_INVOKING_SECURITY_CONFIGURER = The custom security configurer {0} configure method was called successfully.
 ERROR_INVOKING_SECURITY_CONFIGURER = Failure invoking on custom security configurer {0}, exception reported is {1}.
 KEY_STORE_ALGORITHM_NOT_SET = The keystore key manager factory algorithm has not been set in configuration so the default value {0} will be used.

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/SSLUtils.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/SSLUtils.java?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/SSLUtils.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/https/SSLUtils.java Sat Mar 17 07:38:09 2007
@@ -44,7 +44,6 @@
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.SSLPeerUnverifiedException;
 import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocket;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.TrustManagerFactory;
 import javax.servlet.http.HttpServletRequest;
@@ -53,8 +52,7 @@
 import org.apache.cxf.configuration.security.FiltersType;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.security.transport.TLSSessionInfo;
-import org.mortbay.http.HttpConnection;
-import org.mortbay.http.HttpRequest;
+
 
 /**
  * Holder for utility methods related to manipulating SSL settings, common
@@ -68,7 +66,7 @@
     private static final String DEFAULT_TRUST_STORE_TYPE = "JKS";
     private static final String DEFAULT_SECURE_SOCKET_PROTOCOL = "TLSv1";
     private static final String CERTIFICATE_FACTORY_TYPE = "X.509";
-    private static final String SERVLET_SSL_SESSION_ATTRIBUTE = "javax.net.ssl.session";
+    private static final String SSL_SESSION_ATTRIBUTE = "javax.net.ssl.session";
     
     private static final boolean DEFAULT_REQUIRE_CLIENT_AUTHENTICATION = false;
     private static final boolean DEFAULT_WANT_CLIENT_AUTHENTICATION = true;
@@ -352,11 +350,11 @@
     public static String[] getServerSupportedCipherSuites(SSLContext context) {
         return context.getServerSocketFactory().getSupportedCipherSuites();
     }
-
+        
     public static String[] getCiphersuites(List<String> cipherSuitesList,
                                            String[] supportedCipherSuites,
                                            FiltersType filters,
-                                           Logger log) {
+                                           Logger log, boolean exclude) {
         String[] cipherSuites = null;
         if (!(cipherSuitesList == null || cipherSuitesList.isEmpty())) {
             cipherSuites = getCiphersFromList(cipherSuitesList, log);
@@ -366,6 +364,7 @@
                 LogUtils.log(log, Level.INFO, "CIPHERSUITE_FILTERS_NOT_SET");                
             }
             List<String> filteredCipherSuites = new ArrayList<String>();
+            List<String> excludedCipherSuites = new ArrayList<String>();
             List<Pattern> includes =
                 filters != null
                 ? compileRegexPatterns(filters.getInclude(), true, log)
@@ -387,13 +386,22 @@
                                  Level.INFO,
                                  "CIPHERSUITE_EXCLUDED",
                                  supportedCipherSuites[i]);
+                    excludedCipherSuites.add(supportedCipherSuites[i]);
                 }
             }
             LogUtils.log(log,
                          Level.INFO,
                          "CIPHERSUITES_FILTERED",
                          filteredCipherSuites);
-            cipherSuites = getCiphersFromList(filteredCipherSuites, log);
+            LogUtils.log(log,
+                         Level.INFO,
+                         "CIPHERSUITES_EXCLUDED",
+                         excludedCipherSuites);
+            if (exclude) {
+                cipherSuites = getCiphersFromList(excludedCipherSuites, log);
+            } else {
+                cipherSuites = getCiphersFromList(filteredCipherSuites, log);
+            }
         } 
         return cipherSuites;
     }         
@@ -539,25 +547,21 @@
      * @param req the Jetty request
      * @param message the Message
      */
-    public static void propogateSecureSession(HttpRequest req,
-                                              Message message) {
-        final HttpConnection httpCon = req.getHttpConnection();
-        if (httpCon != null) {
-            final Object connection = httpCon.getConnection();
-            if (connection instanceof SSLSocket) {
-                final SSLSocket socket = (SSLSocket) connection;
-                final SSLSession session = socket.getSession();
-                Certificate[] certs = null;
-                try {
-                    certs = session.getPeerCertificates();
-                } catch (final SSLPeerUnverifiedException e) {
-                    // peer has not been verified
-                }
-                message.put(TLSSessionInfo.class,
-                            new TLSSessionInfo(session.getCipherSuite(),
-                                               session,
-                                               certs));
+    public static void propogateSecureSession(HttpServletRequest request,
+                                              Message message) {    
+        SSLSession session = 
+            (SSLSession) request.getAttribute(SSL_SESSION_ATTRIBUTE);
+        if (session != null) {
+            Certificate[] certs = null;
+            try {
+                certs = session.getPeerCertificates();
+            } catch (final SSLPeerUnverifiedException e) {
+                // peer has not been verified
             }
+            message.put(TLSSessionInfo.class,
+                        new TLSSessionInfo(session.getCipherSuite(),
+                                           session,
+                                           certs));
         }
     }
 
@@ -567,7 +571,7 @@
      * 
      * @param req the servlet request
      * @param message the Message
-     */
+     
     public static void propogateSecureServletSession(HttpServletRequest request,
                                                      Message message) {
         SSLSession session = 
@@ -584,7 +588,7 @@
                                            session,
                                            certs));
         }
-    }
+    }*/
     
     protected static void logUnSupportedPolicies(Object policy,
                                                  boolean client,

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java Sat Mar 17 07:38:09 2007
@@ -51,6 +51,7 @@
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.tools.common.extensions.soap.SoapAddress;
 import org.apache.cxf.tools.util.SOAPBindingUtil;
+import org.apache.cxf.transport.http.AbstractHTTPDestination;
 import org.apache.cxf.transport.https.SSLUtils;
 import org.apache.cxf.transports.http.QueryHandler;
 import org.apache.cxf.transports.http.QueryHandlerRegistry;
@@ -58,10 +59,7 @@
 import org.xmlsoap.schemas.wsdl.http.AddressType;
 
 public class ServletController {
-
-    static final String HTTP_REQUEST = "HTTP_SERVLET_REQUEST";
-    static final String HTTP_RESPONSE = "HTTP_SERVLET_RESPONSE";
-
+    
     private static final Logger LOG = Logger.getLogger(ServletController.class.getName());
 
     private ServletTransportFactory transport;
@@ -179,14 +177,14 @@
         try {
             MessageImpl inMessage = new MessageImpl();
             inMessage.setContent(InputStream.class, request.getInputStream());
-            inMessage.put(HTTP_REQUEST, request);
-            inMessage.put(HTTP_RESPONSE, response);
+            inMessage.put(AbstractHTTPDestination.HTTP_REQUEST, request);
+            inMessage.put(AbstractHTTPDestination.HTTP_RESPONSE, response);
             inMessage.put(Message.HTTP_REQUEST_METHOD, request.getMethod());
             inMessage.put(Message.PATH_INFO, request.getPathInfo());
             inMessage.put(Message.QUERY_STRING, request.getQueryString());
             inMessage.put(Message.CONTENT_TYPE, request.getContentType());
             inMessage.put(Message.ENCODING, request.getCharacterEncoding());
-            SSLUtils.propogateSecureServletSession(request, inMessage);
+            SSLUtils.propogateSecureSession(request, inMessage);
             d.doMessage(inMessage);
         } catch (IOException e) {
             throw new ServletException(e);

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java Sat Mar 17 07:38:09 2007
@@ -20,38 +20,22 @@
 package org.apache.cxf.transport.servlet;
 
 import java.io.IOException;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
 import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.cxf.Bus;
-import org.apache.cxf.helpers.HttpHeaderHelper;
-import org.apache.cxf.io.AbstractWrappedOutputStream;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.message.MessageImpl;
 import org.apache.cxf.service.model.EndpointInfo;
-import org.apache.cxf.transport.AbstractDestination;
-import org.apache.cxf.transport.Conduit;
 import org.apache.cxf.transport.ConduitInitiator;
 import org.apache.cxf.transport.MessageObserver;
 import org.apache.cxf.transport.http.AbstractHTTPDestination;
 
 
 public class ServletDestination extends AbstractHTTPDestination {
-
-    public static final String HTTP_REQUEST =
-        "HTTP_SERVLET_REQUEST";
-    public static final String HTTP_RESPONSE =
-        "HTTP_SERVLET_RESPONSE"; 
     
     static final Logger LOG = Logger.getLogger(ServletDestination.class.getName());
         
@@ -83,41 +67,6 @@
     }
 
     /**
-     * @param inMessage the incoming message
-     * @return the inbuilt backchannel
-     */
-    protected Conduit getInbuiltBackChannel(Message inMessage) {
-        HttpServletResponse response = (HttpServletResponse)inMessage.get(HTTP_RESPONSE);
-        return new BackChannelConduit(response);
-    }
-   
-   
-        
-    /**
-     * Copy the request headers into the message.
-     * 
-     * @param message the current message
-     * @param headers the current set of headers
-     */
-    protected void copyRequestHeaders(Message message, Map<String, List<String>> headers) {
-        HttpServletRequest req = (HttpServletRequest)message.get(HTTP_REQUEST);
-        for (Enumeration e = req.getHeaderNames(); e.hasMoreElements();) {
-            String fname = (String)e.nextElement();
-            
-            List<String> values;
-            if (headers.containsKey(fname)) {
-                values = headers.get(fname);
-            } else {
-                values = new ArrayList<String>();
-                headers.put(HttpHeaderHelper.getHeaderKey(fname), values);
-            }
-            for (Enumeration e2 = req.getHeaders(fname); e2.hasMoreElements();) {
-                String val = (String)e2.nextElement();
-                values.add(val);
-            }
-        }
-    }    
-    /**
      * Copy the response headers into the response.
      * 
      * @param message the current message
@@ -153,107 +102,9 @@
             if (LOG.isLoggable(Level.INFO)) {
                 LOG.info("Finished servicing http request on thread: " + Thread.currentThread());
             }
-        }
-        
-    }
-    
-    protected class BackChannelConduit
-        extends AbstractDestination.AbstractBackChannelConduit {
-        
-        protected HttpServletResponse response;
-        
-        BackChannelConduit(HttpServletResponse resp) {
-            response = resp;
-        }
-
-        /**
-         * Send an outbound message, assumed to contain all the name-value
-         * mappings of the corresponding input message (if any). 
-         * 
-         * @param message the message to be sent.
-         */
-        public void send(Message message) throws IOException {
-            message.put(HTTP_RESPONSE, response);
-            message.setContent(OutputStream.class,
-                               new WrappedOutputStream(message, response));
-        }
-    }
-    
-    private class WrappedOutputStream extends AbstractWrappedOutputStream {
-        
-        protected HttpServletResponse response;
-        
-        WrappedOutputStream(Message m, HttpServletResponse resp) {
-            super(m);
-            response = resp;
-        }
-
-        /**
-         * Perform any actions required on stream flush (freeze headers,
-         * reset output stream ... etc.)
-         */
-        protected void doFlush() throws IOException {
-            OutputStream responseStream = flushHeaders(outMessage);
-            if (null != responseStream && !alreadyFlushed()) {
-                resetOut(responseStream, true);
-            }
-        }
-
-        /**
-         * Perform any actions required on stream closure (handle response etc.)
-         */
-        protected void doClose() {
-            commitResponse();
-        }
-
-        protected void onWrite() throws IOException {            
-        }
-        
-        private void commitResponse() {
-            try {
-                response.flushBuffer();
-            } catch (IOException e) {
-                LOG.severe(e.getMessage());
-            }
-        }
+        }        
     }
-    
-    protected OutputStream flushHeaders(Message outMessage) throws IOException {
-        updateResponseHeaders(outMessage);
-        Object responseObj = outMessage.get(HTTP_RESPONSE);
-        OutputStream responseStream = null;
-        if (responseObj instanceof HttpServletResponse) {
-            HttpServletResponse response = (HttpServletResponse)responseObj;
-                
-            Integer i = (Integer)outMessage.get(Message.RESPONSE_CODE);
-            if (i != null) {
-                int status = i.intValue();
-                response.setStatus(status);                
-            } else {
-                response.setStatus(HttpURLConnection.HTTP_OK);
-            }
-            
-            copyResponseHeaders(outMessage, response);
-            responseStream = response.getOutputStream();
-                    
-            if (isOneWay(outMessage)) {
-                response.flushBuffer();
-            }
-        } else {
-            LOG.log(Level.WARNING, "UNEXPECTED_RESPONSE_TYPE_MSG", responseObj.getClass());
-            throw new IOException("UNEXPECTED_RESPONSE_TYPE_MSG" + responseObj.getClass());
-        }
-    
-        if (isOneWay(outMessage)) {
-            outMessage.remove(HTTP_RESPONSE);
-        }
-        return responseStream;
-    }
-    
-    protected boolean isOneWay(Message message) {
-        return message.getExchange() != null && message.getExchange().isOneWay();
-    }
-
+   
     public MessageObserver getMessageObserver() {
         return this.incomingObserver;
     }

Modified: incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java Sat Mar 17 07:38:09 2007
@@ -33,6 +33,9 @@
 import java.util.List;
 import java.util.Map;
 
+import javax.servlet.ServletInputStream;
+import javax.servlet.ServletOutputStream;
+
 import junit.framework.TestCase;
 
 import org.apache.cxf.bus.CXFBusImpl;
@@ -63,8 +66,8 @@
     private Proxy proxy;
     private Message inMessage;
     private MessageObserver observer;
-    private OutputStream os;
-    private InputStream is;
+    private ServletOutputStream os;
+    private ServletInputStream is;
     private IMocksControl control;
     
     public void setUp() throws Exception {
@@ -139,7 +142,7 @@
         contentTypes.add("text/xml");
         contentTypes.add("charset=utf8");
         headers.put("content-type", contentTypes);
-        message.put(Message.PROTOCOL_HEADERS, headers);        
+        message.put(Message.PROTOCOL_HEADERS, headers);
         
         AuthorizationPolicy authPolicy = new AuthorizationPolicy();
         authPolicy.setUserName("BJ");
@@ -284,7 +287,7 @@
         }
         
         
-        os = EasyMock.createMock(OutputStream.class);
+        os = EasyMock.createMock(ServletOutputStream.class);
         connection.getOutputStream();
         EasyMock.expectLastCall().andReturn(os);
         os.write(PAYLOAD.getBytes(), 0, PAYLOAD.length());
@@ -370,7 +373,7 @@
             String responseString = Integer.toString(responseCode);
             EasyMock.expectLastCall().andReturn(responseString).times(2);
         }
-        is = EasyMock.createMock(InputStream.class);
+        is = EasyMock.createMock(ServletInputStream.class);
         connection.getInputStream();
         EasyMock.expectLastCall().andReturn(is);
     }
@@ -390,10 +393,10 @@
                      inMessage.get(DECOUPLED_CHANNEL_MESSAGE));
         assertEquals("unexpected HTTP_REQUEST set",
                      false,
-                     inMessage.containsKey(HTTPConduit.HTTP_REQUEST));
+                     inMessage.containsKey(AbstractHTTPDestination.HTTP_REQUEST));
         assertEquals("unexpected HTTP_RESPONSE set",
                      false,
-                     inMessage.containsKey(HTTPConduit.HTTP_RESPONSE));
+                     inMessage.containsKey(AbstractHTTPDestination.HTTP_RESPONSE));
         assertEquals("unexpected Message.ASYNC_POST_RESPONSE_DISPATCH set",
                      false,
                      inMessage.containsKey(Message.ASYNC_POST_RESPONSE_DISPATCH));

Modified: incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/JettyContextInspectorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/JettyContextInspectorTest.java?view=diff&rev=519327&r1=519326&r2=519327
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/JettyContextInspectorTest.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/JettyContextInspectorTest.java Sat Mar 17 07:38:09 2007
@@ -23,17 +23,18 @@
 
 import org.easymock.classextension.EasyMock;
 import org.easymock.classextension.IMocksControl;
-import org.mortbay.http.HttpContext;
+import org.mortbay.jetty.handler.ContextHandler;
+
 
 
 public class JettyContextInspectorTest extends TestCase {
     private static final String CONTEXT_PATH = "/foo/bar";
-    private HttpContext context;
+    private ContextHandler context;
     private IMocksControl control;
     
     public void setUp() throws Exception {
         control = EasyMock.createNiceControl();
-        context = control.createMock(HttpContext.class);
+        context = control.createMock(ContextHandler.class);
         context.getContextPath();
         EasyMock.expectLastCall().andReturn(CONTEXT_PATH);
         control.replay();