diff --git a/web/src/main/java/org/springframework/security/web/access/channel/AbstractRetryEntryPoint.java b/web/src/main/java/org/springframework/security/web/access/channel/AbstractRetryEntryPoint.java index 8e3215fd3a..de34ad497d 100644 --- a/web/src/main/java/org/springframework/security/web/access/channel/AbstractRetryEntryPoint.java +++ b/web/src/main/java/org/springframework/security/web/access/channel/AbstractRetryEntryPoint.java @@ -40,13 +40,8 @@ public abstract class AbstractRetryEntryPoint implements ChannelEntryPoint { //~ Methods ======================================================================================================== public void commence(HttpServletRequest request, HttpServletResponse res) throws IOException, ServletException { - String pathInfo = request.getPathInfo(); String queryString = request.getQueryString(); - String contextPath = request.getContextPath(); - String destination = request.getServletPath() + ((pathInfo == null) ? "" : pathInfo) - + ((queryString == null) ? "" : ("?" + queryString)); - - String redirectUrl = contextPath; + String redirectUrl = request.getRequestURI() + ((queryString == null) ? "" : ("?" + queryString)); Integer currentPort = new Integer(portResolver.getServerPort(request)); Integer redirectPort = getMappedPort(currentPort); @@ -54,8 +49,7 @@ public abstract class AbstractRetryEntryPoint implements ChannelEntryPoint { if (redirectPort != null) { boolean includePort = redirectPort.intValue() != standardPort; - redirectUrl = scheme + request.getServerName() + ((includePort) ? (":" + redirectPort) : "") + contextPath - + destination; + redirectUrl = scheme + request.getServerName() + ((includePort) ? (":" + redirectPort) : "") + redirectUrl; } if (logger.isDebugEnabled()) { @@ -67,11 +61,11 @@ public abstract class AbstractRetryEntryPoint implements ChannelEntryPoint { protected abstract Integer getMappedPort(Integer mapFromPort); - protected PortMapper getPortMapper() { + protected final PortMapper getPortMapper() { return portMapper; } - protected PortResolver getPortResolver() { + protected final PortResolver getPortResolver() { return portResolver; } diff --git a/web/src/main/java/org/springframework/security/web/util/UrlUtils.java b/web/src/main/java/org/springframework/security/web/util/UrlUtils.java index 25695e6fb5..88d4f14d2c 100644 --- a/web/src/main/java/org/springframework/security/web/util/UrlUtils.java +++ b/web/src/main/java/org/springframework/security/web/util/UrlUtils.java @@ -19,8 +19,9 @@ import javax.servlet.http.HttpServletRequest; /** - * Provides static methods for composing URLs.

Placed into a separate class for visibility, so that changes to - * URL formatting conventions will affect all users.

+ * Provides static methods for composing URLs. + *

+ * Placed into a separate class for visibility, so that changes to URL formatting conventions will affect all users. * * @author Ben Alex */ diff --git a/web/src/test/java/org/springframework/security/web/access/channel/RetryWithHttpEntryPointTests.java b/web/src/test/java/org/springframework/security/web/access/channel/RetryWithHttpEntryPointTests.java index c7eb3b713f..5fb5b3f2f8 100644 --- a/web/src/test/java/org/springframework/security/web/access/channel/RetryWithHttpEntryPointTests.java +++ b/web/src/test/java/org/springframework/security/web/access/channel/RetryWithHttpEntryPointTests.java @@ -66,13 +66,10 @@ public class RetryWithHttpEntryPointTests extends TestCase { } public void testNormalOperation() throws Exception { - MockHttpServletRequest request = new MockHttpServletRequest(); + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/bigWebApp/hello/pathInfo.html"); request.setQueryString("open=true"); request.setScheme("https"); request.setServerName("www.example.com"); - request.setContextPath("/bigWebApp"); - request.setServletPath("/hello"); - request.setPathInfo("/pathInfo.html"); request.setServerPort(443); MockHttpServletResponse response = new MockHttpServletResponse(); @@ -85,14 +82,10 @@ public class RetryWithHttpEntryPointTests extends TestCase { assertEquals("http://www.example.com/bigWebApp/hello/pathInfo.html?open=true", response.getRedirectedUrl()); } - public void testNormalOperationWithNullPathInfoAndNullQueryString() - throws Exception { - MockHttpServletRequest request = new MockHttpServletRequest(); + public void testNormalOperationWithNullQueryString() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/bigWebApp/hello"); request.setScheme("https"); request.setServerName("www.example.com"); - request.setContextPath("/bigWebApp"); - request.setServletPath("/hello"); - request.setPathInfo(null); request.setServerPort(443); MockHttpServletResponse response = new MockHttpServletResponse(); @@ -105,15 +98,11 @@ public class RetryWithHttpEntryPointTests extends TestCase { assertEquals("http://www.example.com/bigWebApp/hello", response.getRedirectedUrl()); } - public void testOperationWhenTargetPortIsUnknown() - throws Exception { - MockHttpServletRequest request = new MockHttpServletRequest(); + public void testOperationWhenTargetPortIsUnknown() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/bigWebApp"); request.setQueryString("open=true"); request.setScheme("https"); request.setServerName("www.example.com"); - request.setContextPath("/bigWebApp"); - request.setServletPath("/hello"); - request.setPathInfo("/pathInfo.html"); request.setServerPort(8768); MockHttpServletResponse response = new MockHttpServletResponse(); @@ -123,17 +112,14 @@ public class RetryWithHttpEntryPointTests extends TestCase { ep.setPortResolver(new MockPortResolver(8768, 1234)); ep.commence(request, response); - assertEquals("/bigWebApp", response.getRedirectedUrl()); + assertEquals("/bigWebApp?open=true", response.getRedirectedUrl()); } public void testOperationWithNonStandardPort() throws Exception { - MockHttpServletRequest request = new MockHttpServletRequest(); + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/bigWebApp/hello/pathInfo.html"); request.setQueryString("open=true"); request.setScheme("https"); request.setServerName("www.example.com"); - request.setContextPath("/bigWebApp"); - request.setServletPath("/hello"); - request.setPathInfo("/pathInfo.html"); request.setServerPort(9999); MockHttpServletResponse response = new MockHttpServletResponse(); diff --git a/web/src/test/java/org/springframework/security/web/access/channel/RetryWithHttpsEntryPointTests.java b/web/src/test/java/org/springframework/security/web/access/channel/RetryWithHttpsEntryPointTests.java index b3024bb530..c49abadada 100644 --- a/web/src/test/java/org/springframework/security/web/access/channel/RetryWithHttpsEntryPointTests.java +++ b/web/src/test/java/org/springframework/security/web/access/channel/RetryWithHttpsEntryPointTests.java @@ -37,10 +37,6 @@ import java.util.Map; public class RetryWithHttpsEntryPointTests extends TestCase { //~ Methods ======================================================================================================== - public static void main(String[] args) { - junit.textui.TestRunner.run(RetryWithHttpsEntryPointTests.class); - } - public final void setUp() throws Exception { super.setUp(); } @@ -74,13 +70,10 @@ public class RetryWithHttpsEntryPointTests extends TestCase { } public void testNormalOperation() throws Exception { - MockHttpServletRequest request = new MockHttpServletRequest(); + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/bigWebApp/hello/pathInfo.html"); request.setQueryString("open=true"); request.setScheme("http"); request.setServerName("www.example.com"); - request.setContextPath("/bigWebApp"); - request.setServletPath("/hello"); - request.setPathInfo("/pathInfo.html"); request.setServerPort(80); MockHttpServletResponse response = new MockHttpServletResponse(); @@ -93,14 +86,10 @@ public class RetryWithHttpsEntryPointTests extends TestCase { assertEquals("https://www.example.com/bigWebApp/hello/pathInfo.html?open=true", response.getRedirectedUrl()); } - public void testNormalOperationWithNullPathInfoAndNullQueryString() - throws Exception { - MockHttpServletRequest request = new MockHttpServletRequest(); + public void testNormalOperationWithNullQueryString() throws Exception { + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/bigWebApp/hello"); request.setScheme("http"); request.setServerName("www.example.com"); - request.setContextPath("/bigWebApp"); - request.setServletPath("/hello"); - request.setPathInfo(null); request.setServerPort(80); MockHttpServletResponse response = new MockHttpServletResponse(); @@ -114,13 +103,10 @@ public class RetryWithHttpsEntryPointTests extends TestCase { } public void testOperationWhenTargetPortIsUnknown() throws Exception { - MockHttpServletRequest request = new MockHttpServletRequest(); + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/bigWebApp"); request.setQueryString("open=true"); request.setScheme("http"); request.setServerName("www.example.com"); - request.setContextPath("/bigWebApp"); - request.setServletPath("/hello"); - request.setPathInfo("/pathInfo.html"); request.setServerPort(8768); MockHttpServletResponse response = new MockHttpServletResponse(); @@ -130,17 +116,14 @@ public class RetryWithHttpsEntryPointTests extends TestCase { ep.setPortResolver(new MockPortResolver(8768, 1234)); ep.commence(request, response); - assertEquals("/bigWebApp", response.getRedirectedUrl()); + assertEquals("/bigWebApp?open=true", response.getRedirectedUrl()); } public void testOperationWithNonStandardPort() throws Exception { - MockHttpServletRequest request = new MockHttpServletRequest(); + MockHttpServletRequest request = new MockHttpServletRequest("GET", "/bigWebApp/hello/pathInfo.html"); request.setQueryString("open=true"); request.setScheme("http"); request.setServerName("www.example.com"); - request.setContextPath("/bigWebApp"); - request.setServletPath("/hello"); - request.setPathInfo("/pathInfo.html"); request.setServerPort(8888); MockHttpServletResponse response = new MockHttpServletResponse();