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 2020/05/14 09:08:08 UTC

[tomcat] branch 8.5.x updated (2808a97 -> 0068869)

This is an automated email from the ASF dual-hosted git repository.

markt pushed a change to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git.


    from 2808a97  Revert
     new 05a54b2  Revert "Fix IDE warnings"
     new ab24401  Revert "Avoid waste of resources due to reconstruction of objects"
     new 0068869  Fix BZ 64432. Refactoring broke multi-line rewrite rules

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/catalina/core/ApplicationContext.java   |  2 +-
 .../apache/catalina/ha/tcp/ReplicationValve.java   |  2 +-
 .../catalina/session/PersistentManagerBase.java    |  2 +-
 .../catalina/valves/rewrite/RewriteCond.java       |  2 +-
 .../catalina/valves/rewrite/RewriteRule.java       |  8 +++----
 .../catalina/valves/rewrite/RewriteValve.java      |  2 +-
 java/org/apache/juli/ClassLoaderLogManager.java    |  8 +++----
 test/org/apache/catalina/valves/Benchmarks.java    | 26 +++++++++++-----------
 .../catalina/valves/rewrite/TestRewriteValve.java  |  9 ++++++++
 webapps/docs/changelog.xml                         |  9 ++++++++
 10 files changed, 44 insertions(+), 26 deletions(-)


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


[tomcat] 03/03: Fix BZ 64432. Refactoring broke multi-line rewrite rules

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 006886935d9ab1e1a7bfdc7c42ac0340a39a3280
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu May 14 09:41:10 2020 +0100

    Fix BZ 64432. Refactoring broke multi-line rewrite rules
    
    Patch provided by Jj. Also includes previous 2 commits that revert the
    refactoring.
---
 test/org/apache/catalina/valves/rewrite/TestRewriteValve.java | 9 +++++++++
 webapps/docs/changelog.xml                                    | 9 +++++++++
 2 files changed, 18 insertions(+)

diff --git a/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java b/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java
index 29c2961..134f45a 100644
--- a/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java
+++ b/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java
@@ -605,6 +605,15 @@ public class TestRewriteValve extends TomcatBaseTest {
         doTestRewrite("RewriteRule !^/c/.* /b/", "/c/d", "/c/d");
     }
 
+    @Test
+    public void testMultiLine001() throws Exception {
+        doTestRewrite("RewriteRule /dummy /anotherDummy [L]\nRewriteRule ^/a /c [L]", "/a", "/c");
+    }
+
+    @Test
+    public void testMultiLine002() throws Exception {
+        doTestRewrite("RewriteRule /dummy /a\nRewriteRule /a /c [L]", "/dummy", "/c");
+    }
 
     private void doTestRewrite(String config, String request, String expectedURI) throws Exception {
         doTestRewrite(config, request, expectedURI, null);
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 5e01706..c3330f0 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -45,6 +45,15 @@
   issues do not "pop up" wrt. others).
 -->
 <section name="Tomcat 8.5.56 (markt)" rtext="in development">
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        <bug>64432</bug>: Correct a refactoring regression that broke handling
+        of multi-line configuration in the RewriteValve. Patch provided by Jj.
+        (markt)
+      </fix>
+    </changelog>
+  </subsection>
   <subsection name="Coyote">
     <changelog>
       <update>


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


[tomcat] 01/03: Revert "Fix IDE warnings"

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 05a54b29288f1ee8af81ba30ee83eb0266d9a32d
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu May 14 10:06:55 2020 +0100

    Revert "Fix IDE warnings"
    
    This reverts commit c0c799061091c0e5eee71be47245b14024c3051b.
---
 java/org/apache/catalina/valves/rewrite/RewriteRule.java | 4 ++--
 java/org/apache/juli/ClassLoaderLogManager.java          | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/java/org/apache/catalina/valves/rewrite/RewriteRule.java b/java/org/apache/catalina/valves/rewrite/RewriteRule.java
index efdb8ac..0aa96de 100644
--- a/java/org/apache/catalina/valves/rewrite/RewriteRule.java
+++ b/java/org/apache/catalina/valves/rewrite/RewriteRule.java
@@ -86,7 +86,7 @@ public class RewriteRule {
      * @return <code>null</code> if no rewrite took place
      */
     public CharSequence evaluate(CharSequence url, Resolver resolver) {
-        Pattern pattern = RewriteRule.pattern.get();
+        Pattern pattern = this.pattern.get();
         if (pattern == null) {
             // Parse the pattern
             int flags = 0;
@@ -94,7 +94,7 @@ public class RewriteRule {
                 flags |= Pattern.CASE_INSENSITIVE;
             }
             pattern = Pattern.compile(patternString, flags);
-            RewriteRule.pattern.set(pattern);
+            this.pattern.set(pattern);
         }
         Matcher matcher = pattern.matcher(url);
         // Use XOR
diff --git a/java/org/apache/juli/ClassLoaderLogManager.java b/java/org/apache/juli/ClassLoaderLogManager.java
index c907056..cf3ad4c 100644
--- a/java/org/apache/juli/ClassLoaderLogManager.java
+++ b/java/org/apache/juli/ClassLoaderLogManager.java
@@ -277,7 +277,7 @@ public class ClassLoaderLogManager extends LogManager {
             return null;
         }
 
-        String prefix = ClassLoaderLogManager.prefix.get();
+        String prefix = this.prefix.get();
         String result = null;
 
         // If a prefix is defined look for a prefixed property first
@@ -595,13 +595,13 @@ public class ClassLoaderLogManager extends LogManager {
                     }
                 }
                 try {
-                    ClassLoaderLogManager.prefix.set(prefix);
+                    this.prefix.set(prefix);
                     Handler handler = (Handler) classLoader.loadClass(
                             handlerClassName).getConstructor().newInstance();
                     // The specification strongly implies all configuration should be done
                     // during the creation of the handler object.
                     // This includes setting level, filter, formatter and encoding.
-                    ClassLoaderLogManager.prefix.set(null);
+                    this.prefix.set(null);
                     info.handlers.put(handlerName, handler);
                     if (rootHandlers == null) {
                         localRootLogger.addHandler(handler);


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


[tomcat] 02/03: Revert "Avoid waste of resources due to reconstruction of objects"

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit ab24401edbda54524bd5f29064c6bbbb38e9ec81
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu May 14 10:06:58 2020 +0100

    Revert "Avoid waste of resources due to reconstruction of objects"
    
    This reverts commit 2b628e8dc9acbab42ad8af068155f660a29c2d91.
---
 .../apache/catalina/core/ApplicationContext.java   |  2 +-
 .../apache/catalina/ha/tcp/ReplicationValve.java   |  2 +-
 .../catalina/session/PersistentManagerBase.java    |  2 +-
 .../catalina/valves/rewrite/RewriteCond.java       |  2 +-
 .../catalina/valves/rewrite/RewriteRule.java       |  4 ++--
 .../catalina/valves/rewrite/RewriteValve.java      |  2 +-
 java/org/apache/juli/ClassLoaderLogManager.java    |  2 +-
 test/org/apache/catalina/valves/Benchmarks.java    | 26 +++++++++++-----------
 8 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/java/org/apache/catalina/core/ApplicationContext.java b/java/org/apache/catalina/core/ApplicationContext.java
index 90f32b2..b6cd374 100644
--- a/java/org/apache/catalina/core/ApplicationContext.java
+++ b/java/org/apache/catalina/core/ApplicationContext.java
@@ -186,7 +186,7 @@ public class ApplicationContext implements ServletContext {
     /**
      * Thread local data used during request dispatch.
      */
-    private static final ThreadLocal<DispatchData> dispatchData = new ThreadLocal<>();
+    private final ThreadLocal<DispatchData> dispatchData = new ThreadLocal<>();
 
 
     /**
diff --git a/java/org/apache/catalina/ha/tcp/ReplicationValve.java b/java/org/apache/catalina/ha/tcp/ReplicationValve.java
index 666e29d..6eed956 100644
--- a/java/org/apache/catalina/ha/tcp/ReplicationValve.java
+++ b/java/org/apache/catalina/ha/tcp/ReplicationValve.java
@@ -85,7 +85,7 @@ public class ReplicationValve
     /**
      * crossContext session container
      */
-    protected static final ThreadLocal<ArrayList<DeltaSession>> crossContextSessions =
+    protected final ThreadLocal<ArrayList<DeltaSession>> crossContextSessions =
         new ThreadLocal<>() ;
 
     /**
diff --git a/java/org/apache/catalina/session/PersistentManagerBase.java b/java/org/apache/catalina/session/PersistentManagerBase.java
index 1fd08be..9f52c44 100644
--- a/java/org/apache/catalina/session/PersistentManagerBase.java
+++ b/java/org/apache/catalina/session/PersistentManagerBase.java
@@ -188,7 +188,7 @@ public abstract class PersistentManagerBase extends ManagerBase
      * Session that is currently getting swapped in to prevent loading it more
      * than once concurrently
      */
-    private static final ThreadLocal<Session> sessionToSwapIn = new ThreadLocal<>();
+    private final ThreadLocal<Session> sessionToSwapIn = new ThreadLocal<>();
 
 
     // ------------------------------------------------------------- Properties
diff --git a/java/org/apache/catalina/valves/rewrite/RewriteCond.java b/java/org/apache/catalina/valves/rewrite/RewriteCond.java
index a980d81..47a904c 100644
--- a/java/org/apache/catalina/valves/rewrite/RewriteCond.java
+++ b/java/org/apache/catalina/valves/rewrite/RewriteCond.java
@@ -28,7 +28,7 @@ public class RewriteCond {
 
     public static class PatternCondition extends Condition {
         public Pattern pattern;
-        private static ThreadLocal<Matcher> matcher = new ThreadLocal<>();
+        private ThreadLocal<Matcher> matcher = new ThreadLocal<>();
 
         @Override
         public boolean evaluate(String value, Resolver resolver) {
diff --git a/java/org/apache/catalina/valves/rewrite/RewriteRule.java b/java/org/apache/catalina/valves/rewrite/RewriteRule.java
index 0aa96de..833a12c 100644
--- a/java/org/apache/catalina/valves/rewrite/RewriteRule.java
+++ b/java/org/apache/catalina/valves/rewrite/RewriteRule.java
@@ -26,7 +26,7 @@ public class RewriteRule {
 
     protected RewriteCond[] conditions = new RewriteCond[0];
 
-    protected static ThreadLocal<Pattern> pattern = new ThreadLocal<>();
+    protected ThreadLocal<Pattern> pattern = new ThreadLocal<>();
     protected Substitution substitution = null;
 
     protected String patternString = null;
@@ -186,7 +186,7 @@ public class RewriteRule {
     protected boolean cookieSecure = false;
     protected boolean cookieHttpOnly = false;
     protected Substitution cookieSubstitution = null;
-    protected static ThreadLocal<String> cookieResult = new ThreadLocal<>();
+    protected ThreadLocal<String> cookieResult = new ThreadLocal<>();
 
     /**
      *  This forces a request attribute named VAR to be set to the value VAL,
diff --git a/java/org/apache/catalina/valves/rewrite/RewriteValve.java b/java/org/apache/catalina/valves/rewrite/RewriteValve.java
index c44f798..78cbe7c 100644
--- a/java/org/apache/catalina/valves/rewrite/RewriteValve.java
+++ b/java/org/apache/catalina/valves/rewrite/RewriteValve.java
@@ -79,7 +79,7 @@ public class RewriteValve extends ValveBase {
     /**
      * If rewriting occurs, the whole request will be processed again.
      */
-    protected static ThreadLocal<Boolean> invoked = new ThreadLocal<>();
+    protected ThreadLocal<Boolean> invoked = new ThreadLocal<>();
 
 
     /**
diff --git a/java/org/apache/juli/ClassLoaderLogManager.java b/java/org/apache/juli/ClassLoaderLogManager.java
index cf3ad4c..a04285c 100644
--- a/java/org/apache/juli/ClassLoaderLogManager.java
+++ b/java/org/apache/juli/ClassLoaderLogManager.java
@@ -112,7 +112,7 @@ public class ClassLoaderLogManager extends LogManager {
      * This prefix is used to allow using prefixes for the properties names
      * of handlers and their subcomponents.
      */
-    protected static final ThreadLocal<String> prefix = new ThreadLocal<>();
+    protected final ThreadLocal<String> prefix = new ThreadLocal<>();
 
 
     /**
diff --git a/test/org/apache/catalina/valves/Benchmarks.java b/test/org/apache/catalina/valves/Benchmarks.java
index 5c67d9b..752ebad 100644
--- a/test/org/apache/catalina/valves/Benchmarks.java
+++ b/test/org/apache/catalina/valves/Benchmarks.java
@@ -76,14 +76,14 @@ public class Benchmarks {
             return "ThreadLocals";
         }
 
-        private static ThreadLocal<Long> currentMillisLocal = new ThreadLocal<Long>() {
+        private ThreadLocal<Long> currentMillisLocal = new ThreadLocal<Long>() {
             @Override
             protected Long initialValue() {
                 return Long.valueOf(0);
             }
         };
 
-        private static ThreadLocal<Date> currentDateLocal = new ThreadLocal<>();
+        private ThreadLocal<Date> currentDateLocal = new ThreadLocal<>();
 
         @Override
         public void run() {
@@ -112,14 +112,14 @@ public class Benchmarks {
             long value = 0;
         }
 
-        private static ThreadLocal<MutableLong> currentMillisLocal = new ThreadLocal<MutableLong>() {
+        private ThreadLocal<MutableLong> currentMillisLocal = new ThreadLocal<MutableLong>() {
             @Override
             protected MutableLong initialValue() {
                 return new MutableLong();
             }
         };
 
-        private static ThreadLocal<Date> currentDateLocal = new ThreadLocal<>();
+        private ThreadLocal<Date> currentDateLocal = new ThreadLocal<>();
 
         @Override
         public void run() {
@@ -149,7 +149,7 @@ public class Benchmarks {
             public Date currentDate;
         }
 
-        private static ThreadLocal<Struct> currentStruct = new ThreadLocal<Struct>() {
+        private ThreadLocal<Struct> currentStruct = new ThreadLocal<Struct>() {
             @Override
             protected Struct initialValue() {
                 return new Struct();
@@ -266,33 +266,33 @@ public class Benchmarks {
             return "ThreadLocals";
         }
 
-        private static ThreadLocal<String> currentDateStringLocal = new ThreadLocal<>();
+        private ThreadLocal<String> currentDateStringLocal = new ThreadLocal<>();
 
-        private static ThreadLocal<Date> currentDateLocal = new ThreadLocal<Date>() {
+        private ThreadLocal<Date> currentDateLocal = new ThreadLocal<Date>() {
             @Override
             protected Date initialValue() {
                 return new Date();
             }
         };
-        private static ThreadLocal<SimpleDateFormat> dayFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
+        private ThreadLocal<SimpleDateFormat> dayFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
             @Override
             protected SimpleDateFormat initialValue() {
                 return new SimpleDateFormat("dd");
             }
         };
-        private static ThreadLocal<SimpleDateFormat> monthFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
+        private ThreadLocal<SimpleDateFormat> monthFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
             @Override
             protected SimpleDateFormat initialValue() {
                 return new SimpleDateFormat("MM");
             }
         };
-        private static ThreadLocal<SimpleDateFormat> yearFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
+        private ThreadLocal<SimpleDateFormat> yearFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
             @Override
             protected SimpleDateFormat initialValue() {
                 return new SimpleDateFormat("yyyy");
             }
         };
-        private static ThreadLocal<SimpleDateFormat> timeFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
+        private ThreadLocal<SimpleDateFormat> timeFormatterLocal = new ThreadLocal<SimpleDateFormat>() {
             @Override
             protected SimpleDateFormat initialValue() {
                 return new SimpleDateFormat("hh:mm:ss");
@@ -354,7 +354,7 @@ public class Benchmarks {
                     "hh:mm:ss");
         }
 
-        private static ThreadLocal<Struct> structLocal = new ThreadLocal<Struct>() {
+        private ThreadLocal<Struct> structLocal = new ThreadLocal<Struct>() {
             @Override
             protected Struct initialValue() {
                 return new Struct();
@@ -415,7 +415,7 @@ public class Benchmarks {
                     "hh:mm:ss");
         }
 
-        private static ThreadLocal<Struct> structLocal = new ThreadLocal<Struct>() {
+        private ThreadLocal<Struct> structLocal = new ThreadLocal<Struct>() {
             @Override
             protected Struct initialValue() {
                 return new Struct();


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