You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by eb...@apache.org on 2020/12/04 12:00:07 UTC

[tomcat] 04/12: Replace ThreadLocal inner classes with ThreadLocal.withInitial() + lambda expression

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

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

commit 92ee90fbb0ade1513d755afac6d85cd682f8199a
Author: Emmanuel Bourg <eb...@apache.org>
AuthorDate: Wed Dec 2 01:07:51 2020 +0100

    Replace ThreadLocal inner classes with ThreadLocal.withInitial() + lambda expression
---
 java/org/apache/catalina/connector/CoyoteAdapter.java     |  9 +--------
 java/org/apache/catalina/filters/RequestDumperFilter.java |  8 +-------
 .../apache/catalina/valves/AbstractAccessLogValve.java    | 15 ++-------------
 .../apache/catalina/valves/ExtendedAccessLogValve.java    | 14 ++------------
 java/org/apache/juli/ClassLoaderLogManager.java           |  7 +------
 java/org/apache/juli/OneLineFormatter.java                | 15 +++------------
 java/org/apache/naming/factory/LookupFactory.java         |  8 +-------
 java/org/apache/tomcat/util/http/CookieProcessorBase.java | 14 +++++---------
 8 files changed, 16 insertions(+), 74 deletions(-)

diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java
index 4303620..740fa94 100644
--- a/java/org/apache/catalina/connector/CoyoteAdapter.java
+++ b/java/org/apache/catalina/connector/CoyoteAdapter.java
@@ -83,14 +83,7 @@ public class CoyoteAdapter implements Adapter {
 
 
     private static final ThreadLocal<String> THREAD_NAME =
-            new ThreadLocal<String>() {
-
-                @Override
-                protected String initialValue() {
-                    return Thread.currentThread().getName();
-                }
-
-    };
+            ThreadLocal.withInitial(() -> Thread.currentThread().getName());
 
     // ----------------------------------------------------------- Constructors
 
diff --git a/java/org/apache/catalina/filters/RequestDumperFilter.java b/java/org/apache/catalina/filters/RequestDumperFilter.java
index 20dcdcc..b8e9796 100644
--- a/java/org/apache/catalina/filters/RequestDumperFilter.java
+++ b/java/org/apache/catalina/filters/RequestDumperFilter.java
@@ -57,13 +57,7 @@ public class RequestDumperFilter extends GenericFilter {
     private static final String NON_HTTP_RES_MSG =
         "Not available. Non-http response.";
 
-    private static final ThreadLocal<Timestamp> timestamp =
-            new ThreadLocal<Timestamp>() {
-        @Override
-        protected Timestamp initialValue() {
-            return new Timestamp();
-        }
-    };
+    private static final ThreadLocal<Timestamp> timestamp = ThreadLocal.withInitial(Timestamp::new);
 
     // Log must be non-static as loggers are created per class-loader and this
     // Filter may be used in multiple class loaders
diff --git a/java/org/apache/catalina/valves/AbstractAccessLogValve.java b/java/org/apache/catalina/valves/AbstractAccessLogValve.java
index 1d113ed..77ff9b8 100644
--- a/java/org/apache/catalina/valves/AbstractAccessLogValve.java
+++ b/java/org/apache/catalina/valves/AbstractAccessLogValve.java
@@ -405,25 +405,14 @@ public abstract class AbstractAccessLogValve extends ValveBase implements Access
      * Thread local date format cache.
      */
     private static final ThreadLocal<DateFormatCache> localDateCache =
-            new ThreadLocal<DateFormatCache>() {
-        @Override
-        protected DateFormatCache initialValue() {
-            return new DateFormatCache(localCacheSize, Locale.getDefault(), globalDateCache);
-        }
-    };
+            ThreadLocal.withInitial(() -> new DateFormatCache(localCacheSize, Locale.getDefault(), globalDateCache));
 
 
     /**
      * The system time when we last updated the Date that this valve
      * uses for log lines.
      */
-    private static final ThreadLocal<Date> localDate =
-            new ThreadLocal<Date>() {
-        @Override
-        protected Date initialValue() {
-            return new Date();
-        }
-    };
+    private static final ThreadLocal<Date> localDate = ThreadLocal.withInitial(Date::new);
 
     /**
      * Are we doing conditional logging. default null.
diff --git a/java/org/apache/catalina/valves/ExtendedAccessLogValve.java b/java/org/apache/catalina/valves/ExtendedAccessLogValve.java
index 5a9fc0d..bc0097c 100644
--- a/java/org/apache/catalina/valves/ExtendedAccessLogValve.java
+++ b/java/org/apache/catalina/valves/ExtendedAccessLogValve.java
@@ -207,12 +207,7 @@ public class ExtendedAccessLogValve extends AccessLogValve {
         private static final long INTERVAL = (1000 * 60 * 60 * 24);
 
         private static final ThreadLocal<ElementTimestampStruct> currentDate =
-                new ThreadLocal<ElementTimestampStruct>() {
-            @Override
-            protected ElementTimestampStruct initialValue() {
-                return new ElementTimestampStruct("yyyy-MM-dd");
-            }
-        };
+                ThreadLocal.withInitial(() -> new ElementTimestampStruct("yyyy-MM-dd"));
 
         @Override
         public void addElement(CharArrayWriter buf, Date date, Request request,
@@ -235,12 +230,7 @@ public class ExtendedAccessLogValve extends AccessLogValve {
         private static final long INTERVAL = 1000;
 
         private static final ThreadLocal<ElementTimestampStruct> currentTime =
-                new ThreadLocal<ElementTimestampStruct>() {
-            @Override
-            protected ElementTimestampStruct initialValue() {
-                return new ElementTimestampStruct("HH:mm:ss");
-            }
-        };
+                ThreadLocal.withInitial(() -> new ElementTimestampStruct("HH:mm:ss"));
 
         @Override
         public void addElement(CharArrayWriter buf, Date date, Request request,
diff --git a/java/org/apache/juli/ClassLoaderLogManager.java b/java/org/apache/juli/ClassLoaderLogManager.java
index 5672761..43f7e65 100644
--- a/java/org/apache/juli/ClassLoaderLogManager.java
+++ b/java/org/apache/juli/ClassLoaderLogManager.java
@@ -52,12 +52,7 @@ public class ClassLoaderLogManager extends LogManager {
 
     private static final boolean isJava9;
 
-    private static ThreadLocal<Boolean> addingLocalRootLogger = new ThreadLocal<Boolean>() {
-        @Override
-        protected Boolean initialValue() {
-            return Boolean.FALSE;
-        }
-    };
+    private static ThreadLocal<Boolean> addingLocalRootLogger = ThreadLocal.withInitial(() -> Boolean.FALSE);
 
     public static final String DEBUG_PROPERTY =
             ClassLoaderLogManager.class.getName() + ".debug";
diff --git a/java/org/apache/juli/OneLineFormatter.java b/java/org/apache/juli/OneLineFormatter.java
index 968a692..ba340bd 100644
--- a/java/org/apache/juli/OneLineFormatter.java
+++ b/java/org/apache/juli/OneLineFormatter.java
@@ -43,12 +43,8 @@ public class OneLineFormatter extends Formatter {
     private static final Object threadMxBeanLock = new Object();
     private static volatile ThreadMXBean threadMxBean = null;
     private static final int THREAD_NAME_CACHE_SIZE = 10000;
-    private static ThreadLocal<ThreadNameCache> threadNameCache = new ThreadLocal<ThreadNameCache>() {
-        @Override
-        protected ThreadNameCache initialValue() {
-            return new ThreadNameCache(THREAD_NAME_CACHE_SIZE);
-        }
-    };
+    private static ThreadLocal<ThreadNameCache> threadNameCache =
+            ThreadLocal.withInitial(() -> new ThreadNameCache(THREAD_NAME_CACHE_SIZE));
 
     /* Timestamp format */
     private static final String DEFAULT_TIME_FORMAT = "dd-MMM-yyyy HH:mm:ss.SSS";
@@ -109,12 +105,7 @@ public class OneLineFormatter extends Formatter {
 
         final DateFormatCache globalDateCache =
                 new DateFormatCache(globalCacheSize, cachedTimeFormat, null);
-        localDateCache = new ThreadLocal<DateFormatCache>() {
-            @Override
-            protected DateFormatCache initialValue() {
-                return new DateFormatCache(localCacheSize, cachedTimeFormat, globalDateCache);
-            }
-        };
+        localDateCache = ThreadLocal.withInitial(() -> new DateFormatCache(localCacheSize, cachedTimeFormat, globalDateCache));
     }
 
 
diff --git a/java/org/apache/naming/factory/LookupFactory.java b/java/org/apache/naming/factory/LookupFactory.java
index 6e7455c..40bbafe 100644
--- a/java/org/apache/naming/factory/LookupFactory.java
+++ b/java/org/apache/naming/factory/LookupFactory.java
@@ -41,13 +41,7 @@ public class LookupFactory implements ObjectFactory {
     private static final Log log = LogFactory.getLog(LookupFactory.class);
     private static final StringManager sm = StringManager.getManager(LookupFactory.class);
 
-    private static final ThreadLocal<Set<String>> names = new ThreadLocal<Set<String>>() {
-
-        @Override
-        protected Set<String> initialValue() {
-            return new HashSet<>();
-        }
-    };
+    private static final ThreadLocal<Set<String>> names = ThreadLocal.withInitial(HashSet::new);
 
     /**
      * Create a new Resource env instance.
diff --git a/java/org/apache/tomcat/util/http/CookieProcessorBase.java b/java/org/apache/tomcat/util/http/CookieProcessorBase.java
index 589df47..47fbe58 100644
--- a/java/org/apache/tomcat/util/http/CookieProcessorBase.java
+++ b/java/org/apache/tomcat/util/http/CookieProcessorBase.java
@@ -27,15 +27,11 @@ public abstract class CookieProcessorBase implements CookieProcessor {
     private static final String COOKIE_DATE_PATTERN = "EEE, dd-MMM-yyyy HH:mm:ss z";
 
     protected static final ThreadLocal<DateFormat> COOKIE_DATE_FORMAT =
-        new ThreadLocal<DateFormat>() {
-        @Override
-        protected DateFormat initialValue() {
-            DateFormat df =
-                new SimpleDateFormat(COOKIE_DATE_PATTERN, Locale.US);
-            df.setTimeZone(TimeZone.getTimeZone("GMT"));
-            return df;
-        }
-    };
+            ThreadLocal.withInitial(() -> {
+                DateFormat df = new SimpleDateFormat(COOKIE_DATE_PATTERN, Locale.US);
+                df.setTimeZone(TimeZone.getTimeZone("GMT"));
+                return df;
+            });
 
     protected static final String ANCIENT_DATE;
 


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