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>