You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2009/10/06 14:13:20 UTC

svn commit: r822236 - in /cxf/branches/2.2.x-fixes: ./ rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/ rt/transports/http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/ rt/transports/http/src/main/java/org/apache/cxf/t...

Author: sergeyb
Date: Tue Oct  6 12:13:19 2009
New Revision: 822236

URL: http://svn.apache.org/viewvc?rev=822236&view=rev
Log:
Merged revisions 822228 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r822228 | sergeyb | 2009-10-06 12:50:57 +0100 (Tue, 06 Oct 2009) | 1 line
  
  Attempting to minimize the code duplication in http and osgi transports, more refactoring will have to be done later on
........

Added:
    cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServletController.java
      - copied unchanged from r822228, cxf/trunk/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServletController.java
    cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractHTTPServlet.java
      - copied unchanged from r822228, cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractHTTPServlet.java
    cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractServletController.java
      - copied unchanged from r822228, cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractServletController.java
Modified:
    cxf/branches/2.2.x-fixes/   (props changed)
    cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiDestination.java
    cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServlet.java
    cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiTransportFactory.java
    cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/OsgiServletTest.java
    cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java
    cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
    cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java

Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
    svn:mergeinfo = /cxf/trunk:822228

Propchange: cxf/branches/2.2.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiDestination.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiDestination.java?rev=822236&r1=822235&r2=822236&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiDestination.java (original)
+++ cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiDestination.java Tue Oct  6 12:13:19 2009
@@ -22,12 +22,10 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-
 import org.apache.cxf.Bus;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.message.MessageImpl;
 import org.apache.cxf.service.model.EndpointInfo;
-import org.apache.cxf.transport.MessageObserver;
 import org.apache.cxf.transport.http.AbstractHTTPDestination;
 
 
@@ -93,8 +91,4 @@
         super.shutdown();
     }
 
-    public MessageObserver getMessageObserver() {
-        return this.incomingObserver;
-    }
-
 }

Modified: cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServlet.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServlet.java?rev=822236&r1=822235&r2=822236&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServlet.java (original)
+++ cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiServlet.java Tue Oct  6 12:13:19 2009
@@ -18,287 +18,41 @@
  */
 package org.apache.cxf.transport.http_osgi;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.security.Principal;
-import java.util.Collection;
-import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
+import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
 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.message.ExchangeImpl;
-import org.apache.cxf.message.Message;
 import org.apache.cxf.message.MessageImpl;
-import org.apache.cxf.security.SecurityContext;
-import org.apache.cxf.service.model.EndpointInfo;
-import org.apache.cxf.transport.http.AbstractHTTPDestination;
-import org.apache.cxf.transport.http.HTTPSession;
-import org.apache.cxf.transport.https.SSLUtils;
-import org.apache.cxf.transports.http.QueryHandler;
-import org.apache.cxf.transports.http.QueryHandlerRegistry;
-import org.apache.cxf.wsdl.http.AddressType;
-
-public class OsgiServlet extends HttpServlet {
-
-    private static final Logger LOG = LogUtils.getL7dLogger(OsgiServlet.class);
+import org.apache.cxf.transport.servlet.AbstractHTTPServlet;
 
+public class OsgiServlet extends AbstractHTTPServlet {
+    
     private OsgiDestinationRegistryIntf transport;
-    private String lastBase = "";
-    private boolean isHideServiceList;
-    private boolean disableAddressUpdates;
-    private String forcedBaseAddress;
-
+    private OsgiServletController controller;
+    
     public OsgiServlet(OsgiDestinationRegistryIntf transport) {
         this.transport = transport;
     }
 
-    @Override
-    public void destroy() {
+    public void init(ServletConfig servletConfig) throws ServletException {
+        super.init(servletConfig);
+        controller = new OsgiServletController(this);
     }
-
-    @Override
-    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException {
-        invoke(request, response);
-    }
-
-    @Override
-    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException {
-        invoke(request, response);
-    }
-
+    
     @Override
-    protected void doDelete(HttpServletRequest request, HttpServletResponse response)
-        throws ServletException, IOException {
-        invoke(request, response);
-    }
-
-    @Override
-    protected void doPut(HttpServletRequest request, HttpServletResponse response) 
-        throws ServletException, IOException {
-        invoke(request, response);
-    }
-
-    public void setHideServiceList(boolean generate) {
-        isHideServiceList = generate;
-    }
-
-    public void setDisableAddressUpdates(boolean noupdates) {
-        disableAddressUpdates = noupdates;
-    }
-
-    public void setForcedBaseAddress(String s) {
-        forcedBaseAddress = s;
+    public void destroy() {
     }
 
-    private synchronized void updateDests(HttpServletRequest request) {
-        if (disableAddressUpdates) {
-            return;
-        }
-        String base = forcedBaseAddress == null ? getBaseURL(request) : forcedBaseAddress;
-
-        //if (base.equals(lastBase)) {
-        //    return;
-        //}
-        Set<String> paths = transport.getDestinationsPaths();
-        for (String path : paths) {
-            OsgiDestination d2 = transport.getDestinationForPath(path);
-            String ad = d2.getEndpointInfo().getAddress();
-            if (ad.equals(path)
-                || ad.equals(lastBase + path)) {
-                d2.getEndpointInfo().setAddress(base + path);
-                if (d2.getEndpointInfo().getExtensor(AddressType.class) != null) {
-                    d2.getEndpointInfo().getExtensor(AddressType.class).setLocation(base + path);
-                }
-            }
-        }
-        lastBase = base;
+    public OsgiDestinationRegistryIntf getTransport() {
+        return transport;
     }
 
     public void invoke(HttpServletRequest request, HttpServletResponse res) throws ServletException {
-        try {
-            EndpointInfo ei = new EndpointInfo();
-            String address = request.getPathInfo() == null ? "" : request.getPathInfo();
-
-            ei.setAddress(address);
-            OsgiDestination d = (OsgiDestination) transport.getDestinationForPath(ei.getAddress());
-
-            if (d == null) {
-                if (request.getRequestURI().endsWith("/services")
-                    || request.getRequestURI().endsWith("/services/")
-                    || StringUtils.isEmpty(request.getPathInfo())
-                    || "/".equals(request.getPathInfo())) {
-                    updateDests(request);
-                    generateServiceList(request, res);
-                } else {
-                    d = checkRestfulRequest(request);
-                    if (d == null || d.getMessageObserver() == null) {
-                        LOG.warning("Can't find the the request for "
-                                    + request.getRequestURL() + "'s Observer ");
-                        generateNotFound(request, res);
-                    }  else { // the request should be a restful service request
-                        updateDests(request);
-                        invokeDestination(request, res, d);
-                    }
-                }
-            } else {
-                ei = d.getEndpointInfo();
-                Bus bus = d.getBus();
-                if (null != request.getQueryString()
-                    && request.getQueryString().length() > 0
-                    && bus.getExtension(QueryHandlerRegistry.class) != null) {
-
-                    String ctxUri = request.getPathInfo();
-                    String baseUri = request.getRequestURL().toString()
-                        + "?" + request.getQueryString();
-                    // update the EndPoint Address with request url
-                    if ("GET".equals(request.getMethod())) {
-                        updateDests(request);
-                    }
-
-                    for (QueryHandler qh : bus.getExtension(QueryHandlerRegistry.class).getHandlers()) {
-                        if (qh.isRecognizedQuery(baseUri, ctxUri, ei)) {
-
-                            res.setContentType(qh.getResponseContentType(baseUri, ctxUri));
-                            OutputStream out = res.getOutputStream();
-                            try {
-                                qh.writeResponse(baseUri, ctxUri, ei, out);
-                                out.flush();
-                                return;
-                            } catch (Exception e) {
-                                //throw new ServletException(e);
-                                LOG.warning(qh.getClass().getName()
-                                    + " Exception caught writing response: "
-                                    + e.getMessage());
-                            }
-                        }
-                    }
-                } else {
-                    invokeDestination(request, res, d);
-                }
-            }
-        } catch (IOException e) {
-            throw new ServletException(e);
-        }
-    }
-
-    private OsgiDestination checkRestfulRequest(HttpServletRequest request) throws IOException {
-
-        String address = request.getPathInfo() == null ? "" : request.getPathInfo();
-
-        for (String path : transport.getDestinationsPaths()) {
-            if (address.startsWith(path)) {
-                return transport.getDestinationForPath(path);
-            }
-        }
-        return null;
-    }
-
-    private void generateServiceList(HttpServletRequest request, HttpServletResponse response)
-        throws IOException {
-        Collection<OsgiDestination> destinations = transport.getDestinations();
-        response.setContentType("text/html");
-        response.getWriter().write("<html><body>");
-        if (!isHideServiceList) {
-            if (destinations.size() > 0) {
-                for (OsgiDestination sd : destinations) {
-                    if (null != sd.getEndpointInfo().getName()) {
-                        String address = sd.getEndpointInfo().getAddress();
-                        response.getWriter().write("<p> <a href=\"" + address + "?wsdl\">");
-                        response.getWriter().write(sd.getEndpointInfo().getName() + "</a> </p>");
-                    }
-                }
-            } else {
-                response.getWriter().write("No service was found.");
-            }
-        }
-        response.getWriter().write("</body></html>");
-    }
-
-    private String getBaseURL(HttpServletRequest request) {
-        String reqPrefix = request.getRequestURL().toString();
-        String pathInfo = request.getPathInfo() == null ? "" : request.getPathInfo();
-        //fix for CXF-898
-        if (!"/".equals(pathInfo) || reqPrefix.endsWith("/")) {
-            reqPrefix = reqPrefix.substring(0, reqPrefix.length() - pathInfo.length());
-        }
-        return reqPrefix;
+        controller.invoke(request, res);
     }
-
-    protected void generateNotFound(HttpServletRequest request, HttpServletResponse res) throws IOException {
-        res.setStatus(404);
-        res.setContentType("text/html");
-        res.getWriter().write("<html><body>No service was found.</body></html>");
-    }
-
-    public void invokeDestination(final HttpServletRequest request, 
-                                  HttpServletResponse response, 
-                                  OsgiDestination d) throws ServletException {
-        if (LOG.isLoggable(Level.FINE)) {
-            LOG.fine("Service http request on thread: " + Thread.currentThread());
-        }
-
-        try {
-            MessageImpl inMessage = createInMessage();
-            inMessage.setContent(InputStream.class, request.getInputStream());
-            inMessage.put(AbstractHTTPDestination.HTTP_REQUEST, request);
-            inMessage.put(AbstractHTTPDestination.HTTP_RESPONSE, response);
-            inMessage.put(AbstractHTTPDestination.HTTP_CONTEXT, getServletContext());
-            inMessage.put(AbstractHTTPDestination.HTTP_CONFIG, getServletConfig());
-            inMessage.put(Message.HTTP_REQUEST_METHOD, request.getMethod());
-            inMessage.put(Message.REQUEST_URI, request.getRequestURI());
-            inMessage.put(Message.PATH_INFO, request.getPathInfo());
-            inMessage.put(Message.QUERY_STRING, request.getQueryString());
-            inMessage.put(Message.CONTENT_TYPE, request.getContentType());
-            inMessage.put(Message.ACCEPT_CONTENT_TYPE, request.getHeader("Accept"));
-            inMessage.put(Message.BASE_PATH, d.getAddress().getAddress().getValue());
-            inMessage.put(SecurityContext.class, new SecurityContext() {
-                public Principal getUserPrincipal() {
-                    return request.getUserPrincipal();
-                }
-                public boolean isUserInRole(String role) {
-                    return request.isUserInRole(role);
-                }
-            });
-
-            // work around a bug with Jetty which results in the character
-            // encoding not being trimmed correctly.
-            String enc = request.getCharacterEncoding();
-            if (enc != null && enc.endsWith("\"")) {
-                enc = enc.substring(0, enc.length() - 1);
-            }
-
-            String normalizedEncoding = HttpHeaderHelper.mapCharset(enc);
-            if (normalizedEncoding == null) {
-                String m = new org.apache.cxf.common.i18n.Message("INVALID_ENCODING_MSG",
-                                                                  LOG, enc).toString();
-                LOG.log(Level.WARNING, m);
-                throw new IOException(m);
-            }
-
-            inMessage.put(Message.ENCODING, normalizedEncoding);
-            SSLUtils.propogateSecureSession(request, inMessage);
-
-            ExchangeImpl exchange = createExchange();
-            exchange.setInMessage(inMessage);
-            exchange.setSession(new HTTPSession(request));
-
-            d.doMessage(inMessage);
-        } catch (IOException e) {
-            throw new ServletException(e);
-        }
-
-    }
-
+    
     protected MessageImpl createInMessage() {
         return new MessageImpl();
     }

Modified: cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiTransportFactory.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiTransportFactory.java?rev=822236&r1=822235&r2=822236&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiTransportFactory.java (original)
+++ cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/main/java/org/apache/cxf/transport/http_osgi/OsgiTransportFactory.java Tue Oct  6 12:13:19 2009
@@ -47,5 +47,9 @@
         }
         return d;
     }
+    
+    public void init() {
+        
+    }
 
 }

Modified: cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/OsgiServletTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/OsgiServletTest.java?rev=822236&r1=822235&r2=822236&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/OsgiServletTest.java (original)
+++ cxf/branches/2.2.x-fixes/rt/transports/http-osgi/src/test/java/org/apache/cxf/transport/http_osgi/OsgiServletTest.java Tue Oct  6 12:13:19 2009
@@ -28,6 +28,7 @@
 
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
 import javax.servlet.ServletInputStream;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
@@ -40,6 +41,8 @@
 import org.apache.cxf.message.MessageImpl;
 import org.apache.cxf.security.SecurityContext;
 import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.service.model.InterfaceInfo;
+import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.cxf.transport.MessageObserver;
 import org.apache.cxf.transport.http.AbstractHTTPDestination;
 import org.apache.cxf.transport.http.HTTPSession;
@@ -47,7 +50,6 @@
 import org.apache.cxf.transports.http.QueryHandlerRegistry;
 import org.apache.cxf.wsdl.EndpointReferenceUtils;
 import org.apache.cxf.wsdl.http.AddressType;
-
 import org.easymock.classextension.EasyMock;
 import org.easymock.classextension.IMocksControl;
 
@@ -68,14 +70,11 @@
     private static final String QUERY = "wsdl";
     private static final String VERB = "POST";
     private static final String TEXT = "text/html";
+    private static final String TEXT_LIST = "text/html; charset=UTF-8";
     private static final String XML = "text/xml";
     private static final String ENCODING = "UTF-8";
     private static final String NO_SERVICE = 
         "<html><body>No service was found.</body></html>";
-    private static final String HEADER = "<html><body>";
-    private static final String SERVICE = "<p> <a href=\"" + ADDRESS + "?wsdl\">";
-    private static final String NAME = QNAME.toString() + "</a> </p>";
-    private static final String FOOTER = "</body></html>";
     private IMocksControl control; 
     private Bus bus;
     private OsgiDestinationRegistryIntf registry;
@@ -108,6 +107,10 @@
         endpoint = new EndpointInfo();
         endpoint.setAddress(ADDRESS);
         endpoint.setName(QNAME);
+        ServiceInfo service = new ServiceInfo();
+        service.setInterface(new InterfaceInfo(service, QNAME));
+        endpoint.setService(service);
+        
         paths = new TreeSet<String>();
     }
 
@@ -145,7 +148,9 @@
     @Test
     public void testInvokeGetServices() throws Exception {
         setUpRequest(SERVICES, null, 1);
-        setUpResponse(0, TEXT, HEADER, SERVICE, NAME, FOOTER);
+        setUpResponse(0, TEXT_LIST, 
+                      "<span class=\"field\">Endpoint address:</span> "
+                      + "<span class=\"value\">" + ADDRESS + "</span>");
 
         control.replay();
 
@@ -159,7 +164,8 @@
     @Test
     public void testInvokeGetServicesNoService() throws Exception {
         setUpRequest(SERVICES, null, 0);
-        setUpResponse(0, TEXT, HEADER, FOOTER);
+        setUpResponse(0, TEXT_LIST, 
+                      "<span class=\"heading\">No services have been found.</span>");
 
         control.replay();
 
@@ -329,7 +335,7 @@
     }
 
     private OsgiServlet setUpServlet() { 
-        return new OsgiServlet(registry) {
+        OsgiServlet servlet = new OsgiServlet(registry) {
             public ServletContext getServletContext() {
                 return context;
             }
@@ -343,5 +349,11 @@
                 return exchange;
             }            
         };
+        try {
+            servlet.init(config);
+        } catch (ServletException ex) {
+            // ignore
+        }
+        return servlet;
     }
 }

Modified: cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java?rev=822236&r1=822235&r2=822236&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java (original)
+++ cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/AbstractCXFServlet.java Tue Oct  6 12:13:19 2009
@@ -18,19 +18,13 @@
  */
 package org.apache.cxf.transport.servlet;
 
-import java.io.IOException;
 import java.lang.ref.WeakReference;
-import java.util.Arrays;
 import java.util.Hashtable;
-import java.util.List;
 import java.util.Map;
 import java.util.logging.Logger;
 
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -43,17 +37,11 @@
 
 
 
-public abstract class AbstractCXFServlet extends HttpServlet {
+public abstract class AbstractCXFServlet extends AbstractHTTPServlet {
     
     static final Map<String, WeakReference<Bus>> BUS_MAP = new Hashtable<String, WeakReference<Bus>>();
     static final Logger LOG = getLogger();
     
-    /**
-     * List of well-known HTTP 1.1 verbs, with POST and GET being the most used verbs at the top 
-     */
-    private static final List<String> KNOWN_HTTP_VERBS = 
-        Arrays.asList(new String[]{"POST", "GET", "PUT", "DELETE", "HEAD", "OPTIONS", "TRACE"});
-    
     protected Bus bus;
     protected ServletTransportFactory servletTransportFactory;
     protected ServletController controller;
@@ -147,73 +135,7 @@
         BUS_MAP.remove(s);
         bus.shutdown(true);
     }
-    
-    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
-        throws ServletException {
-        invoke(request, response);
-    }
-
-    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
-        throws ServletException {
-        invoke(request, response);
-    }
-
-    @Override
-    protected void doDelete(HttpServletRequest request, HttpServletResponse response)
-        throws ServletException, IOException {
-        invoke(request, response);
-    }
-
-    @Override
-    protected void doPut(HttpServletRequest request, HttpServletResponse response) 
-        throws ServletException, IOException {
-        invoke(request, response);
-    }
-    
-    @Override
-    protected void doHead(HttpServletRequest request, HttpServletResponse response) 
-        throws ServletException, IOException {
-        invoke(request, response);
-    }
-    
-    @Override
-    protected void doOptions(HttpServletRequest request, HttpServletResponse response) 
-        throws ServletException, IOException {
-        invoke(request, response);
-    }
-    
-    
-    
-    /**
-     * {@inheritDoc}
-     * 
-     * javax.http.servlet.HttpServlet does not let to override the code which deals with
-     * unrecognized HTTP verbs such as PATCH (being standardized), WebDav ones, etc.
-     * Thus we let CXF servlets process unrecognized HTTP verbs directly, otherwise we delegate
-     * to HttpService  
-     */
-    @Override
-    public void service(ServletRequest req, ServletResponse res)
-        throws ServletException, IOException {
-        
-        HttpServletRequest      request;
-        HttpServletResponse     response;
         
-        try {
-            request = (HttpServletRequest) req;
-            response = (HttpServletResponse) res;
-        } catch (ClassCastException e) {
-            throw new ServletException("Unrecognized HTTP request or response object");
-        }
-        
-        String method = request.getMethod();
-        if (KNOWN_HTTP_VERBS.contains(method)) {
-            super.service(request, response);
-        } else {
-            invoke(request, response);
-        }
-    }
-    
     protected void invoke(HttpServletRequest request, HttpServletResponse response) throws ServletException {
         try {
             BusFactory.setThreadDefaultBus(getBus());

Modified: cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java?rev=822236&r1=822235&r2=822236&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java (original)
+++ cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java Tue Oct  6 12:13:19 2009
@@ -39,7 +39,6 @@
 import org.apache.cxf.Bus;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.StringUtils;
-import org.apache.cxf.common.util.UrlUtils;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.service.model.EndpointInfo;
@@ -48,55 +47,30 @@
 import org.apache.cxf.transports.http.QueryHandlerRegistry;
 import org.apache.cxf.wsdl.http.AddressType;
 
-public class ServletController {
+public class ServletController extends AbstractServletController {
     
     private static final Logger LOG = LogUtils.getL7dLogger(ServletController.class);
-    private static final String DEFAULT_LISTINGS_CLASSIFIER = "/services";
     
     private ServletTransportFactory transport;
     private ServletContext servletContext;
     private ServletConfig servletConfig;
     private Bus bus;
     private String lastBase = "";
-    private boolean isHideServiceList;
-    private boolean disableAddressUpdates;
-    private String forcedBaseAddress;
-    private String serviceListStyleSheet;
-    private String serviceListRelativePath = DEFAULT_LISTINGS_CLASSIFIER;
- 
+    
     public ServletController(ServletTransportFactory df,
                              ServletConfig config,
                              ServletContext context, 
                              Bus b) {
+        super(config);
         this.transport = df;
         this.servletConfig = config;
         this.servletContext = context;
         this.bus = b;
-        init();
     }
     
     ServletController() {
-        
     }
         
-    public void setHideServiceList(boolean generate) {
-        isHideServiceList = generate;
-    }
-    
-    public void setServiceListRelativePath(String relativePath) {
-        serviceListRelativePath = relativePath;
-    }
-    
-    public void setDisableAddressUpdates(boolean noupdates) {
-        disableAddressUpdates = noupdates;
-    }
-    public void setForcedBaseAddress(String s) {
-        forcedBaseAddress = s;
-    }
-    public void setServiceListStyleSheet(String serviceListStyleSheet) {
-        this.serviceListStyleSheet = serviceListStyleSheet;
-    }
-    
     String getLastBaseURL() {
         return lastBase;
     }
@@ -402,40 +376,6 @@
         }
     }
     
-    protected String getBaseURL(HttpServletRequest request) {
-        String reqPrefix = request.getRequestURL().toString();        
-        String pathInfo = request.getPathInfo() == null ? "" : request.getPathInfo();
-        //fix for CXF-898
-        if (!"/".equals(pathInfo) || reqPrefix.endsWith("/")) {
-            // needs to be done given that pathInfo is decoded
-            // TODO : it's unlikely servlet path will contain encoded values so we're most 
-            // likely safe however we need to ensure if it happens then this code works properly too
-            reqPrefix = UrlUtils.pathDecode(reqPrefix);
-            // pathInfo drops matrix parameters attached to a last path segment
-            int offset = 0;
-            int index = getMatrixParameterIndex(reqPrefix, pathInfo);
-            if (index >= pathInfo.length()) {
-                offset = reqPrefix.length() - index;
-            }
-            reqPrefix = reqPrefix.substring(0, reqPrefix.length() - pathInfo.length() - offset);
-        }
-        return reqPrefix;
-    }
-    
-    private int getMatrixParameterIndex(String reqPrefix, String pathInfo) {
-        int index = reqPrefix.lastIndexOf(';');
-        int lastIndex = -1;
-        while (index >= pathInfo.length()) {
-            lastIndex = index;
-            reqPrefix = reqPrefix.substring(0, index);
-            if (reqPrefix.endsWith(pathInfo)) {
-                break;
-            }
-            index = reqPrefix.lastIndexOf(';');
-        }
-        return lastIndex;
-    }
-
     protected void generateNotFound(HttpServletRequest request, HttpServletResponse res) throws IOException {
         res.setStatus(404);
         res.setContentType("text/html");
@@ -460,29 +400,4 @@
 
     }
     
-    private void init() {
-        
-        transport.setServletController(this);
-        
-        String hideServiceList = servletConfig.getInitParameter("hide-service-list-page");
-        if (hideServiceList != null) {
-            isHideServiceList = Boolean.valueOf(hideServiceList);
-        }
-        String isDisableAddressUpdates = servletConfig.getInitParameter("disable-address-updates");
-        if (isDisableAddressUpdates != null) {
-            disableAddressUpdates = Boolean.valueOf(isDisableAddressUpdates);
-        }
-        String isForcedBaseAddress = servletConfig.getInitParameter("base-address");
-        if (isForcedBaseAddress != null) {
-            forcedBaseAddress = isForcedBaseAddress;
-        }
-        String serviceListTransform = servletConfig.getInitParameter("service-list-stylesheet");
-        if (serviceListTransform != null) {
-            serviceListStyleSheet = serviceListTransform;
-        }
-        String serviceListPath = servletConfig.getInitParameter("service-list-path");
-        if (serviceListPath != null) {
-            serviceListRelativePath = serviceListPath;
-        }
-    }
 }

Modified: cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java?rev=822236&r1=822235&r2=822236&view=diff
==============================================================================
--- cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java (original)
+++ cxf/branches/2.2.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletDestination.java Tue Oct  6 12:13:19 2009
@@ -33,7 +33,6 @@
 import org.apache.cxf.message.MessageImpl;
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.transport.ConduitInitiator;
-import org.apache.cxf.transport.MessageObserver;
 import org.apache.cxf.transport.http.AbstractHTTPDestination;
 import org.apache.cxf.transport.http.HTTPSession;
 
@@ -110,8 +109,4 @@
         super.shutdown();
     }
     
-    public MessageObserver getMessageObserver() {
-        return this.incomingObserver;
-    }
-    
 }