Author: markt
Date: Thu Apr  5 18:10:22 2018
New Revision: 1828459

URL: http://svn.apache.org/viewvc?rev=1828459&view=rev
Log:
SpotBugs
Refactor to remove some duplicated (and unused) code.

Modified:
    tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteCond.java

Modified: tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteCond.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteCond.java?rev=1828459&r1=1828458&r2=1828459&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteCond.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteCond.java Thu 
Apr  5 18:10:22 2018
@@ -28,18 +28,22 @@ public class RewriteCond {
 
     public static class PatternCondition extends Condition {
         public Pattern pattern;
-        public Matcher matcher = null;
+        private ThreadLocal<Matcher> matcher = new ThreadLocal<>();
 
         @Override
         public boolean evaluate(String value, Resolver resolver) {
             Matcher m = pattern.matcher(value);
             if (m.matches()) {
-                matcher = m;
+                matcher.set(m);
                 return true;
             } else {
                 return false;
             }
         }
+
+        public Matcher getMatcher() {
+            return matcher.get();
+        }
     }
 
     public static class LexicalCondition extends Condition {
@@ -110,40 +114,46 @@ public class RewriteCond {
             condPattern = condPattern.substring(1);
         }
         if (condPattern.startsWith("<")) {
-            LexicalCondition condition = new LexicalCondition();
-            condition.type = -1;
-            condition.condition = condPattern.substring(1);
+            LexicalCondition ncondition = new LexicalCondition();
+            ncondition.type = -1;
+            ncondition.condition = condPattern.substring(1);
+            this.condition = ncondition;
         } else if (condPattern.startsWith(">")) {
-            LexicalCondition condition = new LexicalCondition();
-            condition.type = 1;
-            condition.condition = condPattern.substring(1);
+            LexicalCondition ncondition = new LexicalCondition();
+            ncondition.type = 1;
+            ncondition.condition = condPattern.substring(1);
+            this.condition = ncondition;
         } else if (condPattern.startsWith("=")) {
-            LexicalCondition condition = new LexicalCondition();
-            condition.type = 0;
-            condition.condition = condPattern.substring(1);
+            LexicalCondition ncondition = new LexicalCondition();
+            ncondition.type = 0;
+            ncondition.condition = condPattern.substring(1);
+            this.condition = ncondition;
         } else if (condPattern.equals("-d")) {
             ResourceCondition ncondition = new ResourceCondition();
             ncondition.type = 0;
+            this.condition = ncondition;
         } else if (condPattern.equals("-f")) {
             ResourceCondition ncondition = new ResourceCondition();
             ncondition.type = 1;
+            this.condition = ncondition;
         } else if (condPattern.equals("-s")) {
             ResourceCondition ncondition = new ResourceCondition();
             ncondition.type = 2;
+            this.condition = ncondition;
         } else {
-            PatternCondition condition = new PatternCondition();
+            PatternCondition ncondition = new PatternCondition();
             int flags = 0;
             if (isNocase()) {
                 flags |= Pattern.CASE_INSENSITIVE;
             }
-            condition.pattern = Pattern.compile(condPattern, flags);
+            ncondition.pattern = Pattern.compile(condPattern, flags);
+            this.condition = ncondition;
         }
     }
 
     public Matcher getMatcher() {
-        Object condition = this.condition.get();
         if (condition instanceof PatternCondition) {
-            return ((PatternCondition) condition).matcher;
+            return ((PatternCondition) condition).getMatcher();
         }
         return null;
     }
@@ -162,7 +172,7 @@ public class RewriteCond {
 
     protected Substitution test = null;
 
-    protected ThreadLocal<Condition> condition = new ThreadLocal<>();
+    protected Condition condition = null;
 
     /**
      * This makes the test case-insensitive, i.e., there is no difference 
between
@@ -187,46 +197,6 @@ public class RewriteCond {
      */
     public boolean evaluate(Matcher rule, Matcher cond, Resolver resolver) {
         String value = test.evaluate(rule, cond, resolver);
-        Condition condition = this.condition.get();
-        if (condition == null) {
-            if (condPattern.startsWith("<")) {
-                LexicalCondition ncondition = new LexicalCondition();
-                ncondition.type = -1;
-                ncondition.condition = condPattern.substring(1);
-                condition = ncondition;
-            } else if (condPattern.startsWith(">")) {
-                LexicalCondition ncondition = new LexicalCondition();
-                ncondition.type = 1;
-                ncondition.condition = condPattern.substring(1);
-                condition = ncondition;
-            } else if (condPattern.startsWith("=")) {
-                LexicalCondition ncondition = new LexicalCondition();
-                ncondition.type = 0;
-                ncondition.condition = condPattern.substring(1);
-                condition = ncondition;
-            } else if (condPattern.equals("-d")) {
-                ResourceCondition ncondition = new ResourceCondition();
-                ncondition.type = 0;
-                condition = ncondition;
-            } else if (condPattern.equals("-f")) {
-                ResourceCondition ncondition = new ResourceCondition();
-                ncondition.type = 1;
-                condition = ncondition;
-            } else if (condPattern.equals("-s")) {
-                ResourceCondition ncondition = new ResourceCondition();
-                ncondition.type = 2;
-                condition = ncondition;
-            } else {
-                PatternCondition ncondition = new PatternCondition();
-                int flags = 0;
-                if (isNocase()) {
-                    flags |= Pattern.CASE_INSENSITIVE;
-                }
-                ncondition.pattern = Pattern.compile(condPattern, flags);
-                condition = ncondition;
-            }
-            this.condition.set(condition);
-        }
         if (positive) {
             return condition.evaluate(value, resolver);
         } else {



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to