Author: ningjiang
Date: Sun Aug 12 07:09:07 2007
New Revision: 565075

URL: http://svn.apache.org/viewvc?view=rev&rev=565075
Log:
Fixed CXF-898 issue

Modified:
    
incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/ServletController.java
    
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/CXFServletTest.java
    
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/ExternalServicesServletTest.java
    
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/web-external.xml

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=565075&r1=565074&r2=565075
==============================================================================
--- 
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
 Sun Aug 12 07:09:07 2007
@@ -60,7 +60,7 @@
     
     private synchronized void updateDests(HttpServletRequest request) {
         String base = getBaseURL(request);
-        
+                
         if (base.equals(lastBase)) {
             return;
         }
@@ -88,8 +88,8 @@
             ServletDestination d = 
(ServletDestination)transport.getDestinationForPath(ei.getAddress());
             
             if (d == null) {
-                if (request.getRequestURI().endsWith("services")
-                    || request.getRequestURI().endsWith("services/")
+                if (request.getRequestURI().endsWith("/services")
+                    || request.getRequestURI().endsWith("/services/")
                     || StringUtils.isEmpty(request.getPathInfo())
                     || "/".equals(request.getPathInfo())) {
                     updateDests(request);
@@ -176,10 +176,13 @@
     }
 
     private String getBaseURL(HttpServletRequest request) {
-        String reqPerfix = request.getRequestURL().toString();
+        String reqPrefix = request.getRequestURL().toString();        
         String pathInfo = request.getPathInfo() == null ? "" : 
request.getPathInfo();
-        reqPerfix = reqPerfix.substring(0, reqPerfix.length() - 
pathInfo.length());
-        return reqPerfix;
+        //fix for CXF-898
+        if (!"/".equals(pathInfo) || reqPrefix.endsWith("/")) {            
+            reqPrefix = reqPrefix.substring(0, reqPrefix.length() - 
pathInfo.length());
+        }
+        return reqPrefix;
     }
 
     protected void generateNotFound(HttpServletRequest request, 
HttpServletResponse res) throws IOException {

Modified: 
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/CXFServletTest.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/CXFServletTest.java?view=diff&rev=565075&r1=565074&r2=565075
==============================================================================
--- 
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/CXFServletTest.java
 (original)
+++ 
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/CXFServletTest.java
 Sun Aug 12 07:09:07 2007
@@ -84,19 +84,26 @@
         ServletUnitClient client = newClient();
         client.setExceptionsThrownOnErrorStatus(false);
 
-        WebResponse res = client.getResponse(CONTEXT_URL + "/services");    
+        WebResponse res = client.getResponse(CONTEXT_URL + "/services");
+        
         
         WebLink[] links = res.getLinks();
-        assertEquals("There should get two link for service", 2, links.length);
+        assertEquals("There should get two links for the service", 2, 
links.length);
         assertEquals(CONTEXT_URL + "/services/greeter?wsdl", 
links[0].getURLString());       
+        assertEquals(CONTEXT_URL + "/services/greeter2?wsdl", 
links[1].getURLString()); 
         assertEquals("text/html", res.getContentType());
         
-        res = client.getResponse(CONTEXT_URL + "/services");
+        res = client.getResponse(CONTEXT_URL + "/services/");
+       
+        
         links = res.getLinks();
-        assertEquals("There should get two link for service", 2, links.length);
-        assertEquals(CONTEXT_URL + "/services/greeter?wsdl", 
links[0].getURLString());       
+        assertEquals("There should get two links for the service", 2, 
links.length);
+        assertEquals(CONTEXT_URL + "/services/greeter?wsdl", 
links[0].getURLString());
+        assertEquals(CONTEXT_URL + "/services/greeter2?wsdl", 
links[1].getURLString()); 
+        
         assertEquals("text/html", res.getContentType());
         
+       
         // Ensure that the Bus is available for people doing an 
Endpoint.publish() or similar.
         assertNotNull(BusFactory.getDefaultBus(false));
     }

Modified: 
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/ExternalServicesServletTest.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/ExternalServicesServletTest.java?view=diff&rev=565075&r1=565074&r2=565075
==============================================================================
--- 
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/ExternalServicesServletTest.java
 (original)
+++ 
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/ExternalServicesServletTest.java
 Sun Aug 12 07:09:07 2007
@@ -18,11 +18,15 @@
  */
 package org.apache.cxf.systest.servlet;
 
+
 import org.w3c.dom.Document;
 
+
 import com.meterware.httpunit.PostMethodWebRequest;
+import com.meterware.httpunit.WebLink;
 import com.meterware.httpunit.WebRequest;
 import com.meterware.httpunit.WebResponse;
+import com.meterware.servletunit.ServletUnitClient;
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.BusException;
@@ -40,12 +44,37 @@
     protected String getConfiguration() {
         return "/org/apache/cxf/systest/servlet/web-external.xml";
     }
+    
+    @Test
+    public void testGetServiceList() throws Exception {
+        
+        ServletUnitClient client = newClient();
+        client.setExceptionsThrownOnErrorStatus(false);
+
+        //test the '/' context get service list
+        WebResponse  res = client.getResponse(CONTEXT_URL + "/");
+        WebLink[] links = res.getLinks();
+        assertEquals("There should get two links for the services", 2, 
links.length);
+        assertEquals(CONTEXT_URL + "/greeter?wsdl", links[0].getURLString()); 
+        assertEquals(CONTEXT_URL + "/greeter2?wsdl", links[1].getURLString()); 
+        assertEquals("text/html", res.getContentType());
+        
+        //HTTPUnit do not support require url with ""
+        /*
+        res = client.getResponse(CONTEXT_URL);
+        links = res.getLinks();
+        assertEquals("There should get two links for the services", 1, 
links.length);
+        assertEquals(CONTEXT_URL + "/greeter?wsdl", links[0].getURLString());
+        assertEquals(CONTEXT_URL + "/greeter2?wsdl", links[1].getURLString()); 
+        assertEquals("text/html", res.getContentType());*/        
+        
+    }
 
     @Test
     public void testPostInvokeServices() throws Exception {
         newClient();
         
-        WebRequest req = new PostMethodWebRequest(CONTEXT_URL + 
"/services/greeter",
+        WebRequest req = new PostMethodWebRequest(CONTEXT_URL + "/greeter",
                 getClass().getResourceAsStream("GreeterMessage.xml"),
                 "text/xml; charset=UTF-8");
         

Modified: 
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/web-external.xml
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/web-external.xml?view=diff&rev=565075&r1=565074&r2=565075
==============================================================================
--- 
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/web-external.xml
 (original)
+++ 
incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/servlet/web-external.xml
 Sun Aug 12 07:09:07 2007
@@ -39,7 +39,7 @@
 
   <servlet-mapping>
     <servlet-name>CXFServlet</servlet-name>
-    <url-pattern>/services/*</url-pattern>
+    <url-pattern>/*</url-pattern>
   </servlet-mapping>
 
 


Reply via email to