diff --git a/core/src/main/java/org/springframework/security/util/PortResolverImpl.java b/core/src/main/java/org/springframework/security/util/PortResolverImpl.java
index a2dcc18866..19de64a1ad 100644
--- a/core/src/main/java/org/springframework/security/util/PortResolverImpl.java
+++ b/core/src/main/java/org/springframework/security/util/PortResolverImpl.java
@@ -15,65 +15,58 @@
package org.springframework.security.util;
-import org.springframework.beans.factory.InitializingBean;
-
import org.springframework.util.Assert;
import javax.servlet.ServletRequest;
/**
- * Concrete implementation of {@link PortResolver} that obtains the port from
- * ServletRequest.getServerPort().
This class is capable of handling the IE bug which results in an
+ * Concrete implementation of {@link PortResolver} that obtains the port from ServletRequest.getServerPort().
+ *
+ * This class is capable of handling the IE bug which results in an
* incorrect URL being presented in the header subsequent to a redirect to a different scheme and port where the port
* is not a well-known number (ie 80 or 443). Handling involves detecting an incorrect response from
* ServletRequest.getServerPort() for the scheme (eg a HTTP request on 8443) and then determining the
- * real server port (eg HTTP request is really on 8080). The map of valid ports is obtained from the configured {@link
- * PortMapper}.
+ * real server port (eg HTTP request is really on 8080). The map of valid ports is obtained from the configured
+ * {@link PortMapper}.
*
* @author Ben Alex
* @version $Id$
*/
-public class PortResolverImpl implements InitializingBean, PortResolver {
+public class PortResolverImpl implements PortResolver {
//~ Instance fields ================================================================================================
private PortMapper portMapper = new PortMapperImpl();
//~ Methods ========================================================================================================
- public void afterPropertiesSet() throws Exception {
- Assert.notNull(portMapper, "portMapper required");
- }
-
public PortMapper getPortMapper() {
return portMapper;
}
public int getServerPort(ServletRequest request) {
- int result = request.getServerPort();
+ int serverPort = request.getServerPort();
+ Integer portLookup = null;
- if ("http".equals(request.getScheme().toLowerCase())) {
- Integer http = portMapper.lookupHttpPort(new Integer(result));
+ String scheme = request.getScheme().toLowerCase();
- if (http != null) {
- // IE 6 bug
- result = http.intValue();
- }
+ if ("http".equals(scheme)) {
+ portLookup = portMapper.lookupHttpPort(Integer.valueOf(serverPort));
+
+ } else if ("https".equals(scheme)) {
+ portLookup = portMapper.lookupHttpsPort(Integer.valueOf(serverPort));
}
- if ("https".equals(request.getScheme().toLowerCase())) {
- Integer https = portMapper.lookupHttpsPort(new Integer(result));
-
- if (https != null) {
- // IE 6 bug
- result = https.intValue();
- }
+ if (portLookup != null) {
+ // IE 6 bug
+ serverPort = portLookup.intValue();
}
- return result;
+ return serverPort;
}
public void setPortMapper(PortMapper portMapper) {
+ Assert.notNull(portMapper, "portMapper cannot be null");
this.portMapper = portMapper;
}
}
diff --git a/core/src/test/java/org/springframework/security/util/PortResolverImplTests.java b/core/src/test/java/org/springframework/security/util/PortResolverImplTests.java
index 128ceec0b5..c78fd00fe0 100644
--- a/core/src/test/java/org/springframework/security/util/PortResolverImplTests.java
+++ b/core/src/test/java/org/springframework/security/util/PortResolverImplTests.java
@@ -39,17 +39,12 @@ public class PortResolverImplTests extends TestCase {
//~ Methods ========================================================================================================
- public static void main(String[] args) {
- junit.textui.TestRunner.run(PortResolverImplTests.class);
- }
-
public final void setUp() throws Exception {
super.setUp();
}
public void testDetectsBuggyIeHttpRequest() throws Exception {
PortResolverImpl pr = new PortResolverImpl();
- pr.afterPropertiesSet();
MockHttpServletRequest request = new MockHttpServletRequest();
request.setServerPort(8443);
@@ -59,7 +54,6 @@ public class PortResolverImplTests extends TestCase {
public void testDetectsBuggyIeHttpsRequest() throws Exception {
PortResolverImpl pr = new PortResolverImpl();
- pr.afterPropertiesSet();
MockHttpServletRequest request = new MockHttpServletRequest();
request.setServerPort(8080);
@@ -69,10 +63,9 @@ public class PortResolverImplTests extends TestCase {
public void testDetectsEmptyPortMapper() throws Exception {
PortResolverImpl pr = new PortResolverImpl();
- pr.setPortMapper(null);
try {
- pr.afterPropertiesSet();
+ pr.setPortMapper(null);
fail("Should have thrown IllegalArgumentException");
} catch (IllegalArgumentException expected) {
assertTrue(true);
@@ -88,7 +81,6 @@ public class PortResolverImplTests extends TestCase {
public void testNormalOperation() throws Exception {
PortResolverImpl pr = new PortResolverImpl();
- pr.afterPropertiesSet();
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("http");