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/02 00:21:15 UTC

[tomcat] branch master updated (98fd8e1 -> f3b75d2)

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

ebourg pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git.


    from 98fd8e1  Fix BZ 64947. NPE on custom HTTP upgrade
     new 03cd304  Use the valueOf() method of the primitive wrapper classes instead of the deprecated constructors (to be removed as part of JEP 390)
     new 2728f60  Use lambda expressions with AccessController.doPrivileged()
     new 2475022  Use method references instead of lambda expressions when possible
     new 9f18abe  Replace ThreadLocal inner classes with ThreadLocal.withInitial() + lambda expression
     new f3b75d2  Replace Runnable inner classes with lambda expressions

The 5 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:
 java/jakarta/el/BeanELResolver.java                |  8 +-
 java/jakarta/el/ExpressionFactory.java             | 28 +------
 .../auth/message/config/AuthConfigFactory.java     | 36 ++++-----
 java/jakarta/servlet/http/Cookie.java              | 30 ++-----
 .../authenticator/SpnegoAuthenticator.java         | 13 +--
 .../apache/catalina/connector/CoyoteAdapter.java   |  9 +--
 .../catalina/core/ApplicationFilterChain.java      |  6 +-
 java/org/apache/catalina/core/StandardServer.java  | 14 +---
 .../catalina/filters/RequestDumperFilter.java      |  8 +-
 .../catalina/filters/RestCsrfPreventionFilter.java | 14 ++--
 .../org/apache/catalina/security/SecurityUtil.java |  7 +-
 java/org/apache/catalina/servlets/CGIServlet.java  |  7 +-
 .../catalina/startup/ClassLoaderFactory.java       | 26 +++---
 .../apache/catalina/tribes/group/GroupChannel.java |  8 +-
 .../interceptors/MessageDispatchInterceptor.java   |  8 +-
 .../interceptors/StaticMembershipInterceptor.java  | 11 +--
 .../tribes/membership/McastServiceImpl.java        | 91 +++++++++------------
 .../membership/StaticMembershipProvider.java       | 34 ++++----
 .../membership/cloud/CloudMembershipProvider.java  | 34 ++++----
 .../tribes/transport/nio/NioReplicationTask.java   | 46 +++++------
 java/org/apache/catalina/users/MemoryGroup.java    |  2 +-
 java/org/apache/catalina/util/Introspection.java   | 16 +---
 .../catalina/valves/AbstractAccessLogValve.java    | 15 +---
 .../catalina/valves/ExtendedAccessLogValve.java    | 14 +---
 java/org/apache/coyote/AbstractProtocol.java       | 20 ++---
 .../apache/coyote/http2/Http2UpgradeHandler.java   |  2 +-
 java/org/apache/el/lang/ELSupport.java             |  9 +--
 java/org/apache/el/lang/ExpressionBuilder.java     |  8 +-
 java/org/apache/el/util/Validation.java            | 10 +--
 .../jasper/runtime/JspApplicationContextImpl.java  |  8 +-
 java/org/apache/jasper/runtime/JspFactoryImpl.java |  7 +-
 java/org/apache/jasper/servlet/JspServlet.java     | 11 +--
 .../jasper/tagplugins/jstl/core/ForEach.java       | 16 ++--
 .../org/apache/jasper/tagplugins/jstl/core/If.java |  2 +-
 java/org/apache/juli/ClassLoaderLogManager.java    | 40 +++-------
 java/org/apache/juli/OneLineFormatter.java         | 15 +---
 java/org/apache/naming/factory/LookupFactory.java  |  8 +-
 .../apache/naming/factory/MailSessionFactory.java  | 93 +++++++++++-----------
 .../org/apache/naming/factory/SendMailFactory.java | 62 +++++++--------
 .../org/apache/tomcat/util/compat/JrePlatform.java |  8 +-
 .../tomcat/util/http/CookieProcessorBase.java      | 14 ++--
 java/org/apache/tomcat/util/json/JSONParser.java   |  4 +-
 java/org/apache/tomcat/util/json/JSONParser.jj     |  4 +-
 .../apache/tomcat/util/modeler/ManagedBean.java    |  2 +-
 java/org/apache/tomcat/util/net/Nio2Endpoint.java  | 21 +++--
 .../ObjectReflectionPropertyInspector.java         |  2 +-
 46 files changed, 291 insertions(+), 560 deletions(-)


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


[tomcat] 01/05: Use the valueOf() method of the primitive wrapper classes instead of the deprecated constructors (to be removed as part of JEP 390)

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

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

commit 03cd304b28157cce56fdb82bd328477cd8c563cd
Author: Emmanuel Bourg <eb...@apache.org>
AuthorDate: Tue Dec 1 22:35:49 2020 +0100

    Use the valueOf() method of the primitive wrapper classes instead of the deprecated constructors (to be removed as part of JEP 390)
---
 java/org/apache/jasper/tagplugins/jstl/core/ForEach.java | 16 ++++++++--------
 java/org/apache/jasper/tagplugins/jstl/core/If.java      |  2 +-
 java/org/apache/tomcat/util/json/JSONParser.java         |  4 ++--
 java/org/apache/tomcat/util/json/JSONParser.jj           |  4 ++--
 4 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/java/org/apache/jasper/tagplugins/jstl/core/ForEach.java b/java/org/apache/jasper/tagplugins/jstl/core/ForEach.java
index 0fa6da6..f60b346 100644
--- a/java/org/apache/jasper/tagplugins/jstl/core/ForEach.java
+++ b/java/org/apache/jasper/tagplugins/jstl/core/ForEach.java
@@ -230,7 +230,7 @@ public final class ForEach implements TagPlugin {
                 "    public boolean hasNext() {\n" +
                 "      return index < a.length;}\n" +
                 "    public Object next() {\n" +
-                "      return new Boolean(a[index++]);}\n" +
+                "      return Boolean.valueOf(a[index++]);}\n" +
                 "    public void remove() {}\n" +
                 "  });\n" +
                 "}"
@@ -244,7 +244,7 @@ public final class ForEach implements TagPlugin {
                 "    public boolean hasNext() {\n" +
                 "      return index < a.length;}\n" +
                 "    public Object next() {\n" +
-                "      return new Byte(a[index++]);}\n" +
+                "      return Byte.valueOf(a[index++]);}\n" +
                 "    public void remove() {}\n" +
                 "  });\n" +
                 "}"
@@ -258,7 +258,7 @@ public final class ForEach implements TagPlugin {
                 "    public boolean hasNext() {\n" +
                 "      return index < a.length;}\n" +
                 "    public Object next() {\n" +
-                "      return new Character(a[index++]);}\n" +
+                "      return Character.valueOf(a[index++]);}\n" +
                 "    public void remove() {}\n" +
                 "  });\n" +
                 "}"
@@ -272,7 +272,7 @@ public final class ForEach implements TagPlugin {
                 "    public boolean hasNext() {\n" +
                 "      return index < a.length;}\n" +
                 "    public Object next() {\n" +
-                "      return new Short(a[index++]);}\n" +
+                "      return Short.valueOf(a[index++]);}\n" +
                 "    public void remove() {}\n" +
                 "  });\n" +
                 "}"
@@ -286,7 +286,7 @@ public final class ForEach implements TagPlugin {
                 "    public boolean hasNext() {\n" +
                 "      return index < a.length;}\n" +
                 "    public Object next() {\n" +
-                "      return new Integer(a[index++]);}\n" +
+                "      return Integer.valueOf(a[index++]);}\n" +
                 "    public void remove() {}\n" +
                 "  });\n" +
                 "}"
@@ -300,7 +300,7 @@ public final class ForEach implements TagPlugin {
                 "    public boolean hasNext() {\n" +
                 "      return index < a.length;}\n" +
                 "    public Object next() {\n" +
-                "      return new Long(a[index++]);}\n" +
+                "      return Long.valueOf(a[index++]);}\n" +
                 "    public void remove() {}\n" +
                 "  });\n" +
                 "}"
@@ -314,7 +314,7 @@ public final class ForEach implements TagPlugin {
                 "    public boolean hasNext() {\n" +
                 "      return index < a.length;}\n" +
                 "    public Object next() {\n" +
-                "      return new Float(a[index++]);}\n" +
+                "      return Float.valueOf(a[index++]);}\n" +
                 "    public void remove() {}\n" +
                 "  });\n" +
                 "}"
@@ -328,7 +328,7 @@ public final class ForEach implements TagPlugin {
                 "    public boolean hasNext() {\n" +
                 "      return index < a.length;}\n" +
                 "    public Object next() {\n" +
-                "      return new Double(a[index++]);}\n" +
+                "      return Double.valueOf(a[index++]);}\n" +
                 "    public void remove() {}\n" +
                 "  });\n" +
                 "}"
diff --git a/java/org/apache/jasper/tagplugins/jstl/core/If.java b/java/org/apache/jasper/tagplugins/jstl/core/If.java
index 62d64e3..15d7e06 100644
--- a/java/org/apache/jasper/tagplugins/jstl/core/If.java
+++ b/java/org/apache/jasper/tagplugins/jstl/core/If.java
@@ -43,7 +43,7 @@ public final class If implements TagPlugin {
             }
             ctxt.generateJavaSource("_jspx_page_context.setAttribute(");
             ctxt.generateAttribute("var");
-            ctxt.generateJavaSource(", new Boolean(" + condV + ")," + scope + ");");
+            ctxt.generateJavaSource(", Boolean.valueOf(" + condV + ")," + scope + ");");
         }
         ctxt.generateJavaSource("if (" + condV + "){");
         ctxt.generateBody();
diff --git a/java/org/apache/tomcat/util/json/JSONParser.java b/java/org/apache/tomcat/util/json/JSONParser.java
index 6ae58fa..10e483f 100644
--- a/java/org/apache/tomcat/util/json/JSONParser.java
+++ b/java/org/apache/tomcat/util/json/JSONParser.java
@@ -329,7 +329,7 @@ b = Boolean.FALSE;
     case NUMBER_DECIMAL:{
       t = jj_consume_token(NUMBER_DECIMAL);
 if (nativeNumbers) {
-                {if ("" != null) return new Long(t.image);}
+                {if ("" != null) return Long.valueOf(t.image);}
             } else {
                 {if ("" != null) return new java.math.BigDecimal(t.image);}
             }
@@ -338,7 +338,7 @@ if (nativeNumbers) {
     case NUMBER_INTEGER:{
       t = jj_consume_token(NUMBER_INTEGER);
 if (nativeNumbers) {
-                {if ("" != null) return new Double(t.image);}
+                {if ("" != null) return Double.valueOf(t.image);}
             } else {
                 {if ("" != null) return new java.math.BigInteger(substringBefore(t.image, '.'));}
             }
diff --git a/java/org/apache/tomcat/util/json/JSONParser.jj b/java/org/apache/tomcat/util/json/JSONParser.jj
index b00633b..ce04438 100644
--- a/java/org/apache/tomcat/util/json/JSONParser.jj
+++ b/java/org/apache/tomcat/util/json/JSONParser.jj
@@ -324,7 +324,7 @@ Number number(): {
         t = <NUMBER_DECIMAL>
         {
             if (nativeNumbers) {
-                return new Long(t.image);
+                return Long.valueOf(t.image);
             } else {
                 return new java.math.BigDecimal(t.image);
             }
@@ -333,7 +333,7 @@ Number number(): {
         t = <NUMBER_INTEGER>
         {
             if (nativeNumbers) {
-                return new Double(t.image);
+                return Double.valueOf(t.image);
             } else {
                 return new java.math.BigInteger(substringBefore(t.image, '.'));
             }


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


[tomcat] 05/05: Replace Runnable inner classes with lambda expressions

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

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

commit f3b75d2eddd5832b2deab423ab7d9b2415ac77f5
Author: Emmanuel Bourg <eb...@apache.org>
AuthorDate: Wed Dec 2 01:16:12 2020 +0100

    Replace Runnable inner classes with lambda expressions
---
 java/org/apache/catalina/core/StandardServer.java  | 14 +---
 java/org/apache/catalina/servlets/CGIServlet.java  |  7 +-
 .../apache/catalina/tribes/group/GroupChannel.java |  8 +-
 .../interceptors/MessageDispatchInterceptor.java   |  8 +-
 .../interceptors/StaticMembershipInterceptor.java  | 11 +--
 .../tribes/membership/McastServiceImpl.java        | 91 ++++++++++------------
 .../membership/StaticMembershipProvider.java       | 34 ++++----
 .../membership/cloud/CloudMembershipProvider.java  | 34 ++++----
 .../tribes/transport/nio/NioReplicationTask.java   | 46 +++++------
 java/org/apache/coyote/AbstractProtocol.java       | 20 ++---
 java/org/apache/tomcat/util/net/Nio2Endpoint.java  | 21 +++--
 11 files changed, 112 insertions(+), 182 deletions(-)

diff --git a/java/org/apache/catalina/core/StandardServer.java b/java/org/apache/catalina/core/StandardServer.java
index cfbdc09..1ac8676 100644
--- a/java/org/apache/catalina/core/StandardServer.java
+++ b/java/org/apache/catalina/core/StandardServer.java
@@ -933,12 +933,7 @@ public final class StandardServer extends LifecycleMBeanBase implements Server {
 
         if (periodicEventDelay > 0) {
             monitorFuture = getUtilityExecutor().scheduleWithFixedDelay(
-                    new Runnable() {
-                        @Override
-                        public void run() {
-                            startPeriodicLifecycleEvent();
-                        }
-                    }, 0, 60, TimeUnit.SECONDS);
+                    () -> startPeriodicLifecycleEvent(), 0, 60, TimeUnit.SECONDS);
         }
     }
 
@@ -954,12 +949,7 @@ public final class StandardServer extends LifecycleMBeanBase implements Server {
                 }
             }
             periodicLifecycleEventFuture = getUtilityExecutor().scheduleAtFixedRate(
-                    new Runnable() {
-                        @Override
-                        public void run() {
-                            fireLifecycleEvent(Lifecycle.PERIODIC_EVENT, null);
-                        }
-                    }, periodicEventDelay, periodicEventDelay, TimeUnit.SECONDS);
+                    () -> fireLifecycleEvent(Lifecycle.PERIODIC_EVENT, null), periodicEventDelay, periodicEventDelay, TimeUnit.SECONDS);
         }
     }
 
diff --git a/java/org/apache/catalina/servlets/CGIServlet.java b/java/org/apache/catalina/servlets/CGIServlet.java
index 0dd5412..a9e9c1a 100644
--- a/java/org/apache/catalina/servlets/CGIServlet.java
+++ b/java/org/apache/catalina/servlets/CGIServlet.java
@@ -1666,12 +1666,7 @@ public final class CGIServlet extends HttpServlet {
                     (new InputStreamReader(proc.getErrorStream()));
                 final BufferedReader stdErrRdr = commandsStdErr ;
 
-                errReaderThread = new Thread() {
-                    @Override
-                    public void run () {
-                        sendToLog(stdErrRdr);
-                    }
-                };
+                errReaderThread = new Thread(() -> sendToLog(stdErrRdr));
                 errReaderThread.start();
 
                 InputStream cgiHeaderStream =
diff --git a/java/org/apache/catalina/tribes/group/GroupChannel.java b/java/org/apache/catalina/tribes/group/GroupChannel.java
index 1bb558a..abd9303 100644
--- a/java/org/apache/catalina/tribes/group/GroupChannel.java
+++ b/java/org/apache/catalina/tribes/group/GroupChannel.java
@@ -476,13 +476,7 @@ public class GroupChannel extends ChannelInterceptorBase
             ownExecutor = true;
         }
         super.start(svc);
-        monitorFuture = utilityExecutor.scheduleWithFixedDelay(
-                new Runnable() {
-                    @Override
-                    public void run() {
-                        startHeartbeat();
-                    }
-                }, 0, 60, TimeUnit.SECONDS);
+        monitorFuture = utilityExecutor.scheduleWithFixedDelay(this::startHeartbeat, 0, 60, TimeUnit.SECONDS);
     }
 
     protected void startHeartbeat() {
diff --git a/java/org/apache/catalina/tribes/group/interceptors/MessageDispatchInterceptor.java b/java/org/apache/catalina/tribes/group/interceptors/MessageDispatchInterceptor.java
index ef869a6..18b9775 100644
--- a/java/org/apache/catalina/tribes/group/interceptors/MessageDispatchInterceptor.java
+++ b/java/org/apache/catalina/tribes/group/interceptors/MessageDispatchInterceptor.java
@@ -97,13 +97,7 @@ public class MessageDispatchInterceptor extends ChannelInterceptorBase
 
     public boolean addToQueue(final ChannelMessage msg, final Member[] destination,
             final InterceptorPayload payload) {
-        Runnable r = new Runnable() {
-            @Override
-            public void run() {
-                sendAsyncData(msg, destination, payload);
-            }
-        };
-        executor.execute(r);
+        executor.execute(() -> sendAsyncData(msg, destination, payload));
         return true;
     }
 
diff --git a/java/org/apache/catalina/tribes/group/interceptors/StaticMembershipInterceptor.java b/java/org/apache/catalina/tribes/group/interceptors/StaticMembershipInterceptor.java
index cd8e9e2..c7c70c8 100644
--- a/java/org/apache/catalina/tribes/group/interceptors/StaticMembershipInterceptor.java
+++ b/java/org/apache/catalina/tribes/group/interceptors/StaticMembershipInterceptor.java
@@ -159,13 +159,10 @@ public class StaticMembershipInterceptor extends ChannelInterceptorBase
         final ChannelInterceptorBase base = this;
         ScheduledExecutorService executor = getChannel().getUtilityExecutor();
         for (final Member member : members) {
-            Runnable r = new Runnable() {
-                @Override
-                public void run() {
-                    base.memberAdded(member);
-                    if (getfirstInterceptor().getMember(member) != null) {
-                        sendLocalMember(new Member[]{member});
-                    }
+            Runnable r = () -> {
+                base.memberAdded(member);
+                if (getfirstInterceptor().getMember(member) != null) {
+                    sendLocalMember(new Member[]{member});
                 }
             };
             executor.execute(r);
diff --git a/java/org/apache/catalina/tribes/membership/McastServiceImpl.java b/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
index 27e4121..dc00496 100644
--- a/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
+++ b/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
@@ -368,30 +368,24 @@ public class McastServiceImpl extends MembershipProviderBase {
         if (Arrays.equals(m.getCommand(), Member.SHUTDOWN_PAYLOAD)) {
             if (log.isDebugEnabled()) log.debug("Member has shutdown:" + m);
             membership.removeMember(m);
-            t = new Runnable() {
-                @Override
-                public void run() {
-                    String name = Thread.currentThread().getName();
-                    try {
-                        Thread.currentThread().setName("Membership-MemberDisappeared");
-                        service.memberDisappeared(m);
-                    }finally {
-                        Thread.currentThread().setName(name);
-                    }
+            t = () -> {
+                String name = Thread.currentThread().getName();
+                try {
+                    Thread.currentThread().setName("Membership-MemberDisappeared");
+                    service.memberDisappeared(m);
+                }finally {
+                    Thread.currentThread().setName(name);
                 }
             };
         } else if (membership.memberAlive(m)) {
             if (log.isDebugEnabled()) log.debug("Mcast add member " + m);
-            t = new Runnable() {
-                @Override
-                public void run() {
-                    String name = Thread.currentThread().getName();
-                    try {
-                        Thread.currentThread().setName("Membership-MemberAdded");
-                        service.memberAdded(m);
-                    }finally {
-                        Thread.currentThread().setName(name);
-                    }
+            t = () -> {
+                String name = Thread.currentThread().getName();
+                try {
+                    Thread.currentThread().setName("Membership-MemberAdded");
+                    service.memberAdded(m);
+                }finally {
+                    Thread.currentThread().setName(name);
                 }
             };
         } //end if
@@ -413,30 +407,27 @@ public class McastServiceImpl extends MembershipProviderBase {
                     log.debug("Unable to decode message.",ise);
                 }
             }
-            Runnable t = new Runnable() {
-                @Override
-                public void run() {
-                    String name = Thread.currentThread().getName();
-                    try {
-                        Thread.currentThread().setName("Membership-MemberAdded");
-                        for (ChannelData datum : data) {
-                            try {
-                                if (datum != null && !member.equals(datum.getAddress())) {
-                                    msgservice.messageReceived(datum);
-                                }
-                            } catch (Throwable t) {
-                                if (t instanceof ThreadDeath) {
-                                    throw (ThreadDeath) t;
-                                }
-                                if (t instanceof VirtualMachineError) {
-                                    throw (VirtualMachineError) t;
-                                }
-                                log.error(sm.getString("mcastServiceImpl.unableReceive.broadcastMessage"), t);
+            Runnable t = () -> {
+                String name = Thread.currentThread().getName();
+                try {
+                    Thread.currentThread().setName("Membership-MemberAdded");
+                    for (ChannelData datum : data) {
+                        try {
+                            if (datum != null && !member.equals(datum.getAddress())) {
+                                msgservice.messageReceived(datum);
+                            }
+                        } catch (Throwable t1) {
+                            if (t1 instanceof ThreadDeath) {
+                                throw (ThreadDeath) t1;
                             }
+                            if (t1 instanceof VirtualMachineError) {
+                                throw (VirtualMachineError) t1;
+                            }
+                            log.error(sm.getString("mcastServiceImpl.unableReceive.broadcastMessage"), t1);
                         }
-                    }finally {
-                        Thread.currentThread().setName(name);
                     }
+                }finally {
+                    Thread.currentThread().setName(name);
                 }
             };
             executor.execute(t);
@@ -451,17 +442,13 @@ public class McastServiceImpl extends MembershipProviderBase {
                 if (log.isDebugEnabled())
                     log.debug("Mcast expire  member " + member);
                 try {
-                    Runnable t = new Runnable() {
-                        @Override
-                        public void run() {
-                            String name = Thread.currentThread().getName();
-                            try {
-                                Thread.currentThread().setName("Membership-MemberExpired");
-                                service.memberDisappeared(member);
-                            } finally {
-                                Thread.currentThread().setName(name);
-                            }
-
+                    Runnable t = () -> {
+                        String name = Thread.currentThread().getName();
+                        try {
+                            Thread.currentThread().setName("Membership-MemberExpired");
+                            service.memberDisappeared(member);
+                        } finally {
+                            Thread.currentThread().setName(name);
                         }
                     };
                     executor.execute(t);
diff --git a/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java b/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java
index 4bd09f1..155cf29 100644
--- a/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java
+++ b/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java
@@ -157,16 +157,13 @@ public class StaticMembershipProvider extends MembershipProviderBase implements
     protected void memberAdded(Member member) {
         Member mbr = setupMember(member);
         if(membership.memberAlive(mbr)) {
-            Runnable r = new Runnable() {
-                @Override
-                public void run(){
-                    String name = Thread.currentThread().getName();
-                    try {
-                        Thread.currentThread().setName("StaticMembership-memberAdded");
-                        membershipListener.memberAdded(mbr);
-                    } finally {
-                        Thread.currentThread().setName(name);
-                    }
+            Runnable r = () -> {
+                String name = Thread.currentThread().getName();
+                try {
+                    Thread.currentThread().setName("StaticMembership-memberAdded");
+                    membershipListener.memberAdded(mbr);
+                } finally {
+                    Thread.currentThread().setName(name);
                 }
             };
             executor.execute(r);
@@ -175,16 +172,13 @@ public class StaticMembershipProvider extends MembershipProviderBase implements
 
     protected void memberDisappeared(Member member) {
         membership.removeMember(member);
-        Runnable r = new Runnable() {
-            @Override
-            public void run(){
-                String name = Thread.currentThread().getName();
-                try {
-                    Thread.currentThread().setName("StaticMembership-memberDisappeared");
-                    membershipListener.memberDisappeared(member);
-                } finally {
-                    Thread.currentThread().setName(name);
-                }
+        Runnable r = () -> {
+            String name = Thread.currentThread().getName();
+            try {
+                Thread.currentThread().setName("StaticMembership-memberDisappeared");
+                membershipListener.memberDisappeared(member);
+            } finally {
+                Thread.currentThread().setName(name);
             }
         };
         executor.execute(r);
diff --git a/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java b/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java
index 22f9a95..3c6315d 100644
--- a/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java
+++ b/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java
@@ -131,16 +131,13 @@ public abstract class CloudMembershipProvider extends MembershipProviderBase imp
                 if (log.isDebugEnabled()) {
                     log.debug("Member added: " + member);
                 }
-                Runnable r = new Runnable() {
-                    @Override
-                    public void run(){
-                        String name = Thread.currentThread().getName();
-                        try {
-                            Thread.currentThread().setName("CloudMembership-memberAdded");
-                            membershipListener.memberAdded(member);
-                        } finally {
-                            Thread.currentThread().setName(name);
-                        }
+                Runnable r = () -> {
+                    String name = Thread.currentThread().getName();
+                    try {
+                        Thread.currentThread().setName("CloudMembership-memberAdded");
+                        membershipListener.memberAdded(member);
+                    } finally {
+                        Thread.currentThread().setName(name);
                     }
                 };
                 executor.execute(r);
@@ -152,16 +149,13 @@ public abstract class CloudMembershipProvider extends MembershipProviderBase imp
             if (log.isDebugEnabled()) {
                 log.debug("Member disappeared: " + member);
             }
-            Runnable r = new Runnable() {
-                @Override
-                public void run(){
-                    String name = Thread.currentThread().getName();
-                    try {
-                        Thread.currentThread().setName("CloudMembership-memberDisappeared");
-                        membershipListener.memberDisappeared(member);
-                    } finally {
-                        Thread.currentThread().setName(name);
-                    }
+            Runnable r = () -> {
+                String name = Thread.currentThread().getName();
+                try {
+                    Thread.currentThread().setName("CloudMembership-memberDisappeared");
+                    membershipListener.memberDisappeared(member);
+                } finally {
+                    Thread.currentThread().setName(name);
                 }
             };
             executor.execute(r);
diff --git a/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java b/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java
index 221d691..0cb3bbd 100644
--- a/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java
+++ b/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java
@@ -252,27 +252,24 @@ public class NioReplicationTask extends AbstractRxTask {
             log.trace("Adding key for read event:"+key);
         reader.finish();
         //register our OP_READ interest
-        Runnable r = new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    if (key.isValid()) {
-                        // cycle the selector so this key is active again
-                        key.selector().wakeup();
-                        // resume interest in OP_READ, OP_WRITE
-                        int resumeOps = key.interestOps() | SelectionKey.OP_READ;
-                        key.interestOps(resumeOps);
-                        if ( log.isTraceEnabled() )
-                            log.trace("Registering key for read:"+key);
-                    }
-                } catch (CancelledKeyException ckx ) {
-                    NioReceiver.cancelledKey(key);
+        Runnable r = () -> {
+            try {
+                if (key.isValid()) {
+                    // cycle the selector so this key is active again
+                    key.selector().wakeup();
+                    // resume interest in OP_READ, OP_WRITE
+                    int resumeOps = key.interestOps() | SelectionKey.OP_READ;
+                    key.interestOps(resumeOps);
                     if ( log.isTraceEnabled() )
-                        log.trace("CKX Cancelling key:"+key);
-
-                } catch (Exception x) {
-                    log.error(sm.getString("nioReplicationTask.error.register.key", key),x);
+                        log.trace("Registering key for read:"+key);
                 }
+            } catch (CancelledKeyException ckx ) {
+                NioReceiver.cancelledKey(key);
+                if ( log.isTraceEnabled() )
+                    log.trace("CKX Cancelling key:"+key);
+
+            } catch (Exception x) {
+                log.error(sm.getString("nioReplicationTask.error.register.key", key),x);
             }
         };
         receiver.addEvent(r);
@@ -287,14 +284,11 @@ public class NioReplicationTask extends AbstractRxTask {
             reader.setCancelled(true);
             reader.finish();
         }
-        Runnable cx = new Runnable() {
-            @Override
-            public void run() {
-                if ( log.isTraceEnabled() )
-                    log.trace("Cancelling key:"+key);
+        Runnable cx = () -> {
+            if ( log.isTraceEnabled() )
+                log.trace("Cancelling key:"+key);
 
-                NioReceiver.cancelledKey(key);
-            }
+            NioReceiver.cancelledKey(key);
         };
         receiver.addEvent(cx);
     }
diff --git a/java/org/apache/coyote/AbstractProtocol.java b/java/org/apache/coyote/AbstractProtocol.java
index 921d78b..06c2f5e 100644
--- a/java/org/apache/coyote/AbstractProtocol.java
+++ b/java/org/apache/coyote/AbstractProtocol.java
@@ -579,12 +579,9 @@ public abstract class AbstractProtocol<S> implements ProtocolHandler,
 
         endpoint.start();
         monitorFuture = getUtilityExecutor().scheduleWithFixedDelay(
-                new Runnable() {
-                    @Override
-                    public void run() {
-                        if (!isPaused()) {
-                            startAsyncTimeout();
-                        }
+                () -> {
+                    if (!isPaused()) {
+                        startAsyncTimeout();
                     }
                 }, 0, 60, TimeUnit.SECONDS);
     }
@@ -606,13 +603,10 @@ public abstract class AbstractProtocol<S> implements ProtocolHandler,
                 }
             }
             timeoutFuture = getUtilityExecutor().scheduleAtFixedRate(
-                    new Runnable() {
-                        @Override
-                        public void run() {
-                            long now = System.currentTimeMillis();
-                            for (Processor processor : waitingProcessors) {
-                                processor.timeoutAsync(now);
-                            }
+                    () -> {
+                        long now = System.currentTimeMillis();
+                        for (Processor processor : waitingProcessors) {
+                            processor.timeoutAsync(now);
                         }
                     }, 1, 1, TimeUnit.SECONDS);
         }
diff --git a/java/org/apache/tomcat/util/net/Nio2Endpoint.java b/java/org/apache/tomcat/util/net/Nio2Endpoint.java
index 0cd5d13..7280d2f 100644
--- a/java/org/apache/tomcat/util/net/Nio2Endpoint.java
+++ b/java/org/apache/tomcat/util/net/Nio2Endpoint.java
@@ -195,19 +195,16 @@ public class Nio2Endpoint extends AbstractJsseEndpoint<Nio2Channel,AsynchronousS
             acceptor.stop(10);
             // Use the executor to avoid binding the main thread if something bad
             // occurs and unbind will also wait for a bit for it to complete
-            getExecutor().execute(new Runnable() {
-                @Override
-                public void run() {
-                    // Then close all active connections if any remain
-                    try {
-                        for (SocketWrapperBase<Nio2Channel> wrapper : getConnections()) {
-                            wrapper.close();
-                        }
-                    } catch (Throwable t) {
-                        ExceptionUtils.handleThrowable(t);
-                    } finally {
-                        allClosed = true;
+            getExecutor().execute(() -> {
+                // Then close all active connections if any remain
+                try {
+                    for (SocketWrapperBase<Nio2Channel> wrapper : getConnections()) {
+                        wrapper.close();
                     }
+                } catch (Throwable t) {
+                    ExceptionUtils.handleThrowable(t);
+                } finally {
+                    allClosed = true;
                 }
             });
             if (nioChannels != null) {


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


[tomcat] 03/05: Use method references instead of lambda expressions when possible

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

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

commit 24750228694b58e7631afeedf651a9f15779bad3
Author: Emmanuel Bourg <eb...@apache.org>
AuthorDate: Wed Dec 2 00:55:34 2020 +0100

    Use method references instead of lambda expressions when possible
---
 .../apache/catalina/filters/RestCsrfPreventionFilter.java  | 14 +++++---------
 java/org/apache/catalina/users/MemoryGroup.java            |  2 +-
 java/org/apache/coyote/http2/Http2UpgradeHandler.java      |  2 +-
 java/org/apache/tomcat/util/modeler/ManagedBean.java       |  2 +-
 .../xreflection/ObjectReflectionPropertyInspector.java     |  2 +-
 5 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java b/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java
index b557ab8..dd787bc 100644
--- a/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java
+++ b/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java
@@ -129,16 +129,13 @@ public class RestCsrfPreventionFilter extends CsrfPreventionFilterBase {
     }
 
     private static interface RestCsrfPreventionStrategy {
-        static final NonceSupplier<HttpServletRequest, String> nonceFromRequestHeader = (r, k) -> r
-                .getHeader(k);
-        static final NonceSupplier<HttpServletRequest, String[]> nonceFromRequestParams = (r, k) -> r
-                .getParameterValues(k);
+        static final NonceSupplier<HttpServletRequest, String> nonceFromRequestHeader = HttpServletRequest::getHeader;
+        static final NonceSupplier<HttpServletRequest, String[]> nonceFromRequestParams = ServletRequest::getParameterValues;
         static final NonceSupplier<HttpSession, String> nonceFromSession = (s, k) -> Objects
                 .isNull(s) ? null : (String) s.getAttribute(k);
 
-        static final NonceConsumer<HttpServletResponse> nonceToResponse = (r, k, v) -> r.setHeader(
-                k, v);
-        static final NonceConsumer<HttpSession> nonceToSession = (s, k, v) -> s.setAttribute(k, v);
+        static final NonceConsumer<HttpServletResponse> nonceToResponse = HttpServletResponse::setHeader;
+        static final NonceConsumer<HttpSession> nonceToSession = HttpSession::setAttribute;
 
         boolean apply(HttpServletRequest request, HttpServletResponse response) throws IOException;
     }
@@ -194,8 +191,7 @@ public class RestCsrfPreventionFilter extends CsrfPreventionFilterBase {
     }
 
     private class FetchRequest implements RestCsrfPreventionStrategy {
-        private final Predicate<String> fetchRequest = s -> Constants.CSRF_REST_NONCE_HEADER_FETCH_VALUE
-                .equalsIgnoreCase(s);
+        private final Predicate<String> fetchRequest = Constants.CSRF_REST_NONCE_HEADER_FETCH_VALUE::equalsIgnoreCase;
 
         @Override
         public boolean apply(HttpServletRequest request, HttpServletResponse response) {
diff --git a/java/org/apache/catalina/users/MemoryGroup.java b/java/org/apache/catalina/users/MemoryGroup.java
index 2d793e6..5a8a12c 100644
--- a/java/org/apache/catalina/users/MemoryGroup.java
+++ b/java/org/apache/catalina/users/MemoryGroup.java
@@ -187,7 +187,7 @@ public class MemoryGroup extends AbstractGroup {
         synchronized (roles) {
             if (roles.size() > 0) {
                 sb.append(" roles=\"");
-                StringUtils.join(roles, ',', (x) -> x.getRolename(), sb);
+                StringUtils.join(roles, ',', Role::getRolename, sb);
                 sb.append("\"");
             }
         }
diff --git a/java/org/apache/coyote/http2/Http2UpgradeHandler.java b/java/org/apache/coyote/http2/Http2UpgradeHandler.java
index 0307ece..054f3bc 100644
--- a/java/org/apache/coyote/http2/Http2UpgradeHandler.java
+++ b/java/org/apache/coyote/http2/Http2UpgradeHandler.java
@@ -1839,7 +1839,7 @@ class Http2UpgradeHandler extends AbstractStream implements InternalHttpUpgradeH
         }
 
         public long getRoundTripTimeNano() {
-            return (long) roundTripTimes.stream().mapToLong(x -> x.longValue()).average().orElse(0);
+            return (long) roundTripTimes.stream().mapToLong(Long::longValue).average().orElse(0);
         }
     }
 
diff --git a/java/org/apache/tomcat/util/modeler/ManagedBean.java b/java/org/apache/tomcat/util/modeler/ManagedBean.java
index 6215200..36084ad 100644
--- a/java/org/apache/tomcat/util/modeler/ManagedBean.java
+++ b/java/org/apache/tomcat/util/modeler/ManagedBean.java
@@ -559,7 +559,7 @@ public class ManagedBean implements java.io.Serializable {
     private String createOperationKey(OperationInfo operation) {
         StringBuilder key = new StringBuilder(operation.getName());
         key.append('(');
-        StringUtils.join(operation.getSignature(), ',', (x) -> x.getType(), key);
+        StringUtils.join(operation.getSignature(), ',', FeatureInfo::getType, key);
         key.append(')');
 
         return key.toString().intern();
diff --git a/java/org/apache/tomcat/util/xreflection/ObjectReflectionPropertyInspector.java b/java/org/apache/tomcat/util/xreflection/ObjectReflectionPropertyInspector.java
index 5f2ebb3..520e6a0 100644
--- a/java/org/apache/tomcat/util/xreflection/ObjectReflectionPropertyInspector.java
+++ b/java/org/apache/tomcat/util/xreflection/ObjectReflectionPropertyInspector.java
@@ -52,7 +52,7 @@ public final class ObjectReflectionPropertyInspector {
 
         Set<SetPropertyClass> baseClasses = getKnownClasses()
             .stream()
-            .map(c -> processClass(c))
+            .map(ObjectReflectionPropertyInspector::processClass)
             .collect(Collectors.toSet());
         generateCode(
             baseClasses,


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


[tomcat] 02/05: Use lambda expressions with AccessController.doPrivileged()

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

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

commit 2728f60e83b9b46b5dd2529d6efed70b29da8929
Author: Emmanuel Bourg <eb...@apache.org>
AuthorDate: Wed Dec 2 00:52:02 2020 +0100

    Use lambda expressions with AccessController.doPrivileged()
---
 java/jakarta/el/BeanELResolver.java                |  8 +-
 java/jakarta/el/ExpressionFactory.java             | 28 +------
 .../auth/message/config/AuthConfigFactory.java     | 36 ++++-----
 java/jakarta/servlet/http/Cookie.java              | 30 ++-----
 .../authenticator/SpnegoAuthenticator.java         | 13 +--
 .../catalina/core/ApplicationFilterChain.java      |  6 +-
 .../org/apache/catalina/security/SecurityUtil.java |  7 +-
 .../catalina/startup/ClassLoaderFactory.java       | 26 +++---
 java/org/apache/catalina/util/Introspection.java   | 16 +---
 java/org/apache/el/lang/ELSupport.java             |  9 +--
 java/org/apache/el/lang/ExpressionBuilder.java     |  8 +-
 java/org/apache/el/util/Validation.java            | 10 +--
 .../jasper/runtime/JspApplicationContextImpl.java  |  8 +-
 java/org/apache/jasper/runtime/JspFactoryImpl.java |  7 +-
 java/org/apache/jasper/servlet/JspServlet.java     | 11 +--
 java/org/apache/juli/ClassLoaderLogManager.java    | 33 +++-----
 .../apache/naming/factory/MailSessionFactory.java  | 93 +++++++++++-----------
 .../org/apache/naming/factory/SendMailFactory.java | 62 +++++++--------
 .../org/apache/tomcat/util/compat/JrePlatform.java |  8 +-
 19 files changed, 141 insertions(+), 278 deletions(-)

diff --git a/java/jakarta/el/BeanELResolver.java b/java/jakarta/el/BeanELResolver.java
index 1487033..7525e06 100644
--- a/java/jakarta/el/BeanELResolver.java
+++ b/java/jakarta/el/BeanELResolver.java
@@ -46,13 +46,7 @@ public class BeanELResolver extends ELResolver {
             cacheSizeStr = System.getProperty(CACHE_SIZE_PROP, "1000");
         } else {
             cacheSizeStr = AccessController.doPrivileged(
-                    new PrivilegedAction<String>() {
-
-                    @Override
-                    public String run() {
-                        return System.getProperty(CACHE_SIZE_PROP, "1000");
-                    }
-                });
+                    (PrivilegedAction<String>) () -> System.getProperty(CACHE_SIZE_PROP, "1000"));
         }
         CACHE_SIZE = Integer.parseInt(cacheSizeStr);
     }
diff --git a/java/jakarta/el/ExpressionFactory.java b/java/jakarta/el/ExpressionFactory.java
index 599a179..0777451 100644
--- a/java/jakarta/el/ExpressionFactory.java
+++ b/java/jakarta/el/ExpressionFactory.java
@@ -58,14 +58,8 @@ public abstract class ExpressionFactory {
     static {
         if (IS_SECURITY_ENABLED) {
             PROPERTY_FILE = AccessController.doPrivileged(
-                    new PrivilegedAction<String>(){
-                        @Override
-                        public String run() {
-                            return System.getProperty("java.home") + File.separator +
-                                    "lib" + File.separator + "el.properties";
-                        }
-
-                    }
+                    (PrivilegedAction<String>) () -> System.getProperty("java.home") + File.separator +
+                            "lib" + File.separator + "el.properties"
             );
         } else {
             PROPERTY_FILE = System.getProperty("java.home") + File.separator + "lib" +
@@ -333,14 +327,7 @@ public abstract class ExpressionFactory {
         className = getClassNameServices(tccl);
         if (className == null) {
             if (IS_SECURITY_ENABLED) {
-                className = AccessController.doPrivileged(
-                        new PrivilegedAction<String>() {
-                            @Override
-                            public String run() {
-                                return getClassNameJreDir();
-                            }
-                        }
-                );
+                className = AccessController.doPrivileged((PrivilegedAction<String>) ExpressionFactory::getClassNameJreDir);
             } else {
                 // Second el.properties file
                 className = getClassNameJreDir();
@@ -348,14 +335,7 @@ public abstract class ExpressionFactory {
         }
         if (className == null) {
             if (IS_SECURITY_ENABLED) {
-                className = AccessController.doPrivileged(
-                        new PrivilegedAction<String>() {
-                            @Override
-                            public String run() {
-                                return getClassNameSysProp();
-                            }
-                        }
-                );
+                className = AccessController.doPrivileged((PrivilegedAction<String>) ExpressionFactory::getClassNameSysProp);
             } else {
                 // Third system property
                 className = getClassNameSysProp();
diff --git a/java/jakarta/security/auth/message/config/AuthConfigFactory.java b/java/jakarta/security/auth/message/config/AuthConfigFactory.java
index 6f02fdef..a51c641 100644
--- a/java/jakarta/security/auth/message/config/AuthConfigFactory.java
+++ b/java/jakarta/security/auth/message/config/AuthConfigFactory.java
@@ -64,22 +64,18 @@ public abstract class AuthConfigFactory {
                 final String className = getFactoryClassName();
                 try {
                     factory = AccessController.doPrivileged(
-                            new PrivilegedExceptionAction<AuthConfigFactory>() {
-                        @Override
-                        public AuthConfigFactory run() throws ReflectiveOperationException,
-                                IllegalArgumentException, SecurityException {
-                            // Load this class with the same class loader as used for
-                            // this class. Note that the Thread context class loader
-                            // should not be used since that would trigger a memory leak
-                            // in container environments.
-                            if (className.equals("org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl")) {
-                                return new org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl();
-                            } else {
-                                Class<?> clazz = Class.forName(className);
-                                return (AuthConfigFactory) clazz.getConstructor().newInstance();
-                            }
-                        }
-                    });
+                            (PrivilegedExceptionAction<AuthConfigFactory>) () -> {
+                                // Load this class with the same class loader as used for
+                                // this class. Note that the Thread context class loader
+                                // should not be used since that would trigger a memory leak
+                                // in container environments.
+                                if (className.equals("org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl")) {
+                                    return new org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl();
+                                } else {
+                                    Class<?> clazz = Class.forName(className);
+                                    return (AuthConfigFactory) clazz.getConstructor().newInstance();
+                                }
+                            });
                 } catch (PrivilegedActionException e) {
                     Exception inner = e.getException();
                     if (inner instanceof InstantiationException) {
@@ -130,12 +126,8 @@ public abstract class AuthConfigFactory {
     }
 
     private static String getFactoryClassName() {
-        String className = AccessController.doPrivileged(new PrivilegedAction<String>() {
-            @Override
-            public String run() {
-                return Security.getProperty(DEFAULT_FACTORY_SECURITY_PROPERTY);
-            }
-        });
+        String className = AccessController.doPrivileged(
+                (PrivilegedAction<String>) () -> Security.getProperty(DEFAULT_FACTORY_SECURITY_PROPERTY));
 
         if (className != null) {
             return className;
diff --git a/java/jakarta/servlet/http/Cookie.java b/java/jakarta/servlet/http/Cookie.java
index f0ea2f2..1d8e7de 100644
--- a/java/jakarta/servlet/http/Cookie.java
+++ b/java/jakarta/servlet/http/Cookie.java
@@ -73,32 +73,14 @@ public class Cookie implements Cloneable, Serializable {
                     "org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR");
         } else {
             strictServletCompliance = AccessController.doPrivileged(
-                    new PrivilegedAction<Boolean>() {
-                        @Override
-                        public Boolean run() {
-                            return Boolean.valueOf(System.getProperty(
-                                    "org.apache.catalina.STRICT_SERVLET_COMPLIANCE"));
-                        }
-                    }
-                ).booleanValue();
+                    (PrivilegedAction<Boolean>) () -> Boolean.valueOf(System.getProperty(
+                            "org.apache.catalina.STRICT_SERVLET_COMPLIANCE")));
             propStrictNaming = AccessController.doPrivileged(
-                    new PrivilegedAction<String>() {
-                        @Override
-                        public String run() {
-                            return System.getProperty(
-                                    "org.apache.tomcat.util.http.ServerCookie.STRICT_NAMING");
-                        }
-                    }
-                );
+                    (PrivilegedAction<String>) () -> System.getProperty(
+                            "org.apache.tomcat.util.http.ServerCookie.STRICT_NAMING"));
             propFwdSlashIsSeparator = AccessController.doPrivileged(
-                    new PrivilegedAction<String>() {
-                        @Override
-                        public String run() {
-                            return System.getProperty(
-                                    "org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR");
-                        }
-                    }
-                );
+                    (PrivilegedAction<String>) () -> System.getProperty(
+                            "org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR"));
         }
 
         if (propStrictNaming == null) {
diff --git a/java/org/apache/catalina/authenticator/SpnegoAuthenticator.java b/java/org/apache/catalina/authenticator/SpnegoAuthenticator.java
index 252d4f3..16e0b36 100644
--- a/java/org/apache/catalina/authenticator/SpnegoAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/SpnegoAuthenticator.java
@@ -217,15 +217,10 @@ public class SpnegoAuthenticator extends AuthenticatorBase {
                 credentialLifetime = GSSCredential.DEFAULT_LIFETIME;
             }
             final PrivilegedExceptionAction<GSSCredential> action =
-                new PrivilegedExceptionAction<GSSCredential>() {
-                    @Override
-                    public GSSCredential run() throws GSSException {
-                        return manager.createCredential(null,
-                                credentialLifetime,
-                                new Oid("1.3.6.1.5.5.2"),
-                                GSSCredential.ACCEPT_ONLY);
-                    }
-                };
+                    () -> manager.createCredential(null,
+                            credentialLifetime,
+                            new Oid("1.3.6.1.5.5.2"),
+                            GSSCredential.ACCEPT_ONLY);
             gssContext = manager.createContext(Subject.doAs(subject, action));
 
             outToken = Subject.doAs(lc.getSubject(), new AcceptAction(gssContext, decoded));
diff --git a/java/org/apache/catalina/core/ApplicationFilterChain.java b/java/org/apache/catalina/core/ApplicationFilterChain.java
index f4c00e2..f9e69ec 100644
--- a/java/org/apache/catalina/core/ApplicationFilterChain.java
+++ b/java/org/apache/catalina/core/ApplicationFilterChain.java
@@ -138,14 +138,10 @@ public final class ApplicationFilterChain implements FilterChain {
             final ServletResponse res = response;
             try {
                 java.security.AccessController.doPrivileged(
-                    new java.security.PrivilegedExceptionAction<Void>() {
-                        @Override
-                        public Void run()
-                            throws ServletException, IOException {
+                        (java.security.PrivilegedExceptionAction<Void>) () -> {
                             internalDoFilter(req,res);
                             return null;
                         }
-                    }
                 );
             } catch( PrivilegedActionException pe) {
                 Exception e = pe.getException();
diff --git a/java/org/apache/catalina/security/SecurityUtil.java b/java/org/apache/catalina/security/SecurityUtil.java
index d7835c7..52eab47 100644
--- a/java/org/apache/catalina/security/SecurityUtil.java
+++ b/java/org/apache/catalina/security/SecurityUtil.java
@@ -277,13 +277,10 @@ public final class SecurityUtil{
         try{
             Subject subject = null;
             PrivilegedExceptionAction<Void> pea =
-                new PrivilegedExceptionAction<Void>(){
-                    @Override
-                    public Void run() throws Exception{
+                    () -> {
                        method.invoke(targetObject, targetArguments);
                        return null;
-                    }
-            };
+                    };
 
             // The first argument is always the request object
             if (targetArguments != null
diff --git a/java/org/apache/catalina/startup/ClassLoaderFactory.java b/java/org/apache/catalina/startup/ClassLoaderFactory.java
index 2be5613..110b702 100644
--- a/java/org/apache/catalina/startup/ClassLoaderFactory.java
+++ b/java/org/apache/catalina/startup/ClassLoaderFactory.java
@@ -126,14 +126,11 @@ public final class ClassLoaderFactory {
         // Construct the class loader itself
         final URL[] array = set.toArray(new URL[0]);
         return AccessController.doPrivileged(
-                new PrivilegedAction<URLClassLoader>() {
-                    @Override
-                    public URLClassLoader run() {
-                        if (parent == null) {
-                            return new URLClassLoader(array);
-                        } else {
-                            return new URLClassLoader(array, parent);
-                        }
+                (PrivilegedAction<URLClassLoader>) () -> {
+                    if (parent == null) {
+                        return new URLClassLoader(array);
+                    } else {
+                        return new URLClassLoader(array, parent);
                     }
                 });
     }
@@ -229,14 +226,11 @@ public final class ClassLoaderFactory {
             }
 
         return AccessController.doPrivileged(
-                new PrivilegedAction<URLClassLoader>() {
-                    @Override
-                    public URLClassLoader run() {
-                        if (parent == null)
-                            return new URLClassLoader(array);
-                        else
-                            return new URLClassLoader(array, parent);
-                    }
+                (PrivilegedAction<URLClassLoader>) () -> {
+                    if (parent == null)
+                        return new URLClassLoader(array);
+                    else
+                        return new URLClassLoader(array, parent);
                 });
     }
 
diff --git a/java/org/apache/catalina/util/Introspection.java b/java/org/apache/catalina/util/Introspection.java
index 9999bba..5c9bc2b 100644
--- a/java/org/apache/catalina/util/Introspection.java
+++ b/java/org/apache/catalina/util/Introspection.java
@@ -99,13 +99,7 @@ public class Introspection {
     public static Field[] getDeclaredFields(final Class<?> clazz) {
         Field[] fields = null;
         if (Globals.IS_SECURITY_ENABLED) {
-            fields = AccessController.doPrivileged(
-                    new PrivilegedAction<Field[]>(){
-                @Override
-                public Field[] run(){
-                    return clazz.getDeclaredFields();
-                }
-            });
+            fields = AccessController.doPrivileged((PrivilegedAction<Field[]>) clazz::getDeclaredFields);
         } else {
             fields = clazz.getDeclaredFields();
         }
@@ -122,13 +116,7 @@ public class Introspection {
     public static Method[] getDeclaredMethods(final Class<?> clazz) {
         Method[] methods = null;
         if (Globals.IS_SECURITY_ENABLED) {
-            methods = AccessController.doPrivileged(
-                    new PrivilegedAction<Method[]>(){
-                @Override
-                public Method[] run(){
-                    return clazz.getDeclaredMethods();
-                }
-            });
+            methods = AccessController.doPrivileged((PrivilegedAction<Method[]>) clazz::getDeclaredMethods);
         } else {
             methods = clazz.getDeclaredMethods();
         }
diff --git a/java/org/apache/el/lang/ELSupport.java b/java/org/apache/el/lang/ELSupport.java
index f251db8..16fd4db 100644
--- a/java/org/apache/el/lang/ELSupport.java
+++ b/java/org/apache/el/lang/ELSupport.java
@@ -48,13 +48,8 @@ public class ELSupport {
         String coerceToZeroStr;
         if (System.getSecurityManager() != null) {
             coerceToZeroStr = AccessController.doPrivileged(
-                    new PrivilegedAction<String>(){
-                        @Override
-                        public String run() {
-                            return System.getProperty(
-                                    "org.apache.el.parser.COERCE_TO_ZERO", "false");
-                        }
-                    }
+                    (PrivilegedAction<String>) () -> System.getProperty(
+                            "org.apache.el.parser.COERCE_TO_ZERO", "false")
             );
         } else {
             coerceToZeroStr = System.getProperty(
diff --git a/java/org/apache/el/lang/ExpressionBuilder.java b/java/org/apache/el/lang/ExpressionBuilder.java
index 5c11d2d..919898a 100644
--- a/java/org/apache/el/lang/ExpressionBuilder.java
+++ b/java/org/apache/el/lang/ExpressionBuilder.java
@@ -60,13 +60,7 @@ public final class ExpressionBuilder implements NodeVisitor {
             cacheSizeStr = System.getProperty(CACHE_SIZE_PROP, "5000");
         } else {
             cacheSizeStr = AccessController.doPrivileged(
-                    new PrivilegedAction<String>() {
-
-                    @Override
-                    public String run() {
-                        return System.getProperty(CACHE_SIZE_PROP, "5000");
-                    }
-                });
+                    (PrivilegedAction<String>) () -> System.getProperty(CACHE_SIZE_PROP, "5000"));
         }
         CACHE_SIZE = Integer.parseInt(cacheSizeStr);
     }
diff --git a/java/org/apache/el/util/Validation.java b/java/org/apache/el/util/Validation.java
index 09a5ebe..61fbe0a 100644
--- a/java/org/apache/el/util/Validation.java
+++ b/java/org/apache/el/util/Validation.java
@@ -42,15 +42,7 @@ public class Validation {
         String skipIdentifierCheckStr;
         if (IS_SECURITY_ENABLED) {
             skipIdentifierCheckStr = AccessController.doPrivileged(
-                    new PrivilegedAction<String>(){
-                        @Override
-                        public String run() {
-                            return System.getProperty(
-                                    "org.apache.el.parser.SKIP_IDENTIFIER_CHECK",
-                                    "false");
-                        }
-                    }
-            );
+                    (PrivilegedAction<String>) () -> System.getProperty("org.apache.el.parser.SKIP_IDENTIFIER_CHECK", "false"));
         } else {
             skipIdentifierCheckStr = System.getProperty(
                     "org.apache.el.parser.SKIP_IDENTIFIER_CHECK", "false");
diff --git a/java/org/apache/jasper/runtime/JspApplicationContextImpl.java b/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
index bd1f377..82aa1ab 100644
--- a/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
+++ b/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
@@ -90,13 +90,7 @@ public class JspApplicationContextImpl implements JspApplicationContext {
         final ELResolver r = this.createELResolver();
         ELContextImpl ctx;
         if (Constants.IS_SECURITY_ENABLED) {
-            ctx = AccessController.doPrivileged(
-                    new PrivilegedAction<ELContextImpl>() {
-                        @Override
-                        public ELContextImpl run() {
-                            return new ELContextImpl(r);
-                        }
-                    });
+            ctx = AccessController.doPrivileged((PrivilegedAction<ELContextImpl>) () -> new ELContextImpl(r));
         } else {
             ctx = new ELContextImpl(r);
         }
diff --git a/java/org/apache/jasper/runtime/JspFactoryImpl.java b/java/org/apache/jasper/runtime/JspFactoryImpl.java
index 25d6406..578b5f3 100644
--- a/java/org/apache/jasper/runtime/JspFactoryImpl.java
+++ b/java/org/apache/jasper/runtime/JspFactoryImpl.java
@@ -206,12 +206,7 @@ public class JspFactoryImpl extends JspFactory {
             final ServletContext context) {
         if (Constants.IS_SECURITY_ENABLED) {
             return AccessController.doPrivileged(
-                    new PrivilegedAction<JspApplicationContext>() {
-                @Override
-                public JspApplicationContext run() {
-                    return JspApplicationContextImpl.getInstance(context);
-                }
-            });
+                    (PrivilegedAction<JspApplicationContext>) () -> JspApplicationContextImpl.getInstance(context));
         } else {
             return JspApplicationContextImpl.getInstance(context);
         }
diff --git a/java/org/apache/jasper/servlet/JspServlet.java b/java/org/apache/jasper/servlet/JspServlet.java
index ab572b1..979dc74 100644
--- a/java/org/apache/jasper/servlet/JspServlet.java
+++ b/java/org/apache/jasper/servlet/JspServlet.java
@@ -128,13 +128,10 @@ public class JspServlet extends HttpServlet implements PeriodicEventListener {
             }
             try {
                 if (SecurityUtil.isPackageProtectionEnabled()){
-                   AccessController.doPrivileged(new PrivilegedExceptionAction<Object>(){
-                        @Override
-                        public Object run() throws IOException, ServletException {
-                            serviceJspFile(null, null, jspFile, true);
-                            return null;
-                        }
-                    });
+                   AccessController.doPrivileged((PrivilegedExceptionAction<Object>) () -> {
+                       serviceJspFile(null, null, jspFile, true);
+                       return null;
+                   });
                 } else {
                     serviceJspFile(null, null, jspFile, true);
                 }
diff --git a/java/org/apache/juli/ClassLoaderLogManager.java b/java/org/apache/juli/ClassLoaderLogManager.java
index a04285c..5672761 100644
--- a/java/org/apache/juli/ClassLoaderLogManager.java
+++ b/java/org/apache/juli/ClassLoaderLogManager.java
@@ -162,12 +162,9 @@ public class ClassLoaderLogManager extends LogManager {
         final String levelString = getProperty(loggerName + ".level");
         if (levelString != null) {
             try {
-                AccessController.doPrivileged(new PrivilegedAction<Void>() {
-                    @Override
-                    public Void run() {
-                        logger.setLevel(Level.parse(levelString.trim()));
-                        return null;
-                    }
+                AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
+                    logger.setLevel(Level.parse(levelString.trim()));
+                    return null;
                 });
             } catch (IllegalArgumentException e) {
                 // Leave level set to null
@@ -422,16 +419,13 @@ public class ClassLoaderLogManager extends LogManager {
         ClassLoaderLogInfo info = classLoaderLoggers.get(classLoader);
         if (info == null) {
             final ClassLoader classLoaderParam = classLoader;
-            AccessController.doPrivileged(new PrivilegedAction<Void>() {
-                @Override
-                public Void run() {
-                    try {
-                        readConfiguration(classLoaderParam);
-                    } catch (IOException e) {
-                        // Ignore
-                    }
-                    return null;
+            AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
+                try {
+                    readConfiguration(classLoaderParam);
+                } catch (IOException e) {
+                    // Ignore
                 }
+                return null;
             });
             info = classLoaderLoggers.get(classLoader);
         }
@@ -626,12 +620,9 @@ public class ClassLoaderLogManager extends LogManager {
      */
     protected static void doSetParentLogger(final Logger logger,
             final Logger parent) {
-        AccessController.doPrivileged(new PrivilegedAction<Void>() {
-            @Override
-            public Void run() {
-                logger.setParent(parent);
-                return null;
-            }
+        AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
+            logger.setParent(parent);
+            return null;
         });
     }
 
diff --git a/java/org/apache/naming/factory/MailSessionFactory.java b/java/org/apache/naming/factory/MailSessionFactory.java
index 9259d6d..dde44c0 100644
--- a/java/org/apache/naming/factory/MailSessionFactory.java
+++ b/java/org/apache/naming/factory/MailSessionFactory.java
@@ -102,55 +102,52 @@ public class MailSessionFactory implements ObjectFactory {
         // exceptions.
         //
         // Bugzilla 31288, 33077: add support for authentication.
-        return AccessController.doPrivileged(new PrivilegedAction<Session>() {
-                @Override
-                public Session run() {
-
-                    // Create the JavaMail properties we will use
-                    Properties props = new Properties();
-                    props.put("mail.transport.protocol", "smtp");
-                    props.put("mail.smtp.host", "localhost");
-
-                    String password = null;
-
-                    Enumeration<RefAddr> attrs = ref.getAll();
-                    while (attrs.hasMoreElements()) {
-                        RefAddr attr = attrs.nextElement();
-                        if ("factory".equals(attr.getType())) {
-                            continue;
-                        }
-
-                        if ("password".equals(attr.getType())) {
-                            password = (String) attr.getContent();
-                            continue;
-                        }
-
-                        props.put(attr.getType(), attr.getContent());
-                    }
-
-                    Authenticator auth = null;
-                    if (password != null) {
-                        String user = props.getProperty("mail.smtp.user");
-                        if(user == null) {
-                            user = props.getProperty("mail.user");
-                        }
-
-                        if(user != null) {
-                            final PasswordAuthentication pa = new PasswordAuthentication(user, password);
-                            auth = new Authenticator() {
-                                    @Override
-                                    protected PasswordAuthentication getPasswordAuthentication() {
-                                        return pa;
-                                    }
-                                };
-                        }
-                    }
-
-                    // Create and return the new Session object
-                    Session session = Session.getInstance(props, auth);
-                    return session;
+        return AccessController.doPrivileged((PrivilegedAction<Session>) () -> {
 
+            // Create the JavaMail properties we will use
+            Properties props = new Properties();
+            props.put("mail.transport.protocol", "smtp");
+            props.put("mail.smtp.host", "localhost");
+
+            String password = null;
+
+            Enumeration<RefAddr> attrs = ref.getAll();
+            while (attrs.hasMoreElements()) {
+                RefAddr attr = attrs.nextElement();
+                if ("factory".equals(attr.getType())) {
+                    continue;
+                }
+
+                if ("password".equals(attr.getType())) {
+                    password = (String) attr.getContent();
+                    continue;
                 }
-        } );
+
+                props.put(attr.getType(), attr.getContent());
+            }
+
+            Authenticator auth = null;
+            if (password != null) {
+                String user = props.getProperty("mail.smtp.user");
+                if(user == null) {
+                    user = props.getProperty("mail.user");
+                }
+
+                if(user != null) {
+                    final PasswordAuthentication pa = new PasswordAuthentication(user, password);
+                    auth = new Authenticator() {
+                            @Override
+                            protected PasswordAuthentication getPasswordAuthentication() {
+                                return pa;
+                            }
+                        };
+                }
+            }
+
+            // Create and return the new Session object
+            Session session = Session.getInstance(props, auth);
+            return session;
+
+        });
     }
 }
diff --git a/java/org/apache/naming/factory/SendMailFactory.java b/java/org/apache/naming/factory/SendMailFactory.java
index 326dd51..93c692e 100644
--- a/java/org/apache/naming/factory/SendMailFactory.java
+++ b/java/org/apache/naming/factory/SendMailFactory.java
@@ -89,42 +89,38 @@ public class SendMailFactory implements ObjectFactory
         // throwing Security Exceptions
         if (ref.getClassName().equals(DataSourceClassName)) {
             return AccessController.doPrivileged(
-                    new PrivilegedAction<MimePartDataSource>()
-            {
-                @Override
-                public MimePartDataSource run() {
-                    // set up the smtp session that will send the message
-                    Properties props = new Properties();
-                    // enumeration of all refaddr
-                    Enumeration<RefAddr> list = ref.getAll();
-                    // current refaddr to be set
-                    RefAddr refaddr;
-                    // set transport to smtp
-                    props.put("mail.transport.protocol", "smtp");
+                    (PrivilegedAction<MimePartDataSource>) () -> {
+                        // set up the smtp session that will send the message
+                        Properties props = new Properties();
+                        // enumeration of all refaddr
+                        Enumeration<RefAddr> list = ref.getAll();
+                        // current refaddr to be set
+                        RefAddr refaddr;
+                        // set transport to smtp
+                        props.put("mail.transport.protocol", "smtp");
 
-                    while (list.hasMoreElements()) {
-                        refaddr = list.nextElement();
+                        while (list.hasMoreElements()) {
+                            refaddr = list.nextElement();
 
-                        // set property
-                        props.put(refaddr.getType(), refaddr.getContent());
-                    }
-                    MimeMessage message = new MimeMessage(
-                        Session.getInstance(props));
-                    try {
-                        RefAddr fromAddr = ref.get("mail.from");
-                        String from = null;
-                        if (fromAddr != null) {
-                            from = (String)ref.get("mail.from").getContent();
+                            // set property
+                            props.put(refaddr.getType(), refaddr.getContent());
                         }
-                        if (from != null) {
-                            message.setFrom(new InternetAddress(from));
-                        }
-                        message.setSubject("");
-                    } catch (Exception e) {/*Ignore*/}
-                    MimePartDataSource mds = new MimePartDataSource(message);
-                    return mds;
-                }
-            } );
+                        MimeMessage message = new MimeMessage(
+                            Session.getInstance(props));
+                        try {
+                            RefAddr fromAddr = ref.get("mail.from");
+                            String from = null;
+                            if (fromAddr != null) {
+                                from = (String)ref.get("mail.from").getContent();
+                            }
+                            if (from != null) {
+                                message.setFrom(new InternetAddress(from));
+                            }
+                            message.setSubject("");
+                        } catch (Exception e) {/*Ignore*/}
+                        MimePartDataSource mds = new MimePartDataSource(message);
+                        return mds;
+                    });
         } else { // We can't create an instance of the DataSource
             return null;
         }
diff --git a/java/org/apache/tomcat/util/compat/JrePlatform.java b/java/org/apache/tomcat/util/compat/JrePlatform.java
index 89c1bc7..66717d6 100644
--- a/java/org/apache/tomcat/util/compat/JrePlatform.java
+++ b/java/org/apache/tomcat/util/compat/JrePlatform.java
@@ -42,13 +42,7 @@ public class JrePlatform {
             osName = System.getProperty(OS_NAME_PROPERTY);
         } else {
             osName = AccessController.doPrivileged(
-                    new PrivilegedAction<String>() {
-
-                    @Override
-                    public String run() {
-                        return System.getProperty(OS_NAME_PROPERTY);
-                    }
-                });
+                    (PrivilegedAction<String>) () -> System.getProperty(OS_NAME_PROPERTY));
         }
 
         IS_MAC_OS = osName.toLowerCase(Locale.ENGLISH).startsWith("mac os x");


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


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

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

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

commit 9f18abee8cf0d9945e62d9a5cdeb2db3206662ce
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 d93b450..5f1b04f 100644
--- a/java/org/apache/catalina/connector/CoyoteAdapter.java
+++ b/java/org/apache/catalina/connector/CoyoteAdapter.java
@@ -79,14 +79,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 7b62951..83adb4c 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 41c075b..7421d33 100644
--- a/java/org/apache/catalina/valves/AbstractAccessLogValve.java
+++ b/java/org/apache/catalina/valves/AbstractAccessLogValve.java
@@ -408,25 +408,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 c791c12..d717bac 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