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: [email protected]
For additional commands, e-mail: [email protected]