You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2016/11/24 21:11:22 UTC
svn commit: r1771230 - in /tomcat/trunk: java/org/apache/catalina/connector/
java/org/apache/catalina/core/ java/org/apache/catalina/filters/
java/org/apache/catalina/util/ webapps/docs/
Author: markt
Date: Thu Nov 24 21:11:22 2016
New Revision: 1771230
URL: http://svn.apache.org/viewvc?rev=1771230&view=rev
Log:
Refactor to reduce code duplication
Modified:
tomcat/trunk/java/org/apache/catalina/connector/Request.java
tomcat/trunk/java/org/apache/catalina/core/ApplicationHttpRequest.java
tomcat/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java
tomcat/trunk/java/org/apache/catalina/util/RequestUtil.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=1771230&r1=1771229&r2=1771230&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Thu Nov 24 21:11:22 2016
@@ -83,6 +83,7 @@ import org.apache.catalina.core.Applicat
import org.apache.catalina.core.AsyncContextImpl;
import org.apache.catalina.mapper.MappingData;
import org.apache.catalina.util.ParameterMap;
+import org.apache.catalina.util.RequestUtil;
import org.apache.catalina.util.URLEncoder;
import org.apache.coyote.ActionCode;
import org.apache.coyote.UpgradeToken;
@@ -2288,44 +2289,9 @@ public class Request implements HttpServ
}
- /**
- * Reconstructs the URL the client used to make the request.
- * The returned URL contains a protocol, server name, port
- * number, and server path, but it does not include query
- * string parameters.
- * <p>
- * Because this method returns a <code>StringBuffer</code>,
- * not a <code>String</code>, you can modify the URL easily,
- * for example, to append query parameters.
- * <p>
- * This method is useful for creating redirect messages and
- * for reporting errors.
- *
- * @return A <code>StringBuffer</code> object containing the
- * reconstructed URL
- */
@Override
public StringBuffer getRequestURL() {
-
- StringBuffer url = new StringBuffer();
- String scheme = getScheme();
- int port = getServerPort();
- if (port < 0)
- {
- port = 80; // Work around java.net.URL bug
- }
-
- url.append(scheme);
- url.append("://");
- url.append(getServerName());
- if ((scheme.equals("http") && (port != 80))
- || (scheme.equals("https") && (port != 443))) {
- url.append(':');
- url.append(port);
- }
- url.append(getRequestURI());
-
- return url;
+ return RequestUtil.getRequestURL(this);
}
Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationHttpRequest.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationHttpRequest.java?rev=1771230&r1=1771229&r2=1771230&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationHttpRequest.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationHttpRequest.java Thu Nov 24 21:11:22 2016
@@ -41,6 +41,7 @@ import org.apache.catalina.Globals;
import org.apache.catalina.Manager;
import org.apache.catalina.Session;
import org.apache.catalina.util.ParameterMap;
+import org.apache.catalina.util.RequestUtil;
import org.apache.tomcat.util.buf.B2CConverter;
import org.apache.tomcat.util.buf.MessageBytes;
import org.apache.tomcat.util.http.Parameters;
@@ -488,25 +489,7 @@ class ApplicationHttpRequest extends Htt
*/
@Override
public StringBuffer getRequestURL() {
-
- StringBuffer url = new StringBuffer();
- String scheme = getScheme();
- int port = getServerPort();
- if (port < 0)
- port = 80; // Work around java.net.URL bug
-
- url.append(scheme);
- url.append("://");
- url.append(getServerName());
- if ((scheme.equals("http") && (port != 80))
- || (scheme.equals("https") && (port != 443))) {
- url.append(':');
- url.append(port);
- }
- url.append(getRequestURI());
-
- return (url);
-
+ return RequestUtil.getRequestURL(this);
}
Modified: tomcat/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java?rev=1771230&r1=1771229&r2=1771230&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java (original)
+++ tomcat/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java Thu Nov 24 21:11:22 2016
@@ -44,6 +44,7 @@ import javax.servlet.http.PushBuilder;
import org.apache.catalina.AccessLog;
import org.apache.catalina.Globals;
import org.apache.catalina.core.ApplicationPushBuilder;
+import org.apache.catalina.util.RequestUtil;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
@@ -621,23 +622,7 @@ public class RemoteIpFilter extends Gene
@Override
public StringBuffer getRequestURL() {
- StringBuffer url = new StringBuffer();
- String scheme = getScheme();
- int port = getServerPort();
- if (port < 0) {
- port = 80; // Work around java.net.URL bug
- }
- url.append(scheme);
- url.append("://");
- url.append(getServerName());
- if ((scheme.equals("http") && (port != 80))
- || (scheme.equals("https") && (port != 443))) {
- url.append(':');
- url.append(port);
- }
- url.append(getRequestURI());
-
- return url;
+ return RequestUtil.getRequestURL(this);
}
@Override
Modified: tomcat/trunk/java/org/apache/catalina/util/RequestUtil.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/util/RequestUtil.java?rev=1771230&r1=1771229&r2=1771230&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/util/RequestUtil.java (original)
+++ tomcat/trunk/java/org/apache/catalina/util/RequestUtil.java Thu Nov 24 21:11:22 2016
@@ -16,6 +16,8 @@
*/
package org.apache.catalina.util;
+import javax.servlet.http.HttpServletRequest;
+
/**
* General purpose request parsing and encoding utility methods.
*
@@ -62,4 +64,37 @@ public final class RequestUtil {
}
return result.toString();
}
+
+
+ /**
+ * Build an appropriate return value for
+ * {@link HttpServletRequest#getRequestURL()} based on the provided
+ * request object. Note that this will also work for instances of
+ * {@link javax.servlet.http.HttpServletRequestWrapper}.
+ *
+ * @param request The request object for which the URL should be built
+ *
+ * @return The request URL for the given request object
+ */
+ public static StringBuffer getRequestURL(HttpServletRequest request) {
+ StringBuffer url = new StringBuffer();
+ String scheme = request.getScheme();
+ int port = request.getServerPort();
+ if (port < 0) {
+ // Work around java.net.URL bug
+ port = 80;
+ }
+
+ url.append(scheme);
+ url.append("://");
+ url.append(request.getServerName());
+ if ((scheme.equals("http") && (port != 80))
+ || (scheme.equals("https") && (port != 443))) {
+ url.append(':');
+ url.append(port);
+ }
+ url.append(request.getRequestURI());
+
+ return url;
+ }
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1771230&r1=1771229&r2=1771230&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Nov 24 21:11:22 2016
@@ -98,6 +98,11 @@
Refactor the <code>org.apache.naming</code> package to reduce duplicate
code. Duplicate code identified by the Simian tool. (markt)
</scode>
+ <scode>
+ Refactor the implementations of
+ <code>HttpServletRequest#getRequestURL()</code> to reduce duplicate
+ code. Duplicate code identified by the Simian tool. (markt)
+ </scode>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org