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-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to