Author: lukaszlenart Date: Wed Sep 4 06:52:26 2013 New Revision: 1519919 URL: http://svn.apache.org/r1519919 Log: Cleans up code, removes usage of ActionContext directly, uses @Inject instead
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java?rev=1519919&r1=1519918&r2=1519919&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java Wed Sep 4 06:52:26 2013 @@ -21,16 +21,11 @@ package org.apache.struts2.views.util; -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Inject; -import com.opensymphony.xwork2.util.TextParseUtil; -import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.util.logging.Logger; import com.opensymphony.xwork2.util.logging.LoggerFactory; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.struts2.ServletActionContext; import org.apache.struts2.StrutsConstants; import javax.servlet.http.HttpServletRequest; @@ -52,7 +47,12 @@ public class DefaultUrlHelper implements private static final Logger LOG = LoggerFactory.getLogger(DefaultUrlHelper.class); + public static final String HTTP_PROTOCOL = "http"; + public static final String HTTPS_PROTOCOL = "https"; + private String encoding = "UTF-8"; + private int httpPort = DEFAULT_HTTP_PORT; + private int httpsPort = DEFAULT_HTTPS_PORT; @Inject(StrutsConstants.STRUTS_I18N_ENCODING) public void setEncoding(String encoding) { @@ -61,6 +61,16 @@ public class DefaultUrlHelper implements } } + @Inject(StrutsConstants.STRUTS_URL_HTTP_PORT) + public void setHttpPort(String httpPort) { + this.httpPort = Integer.parseInt(httpPort); + } + + @Inject(StrutsConstants.STRUTS_URL_HTTPS_PORT) + public void setHttpsPort(String httpsPort) { + this.httpsPort = Integer.parseInt(httpsPort); + } + public String buildUrl(String action, HttpServletRequest request, HttpServletResponse response, Map<String, Object> params) { return buildUrl(action, request, response, params, null, true, true); } @@ -77,15 +87,10 @@ public class DefaultUrlHelper implements public String buildUrl(String action, HttpServletRequest request, HttpServletResponse response, Map<String, Object> params, String scheme, boolean includeContext, boolean encodeResult, boolean forceAddSchemeHostAndPort, boolean escapeAmp) { - StringBuilder link = new StringBuilder(); + StringBuilder link = new StringBuilder(); boolean changedScheme = false; - // FIXME: temporary hack until class is made a properly injected bean - Container cont = ActionContext.getContext().getContainer(); - int httpPort = Integer.parseInt(cont.getInstance(String.class, StrutsConstants.STRUTS_URL_HTTP_PORT)); - int httpsPort = Integer.parseInt(cont.getInstance(String.class, StrutsConstants.STRUTS_URL_HTTPS_PORT)); - // only append scheme if it is different to the current scheme *OR* // if we explicity want it to be appended by having forceAddSchemeHostAndPort = true if (forceAddSchemeHostAndPort) { @@ -98,31 +103,30 @@ public class DefaultUrlHelper implements if (scheme != null) { // If switching schemes, use the configured port for the particular scheme. if (!scheme.equals(reqScheme)) { - if ((scheme.equals("http") && (httpPort != DEFAULT_HTTP_PORT)) || (scheme.equals("https") && httpsPort != DEFAULT_HTTPS_PORT)) { + if ((HTTP_PROTOCOL.equals(scheme) && (httpPort != DEFAULT_HTTP_PORT)) || (HTTPS_PROTOCOL.equals(scheme) && httpsPort != DEFAULT_HTTPS_PORT)) { link.append(":"); - link.append(scheme.equals("http") ? httpPort : httpsPort); + link.append(HTTP_PROTOCOL.equals(scheme) ? httpPort : httpsPort); } // Else use the port from the current request. } else { int reqPort = request.getServerPort(); - if ((scheme.equals("http") && (reqPort != DEFAULT_HTTP_PORT)) || (scheme.equals("https") && reqPort != DEFAULT_HTTPS_PORT)) { + if ((scheme.equals(HTTP_PROTOCOL) && (reqPort != DEFAULT_HTTP_PORT)) || (scheme.equals(HTTPS_PROTOCOL) && reqPort != DEFAULT_HTTPS_PORT)) { link.append(":"); link.append(reqPort); } } } - } - else if ((scheme != null) && !scheme.equals(request.getScheme())) { + } else if ((scheme != null) && !scheme.equals(request.getScheme())) { changedScheme = true; link.append(scheme); link.append("://"); link.append(request.getServerName()); - if ((scheme.equals("http") && (httpPort != DEFAULT_HTTP_PORT)) || (scheme.equals("https") && httpsPort != DEFAULT_HTTPS_PORT)) + if ((scheme.equals(HTTP_PROTOCOL) && (httpPort != DEFAULT_HTTP_PORT)) || (HTTPS_PROTOCOL.equals(scheme) && httpsPort != DEFAULT_HTTPS_PORT)) { link.append(":"); - link.append(scheme.equals("http") ? httpPort : httpsPort); + link.append(HTTP_PROTOCOL.equals(scheme) ? httpPort : httpsPort); } } @@ -208,24 +212,23 @@ public class DefaultUrlHelper implements Object value = entry.getValue(); if (value instanceof Iterable) { - for (Iterator iterator = ((Iterable) value).iterator(); iterator - .hasNext();) { + for (Iterator iterator = ((Iterable) value).iterator(); iterator.hasNext();) { Object paramValue = iterator.next(); - link.append(buildParameterSubstring(name, paramValue - .toString())); + link.append(buildParameterSubstring(name, paramValue.toString())); - if (iterator.hasNext()) + if (iterator.hasNext()) { link.append(paramSeparator); + } } } else if (value instanceof Object[]) { Object[] array = (Object[]) value; for (int i = 0; i < array.length; i++) { Object paramValue = array[i]; - link.append(buildParameterSubstring(name, paramValue - .toString())); + link.append(buildParameterSubstring(name, paramValue.toString())); - if (i < array.length - 1) + if (i < array.length - 1) { link.append(paramSeparator); + } } } else { link.append(buildParameterSubstring(name, value != null ? value.toString() : StringUtils.EMPTY)); @@ -238,7 +241,6 @@ public class DefaultUrlHelper implements } } - private String buildParameterSubstring(String name, String value) { StringBuilder builder = new StringBuilder(); builder.append(encode(name)); Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java?rev=1519919&r1=1519918&r2=1519919&view=diff ============================================================================== --- struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java (original) +++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java Wed Sep 4 06:52:26 2013 @@ -276,8 +276,8 @@ public class DefaultUrlHelperTest extend String expectedString = "https://www.mydomain.com:7002/mywebapp/MyAction.action?foo=bar&hello=earth&hello=mars"; - setProp(StrutsConstants.STRUTS_URL_HTTP_PORT, "7001"); - setProp(StrutsConstants.STRUTS_URL_HTTPS_PORT, "7002"); + urlHelper.setHttpPort("7001"); + urlHelper.setHttpsPort("7002"); Mock mockHttpServletRequest = new Mock(HttpServletRequest.class); mockHttpServletRequest.expectAndReturn("getServerName", "www.mydomain.com"); @@ -305,8 +305,8 @@ public class DefaultUrlHelperTest extend String expectedString = "http://www.mydomain.com:7001/mywebapp/MyAction.action?foo=bar&hello=earth&hello=mars"; - setProp(StrutsConstants.STRUTS_URL_HTTP_PORT, "7001"); - setProp(StrutsConstants.STRUTS_URL_HTTPS_PORT, "7002"); + urlHelper.setHttpPort("7001"); + urlHelper.setHttpsPort("7002"); Mock mockHttpServletRequest = new Mock(HttpServletRequest.class); mockHttpServletRequest.expectAndReturn("getServerName", "www.mydomain.com");