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:17 UTC

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

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