This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.servlet-helpers-1.1.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlet-helpers.git
commit 12b5ebeeb3b75909e4b4e577ba8a2f084cfd59c4 Author: Konrad Windszus <[email protected]> AuthorDate: Fri Aug 5 12:30:07 2016 +0000 SLING-5974 implement getServletPath(), getPathInfo(), getRequestURI(), getRequestURL() and getAuthType() in MockSlingHttpServletRequest git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/servlet-helpers@1755308 13f79535-47bb-0310-9956-ffa450edef68 --- .../MockSlingHttpServletRequest.java | 93 ++++++++++++++++++---- .../apache/sling/servlethelpers/package-info.java | 2 +- .../MockSlingHttpServletRequestTest.java | 60 ++++++++++++++ 3 files changed, 137 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java b/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java index 1d7204d..b995e9e 100644 --- a/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java +++ b/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java @@ -81,11 +81,13 @@ public class MockSlingHttpServletRequest extends SlingAdaptable implements Sling private Map<String, String[]> parameterMap = new LinkedHashMap<String, String[]>(); private HttpSession session; private Resource resource; + private String authType; private String contextPath; private String queryString; private String scheme = "http"; private String serverName = "localhost"; private int serverPort = 80; + private String servletPath = StringUtils.EMPTY; private String method = HttpConstants.METHOD_GET; private final HeaderSupport headerSupport = new HeaderSupport(); private final CookieSupport cookieSupport = new CookieSupport(); @@ -632,56 +634,113 @@ public class MockSlingHttpServletRequest extends SlingAdaptable implements Sling this.remotePort = remotePort; } - - // --- unsupported operations --- + @Override + public String getServletPath() { + return this.servletPath; + } + + public void setServletPath(String servletPath) { + this.servletPath = servletPath; + } @Override - public RequestProgressTracker getRequestProgressTracker() { - throw new UnsupportedOperationException(); + public String getPathInfo() { + RequestPathInfo requestPathInfo = this.getRequestPathInfo(); + + if (StringUtils.isEmpty(requestPathInfo.getResourcePath())) { + return null; + } + + StringBuilder pathInfo = new StringBuilder(); + + pathInfo.append(requestPathInfo.getResourcePath()); + + if (StringUtils.isNotEmpty(requestPathInfo.getSelectorString())) { + pathInfo.append('.'); + pathInfo.append(requestPathInfo.getSelectorString()); + } + + if (StringUtils.isNotEmpty(requestPathInfo.getExtension())) { + pathInfo.append('.'); + pathInfo.append(requestPathInfo.getExtension()); + } + + if (StringUtils.isNotEmpty(requestPathInfo.getSuffix())) { + pathInfo.append(requestPathInfo.getSuffix()); + } + + return pathInfo.toString(); } @Override - public String getResponseContentType() { - throw new UnsupportedOperationException(); + public String getRequestURI() { + StringBuilder requestUri = new StringBuilder(); + + if (StringUtils.isNotEmpty(this.getServletPath())) { + requestUri.append(this.getServletPath()); + } + + if (StringUtils.isNotEmpty(this.getPathInfo())) { + requestUri.append(this.getPathInfo()); + } + + if (StringUtils.isEmpty(requestUri)) { + return "/"; + } else { + return requestUri.toString(); + } } @Override - public Enumeration<String> getResponseContentTypes() { - throw new UnsupportedOperationException(); + public StringBuffer getRequestURL() { + StringBuffer requestUrl = new StringBuffer(); + + requestUrl.append(this.getScheme()); + requestUrl.append("://"); + requestUrl.append(getServerName()); + if ((StringUtils.equals(this.getScheme(), "http") && this.getServerPort() != 80) || + (StringUtils.equals(this.getScheme(), "https") && this.getServerPort() != 443)) { + requestUrl.append(':'); + requestUrl.append(getServerPort()); + } + requestUrl.append(getRequestURI()); + + return requestUrl; } @Override public String getAuthType() { - throw new UnsupportedOperationException(); + return this.authType; } - @Override - public String getPathInfo() { - throw new UnsupportedOperationException(); + public void setAuthType(String authType) { + this.authType = authType; } + // --- unsupported operations --- + @Override - public String getPathTranslated() { + public RequestProgressTracker getRequestProgressTracker() { throw new UnsupportedOperationException(); } @Override - public String getRequestURI() { + public String getResponseContentType() { throw new UnsupportedOperationException(); } @Override - public StringBuffer getRequestURL() { + public Enumeration<String> getResponseContentTypes() { throw new UnsupportedOperationException(); } @Override - public String getRequestedSessionId() { + public String getPathTranslated() { throw new UnsupportedOperationException(); } @Override - public String getServletPath() { + public String getRequestedSessionId() { throw new UnsupportedOperationException(); } diff --git a/src/main/java/org/apache/sling/servlethelpers/package-info.java b/src/main/java/org/apache/sling/servlethelpers/package-info.java index 1497ab6..0bfb804 100644 --- a/src/main/java/org/apache/sling/servlethelpers/package-info.java +++ b/src/main/java/org/apache/sling/servlethelpers/package-info.java @@ -19,5 +19,5 @@ /** * Mock implementation of selected Servlet-related Sling APIs. */ [email protected]("1.0") [email protected]("1.1") package org.apache.sling.servlethelpers; diff --git a/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java b/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java index 51b4155..e1bd3b6 100644 --- a/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java +++ b/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java @@ -88,6 +88,66 @@ public class MockSlingHttpServletRequestTest { } @Test + public void testPathInfo() { + MockRequestPathInfo requestPathInfo = (MockRequestPathInfo) request.getRequestPathInfo(); + requestPathInfo.setResourcePath("/content/resource"); + requestPathInfo.setExtension("html"); + requestPathInfo.setSelectorString("a1.a2"); + requestPathInfo.setSuffix("/content/another/resource.html"); + + assertEquals("/content/resource.a1.a2.html/content/another/resource.html", request.getPathInfo()); + + requestPathInfo.setSelectorString(null); + + assertEquals("/content/resource.html/content/another/resource.html", request.getPathInfo()); + + requestPathInfo.setSuffix(null); + + assertEquals("/content/resource.html", request.getPathInfo()); + + requestPathInfo.setResourcePath(null); + + assertNull(request.getPathInfo()); + } + + @Test + public void testRequestUri() { + MockRequestPathInfo requestPathInfo = (MockRequestPathInfo) request.getRequestPathInfo(); + requestPathInfo.setResourcePath("/content/resource"); + requestPathInfo.setExtension("html"); + requestPathInfo.setSelectorString("a1.a2"); + requestPathInfo.setSuffix("/content/another/resource.html"); + + assertEquals("/content/resource.a1.a2.html/content/another/resource.html", request.getRequestURI()); + + request.setServletPath("/my"); + + assertEquals("/my/content/resource.a1.a2.html/content/another/resource.html", request.getRequestURI()); + } + + @Test + public void testRequestUrl() { + MockRequestPathInfo requestPathInfo = (MockRequestPathInfo) request.getRequestPathInfo(); + requestPathInfo.setResourcePath("/content/resource"); + requestPathInfo.setExtension("html"); + + assertEquals("http://localhost/content/resource.html", request.getRequestURL().toString()); + + request.setServerPort(8080); + + assertEquals("http://localhost:8080/content/resource.html", request.getRequestURL().toString()); + + request.setScheme("https"); + request.setServerPort(443); + + assertEquals("https://localhost/content/resource.html", request.getRequestURL().toString()); + + request.setServerPort(8443); + + assertEquals("https://localhost:8443/content/resource.html", request.getRequestURL().toString()); + } + + @Test public void testRequestPathInfo() { assertNotNull(request.getRequestPathInfo()); } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
