You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2020/01/27 11:20:44 UTC

[tomcat] branch master updated (c7457dc -> 71b3be2)

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

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


    from c7457dc  Add new connector attribute to control facade recycling
     new 05de460  Fix BZ 64097 Use ServiceLoader to load EL implementation
     new 71b3be2  Add ServiceLoader entry to META-INF for EL

The 2 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:
 build.xml                                          |  1 +
 java/jakarta/el/ExpressionFactory.java             | 42 ++++++----------------
 .../services/jakarta.el.ExpressionFactory          |  1 +
 .../{jasper.jar => jasper-el.jar}/web-fragment.xml |  2 +-
 4 files changed, 14 insertions(+), 32 deletions(-)
 copy java/org/apache/catalina/core/RestrictedListeners.properties => res/META-INF/jasper-el.jar/services/jakarta.el.ExpressionFactory (95%)
 copy res/META-INF/{jasper.jar => jasper-el.jar}/web-fragment.xml (95%)


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


[tomcat] 02/02: Add ServiceLoader entry to META-INF for EL

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

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

commit 71b3be2fba5da0b57fd74ba835af382cd228652e
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Jan 27 11:15:01 2020 +0000

    Add ServiceLoader entry to META-INF for EL
---
 build.xml                                          |  1 +
 .../services/jakarta.el.ExpressionFactory          | 16 +++++++++++++
 res/META-INF/jasper-el.jar/web-fragment.xml        | 26 ++++++++++++++++++++++
 3 files changed, 43 insertions(+)

diff --git a/build.xml b/build.xml
index 969698e..72f10cc 100644
--- a/build.xml
+++ b/build.xml
@@ -920,6 +920,7 @@
     <jarIt jarfile="${jasper-el.jar}"
       filesDir="${tomcat.classes}"
       filesId="files.jasper-el"
+      meta-inf="${tomcat.manifests}/jasper-el.jar"
       addOSGi="true" />
 
     <!-- Re-packaged Apache Commons DBCP 2-->
diff --git a/res/META-INF/jasper-el.jar/services/jakarta.el.ExpressionFactory b/res/META-INF/jasper-el.jar/services/jakarta.el.ExpressionFactory
new file mode 100644
index 0000000..8076bd2
--- /dev/null
+++ b/res/META-INF/jasper-el.jar/services/jakarta.el.ExpressionFactory
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+org.apache.el.ExpressionFactoryImpl
\ No newline at end of file
diff --git a/res/META-INF/jasper-el.jar/web-fragment.xml b/res/META-INF/jasper-el.jar/web-fragment.xml
new file mode 100644
index 0000000..26b2e6c
--- /dev/null
+++ b/res/META-INF/jasper-el.jar/web-fragment.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<web-fragment xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
+                      http://xmlns.jcp.org/xml/ns/javaee/web-fragment_4_0.xsd"
+              version="4.0"
+              metadata-complete="true">
+    <name>org_apache_jasper_el</name>
+    <distributable/>
+</web-fragment>
\ No newline at end of file


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


[tomcat] 01/02: Fix BZ 64097 Use ServiceLoader to load EL implementation

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

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

commit 05de46094b0a3a9600c3894245a2e28660fe2967
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Jan 27 11:14:15 2020 +0000

    Fix BZ 64097 Use ServiceLoader to load EL implementation
    
    https://bz.apache.org/bugzilla/show_bug.cgi?id=64097
---
 java/jakarta/el/ExpressionFactory.java | 42 +++++++++-------------------------
 1 file changed, 11 insertions(+), 31 deletions(-)

diff --git a/java/jakarta/el/ExpressionFactory.java b/java/jakarta/el/ExpressionFactory.java
index 35253b9..b1ffccc 100644
--- a/java/jakarta/el/ExpressionFactory.java
+++ b/java/jakarta/el/ExpressionFactory.java
@@ -14,25 +14,23 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package jakarta.el;
 
-import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.UnsupportedEncodingException;
 import java.lang.ref.WeakReference;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.Properties;
+import java.util.ServiceLoader;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
@@ -47,9 +45,6 @@ public abstract class ExpressionFactory {
     private static final boolean IS_SECURITY_ENABLED =
         (System.getSecurityManager() != null);
 
-    private static final String SERVICE_RESOURCE_NAME =
-        "META-INF/services/jakarta.el.ExpressionFactory";
-
     private static final String PROPERTY_NAME = "jakarta.el.ExpressionFactory";
 
     private static final String PROPERTY_FILE;
@@ -371,35 +366,20 @@ public abstract class ExpressionFactory {
     }
 
     private static String getClassNameServices(ClassLoader tccl) {
-        InputStream is = null;
 
-        if (tccl == null) {
-            is = ClassLoader.getSystemResourceAsStream(SERVICE_RESOURCE_NAME);
-        } else {
-            is = tccl.getResourceAsStream(SERVICE_RESOURCE_NAME);
+        ExpressionFactory result = null;
+
+        ServiceLoader<ExpressionFactory> serviceLoader = ServiceLoader.load(ExpressionFactory.class, tccl);
+        Iterator<ExpressionFactory> iter = serviceLoader.iterator();
+        while (result == null && iter.hasNext()) {
+            result = iter.next();
         }
 
-        if (is != null) {
-            String line = null;
-            try (InputStreamReader isr = new InputStreamReader(is, "UTF-8");
-                    BufferedReader br = new BufferedReader(isr)) {
-                line = br.readLine();
-                if (line != null && line.trim().length() > 0) {
-                    return line.trim();
-                }
-            } catch (UnsupportedEncodingException e) {
-                // Should never happen with UTF-8
-                // If it does - ignore & return null
-            } catch (IOException e) {
-                throw new ELException(Util.message(null, "expressionFactory.readFailed", SERVICE_RESOURCE_NAME), e);
-            } finally {
-                try {
-                    is.close();
-                } catch (IOException ioe) {/*Ignore*/}
-            }
+        if (result == null) {
+            return null;
         }
 
-        return null;
+        return result.getClass().getName();
     }
 
     private static String getClassNameJreDir() {


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