Author: markt
Date: Sat Oct 24 08:49:50 2015
New Revision: 1710313
URL: http://svn.apache.org/viewvc?rev=1710313&view=rev
Log:
Refactor
- Remove duplicate code
- Use standard mechanism to pre-load classes for the SecurityManager
Modified:
tomcat/trunk/java/org/apache/catalina/connector/Response.java
tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java
tomcat/trunk/java/org/apache/tomcat/util/net/URL.java
Modified: tomcat/trunk/java/org/apache/catalina/connector/Response.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Response.java?rev=1710313&r1=1710312&r2=1710313&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Response.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Response.java Sat Oct 24
08:49:50 2015
@@ -81,9 +81,6 @@ public class Response
private static final boolean ENFORCE_ENCODING_IN_GET_WRITER;
static {
- // Ensure that URL is loaded for SM
- URL.isSchemeChar('c');
-
ENFORCE_ENCODING_IN_GET_WRITER = Boolean.valueOf(
System.getProperty("org.apache.catalina.connector.Response.ENFORCE_ENCODING_IN_GET_WRITER",
"true")).booleanValue();
@@ -1593,7 +1590,7 @@ public class Response
throw iae;
}
- } else if (leadingSlash || !hasScheme(location)) {
+ } else if (leadingSlash || !URL.hasScheme(location)) {
redirectURLCC.recycle();
@@ -1769,22 +1766,6 @@ public class Response
}
/**
- * Determine if a URI string has a <code>scheme</code> component.
- */
- private boolean hasScheme(String uri) {
- int len = uri.length();
- for(int i=0; i < len ; i++) {
- char c = uri.charAt(i);
- if(c == ':') {
- return i > 0;
- } else if(!URL.isSchemeChar(c)) {
- return false;
- }
- }
- return false;
- }
-
- /**
* Return the specified URL with the specified session identifier
* suitably encoded.
*
Modified: tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java?rev=1710313&r1=1710312&r2=1710313&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java Sat
Oct 24 08:49:50 2015
@@ -286,6 +286,7 @@ public final class SecurityClassLoad {
"util.net.NioBlockingSelector$BlockPoller$2");
loader.loadClass(basePackage +
"util.net.NioBlockingSelector$BlockPoller$3");
+ loader.loadClass(basePackage + "util.net.URL");
// security
loader.loadClass(basePackage + "util.security.PrivilegedGetTccl");
loader.loadClass(basePackage + "util.security.PrivilegedSetTccl");
Modified: tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java?rev=1710313&r1=1710312&r2=1710313&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java Sat
Oct 24 08:49:50 2015
@@ -344,7 +344,7 @@ public class RewriteValve extends ValveB
// 1. this valve is associated with a context
// 2. the url starts with a leading slash
// 3. the url isn't absolute
- if (context && urlString.charAt(0) == '/' &&
!hasScheme(urlString)) {
+ if (context && urlString.charAt(0) == '/' &&
!URL.hasScheme(urlString)) {
urlString.insert(0,
request.getContext().getEncodedPath());
}
response.sendRedirect(urlString.toString());
@@ -735,21 +735,4 @@ public class RewriteValve extends ValveB
throw new IllegalArgumentException("Invalid flag in: " + line + "
flag: " + flag);
}
}
-
-
- /**
- * Determine if a URI string has a <code>scheme</code> component.
- */
- protected static boolean hasScheme(StringBuffer uri) {
- int len = uri.length();
- for(int i=0; i < len ; i++) {
- char c = uri.charAt(i);
- if(c == ':') {
- return i > 0;
- } else if(!URL.isSchemeChar(c)) {
- return false;
- }
- }
- return false;
- }
}
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/URL.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/URL.java?rev=1710313&r1=1710312&r2=1710313&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/URL.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/URL.java Sat Oct 24 08:49:50
2015
@@ -648,10 +648,34 @@ public final class URL implements Serial
/**
* Determine if the character is allowed in the scheme of a URI.
* See RFC 2396, Section 3.1
+ *
+ * @param c The character to test
+ *
+ * @return {@code true} if a the character is allowed, otherwise {@false}
*/
- public static boolean isSchemeChar(char c) {
+ private static boolean isSchemeChar(char c) {
return Character.isLetterOrDigit(c) ||
c == '+' || c == '-' || c == '.';
}
+
+ /**
+ * Determine if a URI string has a <code>scheme</code> component.
+ *
+ * @param uri The URI to test
+ *
+ * @return {@code true} if a scheme is present, otherwise {@false}
+ */
+ public static boolean hasScheme(CharSequence uri) {
+ int len = uri.length();
+ for(int i=0; i < len ; i++) {
+ char c = uri.charAt(i);
+ if(c == ':') {
+ return i > 0;
+ } else if(!URL.isSchemeChar(c)) {
+ return false;
+ }
+ }
+ return false;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]