You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2013/11/22 20:28:08 UTC

svn commit: r1544657 - in /cxf/trunk/rt: frontend/jaxws/src/main/jaxws22/org/apache/cxf/transport/http_jaxws_spi/ transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/ transports/http-jetty/src/test/java/org/apache/cxf/transport/http...

Author: dkulp
Date: Fri Nov 22 19:28:07 2013
New Revision: 1544657

URL: http://svn.apache.org/r1544657
Log:
Reduce some duplicate code between the various HTTP providers

Modified:
    cxf/trunk/rt/frontend/jaxws/src/main/jaxws22/org/apache/cxf/transport/http_jaxws_spi/JAXWSHttpSpiDestination.java
    cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
    cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java
    cxf/trunk/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpDestination.java
    cxf/trunk/rt/transports/http-netty/netty-server/src/test/java/org/apache/cxf/transport/http/netty/server/NettyHttpDestinationTest.java
    cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java

Modified: cxf/trunk/rt/frontend/jaxws/src/main/jaxws22/org/apache/cxf/transport/http_jaxws_spi/JAXWSHttpSpiDestination.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/jaxws22/org/apache/cxf/transport/http_jaxws_spi/JAXWSHttpSpiDestination.java?rev=1544657&r1=1544656&r2=1544657&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/jaxws22/org/apache/cxf/transport/http_jaxws_spi/JAXWSHttpSpiDestination.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/jaxws22/org/apache/cxf/transport/http_jaxws_spi/JAXWSHttpSpiDestination.java Fri Nov 22 19:28:07 2013
@@ -85,7 +85,8 @@ public class JAXWSHttpSpiDestination ext
         Message inMessage = new MessageImpl();
         ExchangeImpl exchange = new ExchangeImpl();
         exchange.setInMessage(inMessage);
-        setupMessage(inMessage, null, req, resp);
+        
+        setupMessage(inMessage, null, req.getServletContext(), req, resp);
 
         ((MessageImpl)inMessage).setDestination(this);
 

Modified: cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java?rev=1544657&r1=1544656&r2=1544657&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java (original)
+++ cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java Fri Nov 22 19:28:07 2013
@@ -42,17 +42,13 @@ import org.apache.cxf.common.util.Reflec
 import org.apache.cxf.configuration.jsse.TLSServerParameters;
 import org.apache.cxf.configuration.security.CertificateConstraintsType;
 import org.apache.cxf.continuations.ContinuationProvider;
-import org.apache.cxf.continuations.SuspendedInvocationException;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.io.CopyingOutputStream;
-import org.apache.cxf.message.ExchangeImpl;
 import org.apache.cxf.message.Message;
-import org.apache.cxf.message.MessageImpl;
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.transport.http.AbstractHTTPDestination;
 import org.apache.cxf.transport.http.DestinationRegistry;
-import org.apache.cxf.transport.http.HTTPSession;
 import org.apache.cxf.transport.http_jetty.continuations.JettyContinuationProvider;
 import org.apache.cxf.transport.https.CertConstraintsJaxBUtils;
 import org.eclipse.jetty.http.Generator;
@@ -248,7 +244,7 @@ public class JettyHTTPDestination extend
             if (loader != null) {
                 origLoader = ClassLoaderUtils.setThreadContextClassloader(loader);
             }
-            serviceRequest(context, req, resp);
+            invoke(null, context, req, resp);
         } finally {
             if (origBus != bus) {
                 BusFactory.setThreadDefaultBus(origBus);
@@ -258,58 +254,16 @@ public class JettyHTTPDestination extend
             }
         }    
     }
-
-    protected void serviceRequest(final ServletContext context, 
+    
+    protected void invokeComplete(final ServletContext context, 
                                   final HttpServletRequest req, 
-                                  final HttpServletResponse resp)
-        throws IOException {
+                                  final HttpServletResponse resp,
+                                  Message m) throws IOException {
+        resp.flushBuffer();
         Request baseRequest = (req instanceof Request) 
             ? (Request)req : getCurrentRequest();
-        
-        if (LOG.isLoggable(Level.FINE)) {
-            LOG.fine("Service http request on thread: " + Thread.currentThread());
-        }
-        Message inMessage = retrieveFromContinuation(req);
-        
-        if (inMessage == null) {
-            
-            inMessage = new MessageImpl();
-            ExchangeImpl exchange = new ExchangeImpl();
-            exchange.setInMessage(inMessage);
-            setupMessage(inMessage, context, req, resp);
-            
-            ((MessageImpl)inMessage).setDestination(this);
-    
-            exchange.setSession(new HTTPSession(req));
-        }
-        
-        try {    
-            incomingObserver.onMessage(inMessage);
-            resp.flushBuffer();
-            baseRequest.setHandled(true);
-            ContinuationProvider p = inMessage.get(ContinuationProvider.class);
-            if (p != null) {
-                p.complete();
-            }
-        } catch (SuspendedInvocationException ex) {
-            if (ex.getRuntimeException() != null) {
-                throw ex.getRuntimeException();
-            }
-            //else nothing to do
-        } catch (Fault ex) {
-            Throwable cause = ex.getCause();
-            if (cause instanceof RuntimeException) {
-                throw (RuntimeException)cause;
-            } else {
-                throw ex;
-            }
-        } catch (RuntimeException ex) {
-            throw ex;
-        } finally {
-            if (LOG.isLoggable(Level.FINE)) {
-                LOG.fine("Finished servicing http request on thread: " + Thread.currentThread());
-            }
-        }
+        baseRequest.setHandled(true);
+        super.invokeComplete(context, req, resp, m);
     }
     
     protected OutputStream flushHeaders(Message outMessage, boolean getStream) throws IOException {

Modified: cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java?rev=1544657&r1=1544656&r2=1544657&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java (original)
+++ cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java Fri Nov 22 19:28:07 2013
@@ -664,6 +664,7 @@ public class JettyHTTPDestinationTest ex
                 EasyMock.expect(request.getHeader("Accept")).andReturn("*/*");  
                 EasyMock.expect(request.getContentType()).andReturn("text/xml charset=utf8").times(2);
                 EasyMock.expect(request.getAttribute("org.eclipse.jetty.ajax.Continuation")).andReturn(null);
+                EasyMock.expect(request.getAttribute("http.service.redirection")).andReturn(null).anyTimes();
                 
                 HttpFields httpFields = new HttpFields();
                 httpFields.add("content-type", "text/xml");

Modified: cxf/trunk/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpDestination.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpDestination.java?rev=1544657&r1=1544656&r2=1544657&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpDestination.java (original)
+++ cxf/trunk/rt/transports/http-netty/netty-server/src/main/java/org/apache/cxf/transport/http/netty/server/NettyHttpDestination.java Fri Nov 22 19:28:07 2013
@@ -36,16 +36,11 @@ import org.apache.cxf.common.classloader
 import org.apache.cxf.common.classloader.ClassLoaderUtils.ClassLoaderHolder;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.continuations.ContinuationProvider;
-import org.apache.cxf.continuations.SuspendedInvocationException;
 import org.apache.cxf.interceptor.Fault;
-import org.apache.cxf.message.ExchangeImpl;
 import org.apache.cxf.message.Message;
-import org.apache.cxf.message.MessageImpl;
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.transport.http.AbstractHTTPDestination;
 import org.apache.cxf.transport.http.DestinationRegistry;
-import org.apache.cxf.transport.http.HTTPSession;
 
 public class NettyHttpDestination extends AbstractHTTPDestination {
 
@@ -176,7 +171,7 @@ public class NettyHttpDestination extend
             if (loader != null) {
                 origLoader = ClassLoaderUtils.setThreadContextClassloader(loader);
             }
-            serviceRequest(context, req, resp);
+            invoke(null, context, req, resp);
         } finally {
             if (origBus != bus) {
                 BusFactory.setThreadDefaultBus(origBus);
@@ -186,59 +181,15 @@ public class NettyHttpDestination extend
             }
         }
     }
-
-    protected void serviceRequest(final ServletContext context,
-                                  final HttpServletRequest req,
-                                  final HttpServletResponse resp)
-        throws IOException {
-
-        if (LOG.isLoggable(Level.FINE)) {
-            LOG.fine("Service http request on thread: " + Thread.currentThread());
-        }
-        Message inMessage = retrieveFromContinuation(req);
-
-        if (inMessage == null) {
-
-            ExchangeImpl exchange = new ExchangeImpl();
-            inMessage = new MessageImpl();
-            exchange.setInMessage(inMessage);
-            setupMessage(inMessage, context, req, resp);
-
-            ((MessageImpl) inMessage).setDestination(this);
-
-            exchange.setSession(new HTTPSession(req));
-        }
-
-        try {
-            incomingObserver.onMessage(inMessage);
-
-            resp.flushBuffer();
-            ContinuationProvider p = inMessage.get(ContinuationProvider.class);
-            if (p != null) {
-                p.complete();
-            }
-        } catch (SuspendedInvocationException ex) {
-            if (ex.getRuntimeException() != null) {
-                throw ex.getRuntimeException();
-            }
-            //else nothing to do
-        } catch (Fault ex) {
-            Throwable cause = ex.getCause();
-            if (cause instanceof RuntimeException) {
-                throw (RuntimeException) cause;
-            } else {
-                throw ex;
-            }
-        } catch (RuntimeException ex) {
-            throw ex;
-        } finally {
-            if (LOG.isLoggable(Level.FINE)) {
-                LOG.fine("Finished servicing http request on thread: " + Thread.currentThread());
-            }
-        }
+    
+    protected void invokeComplete(final ServletContext context, 
+                                  final HttpServletRequest req, 
+                                  final HttpServletResponse resp,
+                                  Message m) throws IOException {
+        resp.flushBuffer();
+        super.invokeComplete(context, req, resp, m);
     }
 
-
     public ServerEngine getEngine() {
         return engine;
     }

Modified: cxf/trunk/rt/transports/http-netty/netty-server/src/test/java/org/apache/cxf/transport/http/netty/server/NettyHttpDestinationTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http-netty/netty-server/src/test/java/org/apache/cxf/transport/http/netty/server/NettyHttpDestinationTest.java?rev=1544657&r1=1544656&r2=1544657&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http-netty/netty-server/src/test/java/org/apache/cxf/transport/http/netty/server/NettyHttpDestinationTest.java (original)
+++ cxf/trunk/rt/transports/http-netty/netty-server/src/test/java/org/apache/cxf/transport/http/netty/server/NettyHttpDestinationTest.java Fri Nov 22 19:28:07 2013
@@ -661,6 +661,7 @@ public class NettyHttpDestinationTest ex
                 EasyMock.expect(request.getHeader("Accept")).andReturn("*/*");  
                 EasyMock.expect(request.getContentType()).andReturn("text/xml charset=utf8").times(2);
                 EasyMock.expect(request.getAttribute("org.eclipse.jetty.ajax.Continuation")).andReturn(null);
+                EasyMock.expect(request.getAttribute("http.service.redirection")).andReturn(null).anyTimes();
 
                 List<String> contentType = new ArrayList<String>();
                 contentType.add("text/xml");

Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java?rev=1544657&r1=1544656&r2=1544657&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java (original)
+++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java Fri Nov 22 19:28:07 2013
@@ -212,7 +212,7 @@ public abstract class AbstractHTTPDestin
         return ex == null ? false : ex.isOneWay();
     }
     
-    public void invoke(final ServletConfig config,
+    public void invoke(final ServletConfig config, 
                        final ServletContext context, 
                        final HttpServletRequest req, 
                        final HttpServletResponse resp) throws IOException {
@@ -238,31 +238,42 @@ public abstract class AbstractHTTPDestin
         
         try {    
             incomingObserver.onMessage(inMessage);
-            ContinuationProvider p = inMessage.get(ContinuationProvider.class);
-            if (p != null) {
-                p.complete();
-            }
+            invokeComplete(context, req, resp, inMessage);
         } catch (SuspendedInvocationException ex) {
             if (ex.getRuntimeException() != null) {
                 throw ex.getRuntimeException();
             }
             //else nothing to do, just finishing the processing
+        } catch (Fault ex) {
+            Throwable cause = ex.getCause();
+            if (cause instanceof RuntimeException) {
+                throw (RuntimeException)cause;
+            } else {
+                throw ex;
+            }
+        } catch (RuntimeException ex) {
+            throw ex;
+        } finally {
+            if (LOG.isLoggable(Level.FINE)) {
+                LOG.fine("Finished servicing http request on thread: " + Thread.currentThread());
+            }
+        }
+    }
+    
+    protected void invokeComplete(final ServletContext context, 
+                                  final HttpServletRequest req, 
+                                  final HttpServletResponse resp,
+                                  Message m) throws IOException {
+        ContinuationProvider p = m.get(ContinuationProvider.class);
+        if (p != null) {
+            p.complete();
         }
-
- 
     }
 
     private void copyKnownRequestAttributes(HttpServletRequest request, Message message) {
         message.put(SERVICE_REDIRECTION, request.getAttribute(SERVICE_REDIRECTION));
     }
-    
-    protected void setupMessage(Message inMessage,
-                                final ServletContext context, 
-                                final HttpServletRequest req, 
-                                final HttpServletResponse resp) throws IOException {
-        setupMessage(inMessage, null, context, req, resp);
-    }
-    
+        
     protected void setupMessage(final Message inMessage,
                                 final ServletConfig config,
                                 final ServletContext context,