Repository: cxf Updated Branches: refs/heads/3.0.x-fixes 1be97cb13 -> a30397b0c
Better stripping of matrix parameters Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/a30397b0 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/a30397b0 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/a30397b0 Branch: refs/heads/3.0.x-fixes Commit: a30397b0c7c4b7fc83e9a4bae71df342c194b60f Parents: 1be97cb Author: Sergey Beryozkin <[email protected]> Authored: Tue Oct 18 16:01:45 2016 +0100 Committer: Sergey Beryozkin <[email protected]> Committed: Tue Oct 18 16:04:25 2016 +0100 ---------------------------------------------------------------------- .../cxf/transport/servlet/BaseUrlHelper.java | 20 ++++++++------------ .../ServiceListGeneratorServlet.java | 18 +++++++++++++----- .../jaxrs/JAXRSClientServerSpringBookTest.java | 10 ++++++++++ .../src/test/resources/jaxrs/WEB-INF/web.xml | 12 ++++++++++++ 4 files changed, 43 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/a30397b0/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/BaseUrlHelper.java ---------------------------------------------------------------------- diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/BaseUrlHelper.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/BaseUrlHelper.java index bdc6f55..a3c2e85 100644 --- a/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/BaseUrlHelper.java +++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/BaseUrlHelper.java @@ -36,9 +36,8 @@ public final class BaseUrlHelper { */ public static 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("/")) { + String pathInfo = request.getPathInfo(); + if (!"/".equals(pathInfo) || reqPrefix.contains(";")) { StringBuilder sb = new StringBuilder(); // request.getScheme(), request.getLocalName() and request.getLocalPort() // should be marginally cheaper - provided request.getLocalName() does @@ -47,19 +46,16 @@ public final class BaseUrlHelper { URI uri = URI.create(reqPrefix); sb.append(uri.getScheme()).append("://").append(uri.getRawAuthority()); - if (request.getContextPath() != null) { - sb.append(request.getContextPath()); + String contextPath = request.getContextPath(); + if (contextPath != null) { + sb.append(contextPath); } - if (request.getServletPath() != null) { - sb.append(request.getServletPath()); + String servletPath = request.getServletPath(); + if (servletPath != null) { + sb.append(servletPath); } reqPrefix = sb.toString(); - } else { - int matrixParamIndex = reqPrefix.indexOf(";"); - if (matrixParamIndex > 0) { - reqPrefix = reqPrefix.substring(0, matrixParamIndex); - } } return reqPrefix; } http://git-wip-us.apache.org/repos/asf/cxf/blob/a30397b0/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/servicelist/ServiceListGeneratorServlet.java ---------------------------------------------------------------------- diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/servicelist/ServiceListGeneratorServlet.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/servicelist/ServiceListGeneratorServlet.java index c952d75..3e19ccb 100644 --- a/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/servicelist/ServiceListGeneratorServlet.java +++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/servlet/servicelist/ServiceListGeneratorServlet.java @@ -112,12 +112,20 @@ public class ServiceListGeneratorServlet extends HttpServlet { if (serviceListStyleSheet != null) { styleSheetPath = request.getContextPath() + "/" + serviceListStyleSheet; } else { - String requestUri = request.getRequestURI(); - int matrixParamIndex = requestUri.indexOf(";"); - if (matrixParamIndex > 0) { - requestUri = requestUri.substring(0, matrixParamIndex); + styleSheetPath = ""; + String contextPath = request.getContextPath(); + if (contextPath != null) { + styleSheetPath += contextPath; } - styleSheetPath = requestUri; + String servletPath = request.getServletPath(); + if (servletPath != null) { + styleSheetPath += servletPath; + } + String pathInfo = request.getPathInfo(); + if (pathInfo != null) { + styleSheetPath += pathInfo; + } + if (!styleSheetPath.endsWith("/")) { styleSheetPath += "/"; } http://git-wip-us.apache.org/repos/asf/cxf/blob/a30397b0/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java ---------------------------------------------------------------------- diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java index 1f3082e..8a41efa 100644 --- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java +++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerSpringBookTest.java @@ -133,6 +133,16 @@ public class JAXRSClientServerSpringBookTest extends AbstractBusClientServerTest assertFalse(s.contains(";a=b")); assertTrue(s.contains("<a href=\"http://localhost:" + PORT + "/the/")); } + @Test + public void testGetServicesPageWithServletPatternMatchOnly2() throws Exception { + final String address = "http://localhost:" + PORT + "/services;a=b;/list;a=b/;a=b"; + WebClient wc = WebClient.create(address).accept("text/*"); + String s = wc.get(String.class); + assertTrue(s.contains("href=\"/services/list/?stylesheet=1\"")); + assertTrue(s.contains("<title>CXF - Service list</title>")); + assertFalse(s.contains(";a=b")); + assertTrue(s.contains("<a href=\"http://localhost:" + PORT + "/services/list/")); + } @Test public void testEchoBookForm() throws Exception { http://git-wip-us.apache.org/repos/asf/cxf/blob/a30397b0/systests/jaxrs/src/test/resources/jaxrs/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/systests/jaxrs/src/test/resources/jaxrs/WEB-INF/web.xml b/systests/jaxrs/src/test/resources/jaxrs/WEB-INF/web.xml index e872d41..619dc1a 100644 --- a/systests/jaxrs/src/test/resources/jaxrs/WEB-INF/web.xml +++ b/systests/jaxrs/src/test/resources/jaxrs/WEB-INF/web.xml @@ -51,6 +51,14 @@ </init-param> <load-on-startup>1</load-on-startup> </servlet> + <servlet> + <servlet-name>CXFServlet3</servlet-name> + <display-name>CXF Servlet3</display-name> + <servlet-class> + org.apache.cxf.transport.servlet.CXFServlet + </servlet-class> + <load-on-startup>1</load-on-startup> + </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/the/*</url-pattern> @@ -59,5 +67,9 @@ <servlet-name>CXFServlet2</servlet-name> <url-pattern>/bus/*</url-pattern> </servlet-mapping> + <servlet-mapping> + <servlet-name>CXFServlet3</servlet-name> + <url-pattern>/services/list/*</url-pattern> + </servlet-mapping> </web-app> <!-- END SNIPPET: webxml -->
