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 2022/10/19 13:32:03 UTC

[tomcat] branch main updated (05b6286322 -> 7088d76925)

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

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


    from 05b6286322 Update README
     new 1ed8c3e8f7 Next JSP version will be 4.0
     new 1b68d0370d Align JSP API with latest changes - remove deprecated code
     new f5977377e7 Remove deprecated code - follow-up to JSP 4.0 changes
     new 102e4cd26c Remove singleThreaded support - align with JSP 4.0
     new 0b4951cf9d Remove jsp:plugin support - align with JSP 4.0
     new 9f4c1779ae Next EL release will be 6.0
     new 892d9c2f47 Remove deprecated code - align with EL 6.0 development
     new 7088d76925 Remove deprecated code - align with EL 6.0 development

The 8 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:
 RELEASE-NOTES                                      |   4 +-
 build.xml                                          |   8 +-
 java/jakarta/el/ArrayELResolver.java               |   8 --
 java/jakarta/el/BeanELResolver.java                |  25 ----
 java/jakarta/el/BeanNameELResolver.java            |   9 --
 java/jakarta/el/CompositeELResolver.java           |  79 -------------
 java/jakarta/el/ELResolver.java                    |  22 ----
 java/jakarta/el/ListELResolver.java                |   8 --
 java/jakarta/el/MapELResolver.java                 |  30 -----
 java/jakarta/el/ResourceBundleELResolver.java      |  32 ------
 java/jakarta/el/StaticFieldELResolver.java         |  15 ---
 java/jakarta/el/TypeConverter.java                 |  10 --
 java/jakarta/servlet/jsp/JspContext.java           |  28 -----
 java/jakarta/servlet/jsp/JspException.java         |  20 +---
 java/jakarta/servlet/jsp/el/ELException.java       |  80 -------------
 java/jakarta/servlet/jsp/el/ELParseException.java  |  48 --------
 java/jakarta/servlet/jsp/el/Expression.java        |  52 ---------
 .../servlet/jsp/el/ExpressionEvaluator.java        | 109 ------------------
 java/jakarta/servlet/jsp/el/FunctionMapper.java    |  39 -------
 .../servlet/jsp/el/ImplicitObjectELResolver.java   |  21 ----
 java/jakarta/servlet/jsp/el/ImportELResolver.java  |   9 --
 .../jakarta/servlet/jsp/el/NotFoundELResolver.java |   9 --
 .../servlet/jsp/el/ScopedAttributeELResolver.java  |  83 --------------
 java/jakarta/servlet/jsp/el/VariableResolver.java  |  50 --------
 java/jakarta/servlet/jsp/el/package.html           |  37 ------
 java/jakarta/servlet/jsp/tagext/BodyTag.java       |  11 --
 java/jakarta/servlet/jsp/tagext/IterationTag.java  |   5 -
 .../apache/catalina/connector/CoyoteAdapter.java   |   2 +-
 .../org/apache/el/stream/StreamELResolverImpl.java |   8 --
 java/org/apache/jasper/Constants.java              |   2 +-
 java/org/apache/jasper/compiler/Collector.java     |  11 --
 .../apache/jasper/compiler/ELFunctionMapper.java   |   7 --
 java/org/apache/jasper/compiler/Generator.java     |  23 +---
 .../apache/jasper/compiler/JspDocumentParser.java  |  25 ----
 java/org/apache/jasper/compiler/Node.java          |  99 ----------------
 java/org/apache/jasper/compiler/PageDataImpl.java  |  15 ---
 java/org/apache/jasper/compiler/PageInfo.java      |  28 -----
 java/org/apache/jasper/compiler/Parser.java        |  81 +------------
 java/org/apache/jasper/compiler/SmapUtil.java      |   6 -
 java/org/apache/jasper/compiler/TagConstants.java  |   9 --
 java/org/apache/jasper/compiler/Validator.java     |  74 +-----------
 java/org/apache/jasper/el/ELResolverImpl.java      | 126 ---------------------
 .../apache/jasper/el/ExpressionEvaluatorImpl.java  |  62 ----------
 java/org/apache/jasper/el/ExpressionImpl.java      |  44 -------
 java/org/apache/jasper/el/FunctionMapperImpl.java  |  37 ------
 java/org/apache/jasper/el/JasperELResolver.java    |   8 --
 .../org/apache/jasper/el/VariableResolverImpl.java |  37 ------
 .../jasper/resources/LocalStrings.properties       |  14 +--
 .../jasper/resources/LocalStrings_cs.properties    |   1 -
 .../jasper/resources/LocalStrings_de.properties    |   1 -
 .../jasper/resources/LocalStrings_es.properties    |  11 +-
 .../jasper/resources/LocalStrings_fr.properties    |  12 +-
 .../jasper/resources/LocalStrings_ja.properties    |  12 +-
 .../jasper/resources/LocalStrings_ko.properties    |  12 +-
 .../jasper/resources/LocalStrings_pt_BR.properties |   1 -
 .../jasper/resources/LocalStrings_ru.properties    |   1 -
 .../jasper/resources/LocalStrings_zh_CN.properties |  12 +-
 .../apache/jasper/runtime/JspContextWrapper.java   |  28 +----
 .../org/apache/jasper/runtime/PageContextImpl.java |  23 +---
 .../jasper/runtime/ProtectedFunctionMapper.java    |   6 +-
 test/jakarta/el/TestArrayELResolver.java           |   9 --
 test/jakarta/el/TestBeanELResolver.java            |  38 -------
 test/jakarta/el/TestBeanNameELResolver.java        |  29 -----
 test/jakarta/el/TestMapELResolver.java             |  49 --------
 test/jakarta/el/TestResourceBundleELResolver.java  |  49 --------
 test/jakarta/servlet/jsp/TesterPageContext.java    |  15 ---
 test/org/apache/jasper/compiler/Dumper.java        |  14 ---
 test/org/apache/jasper/compiler/TestGenerator.java |  10 --
 .../jasper/compiler/TestJspDocumentParser.java     |   7 +-
 .../{document-1.1.jspx => document-4.1.jspx}       |   2 +-
 .../document-4.0.jspx                              |   0
 test/webapp/jsp/generator/attribute-04.jsp         |  13 ---
 test/webapp/jsp/generator/plugin-01.jspx           |  54 ---------
 test/webapp/jsp/generator/single-threaded.jsp      |  17 ---
 webapps/docs/appdev/deployment.xml                 |   2 +-
 webapps/docs/appdev/introduction.xml               |   4 +-
 webapps/docs/class-loader-howto.xml                |   4 +-
 webapps/docs/index.xml                             |  14 +--
 webapps/docs/project.xml                           |   4 +-
 79 files changed, 45 insertions(+), 1978 deletions(-)
 delete mode 100644 java/jakarta/servlet/jsp/el/ELException.java
 delete mode 100644 java/jakarta/servlet/jsp/el/ELParseException.java
 delete mode 100644 java/jakarta/servlet/jsp/el/Expression.java
 delete mode 100644 java/jakarta/servlet/jsp/el/ExpressionEvaluator.java
 delete mode 100644 java/jakarta/servlet/jsp/el/FunctionMapper.java
 delete mode 100644 java/jakarta/servlet/jsp/el/VariableResolver.java
 delete mode 100644 java/jakarta/servlet/jsp/el/package.html
 delete mode 100644 java/org/apache/jasper/el/ELResolverImpl.java
 delete mode 100644 java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
 delete mode 100644 java/org/apache/jasper/el/ExpressionImpl.java
 delete mode 100644 java/org/apache/jasper/el/FunctionMapperImpl.java
 delete mode 100644 java/org/apache/jasper/el/VariableResolverImpl.java
 copy test/webapp/jsp/doc-version-invalid/{document-1.1.jspx => document-4.1.jspx} (92%)
 rename test/webapp/jsp/{doc-version-invalid => doc-version-valid}/document-4.0.jspx (100%)
 delete mode 100644 test/webapp/jsp/generator/plugin-01.jspx
 delete mode 100644 test/webapp/jsp/generator/single-threaded.jsp


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


[tomcat] 07/08: Remove deprecated code - align with EL 6.0 development

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

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

commit 892d9c2f473395948fec3990b979cbeca10533f2
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Oct 19 13:43:07 2022 +0100

    Remove deprecated code - align with EL 6.0 development
---
 java/jakarta/el/ArrayELResolver.java          |  8 ---
 java/jakarta/el/BeanELResolver.java           | 25 ---------
 java/jakarta/el/BeanNameELResolver.java       |  9 ---
 java/jakarta/el/CompositeELResolver.java      | 79 ---------------------------
 java/jakarta/el/ELResolver.java               | 22 --------
 java/jakarta/el/ListELResolver.java           |  8 ---
 java/jakarta/el/MapELResolver.java            | 30 ----------
 java/jakarta/el/ResourceBundleELResolver.java | 32 -----------
 java/jakarta/el/StaticFieldELResolver.java    | 15 -----
 java/jakarta/el/TypeConverter.java            | 10 ----
 10 files changed, 238 deletions(-)

diff --git a/java/jakarta/el/ArrayELResolver.java b/java/jakarta/el/ArrayELResolver.java
index 410c31b9ef..f7deded09e 100644
--- a/java/jakarta/el/ArrayELResolver.java
+++ b/java/jakarta/el/ArrayELResolver.java
@@ -16,9 +16,7 @@
  */
 package jakarta.el;
 
-import java.beans.FeatureDescriptor;
 import java.lang.reflect.Array;
-import java.util.Iterator;
 import java.util.Objects;
 
 /**
@@ -128,12 +126,6 @@ public class ArrayELResolver extends ELResolver {
         return this.readOnly;
     }
 
-    @Deprecated(forRemoval = true, since = "EL 5.0")
-    @Override
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
-        return null;
-    }
-
     @Override
     public Class<?> getCommonPropertyType(ELContext context, Object base) {
         if (base != null && base.getClass().isArray()) {
diff --git a/java/jakarta/el/BeanELResolver.java b/java/jakarta/el/BeanELResolver.java
index eb54c36bd6..c470b92734 100644
--- a/java/jakarta/el/BeanELResolver.java
+++ b/java/jakarta/el/BeanELResolver.java
@@ -17,7 +17,6 @@
 package jakarta.el;
 
 import java.beans.BeanInfo;
-import java.beans.FeatureDescriptor;
 import java.beans.IntrospectionException;
 import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
@@ -25,9 +24,7 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import java.util.Arrays;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Objects;
 import java.util.WeakHashMap;
@@ -186,28 +183,6 @@ public class BeanELResolver extends ELResolver {
         return this.readOnly || this.property(context, base, property).isReadOnly(base);
     }
 
-    @Deprecated(forRemoval = true, since = "EL 5.0")
-    @Override
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
-        if (base == null) {
-            return null;
-        }
-
-        try {
-            BeanInfo info = Introspector.getBeanInfo(base.getClass());
-            PropertyDescriptor[] pds = info.getPropertyDescriptors();
-            for (PropertyDescriptor pd : pds) {
-                pd.setValue(RESOLVABLE_AT_DESIGN_TIME, Boolean.TRUE);
-                pd.setValue(TYPE, pd.getPropertyType());
-            }
-            return Arrays.asList((FeatureDescriptor[]) pds).iterator();
-        } catch (IntrospectionException e) {
-            //
-        }
-
-        return null;
-    }
-
     @Override
     public Class<?> getCommonPropertyType(ELContext context, Object base) {
         if (base != null) {
diff --git a/java/jakarta/el/BeanNameELResolver.java b/java/jakarta/el/BeanNameELResolver.java
index 27bc01a01c..bb8a93a977 100644
--- a/java/jakarta/el/BeanNameELResolver.java
+++ b/java/jakarta/el/BeanNameELResolver.java
@@ -16,8 +16,6 @@
  */
 package jakarta.el;
 
-import java.beans.FeatureDescriptor;
-import java.util.Iterator;
 import java.util.Objects;
 
 /**
@@ -150,13 +148,6 @@ public class BeanNameELResolver extends ELResolver {
         return false;
     }
 
-    @Deprecated(forRemoval = true, since = "EL 5.0")
-    @Override
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context,
-            Object base) {
-        return null;
-    }
-
     @Override
     public Class<?> getCommonPropertyType(ELContext context, Object base) {
         return String.class;
diff --git a/java/jakarta/el/CompositeELResolver.java b/java/jakarta/el/CompositeELResolver.java
index 40821f5400..2190ac869e 100644
--- a/java/jakarta/el/CompositeELResolver.java
+++ b/java/jakarta/el/CompositeELResolver.java
@@ -16,9 +16,6 @@
  */
 package jakarta.el;
 
-import java.beans.FeatureDescriptor;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
 import java.util.Objects;
 
 public class CompositeELResolver extends ELResolver {
@@ -132,12 +129,6 @@ public class CompositeELResolver extends ELResolver {
         return false;
     }
 
-    @Deprecated(forRemoval = true, since = "EL 5.0")
-    @Override
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
-        return new FeatureIterator(context, base, this.resolvers, this.size);
-    }
-
     @Override
     public Class<?> getCommonPropertyType(ELContext context, Object base) {
         Class<?> commonType = null;
@@ -163,74 +154,4 @@ public class CompositeELResolver extends ELResolver {
         }
         return null;
     }
-
-    @Deprecated(forRemoval = true, since = "EL 5.0")
-    private static final class FeatureIterator implements Iterator<FeatureDescriptor> {
-
-        private final ELContext context;
-
-        private final Object base;
-
-        private final ELResolver[] resolvers;
-
-        private final int size;
-
-        private Iterator<FeatureDescriptor> itr;
-
-        private int idx;
-
-        private FeatureDescriptor next;
-
-        public FeatureIterator(ELContext context, Object base, ELResolver[] resolvers, int size) {
-            this.context = context;
-            this.base = base;
-            this.resolvers = resolvers;
-            this.size = size;
-
-            this.idx = 0;
-            this.guaranteeIterator();
-        }
-
-        private void guaranteeIterator() {
-            while (this.itr == null && this.idx < this.size) {
-                this.itr = this.resolvers[this.idx].getFeatureDescriptors(this.context, this.base);
-                this.idx++;
-            }
-        }
-
-        @Override
-        public boolean hasNext() {
-            if (this.next != null) {
-                return true;
-            }
-            if (this.itr != null) {
-                while (this.next == null && itr.hasNext()) {
-                    this.next = itr.next();
-                }
-            } else {
-                return false;
-            }
-            if (this.next == null) {
-                this.itr = null;
-                this.guaranteeIterator();
-            }
-            return hasNext();
-        }
-
-        @Override
-        public FeatureDescriptor next() {
-            if (!hasNext()) {
-                throw new NoSuchElementException();
-            }
-            FeatureDescriptor result = this.next;
-            this.next = null;
-            return result;
-
-        }
-
-        @Override
-        public void remove() {
-            throw new UnsupportedOperationException();
-        }
-    }
 }
diff --git a/java/jakarta/el/ELResolver.java b/java/jakarta/el/ELResolver.java
index 8846c0229e..09bb98b01f 100644
--- a/java/jakarta/el/ELResolver.java
+++ b/java/jakarta/el/ELResolver.java
@@ -16,8 +16,6 @@
  */
 package jakarta.el;
 
-import java.util.Iterator;
-
 /**
  * @author Jacob Hookom [jacob/hookom.net]
  *
@@ -118,26 +116,6 @@ public abstract class ELResolver {
     public abstract boolean isReadOnly(ELContext context, Object base,
             Object property);
 
-    /**
-     * Obtain the feature descriptors for the resolvable properties of the given
-     * object.
-     * <p>
-     * The default implementation returns {@code null}.
-     *
-     * @param context The context in which the examination takes place
-     * @param base The object to examine
-     *
-     * @return An iterator, possibly empty, of feature descriptors of the given
-     *         object
-     *
-     * @deprecated This method will be removed, without replacement, in EL 6.0 /
-     *             Tomcat 11.
-     */
-    @Deprecated(forRemoval = true, since = "EL 5.0")
-    public Iterator<java.beans.FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
-        return null;
-    }
-
     /**
      * Obtain the most common type that is acceptable for the given base object.
      *
diff --git a/java/jakarta/el/ListELResolver.java b/java/jakarta/el/ListELResolver.java
index c894bea3cf..a3b64bf51c 100644
--- a/java/jakarta/el/ListELResolver.java
+++ b/java/jakarta/el/ListELResolver.java
@@ -16,10 +16,8 @@
  */
 package jakarta.el;
 
-import java.beans.FeatureDescriptor;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Objects;
 
@@ -132,12 +130,6 @@ public class ListELResolver extends ELResolver {
         return this.readOnly;
     }
 
-    @Deprecated(forRemoval = true, since = "EL 5.0")
-    @Override
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
-        return null;
-    }
-
     @Override
     public Class<?> getCommonPropertyType(ELContext context, Object base) {
         if (base instanceof List<?>) { // implies base != null
diff --git a/java/jakarta/el/MapELResolver.java b/java/jakarta/el/MapELResolver.java
index 35d7229288..efca33f436 100644
--- a/java/jakarta/el/MapELResolver.java
+++ b/java/jakarta/el/MapELResolver.java
@@ -16,12 +16,8 @@
  */
 package jakarta.el;
 
-import java.beans.FeatureDescriptor;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
@@ -105,32 +101,6 @@ public class MapELResolver extends ELResolver {
         return this.readOnly;
     }
 
-    @Deprecated(forRemoval = true, since = "EL 5.0")
-    @Override
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
-        if (base instanceof Map<?, ?>) {
-            Iterator<?> itr = ((Map<?, ?>) base).keySet().iterator();
-            List<FeatureDescriptor> feats = new ArrayList<>();
-            Object key;
-            FeatureDescriptor desc;
-            while (itr.hasNext()) {
-                key = itr.next();
-                desc = new FeatureDescriptor();
-                desc.setDisplayName(key.toString());
-                desc.setShortDescription("");
-                desc.setExpert(false);
-                desc.setHidden(false);
-                desc.setName(key.toString());
-                desc.setPreferred(true);
-                desc.setValue(RESOLVABLE_AT_DESIGN_TIME, Boolean.TRUE);
-                desc.setValue(TYPE, key.getClass());
-                feats.add(desc);
-            }
-            return feats.iterator();
-        }
-        return null;
-    }
-
     @Override
     public Class<?> getCommonPropertyType(ELContext context, Object base) {
         if (base instanceof Map<?, ?>) {
diff --git a/java/jakarta/el/ResourceBundleELResolver.java b/java/jakarta/el/ResourceBundleELResolver.java
index 6050d323e1..d0723b4484 100644
--- a/java/jakarta/el/ResourceBundleELResolver.java
+++ b/java/jakarta/el/ResourceBundleELResolver.java
@@ -16,11 +16,6 @@
  */
 package jakarta.el;
 
-import java.beans.FeatureDescriptor;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
 import java.util.MissingResourceException;
 import java.util.Objects;
 import java.util.ResourceBundle;
@@ -90,33 +85,6 @@ public class ResourceBundleELResolver extends ELResolver {
         return false;
     }
 
-    @Deprecated(forRemoval = true, since = "EL 5.0")
-    @Override
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(
-            ELContext context, Object base) {
-        if (base instanceof ResourceBundle) {
-            List<FeatureDescriptor> feats = new ArrayList<>();
-            Enumeration<String> e = ((ResourceBundle) base).getKeys();
-            FeatureDescriptor feat;
-            String key;
-            while (e.hasMoreElements()) {
-                key = e.nextElement();
-                feat = new FeatureDescriptor();
-                feat.setDisplayName(key);
-                feat.setShortDescription("");
-                feat.setExpert(false);
-                feat.setHidden(false);
-                feat.setName(key);
-                feat.setPreferred(true);
-                feat.setValue(RESOLVABLE_AT_DESIGN_TIME, Boolean.TRUE);
-                feat.setValue(TYPE, String.class);
-                feats.add(feat);
-            }
-            return feats.iterator();
-        }
-        return null;
-    }
-
     @Override
     public Class<?> getCommonPropertyType(ELContext context, Object base) {
         if (base instanceof ResourceBundle) {
diff --git a/java/jakarta/el/StaticFieldELResolver.java b/java/jakarta/el/StaticFieldELResolver.java
index 831309a5c3..e29c7a8557 100644
--- a/java/jakarta/el/StaticFieldELResolver.java
+++ b/java/jakarta/el/StaticFieldELResolver.java
@@ -16,13 +16,11 @@
  */
 package jakarta.el;
 
-import java.beans.FeatureDescriptor;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
-import java.util.Iterator;
 import java.util.Objects;
 
 /**
@@ -185,19 +183,6 @@ public class StaticFieldELResolver extends ELResolver {
     }
 
 
-    /**
-     * Always returns <code>null</code>.
-     *
-     * @deprecated This method will be removed, without replacement, in EL 6.0 /
-     *             Tomcat 11.
-     */
-    @Deprecated(forRemoval = true, since = "EL 5.0")
-    @Override
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context,
-            Object base) {
-        return null;
-    }
-
     /**
      * Always returns <code>String.class</code>.
      */
diff --git a/java/jakarta/el/TypeConverter.java b/java/jakarta/el/TypeConverter.java
index 7481396bed..0804882f9d 100644
--- a/java/jakarta/el/TypeConverter.java
+++ b/java/jakarta/el/TypeConverter.java
@@ -16,9 +16,6 @@
  */
 package jakarta.el;
 
-import java.beans.FeatureDescriptor;
-import java.util.Iterator;
-
 /**
  * @since EL 3.0
  */
@@ -45,13 +42,6 @@ public abstract class TypeConverter extends ELResolver {
         return false;
     }
 
-    @Deprecated(forRemoval = true, since = "EL 5.0")
-    @Override
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context,
-            Object base) {
-        return null;
-    }
-
     @Override
     public Class<?> getCommonPropertyType(ELContext context, Object base) {
         return null;


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


[tomcat] 08/08: Remove deprecated code - align with EL 6.0 development

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

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

commit 7088d76925117063127ff70db23863f686b56099
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Oct 19 13:45:47 2022 +0100

    Remove deprecated code - align with EL 6.0 development
---
 java/jakarta/servlet/jsp/el/ImportELResolver.java  |  9 ----
 .../jakarta/servlet/jsp/el/NotFoundELResolver.java |  9 ----
 .../org/apache/el/stream/StreamELResolverImpl.java |  8 ----
 java/org/apache/jasper/el/JasperELResolver.java    |  8 ----
 test/jakarta/el/TestArrayELResolver.java           |  9 ----
 test/jakarta/el/TestBeanELResolver.java            | 38 -----------------
 test/jakarta/el/TestBeanNameELResolver.java        | 29 -------------
 test/jakarta/el/TestMapELResolver.java             | 49 ----------------------
 test/jakarta/el/TestResourceBundleELResolver.java  | 49 ----------------------
 9 files changed, 208 deletions(-)

diff --git a/java/jakarta/servlet/jsp/el/ImportELResolver.java b/java/jakarta/servlet/jsp/el/ImportELResolver.java
index 535e877a60..6e2cd81f75 100644
--- a/java/jakarta/servlet/jsp/el/ImportELResolver.java
+++ b/java/jakarta/servlet/jsp/el/ImportELResolver.java
@@ -16,9 +16,6 @@
  */
 package jakarta.servlet.jsp.el;
 
-import java.beans.FeatureDescriptor;
-import java.util.Collections;
-import java.util.Iterator;
 import java.util.Objects;
 
 import jakarta.el.ELClass;
@@ -127,12 +124,6 @@ public class ImportELResolver extends ELResolver {
         return false;
     }
 
-    @Deprecated(forRemoval = true, since = "JSP 3.1")
-    @Override
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
-        return Collections.emptyIterator();
-    }
-
     @Override
     public Class<String> getCommonPropertyType(ELContext context, Object base) {
         // In normal usage, ScopedAttributeELResolver will have responded.
diff --git a/java/jakarta/servlet/jsp/el/NotFoundELResolver.java b/java/jakarta/servlet/jsp/el/NotFoundELResolver.java
index 517758fea2..23645abd6f 100644
--- a/java/jakarta/servlet/jsp/el/NotFoundELResolver.java
+++ b/java/jakarta/servlet/jsp/el/NotFoundELResolver.java
@@ -16,9 +16,6 @@
  */
 package jakarta.servlet.jsp.el;
 
-import java.beans.FeatureDescriptor;
-import java.util.Collections;
-import java.util.Iterator;
 import java.util.Objects;
 import java.util.ResourceBundle;
 
@@ -106,12 +103,6 @@ public class NotFoundELResolver extends ELResolver {
         return false;
     }
 
-    @Deprecated(forRemoval = true, since = "JSP 3.1")
-    @Override
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
-        return Collections.emptyIterator();
-    }
-
     /**
      * {@inheritDoc}
      * <p>
diff --git a/java/org/apache/el/stream/StreamELResolverImpl.java b/java/org/apache/el/stream/StreamELResolverImpl.java
index 78b874b5b3..1d228ea0ab 100644
--- a/java/org/apache/el/stream/StreamELResolverImpl.java
+++ b/java/org/apache/el/stream/StreamELResolverImpl.java
@@ -16,7 +16,6 @@
  */
 package org.apache.el.stream;
 
-import java.beans.FeatureDescriptor;
 import java.lang.reflect.Array;
 import java.util.Collection;
 import java.util.Iterator;
@@ -48,13 +47,6 @@ public class StreamELResolverImpl extends ELResolver {
         return false;
     }
 
-    @Deprecated(forRemoval = true, since = "Tomcat 10.1.0")
-    @Override
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context,
-            Object base) {
-        return null;
-    }
-
     @Override
     public Class<?> getCommonPropertyType(ELContext context, Object base) {
         return null;
diff --git a/java/org/apache/jasper/el/JasperELResolver.java b/java/org/apache/jasper/el/JasperELResolver.java
index 7b7a95c30c..c29d3e1bf4 100644
--- a/java/org/apache/jasper/el/JasperELResolver.java
+++ b/java/org/apache/jasper/el/JasperELResolver.java
@@ -16,9 +16,7 @@
  */
 package org.apache.jasper.el;
 
-import java.beans.FeatureDescriptor;
 import java.lang.reflect.Method;
-import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -283,12 +281,6 @@ public class JasperELResolver extends CompositeELResolver {
             return null;
         }
 
-        @Override
-        public Iterator<FeatureDescriptor> getFeatureDescriptors(
-                ELContext context, Object base) {
-            return null;
-        }
-
         @Override
         public Class<?> getCommonPropertyType(ELContext context, Object base) {
             return null;
diff --git a/test/jakarta/el/TestArrayELResolver.java b/test/jakarta/el/TestArrayELResolver.java
index 00dda1c2d4..bc359fcd89 100644
--- a/test/jakarta/el/TestArrayELResolver.java
+++ b/test/jakarta/el/TestArrayELResolver.java
@@ -519,15 +519,6 @@ public class TestArrayELResolver {
     }
 
 
-    @Deprecated(forRemoval = true, since = "Tomcat 10.1.0")
-    @Test
-    public void testGetFeatureDescriptors() {
-        // Should always return null
-        ArrayELResolver resolver = new ArrayELResolver();
-        Assert.assertNull(resolver.getFeatureDescriptors(null, null));
-    }
-
-
     @Test
     public void testGetCommonPropertyType01() {
         // null base, null response
diff --git a/test/jakarta/el/TestBeanELResolver.java b/test/jakarta/el/TestBeanELResolver.java
index f32fe3ed38..f4eb5103ee 100644
--- a/test/jakarta/el/TestBeanELResolver.java
+++ b/test/jakarta/el/TestBeanELResolver.java
@@ -16,10 +16,7 @@
  */
 package jakarta.el;
 
-import java.beans.FeatureDescriptor;
-import java.beans.PropertyDescriptor;
 import java.util.ArrayList;
-import java.util.Iterator;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.IsInstanceOf.instanceOf;
@@ -366,41 +363,6 @@ public class TestBeanELResolver {
         Assert.assertTrue(context.isPropertyResolved());
     }
 
-    /**
-     * Tests that a valid FeatureDescriptors are not returned if base is not
-     * Map.
-     */
-    @Deprecated(forRemoval = true, since = "Tomcat 10.1.0")
-    @Test
-    public void testGetFeatureDescriptors01() {
-        BeanELResolver resolver = new BeanELResolver();
-        ELContext context = new StandardELContext(ELManager.getExpressionFactory());
-
-        Iterator<FeatureDescriptor> result = resolver.getFeatureDescriptors(context, null);
-
-        Assert.assertNull(result);
-    }
-
-    /**
-     * Tests that a valid FeatureDescriptors are returned.
-     */
-    @Deprecated(forRemoval = true, since = "Tomcat 10.1.0")
-    @Test
-    public void testGetFeatureDescriptors02() {
-        BeanELResolver resolver = new BeanELResolver();
-        ELContext context = new StandardELContext(ELManager.getExpressionFactory());
-
-        Iterator<FeatureDescriptor> result = resolver.getFeatureDescriptors(context, new Bean());
-
-        while (result.hasNext()) {
-            PropertyDescriptor featureDescriptor = (PropertyDescriptor) result.next();
-            Assert.assertEquals(featureDescriptor.getPropertyType(),
-                    featureDescriptor.getValue(ELResolver.TYPE));
-            Assert.assertEquals(Boolean.TRUE,
-                    featureDescriptor.getValue(ELResolver.RESOLVABLE_AT_DESIGN_TIME));
-        }
-    }
-
     /**
      * Tests that a null context results in an NPE as per EL Javadoc.
      */
diff --git a/test/jakarta/el/TestBeanNameELResolver.java b/test/jakarta/el/TestBeanNameELResolver.java
index ca9ca22051..bc92c5456c 100644
--- a/test/jakarta/el/TestBeanNameELResolver.java
+++ b/test/jakarta/el/TestBeanNameELResolver.java
@@ -468,35 +468,6 @@ public class TestBeanNameELResolver {
     }
 
 
-    /**
-     * Confirm it returns null for 'valid' input.
-     */
-    @Deprecated(forRemoval = true, since = "Tomcat 10.1.0")
-    public void testGetFeatureDescriptors01() {
-        BeanNameELResolver resolver = createBeanNameELResolver();
-        ELContext context =
-                new StandardELContext(ELManager.getExpressionFactory());
-
-        Object result = resolver.getFeatureDescriptors(context, null);
-
-        Assert.assertNull(result);
-        Assert.assertFalse(context.isPropertyResolved());
-    }
-
-
-    /**
-     * Confirm it returns null for invalid input.
-     */
-    @Deprecated(forRemoval = true, since = "Tomcat 10.1.0")
-    public void testGetFeatureDescriptors02() {
-        BeanNameELResolver resolver = createBeanNameELResolver();
-
-        Object result = resolver.getFeatureDescriptors(null, new Object());
-
-        Assert.assertNull(result);
-    }
-
-
     /**
      * Confirm it returns String.class for 'valid' input.
      */
diff --git a/test/jakarta/el/TestMapELResolver.java b/test/jakarta/el/TestMapELResolver.java
index e2d0c9e447..d776f5d8b2 100644
--- a/test/jakarta/el/TestMapELResolver.java
+++ b/test/jakarta/el/TestMapELResolver.java
@@ -16,10 +16,8 @@
  */
 package jakarta.el;
 
-import java.beans.FeatureDescriptor;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.junit.Assert;
@@ -235,53 +233,6 @@ public class TestMapELResolver {
         Assert.assertTrue(context.isPropertyResolved());
     }
 
-    /**
-     * Tests that a valid FeatureDescriptors are not returned if base is not
-     * Map.
-     */
-    @Deprecated(forRemoval = true, since = "Tomcat 10.1.0")
-    @Test
-    public void testGetFeatureDescriptors01() {
-        MapELResolver mapELResolver = new MapELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
-
-        Iterator<FeatureDescriptor> result = mapELResolver
-                .getFeatureDescriptors(context, new Object());
-
-        Assert.assertNull(result);
-    }
-
-    /**
-     * Tests that a valid FeatureDescriptors are returned.
-     */
-    @Deprecated(forRemoval = true, since = "Tomcat 10.1.0")
-    @Test
-    public void testGetFeatureDescriptors02() {
-        MapELResolver mapELResolver = new MapELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
-
-        Map<String, String> map = new HashMap<>();
-        map.put("key", "value");
-        Iterator<FeatureDescriptor> result = mapELResolver
-                .getFeatureDescriptors(context, map);
-
-        while (result.hasNext()) {
-            FeatureDescriptor featureDescriptor = result.next();
-            Assert.assertEquals("key", featureDescriptor.getDisplayName());
-            Assert.assertEquals("key", featureDescriptor.getName());
-            Assert.assertEquals("", featureDescriptor.getShortDescription());
-            Assert.assertFalse(featureDescriptor.isExpert());
-            Assert.assertFalse(featureDescriptor.isHidden());
-            Assert.assertTrue(featureDescriptor.isPreferred());
-            Assert.assertEquals("key".getClass(),
-                    featureDescriptor.getValue(ELResolver.TYPE));
-            Assert.assertEquals(Boolean.TRUE, featureDescriptor
-                    .getValue(ELResolver.RESOLVABLE_AT_DESIGN_TIME));
-        }
-    }
-
     private void doNegativeTest(Object base, Object trigger,
             MethodUnderTest method, boolean checkResult) {
         MapELResolver resolver = new MapELResolver();
diff --git a/test/jakarta/el/TestResourceBundleELResolver.java b/test/jakarta/el/TestResourceBundleELResolver.java
index 6e49c37bf4..5d0f9ff020 100644
--- a/test/jakarta/el/TestResourceBundleELResolver.java
+++ b/test/jakarta/el/TestResourceBundleELResolver.java
@@ -16,9 +16,7 @@
  */
 package jakarta.el;
 
-import java.beans.FeatureDescriptor;
 import java.util.Enumeration;
-import java.util.Iterator;
 import java.util.ListResourceBundle;
 import java.util.ResourceBundle;
 
@@ -225,53 +223,6 @@ public class TestResourceBundleELResolver {
         Assert.assertTrue(context.isPropertyResolved());
     }
 
-    /**
-     * Tests that a valid FeatureDescriptors are not returned if base is not
-     * ResourceBundle.
-     */
-    @Deprecated(forRemoval = true, since = "Tomcat 10.1.0")
-    @Test
-    public void testGetFeatureDescriptors01() {
-        ResourceBundleELResolver resolver = new ResourceBundleELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
-
-        Iterator<FeatureDescriptor> result = resolver.getFeatureDescriptors(
-                context, new Object());
-
-        Assert.assertNull(result);
-    }
-
-    /**
-     * Tests that a valid FeatureDescriptors are returned.
-     */
-    @Deprecated(forRemoval = true, since = "Tomcat 10.1.0")
-    @Test
-    public void testGetFeatureDescriptors02() {
-        ResourceBundleELResolver resolver = new ResourceBundleELResolver();
-        ELContext context = new StandardELContext(
-                ELManager.getExpressionFactory());
-
-        ResourceBundle resourceBundle = new TesterResourceBundle(
-                new Object[][] { { "key", "value" } });
-        Iterator<FeatureDescriptor> result = resolver.getFeatureDescriptors(
-                context, resourceBundle);
-
-        while (result.hasNext()) {
-            FeatureDescriptor featureDescriptor = result.next();
-            Assert.assertEquals("key", featureDescriptor.getDisplayName());
-            Assert.assertEquals("key", featureDescriptor.getName());
-            Assert.assertEquals("", featureDescriptor.getShortDescription());
-            Assert.assertFalse(featureDescriptor.isExpert());
-            Assert.assertFalse(featureDescriptor.isHidden());
-            Assert.assertTrue(featureDescriptor.isPreferred());
-            Assert.assertEquals(String.class,
-                    featureDescriptor.getValue(ELResolver.TYPE));
-            Assert.assertEquals(Boolean.TRUE, featureDescriptor
-                    .getValue(ELResolver.RESOLVABLE_AT_DESIGN_TIME));
-        }
-    }
-
     private static class TesterResourceBundle extends ListResourceBundle {
 
         public TesterResourceBundle() {


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


[tomcat] 06/08: Next EL release will be 6.0

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

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

commit 9f4c1779aedbb916046118c495e2c904869bc959
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Oct 19 13:40:17 2022 +0100

    Next EL release will be 6.0
---
 RELEASE-NOTES                       | 2 +-
 build.xml                           | 4 ++--
 webapps/docs/class-loader-howto.xml | 2 +-
 webapps/docs/index.xml              | 6 +++---
 webapps/docs/project.xml            | 2 +-
 5 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index c9233daa55..74ce5f0742 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -74,7 +74,7 @@ for use by web applications (by placing them in "lib"):
 * catalina-storeconfig.jar (Generation of XML configuration from current state)
 * catalina-tribes.jar (Group communication)
 * ecj-@JDT_VERSION@.jar (Eclipse JDT Java compiler)
-* el-api.jar (EL 5.0 API)
+* el-api.jar (EL 6.0 API)
 * jasper.jar (Jasper 2 Compiler and Runtime)
 * jasper-el.jar (Jasper 2 EL implementation)
 * jsp-api.jar (JSP 4.0 API)
diff --git a/build.xml b/build.xml
index d2dda8f60d..ba3757240d 100644
--- a/build.xml
+++ b/build.xml
@@ -61,8 +61,8 @@
   <property name="servlet.revision"        value="" />
   <property name="jsp.spec.version"        value="4.0" />
   <property name="jsp.revision"            value="-SNAPSHOT" />
-  <property name="el.spec.version"         value="5.0" />
-  <property name="el.revision"             value="" />
+  <property name="el.spec.version"         value="6.0" />
+  <property name="el.revision"             value="-SNAPSHOT" />
   <property name="websocket.spec.version"  value="2.1" />
   <property name="websocket.revision"      value="" />
   <property name="jaspic.spec.version"     value="3.0" />
diff --git a/webapps/docs/class-loader-howto.xml b/webapps/docs/class-loader-howto.xml
index b2fc5b3c6c..2d26404aed 100644
--- a/webapps/docs/class-loader-howto.xml
+++ b/webapps/docs/class-loader-howto.xml
@@ -140,7 +140,7 @@ loaders as it is initialized:</p>
         configuration files from current state</li>
     <li><em>catalina-tribes.jar</em> &#8212; Group communication package.</li>
     <li><em>ecj-*.jar</em> &#8212; Eclipse JDT Java compiler.</li>
-    <li><em>el-api.jar</em> &#8212; EL 5.0 API.</li>
+    <li><em>el-api.jar</em> &#8212; EL 6.0 API.</li>
     <li><em>jasper.jar</em> &#8212; Tomcat Jasper JSP Compiler and Runtime.</li>
     <li><em>jasper-el.jar</em> &#8212; Tomcat Jasper EL implementation.</li>
     <li><em>jsp-api.jar</em> &#8212; JSP 4.0 API.</li>
diff --git a/webapps/docs/index.xml b/webapps/docs/index.xml
index 5febb64ab6..9d2119e60c 100644
--- a/webapps/docs/index.xml
+++ b/webapps/docs/index.xml
@@ -176,10 +176,10 @@ are responsible for installing, configuring, and operating an Apache Tomcat serv
     <a href="https://jakarta.ee/specifications/pages/4.0/apidocs">
     <strong>Javadoc</strong></a>
     </li>
-<li>EL 5.0
-    <a href="https://jakarta.ee/specifications/expression-language/5.0/">
+<li>EL 6.0
+    <a href="https://jakarta.ee/specifications/expression-language/6.0/">
     <strong>Specification</strong></a> and
-    <a href="https://jakarta.ee/specifications/expression-language/5.0/apidocs">
+    <a href="https://jakarta.ee/specifications/expression-language/6.0/apidocs">
     <strong>Javadoc</strong></a>
     </li>
 <li>WebSocket 2.1
diff --git a/webapps/docs/project.xml b/webapps/docs/project.xml
index a538430590..06d913d392 100644
--- a/webapps/docs/project.xml
+++ b/webapps/docs/project.xml
@@ -85,7 +85,7 @@
         <item name="Tomcat Javadocs"       href="api/index.html"/>
         <item name="Servlet 6.0 Javadocs"  href="servletapi/index.html"/>
         <item name="JSP 4.0 Javadocs"      href="jspapi/index.html"/>
-        <item name="EL 5.0 Javadocs"       href="elapi/index.html"/>
+        <item name="EL 6.0 Javadocs"       href="elapi/index.html"/>
         <item name="WebSocket 2.1 Javadocs"
               href="websocketapi/index.html"/>
         <item name="Authentication 3.0 Javadocs"


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


[tomcat] 04/08: Remove singleThreaded support - align with JSP 4.0

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

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

commit 102e4cd26c9eeb116617d1b6c6821b37a028ece8
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Oct 19 12:05:05 2022 +0100

    Remove singleThreaded support - align with JSP 4.0
---
 java/org/apache/jasper/compiler/Generator.java     | 13 +---------
 java/org/apache/jasper/compiler/PageInfo.java      | 28 ----------------------
 java/org/apache/jasper/compiler/Validator.java     |  8 -------
 .../jasper/resources/LocalStrings.properties       |  3 ---
 .../jasper/resources/LocalStrings_es.properties    |  2 --
 .../jasper/resources/LocalStrings_fr.properties    |  3 ---
 .../jasper/resources/LocalStrings_ja.properties    |  3 ---
 .../jasper/resources/LocalStrings_ko.properties    |  3 ---
 .../jasper/resources/LocalStrings_zh_CN.properties |  3 ---
 test/org/apache/jasper/compiler/TestGenerator.java |  5 ----
 test/webapp/jsp/generator/single-threaded.jsp      | 17 -------------
 11 files changed, 1 insertion(+), 87 deletions(-)

diff --git a/java/org/apache/jasper/compiler/Generator.java b/java/org/apache/jasper/compiler/Generator.java
index af6f9fc1af..158cfb5f1e 100644
--- a/java/org/apache/jasper/compiler/Generator.java
+++ b/java/org/apache/jasper/compiler/Generator.java
@@ -52,8 +52,6 @@ import org.apache.jasper.TrimSpacesOption;
 import org.apache.jasper.compiler.Node.ChildInfoBase;
 import org.apache.jasper.compiler.Node.NamedAttribute;
 import org.apache.jasper.runtime.JspRuntimeLibrary;
-import org.apache.juli.logging.Log;
-import org.apache.juli.logging.LogFactory;
 import org.xml.sax.Attributes;
 
 /**
@@ -79,8 +77,6 @@ import org.xml.sax.Attributes;
 
 class Generator {
 
-    private final Log log = LogFactory.getLog(Generator.class); // must not be static
-
     private static final Class<?>[] OBJECT_CLASS = { Object.class };
 
     private static final Pattern PRE_TAG_PATTERN = Pattern.compile("(?s).*(<pre>|</pre>).*");
@@ -757,14 +753,7 @@ class Generator {
         genPreambleMethods();
 
         // Now the service method
-        if (pageInfo.isThreadSafe()) {
-            out.printin("public void ");
-        } else {
-            // This is unlikely to perform well.
-            out.printin("public synchronized void ");
-            // As required by JSP 3.1, log a warning
-            log.warn(Localizer.getMessage("jsp.warning.isThreadSafe", ctxt.getJspFile()));
-        }
+        out.printin("public void ");
         out.print(serviceMethodName);
         out.println("(final jakarta.servlet.http.HttpServletRequest request, final jakarta.servlet.http.HttpServletResponse response)");
         out.pushIndent();
diff --git a/java/org/apache/jasper/compiler/PageInfo.java b/java/org/apache/jasper/compiler/PageInfo.java
index b0c5832ae1..2d24d98427 100644
--- a/java/org/apache/jasper/compiler/PageInfo.java
+++ b/java/org/apache/jasper/compiler/PageInfo.java
@@ -62,8 +62,6 @@ class PageInfo {
     private int buffer = 8*1024;
     private String autoFlush;
     private boolean isAutoFlush = true;
-    private String isThreadSafeValue;
-    private boolean isThreadSafe = true;
     private String isErrorPageValue;
     private boolean isErrorPage = false;
     private String errorPage = null;
@@ -543,32 +541,6 @@ class PageInfo {
     }
 
 
-    /*
-     * isThreadSafe
-     */
-    public void setIsThreadSafe(String value, Node n, ErrorDispatcher err)
-        throws JasperException {
-
-        if ("true".equalsIgnoreCase(value)) {
-            isThreadSafe = true;
-        } else if ("false".equalsIgnoreCase(value)) {
-            isThreadSafe = false;
-        } else {
-            err.jspError(n, "jsp.error.page.invalid.isthreadsafe");
-        }
-
-        isThreadSafeValue = value;
-    }
-
-    public String getIsThreadSafe() {
-        return isThreadSafeValue;
-    }
-
-    public boolean isThreadSafe() {
-        return isThreadSafe;
-    }
-
-
     /*
      * info
      */
diff --git a/java/org/apache/jasper/compiler/Validator.java b/java/org/apache/jasper/compiler/Validator.java
index 8bf352e97e..e6d9ff2074 100644
--- a/java/org/apache/jasper/compiler/Validator.java
+++ b/java/org/apache/jasper/compiler/Validator.java
@@ -75,7 +75,6 @@ class Validator {
             new JspUtil.ValidAttribute("session"),
             new JspUtil.ValidAttribute("buffer"),
             new JspUtil.ValidAttribute("autoFlush"),
-            new JspUtil.ValidAttribute("isThreadSafe"),
             new JspUtil.ValidAttribute("info"),
             new JspUtil.ValidAttribute("errorPage"),
             new JspUtil.ValidAttribute("isErrorPage"),
@@ -161,13 +160,6 @@ class Validator {
                         err.jspError(n, "jsp.error.page.conflict.autoflush",
                                 pageInfo.getAutoFlush(), value);
                     }
-                } else if ("isThreadSafe".equals(attr)) {
-                    if (pageInfo.getIsThreadSafe() == null) {
-                        pageInfo.setIsThreadSafe(value, n, err);
-                    } else if (!pageInfo.getIsThreadSafe().equals(value)) {
-                        err.jspError(n, "jsp.error.page.conflict.isthreadsafe",
-                                pageInfo.getIsThreadSafe(), value);
-                    }
                 } else if ("isELIgnored".equals(attr)) {
                     if (pageInfo.getIsELIgnored() == null) {
                         pageInfo.setIsELIgnored(value, n, err, true);
diff --git a/java/org/apache/jasper/resources/LocalStrings.properties b/java/org/apache/jasper/resources/LocalStrings.properties
index eda546595f..9b3817f988 100644
--- a/java/org/apache/jasper/resources/LocalStrings.properties
+++ b/java/org/apache/jasper/resources/LocalStrings.properties
@@ -151,7 +151,6 @@ jsp.error.page.conflict.extends=Page directive: illegal to have multiple occurre
 jsp.error.page.conflict.info=Page directive: illegal to have multiple occurrences of ''info'' with different values (old: [{0}], new: [{1}])
 jsp.error.page.conflict.iselignored=Page directive: illegal to have multiple occurrences of ''isELIgnored'' with different values (old: [{0}], new: [{1}])
 jsp.error.page.conflict.iserrorpage=Page directive: illegal to have multiple occurrences of ''isErrorPage'' with different values (old: [{0}], new: [{1}])
-jsp.error.page.conflict.isthreadsafe=Page directive: illegal to have multiple occurrences of ''isThreadSafe'' with different values (old: [{0}], new: [{1}])
 jsp.error.page.conflict.language=Page directive: illegal to have multiple occurrences of ''language'' with different values (old: [{0}], new: [{1}])
 jsp.error.page.conflict.session=Page directive: illegal to have multiple occurrences of ''session'' with different values (old: [{0}], new: [{1}])
 jsp.error.page.conflict.trimdirectivewhitespaces=Page directive: illegal to have multiple occurrences of ''trimDirectiveWhitespaces'' with different values (old: [{0}], new: [{1}])
@@ -161,7 +160,6 @@ jsp.error.page.invalid.errorOnELNotFound=Page directive: invalid value for error
 jsp.error.page.invalid.import=Page directive: invalid value for import
 jsp.error.page.invalid.iselignored=Page directive: invalid value for isELIgnored
 jsp.error.page.invalid.iserrorpage=Page directive: invalid value for isErrorPage
-jsp.error.page.invalid.isthreadsafe=Page directive: invalid value for isThreadSafe
 jsp.error.page.invalid.scope=Invalid scope
 jsp.error.page.invalid.session=Page directive: invalid value for session
 jsp.error.page.invalid.trimdirectivewhitespaces=Page directive: invalid value for trimDirectiveWhitespaces
@@ -291,7 +289,6 @@ jsp.warning.enablePooling=Warning: Invalid value for the initParam enablePooling
 jsp.warning.engineOptionsClass=Failed to load engine options class [{0}]
 jsp.warning.fork=Warning: Invalid value for the initParam fork. Will use the default value of "true"
 jsp.warning.genchararray=Warning: Invalid value for the initParam genStringAsCharArray. Will use the default value of "false"
-jsp.warning.isThreadSafe=Warning: The "isThreadSafe" page directive attribute used in [{0}] has been deprecated and will be removed in version 4.0 of the JSP specification
 jsp.warning.jspIdleTimeout=Warning: Invalid value for the initParam jspIdleTimeout. Will use the default value of "-1"
 jsp.warning.keepgen=Warning: Invalid value for the initParam keepgenerated. Will use the default value of "false"
 jsp.warning.loadSmap=Unable to load SMAP data for class [{0}]
diff --git a/java/org/apache/jasper/resources/LocalStrings_es.properties b/java/org/apache/jasper/resources/LocalStrings_es.properties
index e213ba1a81..94f453a210 100644
--- a/java/org/apache/jasper/resources/LocalStrings_es.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_es.properties
@@ -135,7 +135,6 @@ jsp.error.page.conflict.extends=Directiva Page: es ilegal tener múltiples ocurr
 jsp.error.page.conflict.info=Directiva Page: es ilegal tener múltiples ocurrencias de ''info'' con valores distintos (viejo: [{0}], nuevo: [{1}])
 jsp.error.page.conflict.iselignored=Directiva Page: es ilegal tener múltiples ocurrencias de ''isELIgnored'' con valores distintos (viejo: [{0}], nuevo: [{1}])
 jsp.error.page.conflict.iserrorpage=Directiva Page: es ilegal tener múltiples ocurrencias de ''isErrorPage'' con valores distintos (viejo: [{0}], nuevo: [{1}])
-jsp.error.page.conflict.isthreadsafe=Directiva Page: es ilegal tener múltiples ocurrencias de ''isThreadSafe'' con valores distintos (viejo: [{0}], nuevo: [{1}])
 jsp.error.page.conflict.language=Directiva Page: es ilegal tener múltiples ocurrencias de ''language'' con valores distintos (viejo: [{0}], nuevo: [{1}])
 jsp.error.page.conflict.session=Directiva Page: es ilegal tener múltiples ocurrencias de ''session'' con valores distintos (viejo: [{0}], nuevo: [{1}])
 jsp.error.page.conflict.trimdirectivewhitespaces=Directiva de página: es ilegal tener múltiples ocurrencias de ''trimDirectivewhitespaces'' con diferentes valores (viejo: [{0}], nuevo: [{1}])
@@ -144,7 +143,6 @@ jsp.error.page.invalid.deferredsyntaxallowedasliteral=Directiva de página: valo
 jsp.error.page.invalid.import=Directiva de página: valor inválido para importar
 jsp.error.page.invalid.iselignored=Directiva Page: valor inválido para isELIgnored
 jsp.error.page.invalid.iserrorpage==Directiva Page: valor incorrecto para isErrorPage
-jsp.error.page.invalid.isthreadsafe==Directiva Page: valor incorrecto para isThreadSafe
 jsp.error.page.invalid.session=Directiva Page: valor incorrecto para session
 jsp.error.page.invalid.trimdirectivewhitespaces=Directiva de página: valor inválido para trimDirectiveWhitespaces
 jsp.error.page.language.nonjava=Directiva Page: atributo language incorrecto
diff --git a/java/org/apache/jasper/resources/LocalStrings_fr.properties b/java/org/apache/jasper/resources/LocalStrings_fr.properties
index ccd403dfca..5e4bbf1cb4 100644
--- a/java/org/apache/jasper/resources/LocalStrings_fr.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_fr.properties
@@ -150,7 +150,6 @@ jsp.error.page.conflict.extends=Directive de page : il est illégal d''avoir plu
 jsp.error.page.conflict.info=Directive de page : il est illégal d''avoir plusieurs occurrences de "info" avec des valeurs différentes (ancienne : [{0}], nouvelle [{1}])
 jsp.error.page.conflict.iselignored=Directive de page : il est illégal d''avoir plusieurs occurrences de "isELIgnored" avec des valeurs différentes (ancienne : [{0}], nouvelle [{1}])
 jsp.error.page.conflict.iserrorpage=Directive de page : il est illégal d''avoir plusieurs occurrences de "isErrorPage" avec des valeurs différentes (ancienne : [{0}], nouvelle [{1}])
-jsp.error.page.conflict.isthreadsafe=Directive de page : il est illégal d''avoir plusieurs occurrences de "isThreadSafe" avec des valeurs différentes (ancienne : [{0}], nouvelle [{1}])
 jsp.error.page.conflict.language=Directive de page : il est illégal d''avoir plusieurs occurrences de "language" avec des valeurs différentes (ancienne : [{0}], nouvelle [{1}])
 jsp.error.page.conflict.session=Directive de page : il est illégal d''avoir plusieurs occurrences de "session" avec des valeurs différentes (ancienne : [{0}], nouvelle [{1}])
 jsp.error.page.conflict.trimdirectivewhitespaces=Directive de page : il est illégal d''avoir plusieurs occurrences de "trimDirectiveWhitespaces" avec des valeurs différentes (ancienne : [{0}], nouvelle [{1}])
@@ -160,7 +159,6 @@ jsp.error.page.invalid.errorOnELNotFound=Directive de page: valeur invalide pour
 jsp.error.page.invalid.import=Directive de page : valeur invalide pour import
 jsp.error.page.invalid.iselignored=Directive de page : valeur invalide pour isELIgnored
 jsp.error.page.invalid.iserrorpage=Directive de Page : valeur incorrecte pour isErrorPage
-jsp.error.page.invalid.isthreadsafe=Directive de Page : valeur incorrecte pour isThreadSafe
 jsp.error.page.invalid.scope=Portée invalide
 jsp.error.page.invalid.session=Directive de Page : valeur incorrecte pour session
 jsp.error.page.invalid.trimdirectivewhitespaces=Directive de page : valeur invalide pour trimDirectiveWhitespaces
@@ -290,7 +288,6 @@ jsp.warning.enablePooling=WARNING : Valeur incorrecte pour le initParam enablePo
 jsp.warning.engineOptionsClass=Impossible de charger la classes des options du moteur [{0}]
 jsp.warning.fork=WARNING : Valeur invalide pour le paramètre d'initialisation fork, la valeur par défaut "true" sera utilisée
 jsp.warning.genchararray=WARNING : Valeur invalide pour le paramètre d'initialisation genStringAsCharArray, la valeur par défaut "false" sera utilisée
-jsp.warning.isThreadSafe=Attention: L''attribut de directive de page "isThreadSafe" utilisé dans [{0}] a été déprécié et sera retiré dans la version 4.0 de la spécification JSP
 jsp.warning.jspIdleTimeout=WARNING : Valeur invalide pour le paramètre d'initialisation jspIdleTimeout, la valeur par défaut "-1" sera utilisée
 jsp.warning.keepgen=WARNING : Valeur incorrecte pour le initParam keepgenerated. Utilisation de la valeur par défaut "false"
 jsp.warning.loadSmap=Impossible de charger les données SMAP pour la classe [{0}]
diff --git a/java/org/apache/jasper/resources/LocalStrings_ja.properties b/java/org/apache/jasper/resources/LocalStrings_ja.properties
index e93538e187..ffa98b1fa6 100644
--- a/java/org/apache/jasper/resources/LocalStrings_ja.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_ja.properties
@@ -152,7 +152,6 @@ jsp.error.page.conflict.extends=Pageディレクティブ: ''extends''を異な
 jsp.error.page.conflict.info=Pageディレクティブ: ''info''を異なる値で複数回指定するのは無効です (旧: [{0}], 新: [{1}])
 jsp.error.page.conflict.iselignored=Pageディレクティブ: ''isELIgnored''を異なる値で複数回指定するのは無効です (旧: [{0}], 新: [{1}])
 jsp.error.page.conflict.iserrorpage=Pageディレクティブ: ''isErrorPage''を異なる値で複数回指定するのは無効です (旧: [{0}], 新: [{1}])
-jsp.error.page.conflict.isthreadsafe=Tagディレクティブ:  ''isThreadSafe''を異なる値で複数回指定するのは無効です (旧: [{0}], 新: [{1}])
 jsp.error.page.conflict.language=Pageディレクティブ: ''language''を異なる値で複数回指定するのは無効です (旧: [{0}], 新: [{1}])
 jsp.error.page.conflict.session=Pageディレクティブ: ''session''を異なる値で複数回指定するのは無効です (旧: [{0}], 新: [{1}])
 jsp.error.page.conflict.trimdirectivewhitespaces=Pageディレクティブ: ''trimDirectiveWhitespaces''を異なる値で複数回指定するのは無効です (旧: [{0}], 新: [{1}])
@@ -162,7 +161,6 @@ jsp.error.page.invalid.errorOnELNotFound=ページディレクティブ: errorOn
 jsp.error.page.invalid.import=Pageディレクティブ:importの値が無効です
 jsp.error.page.invalid.iselignored=Pageディレクティブ: isELIgnored の値は不正です
 jsp.error.page.invalid.iserrorpage=Pageディレクティブ: isErrorPage属性の値が無効です
-jsp.error.page.invalid.isthreadsafe=Pageディレクティブ: isThreadSafeの値が無効です
 jsp.error.page.invalid.scope=スコープが無効です
 jsp.error.page.invalid.session=Pageディレクティブ: session属性の値が無効です
 jsp.error.page.invalid.trimdirectivewhitespaces=Pageディレクティブ:trimDirectiveWhitespacesの値が無効です
@@ -292,7 +290,6 @@ jsp.warning.enablePooling=警告: initParam の enablePooling の値は無効で
 jsp.warning.engineOptionsClass=engineOptionsClass [{0}] のロードに失敗しました。
 jsp.warning.fork=警告: initParam の fork の値は無効です。既定値 "true" が使用されます
 jsp.warning.genchararray=警告: initParam の genStringAsCharArray の値は無効です。既定値 "false" が使用されます
-jsp.warning.isThreadSafe=警告: [{0}] で使用されている "isThreadSafe" ページディレクティブ属性は非推奨になり、JSP仕様バージョン4.0で削除されます
 jsp.warning.jspIdleTimeout=警告: initParam jspIdleTimeoutの値は無効です。既定値 "-1"を使用します。
 jsp.warning.keepgen=警告: initParam の keepgenerated の値は無効です。既定値 "false" が使用されます
 jsp.warning.loadSmap=クラス [{0}] のSMAPデータをロードできません
diff --git a/java/org/apache/jasper/resources/LocalStrings_ko.properties b/java/org/apache/jasper/resources/LocalStrings_ko.properties
index 7024698300..659124848c 100644
--- a/java/org/apache/jasper/resources/LocalStrings_ko.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_ko.properties
@@ -149,7 +149,6 @@ jsp.error.page.conflict.extends=페이지 지시어: 다른 값들을 가지는
 jsp.error.page.conflict.info=페이지 지시어: 다른 값들을 가지는 ''info''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
 jsp.error.page.conflict.iselignored=페이지 지시어: 다른 값들을 가지는 ''isELIgnored''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
 jsp.error.page.conflict.iserrorpage=페이지 지시어: 다른 값들을 가지는 ''isErrorPage''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
-jsp.error.page.conflict.isthreadsafe=페이지 지시어: 다른 값들을 가지는 ''isThreadSafe''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
 jsp.error.page.conflict.language=페이지 지시어: 다른 값들로 ''language''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
 jsp.error.page.conflict.session=페이지 지시어: ''session''이 다른 값들로 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
 jsp.error.page.conflict.trimdirectivewhitespaces=페이지 지시어: 다른 값들을 가지는 ''trimDirectiveWhitespaces''가 여러 번 나타나는 것은 불허됩니다. (이전 값: [{0}], 신규 값: [{1}])
@@ -159,7 +158,6 @@ jsp.error.page.invalid.errorOnELNotFound=페이지 지시어: errorOnELNotFound
 jsp.error.page.invalid.import=페이지 지시어: 임포트를 위한 유효한 값이 아닙니다.
 jsp.error.page.invalid.iselignored=페이지 지시어: isELIgnored에 유효하지 않은 값
 jsp.error.page.invalid.iserrorpage=페이지 지시어: isErrorPage에 유효하지 않은 값
-jsp.error.page.invalid.isthreadsafe=페이지 지시어: isThreadSafe에 유효하지 않은 값
 jsp.error.page.invalid.scope=유효하지 않은 scope
 jsp.error.page.invalid.session=페이지 지시어: 세션을 위해 유효하지 않은 값
 jsp.error.page.invalid.trimdirectivewhitespaces=페이지 지시어: trimDirectiveWhitespaces에 유효하지 않은 값
@@ -289,7 +287,6 @@ jsp.warning.enablePooling=주의: initParam인 enablePooling에 유효하지 않
 jsp.warning.engineOptionsClass=엔진 옵션들의 클래스 [{0}]을(를) 로드하지 못했습니다.
 jsp.warning.fork=경고: initParam인 fork에 유효하지 않은 값. 기본 값인 "true"를 사용할 것입니다.
 jsp.warning.genchararray=경고: initParam인 genStringAsCharArray에 유효하지 않은 값. 기본 값인 "false"를 사용할 것입니다.
-jsp.warning.isThreadSafe=경고: [{0}]에서 사용되고 있는 "isThreadSafe" 페이지 지시어 속성은 더 이상 지원되지 않을 것이며 JSP 스펙 버전 4.0에서 완전히 사라질 것입니다.
 jsp.warning.jspIdleTimeout=경고: initParam인 jspIdleTimeout에 유효하지 않은 값. 기본값 "-1"을 사용할 것입니다.
 jsp.warning.keepgen=경고: initParam인 keepgenerated에 유효하지 않은 값. 기본 값인 "false"를 사용할 것입니다.
 jsp.warning.loadSmap=클래스 [{0}]을(를) 위한 SMAP 데이터를 로드할 수 없습니다.
diff --git a/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties b/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
index 3afd804d30..ab341603ce 100644
--- a/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
@@ -149,7 +149,6 @@ jsp.error.page.conflict.extends=页面指令:“ extends”非法多次出现
 jsp.error.page.conflict.info=页面指令:“ info”非法多次出现不同值(旧值: [{0}], 新值: [{1}])
 jsp.error.page.conflict.iselignored=页面指令:“ isELIgnored”非法多次出现不同值(旧值: [{0}], 新值: [{1}])
 jsp.error.page.conflict.iserrorpage=页面指令:“ isErrorPage”非法多次出现不同值(旧值: [{0}], 新值: [{1}])
-jsp.error.page.conflict.isthreadsafe=页面指令:“ isThreadSafe”非法多次出现不同值(旧值: [{0}], 新值: [{1}])
 jsp.error.page.conflict.language=页面指令:“ language” 非法多次出现不同值( 旧值:[{0}],新值:[{1}] )
 jsp.error.page.conflict.session=页面指令:“session” 非法多次出现不同值( 旧值:[{0}],新值:[{1}] )
 jsp.error.page.conflict.trimdirectivewhitespaces=页面指令:违法出现多个有不同的值(旧值:[{0}],新值:[{1}])的''trimDirectiveWhitespaces''
@@ -159,7 +158,6 @@ jsp.error.page.invalid.errorOnELNotFound=页面指​​令:errorOnELNotFound
 jsp.error.page.invalid.import=页面指令:import 值无效
 jsp.error.page.invalid.iselignored=页面指令:isELIgnored 值无效
 jsp.error.page.invalid.iserrorpage=页面指令:isErrorPage 值无效
-jsp.error.page.invalid.isthreadsafe=页面指令:isThreadSafe 值无效
 jsp.error.page.invalid.scope=无效的作用域
 jsp.error.page.invalid.session=页面指令:session 值无效
 jsp.error.page.invalid.trimdirectivewhitespaces=页面指令:trimDirectiveWhitespaces 值无效
@@ -289,7 +287,6 @@ jsp.warning.enablePooling=警告:initParam enablePooling的值无效。将使
 jsp.warning.engineOptionsClass=未能加载引擎选项类[{0}]
 jsp.warning.fork=警告:initParam的值无效。将使用“true”的默认值
 jsp.warning.genchararray=警告:initParam genstringascharray的值无效。将使用默认值“false”
-jsp.warning.isThreadSafe=警告:在[{0}] 中使用的“isThreadSafe”页面指令属性已被弃用,并将在 JSP 规范的 4.0 版中删除\n
 jsp.warning.jspIdleTimeout=警告:initParam jspIdleTimeout的值无效。将使用默认值“-1”
 jsp.warning.keepgen=警告:initParam keepgenerated的值无效。将使用默认值“false”
 jsp.warning.loadSmap=无法加载类[{0}]的SMAP数据
diff --git a/test/org/apache/jasper/compiler/TestGenerator.java b/test/org/apache/jasper/compiler/TestGenerator.java
index baeb8088b9..65fb6d6785 100644
--- a/test/org/apache/jasper/compiler/TestGenerator.java
+++ b/test/org/apache/jasper/compiler/TestGenerator.java
@@ -719,11 +719,6 @@ public class TestGenerator extends TomcatBaseTest {
         doTestJsp("variable-tagfile-from-attr-nested.jsp");
     }
 
-    @Test
-    public void testSingleThreaded() throws Exception {
-        doTestJsp("single-threaded.jsp");
-    }
-
     @Test
     public void testXpoweredBy() throws Exception {
         doTestJsp("x-powered-by.jsp");
diff --git a/test/webapp/jsp/generator/single-threaded.jsp b/test/webapp/jsp/generator/single-threaded.jsp
deleted file mode 100644
index 371ec50aa0..0000000000
--- a/test/webapp/jsp/generator/single-threaded.jsp
+++ /dev/null
@@ -1,17 +0,0 @@
-<%--
- 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.
---%>
-<%@ page isThreadSafe="false" %>
\ 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] 02/08: Align JSP API with latest changes - remove deprecated code

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

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

commit 1b68d0370d587cb090b3c351a3420c95fe99e00c
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Oct 19 11:54:52 2022 +0100

    Align JSP API with latest changes - remove deprecated code
---
 java/jakarta/servlet/jsp/JspContext.java           |  28 ------
 java/jakarta/servlet/jsp/JspException.java         |  20 +---
 java/jakarta/servlet/jsp/el/ELException.java       |  80 ---------------
 java/jakarta/servlet/jsp/el/ELParseException.java  |  48 ---------
 java/jakarta/servlet/jsp/el/Expression.java        |  52 ----------
 .../servlet/jsp/el/ExpressionEvaluator.java        | 109 ---------------------
 java/jakarta/servlet/jsp/el/FunctionMapper.java    |  39 --------
 .../servlet/jsp/el/ImplicitObjectELResolver.java   |  21 ----
 .../servlet/jsp/el/ScopedAttributeELResolver.java  |  83 ----------------
 java/jakarta/servlet/jsp/el/VariableResolver.java  |  50 ----------
 java/jakarta/servlet/jsp/el/package.html           |  37 -------
 java/jakarta/servlet/jsp/tagext/BodyTag.java       |  11 ---
 java/jakarta/servlet/jsp/tagext/IterationTag.java  |   5 -
 13 files changed, 2 insertions(+), 581 deletions(-)

diff --git a/java/jakarta/servlet/jsp/JspContext.java b/java/jakarta/servlet/jsp/JspContext.java
index 1959e5778a..29168734e9 100644
--- a/java/jakarta/servlet/jsp/JspContext.java
+++ b/java/jakarta/servlet/jsp/JspContext.java
@@ -214,19 +214,6 @@ public abstract class JspContext {
      */
     public abstract JspWriter getOut();
 
-    /**
-     * Provides programmatic access to the ExpressionEvaluator.
-     * The JSP Container must return a valid instance of an
-     * ExpressionEvaluator that can parse EL expressions.
-     *
-     * @return A valid instance of an ExpressionEvaluator.
-     * @since JSP 2.0
-     * @deprecated As of JSP 2.1, replaced by
-     *             JspApplicationContext.getExpressionFactory()
-     */
-    @Deprecated
-    public abstract jakarta.servlet.jsp.el.ExpressionEvaluator getExpressionEvaluator();
-
     /**
      * Obtain the ELContext for this JSPContext. Each JSPContext has a dedicated
      * ELCOntext.
@@ -235,21 +222,6 @@ public abstract class JspContext {
      */
     public abstract ELContext getELContext();
 
-    /**
-     * Returns an instance of a VariableResolver that provides access to the
-     * implicit objects specified in the JSP specification using this JspContext
-     * as the context object.
-     *
-     * @return A valid instance of a VariableResolver.
-     * @since JSP 2.0
-     * @deprecated As of JSP 2.1,
-     *             replaced by jakarta.el.ELContext.getELResolver()
-     *             which can be obtained by
-     *             jspContext.getELContext().getELResolver()
-     */
-    @Deprecated
-    public abstract jakarta.servlet.jsp.el.VariableResolver getVariableResolver();
-
     /**
      * Return a new JspWriter object that sends output to the
      * provided Writer.  Saves the current "out" JspWriter,
diff --git a/java/jakarta/servlet/jsp/JspException.java b/java/jakarta/servlet/jsp/JspException.java
index 62450d6d76..cbe8f8896a 100644
--- a/java/jakarta/servlet/jsp/JspException.java
+++ b/java/jakarta/servlet/jsp/JspException.java
@@ -50,8 +50,7 @@ public class JspException extends Exception {
     /**
      * Constructs a new <code>JSPException</code> with the specified detail
      * message and cause. The cause is saved for later retrieval by the
-     * <code>java.lang.Throwable.getCause()</code> and {@link #getRootCause()}
-     * methods.
+     * <code>java.lang.Throwable.getCause()</code> method.
      *
      * @see java.lang.Exception#Exception(String, Throwable)
      *
@@ -71,8 +70,7 @@ public class JspException extends Exception {
     /**
      * Constructs a new <code>JSPException</code> with the specified cause.
      * The cause is saved for later retrieval by the
-     * <code>java.lang.Throwable.getCause()</code> and {@link #getRootCause()}
-     * methods.
+     * <code>java.lang.Throwable.getCause()</code> method.
      *
      * @see java.lang.Exception#Exception(Throwable)
      *
@@ -84,18 +82,4 @@ public class JspException extends Exception {
     public JspException(Throwable cause) {
         super(cause);
     }
-
-
-    /**
-     * Returns the exception that caused this JSP exception.
-     *
-     * @return  the <code>Throwable</code> that caused this JSP exception
-     *
-     * @deprecated As of JSP 2.1, replaced by
-     * <code>java.lang.Throwable.getCause()</code>
-     */
-    @Deprecated
-    public Throwable getRootCause() {
-        return getCause();
-    }
 }
diff --git a/java/jakarta/servlet/jsp/el/ELException.java b/java/jakarta/servlet/jsp/el/ELException.java
deleted file mode 100644
index 455f9ba9e1..0000000000
--- a/java/jakarta/servlet/jsp/el/ELException.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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.
- */
-package jakarta.servlet.jsp.el;
-
-/**
- * Represents any of the exception conditions that arise during the operation
- * evaluation of the evaluator.
- *
- * @since JSP 2.0
- * @deprecated As of JSP 2.1, replaced by jakarta.el.ELException
- */
-@Deprecated
-public class ELException extends Exception {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * Creates an ELException with no detail message.
-     **/
-    public ELException() {
-        super();
-    }
-
-    /**
-     * Creates an ELException with the provided detail message.
-     *
-     * @param pMessage
-     *            the detail message
-     **/
-    public ELException(String pMessage) {
-        super(pMessage);
-    }
-
-    /**
-     * Creates an ELException with the given root cause.
-     *
-     * @param pRootCause
-     *            the originating cause of this exception
-     **/
-    public ELException(Throwable pRootCause) {
-        super(pRootCause);
-    }
-
-    // -------------------------------------
-    /**
-     * Creates an ELException with the given detail message and root cause.
-     *
-     * @param pMessage
-     *            the detail message
-     * @param pRootCause
-     *            the originating cause of this exception
-     **/
-    public ELException(String pMessage, Throwable pRootCause) {
-        super(pMessage, pRootCause);
-    }
-
-    // -------------------------------------
-    /**
-     * Returns the root cause.
-     *
-     * @return the root cause of this exception
-     */
-    public Throwable getRootCause() {
-        return getCause();
-    }
-}
diff --git a/java/jakarta/servlet/jsp/el/ELParseException.java b/java/jakarta/servlet/jsp/el/ELParseException.java
deleted file mode 100644
index a79fad0fbc..0000000000
--- a/java/jakarta/servlet/jsp/el/ELParseException.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-* 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.
-*/
-package jakarta.servlet.jsp.el;
-
-
-/**
- * Represents a parsing error encountered while parsing an EL expression.
- *
- * @since JSP 2.0
- * @deprecated As of JSP 2.1, replaced by jakarta.el.ELException
- */
-@Deprecated
-public class ELParseException extends ELException {
-
-    private static final long serialVersionUID = 1L;
-
-
-    /**
-     * Creates an ELParseException with no detail message.
-     */
-    public ELParseException () {
-        super ();
-    }
-
-
-    /**
-     * Creates an ELParseException with the provided detail message.
-     *
-     * @param pMessage the detail message
-     */
-    public ELParseException (String pMessage) {
-        super (pMessage);
-    }
-}
diff --git a/java/jakarta/servlet/jsp/el/Expression.java b/java/jakarta/servlet/jsp/el/Expression.java
deleted file mode 100644
index 57d8811b31..0000000000
--- a/java/jakarta/servlet/jsp/el/Expression.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-* 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.
-*/
-package jakarta.servlet.jsp.el;
-
-
-/**
- * <p>The abstract class for a prepared expression.</p>
- *
- * <p>An instance of an Expression can be obtained via from an
- * ExpressionEvaluator instance.</p>
- *
- * <p>An Expression may or not have done a syntactic parse of the expression.
- * A client invoking the evaluate() method should be ready for the case
- * where ELParseException exceptions are raised. </p>
- *
- * @since JSP 2.0
- * @deprecated As of JSP 2.1, replaced by jakarta.el.ValueExpression
- */
-@Deprecated
-public abstract class Expression {
-
-    /**
-     * Evaluates an expression that was previously prepared.  In some
-     * implementations preparing an expression involves full syntactic
-     * validation, but others may not do so.  Evaluating the expression may
-     * raise an ELParseException as well as other ELExceptions due to
-     * run-time evaluation.
-     *
-     * @param vResolver A VariableResolver instance that can be used at
-     *   runtime to resolve the name of implicit objects into Objects.
-     * @return The result of the expression evaluation.
-     *
-     * @exception ELException Thrown if the expression evaluation failed.
-     */
-    public abstract Object evaluate( VariableResolver vResolver )
-        throws ELException;
-}
-
diff --git a/java/jakarta/servlet/jsp/el/ExpressionEvaluator.java b/java/jakarta/servlet/jsp/el/ExpressionEvaluator.java
deleted file mode 100644
index db59b26bb6..0000000000
--- a/java/jakarta/servlet/jsp/el/ExpressionEvaluator.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.
- */
-package jakarta.servlet.jsp.el;
-
-/**
- * <p>
- * The abstract base class for an expression-language evaluator. Classes that
- * implement an expression language expose their functionality via this abstract
- * class.
- * </p>
- * <p>
- * An instance of the ExpressionEvaluator can be obtained via the JspContext /
- * PageContext
- * </p>
- * <p>
- * The parseExpression() and evaluate() methods must be thread-safe. That is,
- * multiple threads may call these methods on the same ExpressionEvaluator
- * object simultaneously. Implementations should synchronize access if they
- * depend on transient state. Implementations should not, however, assume that
- * only one object of each ExpressionEvaluator type will be instantiated; global
- * caching should therefore be static.
- * </p>
- * <p>
- * Only a single EL expression, starting with '${' and ending with '}', can be
- * parsed or evaluated at a time. EL expressions cannot be mixed with static
- * text. For example, attempting to parse or evaluate "
- * <code>abc${1+1}def${1+1}ghi</code>" or even "<code>${1+1}${1+1}</code>" will
- * cause an <code>ELException</code> to be thrown.
- * </p>
- * <p>
- * The following are examples of syntactically legal EL expressions:
- * </p>
- * <ul>
- * <li><code>${person.lastName}</code></li>
- * <li><code>${8 * 8}</code></li>
- * <li><code>${my:reverse('hello')}</code></li>
- * </ul>
- *
- * @since JSP 2.0
- * @deprecated As of JSP 2.1, replaced by jakarta.el.ExpressionFactory
- */
-@Deprecated
-public abstract class ExpressionEvaluator {
-
-    /**
-     * Prepare an expression for later evaluation. This method should perform
-     * syntactic validation of the expression; if in doing so it detects errors,
-     * it should raise an ELParseException.
-     *
-     * @param expression
-     *            The expression to be evaluated.
-     * @param expectedType
-     *            The expected type of the result of the evaluation
-     * @param fMapper
-     *            A FunctionMapper to resolve functions found in the expression.
-     *            It can be null, in which case no functions are supported for
-     *            this invocation. The ExpressionEvaluator must not hold on to
-     *            the FunctionMapper reference after returning from
-     *            <code>parseExpression()</code>. The <code>Expression</code>
-     *            object returned must invoke the same functions regardless of
-     *            whether the mappings in the provided
-     *            <code>FunctionMapper</code> instance change between calling
-     *            <code>ExpressionEvaluator.parseExpression()</code> and
-     *            <code>Expression.evaluate()</code>.
-     * @return The Expression object encapsulating the arguments.
-     * @exception ELException
-     *                Thrown if parsing errors were found.
-     */
-    public abstract Expression parseExpression(String expression, Class<?> expectedType,
-            FunctionMapper fMapper) throws ELException;
-
-    /**
-     * Evaluates an expression. This method may perform some syntactic
-     * validation and, if so, it should raise an ELParseException error if it
-     * encounters syntactic errors. EL evaluation errors should cause an
-     * ELException to be raised.
-     *
-     * @param expression
-     *            The expression to be evaluated.
-     * @param expectedType
-     *            The expected type of the result of the evaluation
-     * @param vResolver
-     *            A VariableResolver instance that can be used at runtime to
-     *            resolve the name of implicit objects into Objects.
-     * @param fMapper
-     *            A FunctionMapper to resolve functions found in the expression.
-     *            It can be null, in which case no functions are supported for
-     *            this invocation.
-     * @return The result of the expression evaluation.
-     * @exception ELException
-     *                Thrown if the expression evaluation failed.
-     */
-    public abstract Object evaluate(String expression, Class<?> expectedType, VariableResolver vResolver,
-            FunctionMapper fMapper) throws ELException;
-}
diff --git a/java/jakarta/servlet/jsp/el/FunctionMapper.java b/java/jakarta/servlet/jsp/el/FunctionMapper.java
deleted file mode 100644
index 9998961819..0000000000
--- a/java/jakarta/servlet/jsp/el/FunctionMapper.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-* 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.
-*/
-package jakarta.servlet.jsp.el;
-
-/**
- * <p>The interface to a map between EL function names and methods.</p>
- *
- * <p>Classes implementing this interface may, for instance, consult tag library
- * information to resolve the map. </p>
- *
- * @since JSP 2.0
- * @deprecated As of JSP 2.1, replaced by jakarta.el.FunctionMapper
- */
-@Deprecated
-public interface FunctionMapper {
-    /**
-     * Resolves the specified local name and prefix into a Java.lang.Method.
-     * Returns null if the prefix and local name are not found.
-     *
-     * @param prefix the prefix of the function, or "" if no prefix.
-     * @param localName the short name of the function
-     * @return the result of the method mapping.  Null means no entry found.
-     */
-    public java.lang.reflect.Method resolveFunction(String prefix, String localName);
-}
diff --git a/java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java b/java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java
index 4d35df9dfb..34bd699da9 100644
--- a/java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java
+++ b/java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java
@@ -16,14 +16,12 @@
 */
 package jakarta.servlet.jsp.el;
 
-import java.beans.FeatureDescriptor;
 import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -160,25 +158,6 @@ public class ImplicitObjectELResolver extends ELResolver {
         return false;
     }
 
-    @Deprecated(forRemoval = true, since = "JSP 3.1")
-    @Override
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
-        List<FeatureDescriptor> feats = new ArrayList<>(SCOPE_NAMES.length);
-        FeatureDescriptor feat;
-        for (String scopeName : SCOPE_NAMES) {
-            feat = new FeatureDescriptor();
-            feat.setDisplayName(scopeName);
-            feat.setExpert(false);
-            feat.setHidden(false);
-            feat.setName(scopeName);
-            feat.setPreferred(true);
-            feat.setValue(RESOLVABLE_AT_DESIGN_TIME, Boolean.TRUE);
-            feat.setValue(TYPE, String.class);
-            feats.add(feat);
-        }
-        return feats.iterator();
-    }
-
     @Override
     public Class<String> getCommonPropertyType(ELContext context, Object base) {
         if (base == null) {
diff --git a/java/jakarta/servlet/jsp/el/ScopedAttributeELResolver.java b/java/jakarta/servlet/jsp/el/ScopedAttributeELResolver.java
index 0246f49421..5908a4832c 100644
--- a/java/jakarta/servlet/jsp/el/ScopedAttributeELResolver.java
+++ b/java/jakarta/servlet/jsp/el/ScopedAttributeELResolver.java
@@ -16,11 +16,6 @@
  */
 package jakarta.servlet.jsp.el;
 
-import java.beans.FeatureDescriptor;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Objects;
 
 import jakarta.el.ELContext;
@@ -97,84 +92,6 @@ public class ScopedAttributeELResolver extends ELResolver {
         return false;
     }
 
-    @Deprecated(forRemoval = true, since = "JSP 3.1")
-    @Override
-    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
-
-        PageContext ctxt = (PageContext) context.getContext(JspContext.class);
-        List<FeatureDescriptor> list = new ArrayList<>();
-        Enumeration<String> e;
-        Object value;
-        String name;
-
-        e = ctxt.getAttributeNamesInScope(PageContext.PAGE_SCOPE);
-        while (e.hasMoreElements()) {
-            name = e.nextElement();
-            value = ctxt.getAttribute(name, PageContext.PAGE_SCOPE);
-            FeatureDescriptor descriptor = new FeatureDescriptor();
-            descriptor.setName(name);
-            descriptor.setDisplayName(name);
-            descriptor.setExpert(false);
-            descriptor.setHidden(false);
-            descriptor.setPreferred(true);
-            descriptor.setShortDescription("page scoped attribute");
-            descriptor.setValue("type", value.getClass());
-            descriptor.setValue("resolvableAtDesignTime", Boolean.FALSE);
-            list.add(descriptor);
-        }
-
-        e = ctxt.getAttributeNamesInScope(PageContext.REQUEST_SCOPE);
-        while (e.hasMoreElements()) {
-            name = e.nextElement();
-            value = ctxt.getAttribute(name, PageContext.REQUEST_SCOPE);
-            FeatureDescriptor descriptor = new FeatureDescriptor();
-            descriptor.setName(name);
-            descriptor.setDisplayName(name);
-            descriptor.setExpert(false);
-            descriptor.setHidden(false);
-            descriptor.setPreferred(true);
-            descriptor.setShortDescription("request scope attribute");
-            descriptor.setValue("type", value.getClass());
-            descriptor.setValue("resolvableAtDesignTime", Boolean.FALSE);
-            list.add(descriptor);
-        }
-
-        if (ctxt.getSession() != null) {
-            e = ctxt.getAttributeNamesInScope(PageContext.SESSION_SCOPE);
-            while (e.hasMoreElements()) {
-                name = e.nextElement();
-                value = ctxt.getAttribute(name, PageContext.SESSION_SCOPE);
-                FeatureDescriptor descriptor = new FeatureDescriptor();
-                descriptor.setName(name);
-                descriptor.setDisplayName(name);
-                descriptor.setExpert(false);
-                descriptor.setHidden(false);
-                descriptor.setPreferred(true);
-                descriptor.setShortDescription("session scoped attribute");
-                descriptor.setValue("type", value.getClass());
-                descriptor.setValue("resolvableAtDesignTime", Boolean.FALSE);
-                list.add(descriptor);
-            }
-        }
-
-        e = ctxt.getAttributeNamesInScope(PageContext.APPLICATION_SCOPE);
-        while (e.hasMoreElements()) {
-            name = e.nextElement();
-            value = ctxt.getAttribute(name, PageContext.APPLICATION_SCOPE);
-            FeatureDescriptor descriptor = new FeatureDescriptor();
-            descriptor.setName(name);
-            descriptor.setDisplayName(name);
-            descriptor.setExpert(false);
-            descriptor.setHidden(false);
-            descriptor.setPreferred(true);
-            descriptor.setShortDescription("application scoped attribute");
-            descriptor.setValue("type", value.getClass());
-            descriptor.setValue("resolvableAtDesignTime", Boolean.FALSE);
-            list.add(descriptor);
-        }
-        return list.iterator();
-    }
-
     @Override
     public Class<String> getCommonPropertyType(ELContext context, Object base) {
         if (base == null) {
diff --git a/java/jakarta/servlet/jsp/el/VariableResolver.java b/java/jakarta/servlet/jsp/el/VariableResolver.java
deleted file mode 100644
index 7f3c3b7a24..0000000000
--- a/java/jakarta/servlet/jsp/el/VariableResolver.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.
- */
-package jakarta.servlet.jsp.el;
-
-/**
- * <p>
- * This class is used to customize the way an ExpressionEvaluator resolves
- * variable references at evaluation time. For example, instances of this class
- * can implement their own variable lookup mechanisms, or introduce the notion
- * of "implicit variables" which override any other variables. An instance of
- * this class should be passed when evaluating an expression.
- * </p>
- * <p>
- * An instance of this class includes the context against which resolution will
- * happen
- * </p>
- *
- * @since JSP 2.0
- * @deprecated As of JSP 2.1, replaced by jakarta.el.ELResolver
- */
-@Deprecated
-public interface VariableResolver {
-
-    /**
-     * Resolves the specified variable. Returns null if the variable is not
-     * found.
-     *
-     * @param pName
-     *            the name of the variable to resolve
-     * @return the result of the variable resolution
-     * @throws ELException
-     *             if a failure occurred while trying to resolve the given
-     *             variable
-     */
-    public Object resolveVariable(String pName) throws ELException;
-}
diff --git a/java/jakarta/servlet/jsp/el/package.html b/java/jakarta/servlet/jsp/el/package.html
deleted file mode 100644
index 38618f391b..0000000000
--- a/java/jakarta/servlet/jsp/el/package.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-<head>
-<!--
- 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.
--->
-</head>
-<body bgcolor="white">
-
-Classes and interfaces for the JSP 2.0 Expression Language API.
-
-<p>
-The JavaServer Pages(tm) (JSP) 2.0 specification provides a portable
-API for evaluating "EL Expressions".  As of JSP 2.0, EL expressions can
-be placed directly in the template text of JSP pages and tag files.
-<p>
-This package contains a number of classes and interfaces that describe
-and define programmatic access to the Expression Language evaluator.
-This API can also be used by an implementation of JSP to evaluate the
-expressions, but other implementations, like open-coding into Java
-bytecodes, are allowed.  This package is intended to have no dependencies
-on other portions of the JSP 2.0 specification.
-</body>
-</html>
diff --git a/java/jakarta/servlet/jsp/tagext/BodyTag.java b/java/jakarta/servlet/jsp/tagext/BodyTag.java
index abee1c1c38..f1b5d0720d 100644
--- a/java/jakarta/servlet/jsp/tagext/BodyTag.java
+++ b/java/jakarta/servlet/jsp/tagext/BodyTag.java
@@ -100,17 +100,6 @@ import jakarta.servlet.jsp.JspException;
  */
 public interface BodyTag extends IterationTag {
 
-    /**
-     * Deprecated constant that has the same value as EVAL_BODY_BUFFERED and
-     * EVAL_BODY_AGAIN. This name has been marked as deprecated to encourage the
-     * use of the two different terms, which are much more descriptive.
-     *
-     * @deprecated As of Java JSP API 1.2, use BodyTag.EVAL_BODY_BUFFERED or
-     *             IterationTag.EVAL_BODY_AGAIN.
-     */
-    @Deprecated
-    public static final int EVAL_BODY_TAG = 2;
-
     /**
      * Request the creation of new buffer, a BodyContent on which to evaluate
      * the body of this tag. Returned from doStartTag when it implements
diff --git a/java/jakarta/servlet/jsp/tagext/IterationTag.java b/java/jakarta/servlet/jsp/tagext/IterationTag.java
index 65413b7acc..252fdbe510 100644
--- a/java/jakarta/servlet/jsp/tagext/IterationTag.java
+++ b/java/jakarta/servlet/jsp/tagext/IterationTag.java
@@ -77,12 +77,7 @@ public interface IterationTag extends Tag {
     /**
      * Request the reevaluation of some body.
      * Returned from doAfterBody.
-     *
-     * For compatibility with JSP 1.1, the value is carefully selected
-     * to be the same as the, now deprecated, BodyTag.EVAL_BODY_TAG,
-     *
      */
-
     public static final int EVAL_BODY_AGAIN = 2;
 
     /**


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


[tomcat] 01/08: Next JSP version will be 4.0

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

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

commit 1ed8c3e8f70009a5700a416da88c4c81575eda14
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Oct 19 11:47:02 2022 +0100

    Next JSP version will be 4.0
    
    Still need updated schema
---
 RELEASE-NOTES                                            | 2 +-
 build.xml                                                | 4 ++--
 java/org/apache/catalina/connector/CoyoteAdapter.java    | 2 +-
 java/org/apache/jasper/Constants.java                    | 2 +-
 java/org/apache/jasper/compiler/Generator.java           | 2 +-
 java/org/apache/jasper/compiler/Validator.java           | 2 +-
 java/org/apache/jasper/resources/LocalStrings.properties | 2 +-
 webapps/docs/appdev/deployment.xml                       | 2 +-
 webapps/docs/appdev/introduction.xml                     | 4 ++--
 webapps/docs/class-loader-howto.xml                      | 2 +-
 webapps/docs/index.xml                                   | 8 ++++----
 webapps/docs/project.xml                                 | 2 +-
 12 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 3d648e79bc..c9233daa55 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -77,7 +77,7 @@ for use by web applications (by placing them in "lib"):
 * el-api.jar (EL 5.0 API)
 * jasper.jar (Jasper 2 Compiler and Runtime)
 * jasper-el.jar (Jasper 2 EL implementation)
-* jsp-api.jar (JSP 3.1 API)
+* jsp-api.jar (JSP 4.0 API)
 * servlet-api.jar (Servlet 6.0 API)
 * tomcat-api.jar (Interfaces shared by Catalina and Jasper)
 * tomcat-coyote.jar (Tomcat connectors and utility classes)
diff --git a/build.xml b/build.xml
index e49889674e..d2dda8f60d 100644
--- a/build.xml
+++ b/build.xml
@@ -59,8 +59,8 @@
   <!-- Exact spec versions (for the manifests etc.) -->
   <property name="servlet.spec.version"    value="6.0" />
   <property name="servlet.revision"        value="" />
-  <property name="jsp.spec.version"        value="3.1" />
-  <property name="jsp.revision"            value="" />
+  <property name="jsp.spec.version"        value="4.0" />
+  <property name="jsp.revision"            value="-SNAPSHOT" />
   <property name="el.spec.version"         value="5.0" />
   <property name="el.revision"             value="" />
   <property name="websocket.spec.version"  value="2.1" />
diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java
index 79cff350f0..2d421430fd 100644
--- a/java/org/apache/catalina/connector/CoyoteAdapter.java
+++ b/java/org/apache/catalina/connector/CoyoteAdapter.java
@@ -68,7 +68,7 @@ public class CoyoteAdapter implements Adapter {
 
     // -------------------------------------------------------------- Constants
 
-    private static final String POWERED_BY = "Servlet/6.0 JSP/3.1 " +
+    private static final String POWERED_BY = "Servlet/6.0 JSP/4.0 " +
             "(" + ServerInfo.getServerInfo() + " Java/" +
             System.getProperty("java.vm.vendor") + "/" +
             System.getProperty("java.runtime.version") + ")";
diff --git a/java/org/apache/jasper/Constants.java b/java/org/apache/jasper/Constants.java
index ec17ceadb3..7a5f736e8c 100644
--- a/java/org/apache/jasper/Constants.java
+++ b/java/org/apache/jasper/Constants.java
@@ -30,7 +30,7 @@ import java.util.List;
  */
 public class Constants {
 
-    public static final String SPEC_VERSION = "3.1";
+    public static final String SPEC_VERSION = "4.0";
 
     /**
      * These classes/packages are automatically imported by the
diff --git a/java/org/apache/jasper/compiler/Generator.java b/java/org/apache/jasper/compiler/Generator.java
index 41c8feb67a..af6f9fc1af 100644
--- a/java/org/apache/jasper/compiler/Generator.java
+++ b/java/org/apache/jasper/compiler/Generator.java
@@ -833,7 +833,7 @@ class Generator {
         out.println(");");
 
         if (ctxt.getOptions().isXpoweredBy()) {
-            out.printil("response.addHeader(\"X-Powered-By\", \"JSP/3.1\");");
+            out.printil("response.addHeader(\"X-Powered-By\", \"JSP/4.0\");");
         }
 
         out.printil("pageContext = _jspxFactory.getPageContext(this, request, response,");
diff --git a/java/org/apache/jasper/compiler/Validator.java b/java/org/apache/jasper/compiler/Validator.java
index fea0b38660..8bf352e97e 100644
--- a/java/org/apache/jasper/compiler/Validator.java
+++ b/java/org/apache/jasper/compiler/Validator.java
@@ -551,7 +551,7 @@ class Validator {
             if (!version.equals("1.2") && !version.equals("2.0") &&
                     !version.equals("2.1") && !version.equals("2.2") &&
                     !version.equals("2.3") && !version.equals("3.0") &&
-                    !version.equals("3.1")) {
+                    !version.equals("3.1") && !version.equals("4.0")) {
                 err.jspError(n, "jsp.error.jsproot.version.invalid", version);
             }
             visitBody(n);
diff --git a/java/org/apache/jasper/resources/LocalStrings.properties b/java/org/apache/jasper/resources/LocalStrings.properties
index 35c192f240..eda546595f 100644
--- a/java/org/apache/jasper/resources/LocalStrings.properties
+++ b/java/org/apache/jasper/resources/LocalStrings.properties
@@ -107,7 +107,7 @@ jsp.error.jspoutput.doctypenamesystem=&lt;jsp:output&gt;: 'doctype-root-element'
 jsp.error.jspoutput.doctypepublicsystem=&lt;jsp:output&gt;: 'doctype-system' attribute must appear if 'doctype-public' attribute appears
 jsp.error.jspoutput.invalidUse=&lt;jsp:output&gt; must not be used in standard syntax
 jsp.error.jspoutput.nonemptybody=&lt;jsp:output&gt; must not have a body
-jsp.error.jsproot.version.invalid=Invalid version number: [{0}], must be "1.2", "2.0", "2.1", "2.2", "2.3", "3.0" or "3.1"
+jsp.error.jsproot.version.invalid=Invalid version number: [{0}], must be "1.2", "2.0", "2.1", "2.2", "2.3", "3.0", "3.1" or "4.0"
 jsp.error.jsptext.badcontent='&lt;', when appears in the body of &lt;jsp:text&gt;, must be encapsulated within a CDATA
 jsp.error.lastModified=Unable to determine last modified date for file [{0}]
 jsp.error.library.invalid=JSP page is invalid according to library [{0}]: [{1}]
diff --git a/webapps/docs/appdev/deployment.xml b/webapps/docs/appdev/deployment.xml
index 62aaa9832d..b3685f0765 100644
--- a/webapps/docs/appdev/deployment.xml
+++ b/webapps/docs/appdev/deployment.xml
@@ -136,7 +136,7 @@ drivers that are required for both your application or internal Tomcat use
 <p>Out of the box, a standard Tomcat installation includes a variety
 of pre-installed shared library files, including:</p>
 <ul>
-<li>The <em>Servlet 6.0</em> and <em>JSP 3.1</em> APIs that are fundamental
+<li>The <em>Servlet 6.0</em> and <em>JSP 4.0</em> APIs that are fundamental
     to writing servlets and JSPs.<br/><br/></li>
 </ul>
 
diff --git a/webapps/docs/appdev/introduction.xml b/webapps/docs/appdev/introduction.xml
index 74e4fe0e85..ee856d1fbe 100644
--- a/webapps/docs/appdev/introduction.xml
+++ b/webapps/docs/appdev/introduction.xml
@@ -62,8 +62,8 @@ the details of your particular environment.</p>
 information, documentation, and software that is useful in developing
 web applications with Tomcat.</p>
 <ul>
-<li><p><a href="https://jakarta.ee/specifications/pages/3.1/">https://jakarta.ee/specifications/pages/3.1/</a> -
-    <i>Jakarta Server Pages (JSP), Version 3.1</i>.  Describes
+<li><p><a href="https://jakarta.ee/specifications/pages/4.0/">https://jakarta.ee/specifications/pages/4.0/</a> -
+    <i>Jakarta Server Pages (JSP), Version 4.0</i>.  Describes
     the programming environment provided by standard implementations
     of the Jakarta Server Pages technology.  In conjunction with
     the Servlet API Specification (see below), this document describes
diff --git a/webapps/docs/class-loader-howto.xml b/webapps/docs/class-loader-howto.xml
index 814c0f9bc1..b2fc5b3c6c 100644
--- a/webapps/docs/class-loader-howto.xml
+++ b/webapps/docs/class-loader-howto.xml
@@ -143,7 +143,7 @@ loaders as it is initialized:</p>
     <li><em>el-api.jar</em> &#8212; EL 5.0 API.</li>
     <li><em>jasper.jar</em> &#8212; Tomcat Jasper JSP Compiler and Runtime.</li>
     <li><em>jasper-el.jar</em> &#8212; Tomcat Jasper EL implementation.</li>
-    <li><em>jsp-api.jar</em> &#8212; JSP 3.1 API.</li>
+    <li><em>jsp-api.jar</em> &#8212; JSP 4.0 API.</li>
     <li><em>servlet-api.jar</em> &#8212; Servlet 6.0 API.</li>
     <li><em>tomcat-api.jar</em> &#8212; Several interfaces defined by Tomcat.</li>
     <li><em>tomcat-coyote.jar</em> &#8212; Tomcat connectors and utility classes.</li>
diff --git a/webapps/docs/index.xml b/webapps/docs/index.xml
index 835097d5e6..5febb64ab6 100644
--- a/webapps/docs/index.xml
+++ b/webapps/docs/index.xml
@@ -35,7 +35,7 @@
 
 <p>This is the top-level entry point of the documentation bundle for the
 <strong>Apache Tomcat</strong> Servlet/JSP container.  Apache Tomcat version
-<version-major-minor/> implements the Servlet 6.0 and JavaServer Pages 3.1
+<version-major-minor/> implements the Servlet 6.0 and JavaServer Pages 4.0
 <a href="https://cwiki.apache.org/confluence/display/TOMCAT/Specifications">specifications</a> from
 <a href="https://jakarta.ee/">Jakarta EE</a>, and includes many
 additional features that make it a useful platform for developing and deploying
@@ -170,10 +170,10 @@ are responsible for installing, configuring, and operating an Apache Tomcat serv
     <a href="https://jakarta.ee/specifications/servlet/6.0/apidocs">
     <strong>Javadoc</strong></a>
     </li>
-<li>JSP 3.1
-    <a href="https://jakarta.ee/specifications/pages/3.1/">
+<li>JSP 4.0
+    <a href="https://jakarta.ee/specifications/pages/4.0/">
     <strong>Specification</strong></a> and
-    <a href="https://jakarta.ee/specifications/pages/3.1/apidocs">
+    <a href="https://jakarta.ee/specifications/pages/4.0/apidocs">
     <strong>Javadoc</strong></a>
     </li>
 <li>EL 5.0
diff --git a/webapps/docs/project.xml b/webapps/docs/project.xml
index 42ea6a24df..a538430590 100644
--- a/webapps/docs/project.xml
+++ b/webapps/docs/project.xml
@@ -84,7 +84,7 @@
         <item name="Configuration"         href="config/index.html"/>
         <item name="Tomcat Javadocs"       href="api/index.html"/>
         <item name="Servlet 6.0 Javadocs"  href="servletapi/index.html"/>
-        <item name="JSP 3.1 Javadocs"      href="jspapi/index.html"/>
+        <item name="JSP 4.0 Javadocs"      href="jspapi/index.html"/>
         <item name="EL 5.0 Javadocs"       href="elapi/index.html"/>
         <item name="WebSocket 2.1 Javadocs"
               href="websocketapi/index.html"/>


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


[tomcat] 05/08: Remove jsp:plugin support - align with JSP 4.0

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

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

commit 0b4951cf9d9cc43504554e6abf65c6de0f79df2b
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Oct 19 12:19:37 2022 +0100

    Remove jsp:plugin support - align with JSP 4.0
---
 java/org/apache/jasper/compiler/Collector.java     | 11 ---
 .../apache/jasper/compiler/ELFunctionMapper.java   |  7 --
 java/org/apache/jasper/compiler/Generator.java     |  8 --
 .../apache/jasper/compiler/JspDocumentParser.java  | 25 ------
 java/org/apache/jasper/compiler/Node.java          | 99 ----------------------
 java/org/apache/jasper/compiler/PageDataImpl.java  | 15 ----
 java/org/apache/jasper/compiler/Parser.java        | 81 +-----------------
 java/org/apache/jasper/compiler/SmapUtil.java      |  6 --
 java/org/apache/jasper/compiler/TagConstants.java  |  9 --
 java/org/apache/jasper/compiler/Validator.java     | 64 --------------
 .../jasper/resources/LocalStrings.properties       |  9 +-
 .../jasper/resources/LocalStrings_cs.properties    |  1 -
 .../jasper/resources/LocalStrings_de.properties    |  1 -
 .../jasper/resources/LocalStrings_es.properties    |  9 +-
 .../jasper/resources/LocalStrings_fr.properties    |  9 +-
 .../jasper/resources/LocalStrings_ja.properties    |  9 +-
 .../jasper/resources/LocalStrings_ko.properties    |  9 +-
 .../jasper/resources/LocalStrings_pt_BR.properties |  1 -
 .../jasper/resources/LocalStrings_ru.properties    |  1 -
 .../jasper/resources/LocalStrings_zh_CN.properties |  9 +-
 test/org/apache/jasper/compiler/Dumper.java        | 14 ---
 test/org/apache/jasper/compiler/TestGenerator.java |  5 --
 .../jasper/compiler/TestJspDocumentParser.java     |  7 +-
 .../{document-4.0.jspx => document-4.1.jspx}       |  2 +-
 .../document-4.0.jspx                              |  0
 test/webapp/jsp/generator/attribute-04.jsp         | 13 ---
 test/webapp/jsp/generator/plugin-01.jspx           | 54 ------------
 27 files changed, 14 insertions(+), 464 deletions(-)

diff --git a/java/org/apache/jasper/compiler/Collector.java b/java/org/apache/jasper/compiler/Collector.java
index 9ba669a35f..58c42b82bb 100644
--- a/java/org/apache/jasper/compiler/Collector.java
+++ b/java/org/apache/jasper/compiler/Collector.java
@@ -83,17 +83,6 @@ class Collector {
                 visitBody(n);
         }
 
-        @Override
-        public void visit(Node.PlugIn n) throws JasperException {
-            if (n.getHeight() != null && n.getHeight().isExpression()) {
-                scriptingElementSeen = true;
-            }
-            if (n.getWidth() != null && n.getWidth().isExpression()) {
-                scriptingElementSeen = true;
-            }
-            visitBody(n);
-        }
-
         @Override
         public void visit(Node.CustomTag n) throws JasperException {
             // Check to see what kinds of element we see as child elements
diff --git a/java/org/apache/jasper/compiler/ELFunctionMapper.java b/java/org/apache/jasper/compiler/ELFunctionMapper.java
index 7da9b947f0..a4ad003cee 100644
--- a/java/org/apache/jasper/compiler/ELFunctionMapper.java
+++ b/java/org/apache/jasper/compiler/ELFunctionMapper.java
@@ -113,13 +113,6 @@ public class ELFunctionMapper {
             visitBody(n);
         }
 
-        @Override
-        public void visit(Node.PlugIn n) throws JasperException {
-            doMap(n.getHeight());
-            doMap(n.getWidth());
-            visitBody(n);
-        }
-
         @Override
         public void visit(Node.JspElement n) throws JasperException {
 
diff --git a/java/org/apache/jasper/compiler/Generator.java b/java/org/apache/jasper/compiler/Generator.java
index 158cfb5f1e..d092141d7c 100644
--- a/java/org/apache/jasper/compiler/Generator.java
+++ b/java/org/apache/jasper/compiler/Generator.java
@@ -1523,14 +1523,6 @@ class Generator {
             n.setEndJavaLine(out.getJavaLine());
         }
 
-        @Override
-        public void visit(Node.PlugIn n) throws JasperException {
-
-            // As of JSP 3.1, jsp:plugin must not generate any output
-            n.setBeginJavaLine(out.getJavaLine());
-            n.setEndJavaLine(out.getJavaLine());
-        }
-
         @Override
         public void visit(Node.NamedAttribute n) throws JasperException {
             // Don't visit body of this tag - we already did earlier.
diff --git a/java/org/apache/jasper/compiler/JspDocumentParser.java b/java/org/apache/jasper/compiler/JspDocumentParser.java
index cb8f42df4e..f3ffe9bbbd 100644
--- a/java/org/apache/jasper/compiler/JspDocumentParser.java
+++ b/java/org/apache/jasper/compiler/JspDocumentParser.java
@@ -1029,23 +1029,6 @@ class JspDocumentParser
                     taglibAttrs,
                     start,
                     current);
-        } else if (localName.equals(PARAMS_ACTION)) {
-            node =
-                new Node.ParamsAction(
-                    qName,
-                    nonTaglibXmlnsAttrs,
-                    taglibAttrs,
-                    start,
-                    current);
-        } else if (localName.equals(PLUGIN_ACTION)) {
-            node =
-                new Node.PlugIn(
-                    qName,
-                    nonTaglibAttrs,
-                    nonTaglibXmlnsAttrs,
-                    taglibAttrs,
-                    start,
-                    current);
         } else if (localName.equals(TEXT_ACTION)) {
             node =
                 new Node.JspText(
@@ -1174,14 +1157,6 @@ class JspDocumentParser
                     taglibAttrs,
                     start,
                     current);
-        } else if (localName.equals(FALLBACK_ACTION)) {
-            node =
-                new Node.FallBackAction(
-                    qName,
-                    nonTaglibXmlnsAttrs,
-                    taglibAttrs,
-                    start,
-                    current);
         } else {
             throw new SAXParseException(
                 Localizer.getMessage(
diff --git a/java/org/apache/jasper/compiler/Node.java b/java/org/apache/jasper/compiler/Node.java
index bfa9b60260..d138b55f5b 100644
--- a/java/org/apache/jasper/compiler/Node.java
+++ b/java/org/apache/jasper/compiler/Node.java
@@ -1005,48 +1005,6 @@ abstract class Node implements TagConstants {
         }
     }
 
-    /**
-     * Represents a params action
-     */
-    public static class ParamsAction extends Node {
-
-        public ParamsAction(Mark start, Node parent) {
-            this(JSP_PARAMS_ACTION, null, null, start, parent);
-        }
-
-        public ParamsAction(String qName, Attributes nonTaglibXmlnsAttrs,
-                Attributes taglibAttrs, Mark start, Node parent) {
-            super(qName, PARAMS_ACTION, null, nonTaglibXmlnsAttrs, taglibAttrs,
-                    start, parent);
-        }
-
-        @Override
-        public void accept(Visitor v) throws JasperException {
-            v.visit(this);
-        }
-    }
-
-    /**
-     * Represents a fallback action
-     */
-    public static class FallBackAction extends Node {
-
-        public FallBackAction(Mark start, Node parent) {
-            this(JSP_FALLBACK_ACTION, null, null, start, parent);
-        }
-
-        public FallBackAction(String qName, Attributes nonTaglibXmlnsAttrs,
-                Attributes taglibAttrs, Mark start, Node parent) {
-            super(qName, FALLBACK_ACTION, null, nonTaglibXmlnsAttrs,
-                    taglibAttrs, start, parent);
-        }
-
-        @Override
-        public void accept(Visitor v) throws JasperException {
-            v.visit(this);
-        }
-    }
-
     /**
      * Represents an include action
      */
@@ -1197,48 +1155,6 @@ abstract class Node implements TagConstants {
         }
     }
 
-    /**
-     * Represents a plugin action
-     */
-    public static class PlugIn extends Node {
-
-        private JspAttribute width;
-
-        private JspAttribute height;
-
-        public PlugIn(Attributes attrs, Mark start, Node parent) {
-            this(JSP_PLUGIN_ACTION, attrs, null, null, start, parent);
-        }
-
-        public PlugIn(String qName, Attributes attrs,
-                Attributes nonTaglibXmlnsAttrs, Attributes taglibAttrs,
-                Mark start, Node parent) {
-            super(qName, PLUGIN_ACTION, attrs, nonTaglibXmlnsAttrs,
-                    taglibAttrs, start, parent);
-        }
-
-        @Override
-        public void accept(Visitor v) throws JasperException {
-            v.visit(this);
-        }
-
-        public void setHeight(JspAttribute height) {
-            this.height = height;
-        }
-
-        public void setWidth(JspAttribute width) {
-            this.width = width;
-        }
-
-        public JspAttribute getHeight() {
-            return height;
-        }
-
-        public JspAttribute getWidth() {
-            return width;
-        }
-    }
-
     /**
      * Represents an uninterpreted tag, from a Jsp document
      */
@@ -2519,26 +2435,11 @@ abstract class Node implements TagConstants {
             visitBody(n);
         }
 
-        public void visit(ParamsAction n) throws JasperException {
-            doVisit(n);
-            visitBody(n);
-        }
-
-        public void visit(FallBackAction n) throws JasperException {
-            doVisit(n);
-            visitBody(n);
-        }
-
         public void visit(UseBean n) throws JasperException {
             doVisit(n);
             visitBody(n);
         }
 
-        public void visit(PlugIn n) throws JasperException {
-            doVisit(n);
-            visitBody(n);
-        }
-
         public void visit(CustomTag n) throws JasperException {
             doVisit(n);
             visitBody(n);
diff --git a/java/org/apache/jasper/compiler/PageDataImpl.java b/java/org/apache/jasper/compiler/PageDataImpl.java
index 4b9a3df5fa..0fd952a4a5 100644
--- a/java/org/apache/jasper/compiler/PageDataImpl.java
+++ b/java/org/apache/jasper/compiler/PageDataImpl.java
@@ -364,26 +364,11 @@ class PageDataImpl extends PageData implements TagConstants {
             appendTag(n);
         }
 
-        @Override
-    public void visit(Node.ParamsAction n) throws JasperException {
-            appendTag(n);
-        }
-
-        @Override
-    public void visit(Node.FallBackAction n) throws JasperException {
-            appendTag(n);
-        }
-
         @Override
     public void visit(Node.UseBean n) throws JasperException {
             appendTag(n);
         }
 
-        @Override
-    public void visit(Node.PlugIn n) throws JasperException {
-            appendTag(n);
-        }
-
         @Override
         public void visit(Node.NamedAttribute n) throws JasperException {
             appendTag(n);
diff --git a/java/org/apache/jasper/compiler/Parser.java b/java/org/apache/jasper/compiler/Parser.java
index c05ce36979..3d4714daaa 100644
--- a/java/org/apache/jasper/compiler/Parser.java
+++ b/java/org/apache/jasper/compiler/Parser.java
@@ -70,9 +70,6 @@ class Parser implements TagConstants {
     private static final String JAVAX_BODY_CONTENT_PARAM =
         "JAVAX_BODY_CONTENT_PARAM";
 
-    private static final String JAVAX_BODY_CONTENT_PLUGIN =
-        "JAVAX_BODY_CONTENT_PLUGIN";
-
     private static final String JAVAX_BODY_CONTENT_TEMPLATE_TEXT =
         "JAVAX_BODY_CONTENT_TEMPLATE_TEXT";
 
@@ -971,7 +968,7 @@ class Parser implements TagConstants {
     }
 
     /*
-     * Parses OptionalBody, but also reused to parse bodies for plugin and param
+     * Parses OptionalBody, but also reused to parse bodies for param
      * since the syntax is identical (the only thing that differs substantially
      * is how to process the body, and thus we accept the body type as a
      * parameter).
@@ -1056,64 +1053,6 @@ class Parser implements TagConstants {
         return result;
     }
 
-    /*
-     * Params ::= `>' S? ( ( `<jsp:body>' ( ( S? Param+ S? `</jsp:body>' ) |
-     * <TRANSLATION_ERROR> ) ) | Param+ ) '</jsp:params>'
-     */
-    private void parseJspParams(Node parent) throws JasperException {
-        Node jspParamsNode = new Node.ParamsAction(start, parent);
-        parseOptionalBody(jspParamsNode, "jsp:params", JAVAX_BODY_CONTENT_PARAM);
-    }
-
-    /*
-     * Fallback ::= '/>' | ( `>' S? `<jsp:body>' ( ( S? ( Char* - ( Char* `</jsp:body>' ) ) `</jsp:body>'
-     * S? ) | <TRANSLATION_ERROR> ) `</jsp:fallback>' ) | ( '>' ( Char* - (
-     * Char* '</jsp:fallback>' ) ) '</jsp:fallback>' )
-     */
-    private void parseFallBack(Node parent) throws JasperException {
-        Node fallBackNode = new Node.FallBackAction(start, parent);
-        parseOptionalBody(fallBackNode, "jsp:fallback",
-                JAVAX_BODY_CONTENT_TEMPLATE_TEXT);
-    }
-
-    /*
-     * For Plugin: StdActionContent ::= Attributes PluginBody
-     *
-     * PluginBody ::= EmptyBody | ( '>' S? ( '<jsp:attribute' NamedAttributes )? '<jsp:body' (
-     * JspBodyPluginTags | <TRANSLATION_ERROR> ) S? ETag ) | ( '>' S? PluginTags
-     * ETag )
-     *
-     * EmptyBody ::= '/>' | ( '>' ETag ) | ( '>' S? '<jsp:attribute'
-     * NamedAttributes ETag )
-     *
-     */
-    private void parsePlugin(Node parent) throws JasperException {
-        Attributes attrs = parseAttributes();
-        reader.skipSpaces();
-
-        Node pluginNode = new Node.PlugIn(attrs, start, parent);
-
-        parseOptionalBody(pluginNode, "jsp:plugin", JAVAX_BODY_CONTENT_PLUGIN);
-    }
-
-    /*
-     * PluginTags ::= ( '<jsp:params' Params S? )? ( '<jsp:fallback' Fallback?
-     * S? )?
-     */
-    private void parsePluginTags(Node parent) throws JasperException {
-        reader.skipSpaces();
-
-        if (reader.matches("<jsp:params")) {
-            parseJspParams(parent);
-            reader.skipSpaces();
-        }
-
-        if (reader.matches("<jsp:fallback")) {
-            parseFallBack(parent);
-            reader.skipSpaces();
-        }
-    }
-
     /*
      * StandardAction ::= 'include' StdActionContent | 'forward'
      * StdActionContent | 'invoke' StdActionContent | 'doBody' StdActionContent |
@@ -1146,18 +1085,12 @@ class Parser implements TagConstants {
             parseSetProperty(parent);
         } else if (reader.matches(USE_BEAN_ACTION)) {
             parseUseBean(parent);
-        } else if (reader.matches(PLUGIN_ACTION)) {
-            parsePlugin(parent);
         } else if (reader.matches(ELEMENT_ACTION)) {
             parseElement(parent);
         } else if (reader.matches(ATTRIBUTE_ACTION)) {
             err.jspError(start, "jsp.error.namedAttribute.invalidUse");
         } else if (reader.matches(BODY_ACTION)) {
             err.jspError(start, "jsp.error.jspbody.invalidUse");
-        } else if (reader.matches(FALLBACK_ACTION)) {
-            err.jspError(start, "jsp.error.fallback.invalidUse");
-        } else if (reader.matches(PARAMS_ACTION)) {
-            err.jspError(start, "jsp.error.params.invalidUse");
         } else if (reader.matches(PARAM_ACTION)) {
             err.jspError(start, "jsp.error.param.invalidUse");
         } else if (reader.matches(OUTPUT_ACTION)) {
@@ -1651,14 +1584,6 @@ class Parser implements TagConstants {
                 err.jspError(start, "jasper.error.emptybodycontent.nonempty",
                         tag);
             }
-        } else if (bodyType == JAVAX_BODY_CONTENT_PLUGIN) {
-            // (note the == since we won't recognize JAVAX_*
-            // from outside this module).
-            parsePluginTags(parent);
-            if (!reader.matchesETag(tag)) {
-                err.jspError(reader.mark(), "jsp.error.unterminated", "&lt;"
-                        + tag);
-            }
         } else if (bodyType.equalsIgnoreCase(TagInfo.BODY_CONTENT_JSP)
                 || bodyType.equalsIgnoreCase(TagInfo.BODY_CONTENT_SCRIPTLESS)
                 || (bodyType == JAVAX_BODY_CONTENT_PARAM)
@@ -1770,10 +1695,6 @@ class Parser implements TagConstants {
             if ("beanName".equals(name)) {
                 return TagInfo.BODY_CONTENT_JSP;
             }
-        } else if (n instanceof Node.PlugIn) {
-            if ("width".equals(name) || "height".equals(name)) {
-                return TagInfo.BODY_CONTENT_JSP;
-            }
         } else if (n instanceof Node.ParamAction) {
             if ("value".equals(name)) {
                 return TagInfo.BODY_CONTENT_JSP;
diff --git a/java/org/apache/jasper/compiler/SmapUtil.java b/java/org/apache/jasper/compiler/SmapUtil.java
index c3e5b4c14e..281abdea04 100644
--- a/java/org/apache/jasper/compiler/SmapUtil.java
+++ b/java/org/apache/jasper/compiler/SmapUtil.java
@@ -529,12 +529,6 @@ public class SmapUtil {
             visitBody(n);
         }
 
-        @Override
-        public void visit(Node.PlugIn n) throws JasperException {
-            doSmap(n);
-            visitBody(n);
-        }
-
         @Override
         public void visit(Node.CustomTag n) throws JasperException {
             doSmap(n);
diff --git a/java/org/apache/jasper/compiler/TagConstants.java b/java/org/apache/jasper/compiler/TagConstants.java
index 88157a171e..25564ffac4 100644
--- a/java/org/apache/jasper/compiler/TagConstants.java
+++ b/java/org/apache/jasper/compiler/TagConstants.java
@@ -58,15 +58,6 @@ public interface TagConstants {
     public static final String PARAM_ACTION = "param";
     public static final String JSP_PARAM_ACTION = "jsp:param";
 
-    public static final String PARAMS_ACTION = "params";
-    public static final String JSP_PARAMS_ACTION = "jsp:params";
-
-    public static final String PLUGIN_ACTION = "plugin";
-    public static final String JSP_PLUGIN_ACTION = "jsp:plugin";
-
-    public static final String FALLBACK_ACTION = "fallback";
-    public static final String JSP_FALLBACK_ACTION = "jsp:fallback";
-
     public static final String TEXT_ACTION = "text";
     public static final String JSP_TEXT_ACTION = "jsp:text";
     public static final String JSP_TEXT_ACTION_END = "</jsp:text>";
diff --git a/java/org/apache/jasper/compiler/Validator.java b/java/org/apache/jasper/compiler/Validator.java
index e6d9ff2074..249460d80f 100644
--- a/java/org/apache/jasper/compiler/Validator.java
+++ b/java/org/apache/jasper/compiler/Validator.java
@@ -483,21 +483,6 @@ class Validator {
                 new JspUtil.ValidAttribute("type"),
                 new JspUtil.ValidAttribute("beanName", false) };
 
-        private static final JspUtil.ValidAttribute[] plugInAttrs = {
-                new JspUtil.ValidAttribute("type", true),
-                new JspUtil.ValidAttribute("code", true),
-                new JspUtil.ValidAttribute("codebase"),
-                new JspUtil.ValidAttribute("align"),
-                new JspUtil.ValidAttribute("archive"),
-                new JspUtil.ValidAttribute("height", false),
-                new JspUtil.ValidAttribute("hspace"),
-                new JspUtil.ValidAttribute("jreversion"),
-                new JspUtil.ValidAttribute("name"),
-                new JspUtil.ValidAttribute("vspace"),
-                new JspUtil.ValidAttribute("width", false),
-                new JspUtil.ValidAttribute("nspluginurl"),
-                new JspUtil.ValidAttribute("iepluginurl") };
-
         private static final JspUtil.ValidAttribute[] attributeAttrs = {
                 new JspUtil.ValidAttribute("name", true),
                 new JspUtil.ValidAttribute("trim"),
@@ -584,16 +569,6 @@ class Validator {
             visitBody(n);
         }
 
-        @Override
-        public void visit(Node.ParamsAction n) throws JasperException {
-            // Make sure we've got at least one nested jsp:param
-            Node.Nodes subElems = n.getBody();
-            if (subElems == null) {
-                err.jspError(n, "jsp.error.params.emptyBody");
-            }
-            visitBody(n);
-        }
-
         @Override
         public void visit(Node.IncludeAction n) throws JasperException {
             JspUtil.checkAttributes("Include action", n, includeActionAttrs,
@@ -679,45 +654,6 @@ class Validator {
             visitBody(n);
         }
 
-        @SuppressWarnings("null") // type can't be null after initial test
-        @Override
-        public void visit(Node.PlugIn n) throws JasperException {
-            JspUtil.checkAttributes("Plugin", n, plugInAttrs, err);
-
-            throwErrorIfExpression(n, "type", "jsp:plugin");
-            throwErrorIfExpression(n, "code", "jsp:plugin");
-            throwErrorIfExpression(n, "codebase", "jsp:plugin");
-            throwErrorIfExpression(n, "align", "jsp:plugin");
-            throwErrorIfExpression(n, "archive", "jsp:plugin");
-            throwErrorIfExpression(n, "hspace", "jsp:plugin");
-            throwErrorIfExpression(n, "jreversion", "jsp:plugin");
-            throwErrorIfExpression(n, "name", "jsp:plugin");
-            throwErrorIfExpression(n, "vspace", "jsp:plugin");
-            throwErrorIfExpression(n, "nspluginurl", "jsp:plugin");
-            throwErrorIfExpression(n, "iepluginurl", "jsp:plugin");
-
-            String type = n.getTextAttribute("type");
-            if (type == null) {
-                err.jspError(n, "jsp.error.plugin.notype");
-            }
-            if (!type.equals("bean") && !type.equals("applet")) {
-                err.jspError(n, "jsp.error.plugin.badtype");
-            }
-            if (n.getTextAttribute("code") == null) {
-                err.jspError(n, "jsp.error.plugin.nocode");
-            }
-
-            Node.JspAttribute width = getJspAttribute(null, "width", null,
-                    null, n.getAttributeValue("width"), n, null, false);
-            n.setWidth(width);
-
-            Node.JspAttribute height = getJspAttribute(null, "height", null,
-                    null, n.getAttributeValue("height"), n, null, false);
-            n.setHeight(height);
-
-            visitBody(n);
-        }
-
         @Override
         public void visit(Node.NamedAttribute n) throws JasperException {
             JspUtil.checkAttributes("Attribute", n, attributeAttrs, err);
diff --git a/java/org/apache/jasper/resources/LocalStrings.properties b/java/org/apache/jasper/resources/LocalStrings.properties
index 9b3817f988..7ade331ca3 100644
--- a/java/org/apache/jasper/resources/LocalStrings.properties
+++ b/java/org/apache/jasper/resources/LocalStrings.properties
@@ -72,7 +72,6 @@ jsp.error.dynamic.attributes.not.implemented=The [{0}] tag declares that it acce
 jsp.error.el.parse=[{0}] : [{1}]
 jsp.error.el.template.deferred=#{...} is not allowed in template text
 jsp.error.el_interpreter_class.instantiation=Failed to load or instantiate ELInterpreter class [{0}]
-jsp.error.fallback.invalidUse=jsp:fallback must be a direct child of jsp:plugin
 jsp.error.file.already.registered=Recursive include of file [{0}]
 jsp.error.file.cannot.read=Cannot read file: [{0}]
 jsp.error.file.not.found=JSP file [{0}] not found
@@ -168,17 +167,12 @@ jsp.error.page.multi.pageencoding=Page directive must not have multiple occurren
 jsp.error.page.noSession=Cannot access session scope in page that does not participate in any session
 jsp.error.page.nullThrowable=Null exception
 jsp.error.page.sessionRequired=Page needs a session and none is available
-jsp.error.param.invalidUse=The jsp:param action must not be used outside the jsp:include, jsp:forward, or jsp:params elements
+jsp.error.param.invalidUse=The jsp:param action must not be used outside the jsp:include or jsp:forward elements
 jsp.error.paramexpected=Expecting "jsp:param" standard action with "name" and "value" attributes
-jsp.error.params.emptyBody=jsp:params must contain at least one nested jsp:param
-jsp.error.params.invalidUse=jsp:params must be a direct child of jsp:plugin
 jsp.error.parse.error.in.TLD=Parse Error in the tag library descriptor: [{0}]
 jsp.error.parse.xml=XML parsing error on file [{0}]
 jsp.error.parse.xml.line=XML parsing error on file [{0}]: (line [{1}], col [{2}])
 jsp.error.parse.xml.scripting.invalid.body=Body of [{0}] element must not contain any XML elements
-jsp.error.plugin.badtype=Illegal value for 'type' attribute in jsp:plugin: must be 'bean' or 'applet'
-jsp.error.plugin.nocode=code not declared in jsp:plugin
-jsp.error.plugin.notype=type not declared in jsp:plugin
 jsp.error.precompilation=Could not precompile JSP [{0}]
 jsp.error.precompilation.parameter=Cannot have precompilation request parameter [{0}] set to [{1}]
 jsp.error.prefix.refined=Attempt to redefine the prefix [{0}] to [{1}], when it was already defined as [{2}] in the current scope.
@@ -353,7 +347,6 @@ where options include:\n\
 \                          file (default is UTF-8)\n\
 \    -addwebxmlmappings    Merge generated web.xml fragment into the web.xml file of the\n\
 \                          web-app, whose JSP pages we are processing\n\
-\    -ieplugin <clsid>     Java Plugin classid for Internet Explorer\n\
 \    -classpath <path>     Overrides java.class.path system property\n\
 \    -xpoweredBy           Add X-Powered-By response header\n\
 \    -trimSpaces [single]  Remove template text that consists entirely of whitespace\n\
diff --git a/java/org/apache/jasper/resources/LocalStrings_cs.properties b/java/org/apache/jasper/resources/LocalStrings_cs.properties
index 6293b1347e..c5224d28d7 100644
--- a/java/org/apache/jasper/resources/LocalStrings_cs.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_cs.properties
@@ -21,7 +21,6 @@ jsp.error.attribute.noequal=jsou očekávány stejné symboly
 jsp.error.attribute.nowhitespace=JSP specifikace vyžaduje jméno atributu s úvodní mezerou
 jsp.error.data.file.processing=Chyba při zpracování souboru [{0}]
 jsp.error.el.template.deferred=#{...} není dovoleno v textu šablony
-jsp.error.fallback.invalidUse=jsp:fallback musí být přímý potomek jsp:plugin
 jsp.error.invalid.tagdir=Adresář tag souborů [{0}] nezačíná "/WEB-INF/tags"
 jsp.error.invalid.version=Neplatná verze JSP definovaná pro souboru tagů na [{0}]
 jsp.error.ise_on_clear=Nedovolené volání metody clear(), když velikost buffer == 0
diff --git a/java/org/apache/jasper/resources/LocalStrings_de.properties b/java/org/apache/jasper/resources/LocalStrings_de.properties
index 178e53b93e..aad46a9393 100644
--- a/java/org/apache/jasper/resources/LocalStrings_de.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_de.properties
@@ -27,7 +27,6 @@ jsp.error.compilation.source=Fehler beim Laden der Quelldatei [{0}]
 jsp.error.compiler=Keine Java-Compiler verfügbar
 jsp.error.data.file.processing=Fehler beim Verarbeiten der Datei [{0}]
 jsp.error.el.template.deferred=#{...} is im Template Text nicht erlaubt
-jsp.error.fallback.invalidUse=jsp:fallback muss ein direktes Kind von jsp:plugin sein
 jsp.error.file.not.found=Datei [{0}] nicht gefunden
 jsp.error.internal.filenotfound=Interner Fehler: Datei [{0}] nicht gefunden
 jsp.error.invalid.attribute=[{0}] hat ein ungültiges Attribut: [{1}]
diff --git a/java/org/apache/jasper/resources/LocalStrings_es.properties b/java/org/apache/jasper/resources/LocalStrings_es.properties
index 94f453a210..6e038f06f0 100644
--- a/java/org/apache/jasper/resources/LocalStrings_es.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_es.properties
@@ -64,7 +64,6 @@ jsp.error.dynamic.attributes.not.implemented=El tag [{0}] declara que acepta atr
 jsp.error.el.parse=[{0}] : [{1}]
 jsp.error.el.template.deferred=#{..} no está permitido en texto de plantilla
 jsp.error.el_interpreter_class.instantiation=No se puede cargar la clase ELInterpreter llamada [{0}]
-jsp.error.fallback.invalidUse=jsp:fallback debe de ser un hijo directo de jsp:plugin
 jsp.error.file.already.registered=El archivo [{0}] ya se ha visto, ¿podría ser un include recursivo?
 jsp.error.file.cannot.read=No se puede leer el archivo: [{0}]
 jsp.error.file.not.found=Archivo JSP [{0}] no encontrado
@@ -148,17 +147,12 @@ jsp.error.page.invalid.trimdirectivewhitespaces=Directiva de página: valor inv
 jsp.error.page.language.nonjava=Directiva Page: atributo language incorrecto
 jsp.error.page.multi.pageencoding=La directiva Page no debe de tener múltiples ocurrencias de pageencoding
 jsp.error.page.noSession=No puedo acceder al ámbito de sesión en una página que no participa en una sesión
-jsp.error.param.invalidUse=La acción jsp:param no debe de ser usada fuera de los elementos jsp:include, jsp:forward o jsp:params
+jsp.error.param.invalidUse=La acción jsp:param no debe de ser usada fuera de los elementos jsp:include o jsp:forward
 jsp.error.paramexpected=El tag "param" era esperado con los atributos "name" y "value" después del tag "params".
-jsp.error.params.emptyBody=jsp:params debe de contener al menos un jsp:param anidado
-jsp.error.params.invalidUse=jsp:params debe de ser un hijo directo de jsp:plugin
 jsp.error.parse.error.in.TLD=Error de análisis en el descriptor de biblioteca de tags: [{0}]
 jsp.error.parse.xml=Error de análisis XML en archivo [{0}]
 jsp.error.parse.xml.line=Error de análisis XML en archivo [{0}]: (línea [{1}], col [{2}])
 jsp.error.parse.xml.scripting.invalid.body=El cuerpo de elemento [{0}] no debe de contener elementos XML
-jsp.error.plugin.badtype=Valor ilegal para atributo 'type' en jsp:plugin: debe de ser 'bean' o 'applet'
-jsp.error.plugin.nocode=Código no declarado en jsp:plugin
-jsp.error.plugin.notype=Tipo no declarado en jsp:plugin
 jsp.error.prefix.refined=Intento de redefinir el prefijo [{0}] por [{1}], cuando ya estaba definido como [{2}] en el ámbito en curso.
 jsp.error.prefix.use_before_dcl=El prefijo [{0}] especificado en esta directiva de marca ha sido usado previamente mediante un fichero de acción [{1}] línea [{2}].
 jsp.error.prolog_config_encoding_mismatch=El Page-encoding especificado en XML prolog [{0}] difiere del especificado en jsp-property-group [{1}]
@@ -288,7 +282,6 @@ y donde <opciones> incluyen:\n\
 \                          file (default is UTF-8)\n\
 \    -addwebxmlmappings    Merge generated web.xml fragment into the web.xml file of the\n\
 \                          web-app, whose JSP pages we are processing\n\
-\    -ieplugin <clsid>     Java Plugin classid para Internet Explorer\n\
 \    -classpath <path>     Pasa por alto la propiedad de sistema java.class.path\n\
 \    -xpoweredBy           Añade cabecera de respuesta  X-Powered-By\n\
 \    -trimSpaces [single]  Remove template text that consists entirely of whitespace\n\
diff --git a/java/org/apache/jasper/resources/LocalStrings_fr.properties b/java/org/apache/jasper/resources/LocalStrings_fr.properties
index 5e4bbf1cb4..f65e6a6bf3 100644
--- a/java/org/apache/jasper/resources/LocalStrings_fr.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_fr.properties
@@ -72,7 +72,6 @@ jsp.error.dynamic.attributes.not.implemented=Le tag [{0}] indique qu''il accepte
 jsp.error.el.parse=[{0}] : [{1}]
 jsp.error.el.template.deferred=#{...} n'est pas admis dans le texte d'un modèle (template)
 jsp.error.el_interpreter_class.instantiation=Impossible de charger ou d''instancier la classe ELInterpreter [{0}]
-jsp.error.fallback.invalidUse=jsp:fallback doit être un enfant direct de jsp:plugin
 jsp.error.file.already.registered=Inclusion récursive du fichier [{0}]
 jsp.error.file.cannot.read=Impossible de lire le fichier : [{0}]
 jsp.error.file.not.found=Le fichier [{0}] n''a pas été trouvé
@@ -167,17 +166,12 @@ jsp.error.page.multi.pageencoding=La directive de page ne doit pas avoir plusieu
 jsp.error.page.noSession=Impossible d'accéder à la portée session de la page car elle n'a pas de session asoociée
 jsp.error.page.nullThrowable=L'exception est null
 jsp.error.page.sessionRequired=La page nécessite une session et aucune n'est disponible
-jsp.error.param.invalidUse=L'action jsp:param ne peut pas être utilisée en dehors d'éléments jsp:include, jsp:forward ou jsp:params
+jsp.error.param.invalidUse=L'action jsp:param ne peut pas être utilisée en dehors d'éléments jsp:include ou jsp:forward
 jsp.error.paramexpected=Le tag "param" est attendu avec les attributs "name" et "value" après le tag "params".
-jsp.error.params.emptyBody=jsp:params doit inclure au moins un jsp:param
-jsp.error.params.invalidUse=jsp:params doit être directement inclus dans jsp:plugin
 jsp.error.parse.error.in.TLD=Erreur d''évaluation (parse) dans le descripteur de la bibliothèque de tag (TLD) : [{0}]
 jsp.error.parse.xml=Erreur d''évaluation XML sur le fichier [{0}]
 jsp.error.parse.xml.line=Erreur d''évaluation XML sur le fichier  [{0}] : (ligne [{1}], col [{2}])
 jsp.error.parse.xml.scripting.invalid.body=Le corps de l''élément [{0}] ne doit contenir aucun éléments XML
-jsp.error.plugin.badtype=Valeur invalide pour l'attribut 'type' dans jsp:plugin : la valeur doit être 'bean' ou 'applet'
-jsp.error.plugin.nocode=code non déclaré dans jsp:plugin
-jsp.error.plugin.notype=type non déclaré dans jsp:plugin
 jsp.error.precompilation=Impossible de précompiler le JSP [{0}]
 jsp.error.precompilation.parameter=Impossible de définir le paramètre de requête [{0}] pour la précompilation comme [{1}]
 jsp.error.prefix.refined=Tentative de redéfinition du préfixe [{0}] en [{1}] alors qu''il a déjà été défini comme [{2}] dans la portée actuelle
@@ -353,7 +347,6 @@ et où les options sont :\n\
 \                          web.xml (par défaut UTF-8)\n\
 \    -addwebxmlmappings    Fusionne le fragment de web.xml généré dans le web.xml\n\
 \                          de l'application web dont les pages JSP sont générées\n\
-\    -ieplugin <clsid>     Le classid du Plugin Java pour Internet Explorer\n\
 \    -classpath <path>     Remplace la propriété système java.class.path\n\
 \    -xpoweredBy           Ajoute l'en-tête de réponse X-Powered-By\n\
 \    -trimSpaces [single]  Enlève le texte de base qui est constitué entièrement d'espaces blancs\n\
diff --git a/java/org/apache/jasper/resources/LocalStrings_ja.properties b/java/org/apache/jasper/resources/LocalStrings_ja.properties
index ffa98b1fa6..5ec82f02d5 100644
--- a/java/org/apache/jasper/resources/LocalStrings_ja.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_ja.properties
@@ -73,7 +73,6 @@ jsp.error.dynamic.attributes.not.implemented=[{0}] タグはそれがdynamic属
 jsp.error.el.parse=[{0}] : [{1}]
 jsp.error.el.template.deferred=テンプレート文字列に #{...} を含めることはできません。
 jsp.error.el_interpreter_class.instantiation=ELInterpreter class [{0}] のロードまたはインスタンス化に失敗しました
-jsp.error.fallback.invalidUse=jsp:fallbackはjsp:pluginの直接の子でなければいけません
 jsp.error.file.already.registered=ファイル [{0}] の再帰的な取り込みです
 jsp.error.file.cannot.read=ファイルが読めません: [{0}]
 jsp.error.file.not.found=JSP ファイル [{0}] が見つかりません
@@ -169,17 +168,12 @@ jsp.error.page.multi.pageencoding=Pageディレクティブは複数のpageencod
 jsp.error.page.noSession=セッションに加わっていないページの中ではセッションスコープにアクセスできません
 jsp.error.page.nullThrowable=Null 例外
 jsp.error.page.sessionRequired=ページにセッションが必要であり、none が利用可能です。
-jsp.error.param.invalidUse=jsp:include、jsp:forward、またはjsp:params要素の外でjsp:paramアクションを使用してはいけません
+jsp.error.param.invalidUse=jsp:include、またはjsp:forward要素の外でjsp:paramアクションを使用してはいけません
 jsp.error.paramexpected="name"属性 と "value" 属性を持つ "jsp:param" 標準アクションが必要です
-jsp.error.params.emptyBody=jsp:paramsは少なくとも一つのネストしたjsp:paramを含まねばいけません
-jsp.error.params.invalidUse=jsp:paramsはjsp:pluginの直接の子でなければいけません
 jsp.error.parse.error.in.TLD=タグライブラリ記述子 [{0}] 中の解析エラーです
 jsp.error.parse.xml=ファイル[{0}]のXML解析中のエラー
 jsp.error.parse.xml.line=ファイル[{0}]のXML解析エラー: (行 [{1}], 列 [{2}])
 jsp.error.parse.xml.scripting.invalid.body=[{0}] 要素のボディはXML要素を含んではいけません
-jsp.error.plugin.badtype=jsp:pluginの 'type'属性の値が無効です: 'bean'または'applet'でなければいけません
-jsp.error.plugin.nocode=jsp:pluginでcode属性が宣言されていません
-jsp.error.plugin.notype=jsp:pluginでtype属性が宣言されていません
 jsp.error.precompilation=JSP [{0}]をプリコンパイルできませんでした
 jsp.error.precompilation.parameter=プリコンパイルリクエストパラメータ [{0}] を [{1}] に設定できません
 jsp.error.prefix.refined=プリフィックス [{0}] が現在のスコープ内で既に [{2}] と定義されているので [{1}] に再定義しました
@@ -353,7 +347,6 @@ JSPファイルの場所は次のオプションで指定するか、\n\
 \                          file (default is UTF-8)\n\
 \    -addwebxmlmappings    Merge generated web.xml fragment into the web.xml file of the\n\
 \                          web-app, whose JSP pages we are processing\n\
-\    -ieplugin <clsid>     Internet ExplorerのJava Pluginのclassid\n\
 \    -classpath <path>     java.class.pathシステムプロパティの上書き\n\
 \    -xpoweredBy           X-Powered-Byレスポンスヘッダの追加\n\
 \    -trimSpaces [single]  Remove template text that consists entirely of whitespace\n\
diff --git a/java/org/apache/jasper/resources/LocalStrings_ko.properties b/java/org/apache/jasper/resources/LocalStrings_ko.properties
index 659124848c..3d0f184699 100644
--- a/java/org/apache/jasper/resources/LocalStrings_ko.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_ko.properties
@@ -73,7 +73,6 @@ jsp.error.dynamic.attributes.not.implemented=[{0}] 태그가 동적 속성들을
 jsp.error.el.parse=[{0}] : [{1}]
 jsp.error.el.template.deferred=#{...}은(는) 템플릿 텍스트에서 허용되지 않습니다.
 jsp.error.el_interpreter_class.instantiation=ELInterpreter 클래스 [{0}]을(를) 로드하지 못했거나, 인스턴스를 생성하지 못했습니다.
-jsp.error.fallback.invalidUse=jsp:fallback은 jsp:plugin의 직계 자식 엘리먼트여야 합니다.
 jsp.error.file.already.registered=파일 [{0}]의 재귀적인 include입니다.
 jsp.error.file.cannot.read=파일을 읽을 수 없습니다: [{0}]
 jsp.error.file.not.found=파일 [{0}]을(를) 찾을 수 없습니다.
@@ -166,17 +165,12 @@ jsp.error.page.multi.pageencoding=페이지 지시어는 여러 개의 pageencod
 jsp.error.page.noSession=어떤 세션에도 참여하지 않는 페이지에서 세션 scope에 접근할 수 없습니다.
 jsp.error.page.nullThrowable=널 예외 발생
 jsp.error.page.sessionRequired=페이지는 세션을 필요로 하나, 가용한 세션이 없습니다.
-jsp.error.param.invalidUse=jsp:param 액션은, jsp:include, jsp:forward, 또는 jsp:params 엘리먼트들 외부에서 사용되서는 안됩니다.
+jsp.error.param.invalidUse=jsp:param 액션은, jsp:include, 또는 jsp:forward 엘리먼트들 외부에서 사용되서는 안됩니다.
 jsp.error.paramexpected="name"과 "value" 속성들을 포함한 "jsp:param" 표준 액션이 요구됩니다.
-jsp.error.params.emptyBody=jsp:params는 반드시 적어도 하나 이상의 jsp:param을 포함해야 합니다.
-jsp.error.params.invalidUse=jsp:params는 반드시 jsp:plugin의 직계 자식이어야 합니다.
 jsp.error.parse.error.in.TLD=태그 라이브러리 descriptor 내에서 파싱 오류 발생: [{0}]
 jsp.error.parse.xml=[{0}] 파일에서 XML 파싱 오류 발생
 jsp.error.parse.xml.line=파일 [{0}]에서 XML 파싱 오류 발생: (행: [{1}], 열: [{2}])
 jsp.error.parse.xml.scripting.invalid.body=[{0}] 엘리먼트의 body 내에서는, 반드시 어떠한 XML 엘리먼트들도 포함해서는 안됩니다.
-jsp.error.plugin.badtype=jsp:plugin: 내의 'type' 속성을 위해 불허되는 값입니다. 반드시 'bean' 또는 'applet'이어야 합니다.
-jsp.error.plugin.nocode=jsp:plugin에 code가 선언 안됨
-jsp.error.plugin.notype=jsp:plugin에 type이 선언되지 않았습니다.
 jsp.error.precompilation=JSP [{0}]을(를) 사전 컴파일 할 수 없었습니다.
 jsp.error.precompilation.parameter=사전 컴파일 요청 파라미터 [{0}]을(를) [{1}](으)로 설정할 수 없습니다.
 jsp.error.prefix.refined=현재 범위에서 이미 [{2}](으)로서 정의되어 있는데, prefix를 [{0}]에서 [{1}](으)로 재정의하려는 시도입니다.
@@ -351,7 +345,6 @@ jsp files 아규먼트는 다음과 같음:\n\
 \                          (기본값은 UTF-8)\n\
 \    -addwebxmlmappings    생성된 web.xml fragment를 우리가 처리하고 있는 JSP 페이지들이 처리된\n\
 \                          해당 web-app의 web.xml 에 병합함.\n\
-\    -ieplugin <clsid>     Internet Explorer를 위한 자바 플러그인 classid\n\
 \    -classpath <path>     java.class.path 시스템 프로퍼티를 오버라이드\n\
 \    -xpoweredBy           X-Powered-By 응답 헤더를 추가\n\
 \    -trimSpaces [single]  전적으로 공백 문자열로 이루어진 템플릿 텍스트를 제거\n\
diff --git a/java/org/apache/jasper/resources/LocalStrings_pt_BR.properties b/java/org/apache/jasper/resources/LocalStrings_pt_BR.properties
index f504b8f067..58de142979 100644
--- a/java/org/apache/jasper/resources/LocalStrings_pt_BR.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_pt_BR.properties
@@ -16,7 +16,6 @@
 jsp.error.attribute.nowhitespace=A especificação JSP requer que o nome de atributo seja precedido por um espaço em branco
 jsp.error.data.file.processing=Erro a processar arquivo [{0}]
 jsp.error.el.template.deferred=#{...} não é permitido no texto do template
-jsp.error.fallback.invalidUse=jsp:fallback precisa ser um filho direto do jsp:plugin
 jsp.error.no.scriptlets=Elementos de script ( &lt;%!, &lt;jsp:declaration, &lt;%=, &lt;jsp:expression, &lt;%, &lt;jsp:scriptlet ) não são permitidos aqui.
 jsp.error.not.in.template=[{0}] não é permitido  no template do texto do body
 jsp.error.outputfolder=Sem diretório de saída
diff --git a/java/org/apache/jasper/resources/LocalStrings_ru.properties b/java/org/apache/jasper/resources/LocalStrings_ru.properties
index 63f68a8f6d..ee779150d7 100644
--- a/java/org/apache/jasper/resources/LocalStrings_ru.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_ru.properties
@@ -19,7 +19,6 @@ jsp.error.attribute.deferredmix=Невозможно использовать о
 jsp.error.attribute.noequal=Необходим символ равенства
 jsp.error.data.file.processing=Ошибка при обработке файла [{0}]
 jsp.error.el.template.deferred=#{...}  не допускается в тексте шаблона
-jsp.error.fallback.invalidUse=jsp:fallback должен быть прямым потомком jsp:plugin
 jsp.error.invalid.tagdir=Директория файла тегов [{0}]  не начинается с "/WEB-INF/tags"
 jsp.error.jspbody.required=Для указания тела тега для [{0}] должно быть использовано jsp: body если используется jsp: attribute.
 jsp.error.jspelement.missing.name=Обязательный атрибут 'name' в XML-стиле отсутствует
diff --git a/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties b/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
index ab341603ce..3665f3042b 100644
--- a/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
@@ -72,7 +72,6 @@ jsp.error.dynamic.attributes.not.implemented=[{0}]标记声明它接受动态属
 jsp.error.el.parse=[{0}]:[{1}]
 jsp.error.el.template.deferred=#{...} 不允许出现在模板文本中
 jsp.error.el_interpreter_class.instantiation=加载或实例化ELInterpreter类[{0}]失败
-jsp.error.fallback.invalidUse=jsp:fallback必须是jsp:plugin的直接子代
 jsp.error.file.already.registered=文件[{0}]的递归包含
 jsp.error.file.cannot.read=无法读取文件 [{0}]
 jsp.error.file.not.found=文.件[{0}] 未找到
@@ -166,17 +165,12 @@ jsp.error.page.multi.pageencoding=页指令不能有多次出现的页编码
 jsp.error.page.noSession=无法访问不参与任何会话的页中的会话作用域
 jsp.error.page.nullThrowable=空异常
 jsp.error.page.sessionRequired=页面需要会话,但没有可用的会话
-jsp.error.param.invalidUse=jsp:param 不能在jsp:include、jsp:forward或jsp:params等元素外使用
+jsp.error.param.invalidUse=jsp:param 不能在jsp:include或jsp:forward等元素外使用
 jsp.error.paramexpected=使用“name”和“value”属性期望“jsp:param”标准操作
-jsp.error.params.emptyBody=jsp:params必须至少包含一个嵌套的jsp:param
-jsp.error.params.invalidUse=参数jsp:params必须是jsp:plugin的直接孩子参数
 jsp.error.parse.error.in.TLD=标记库描述符中的分析错误:[{0}]
 jsp.error.parse.xml=无法解析 XML 文件 [{0}]
 jsp.error.parse.xml.line=文件[{0}]上的XML解析错误:(第[{1}]行,第[{2}]行)
 jsp.error.parse.xml.scripting.invalid.body=[{0}]元素的主体不能包含任何XML元素
-jsp.error.plugin.badtype=jsp:plugin中“type”属性的值非法:必须是“bean”或“applet”
-jsp.error.plugin.nocode=代码未定义在jsp:plugin中
-jsp.error.plugin.notype=jsp:plugin中未声明type
 jsp.error.precompilation=无法预编译JSP[{0}]
 jsp.error.precompilation.parameter=不能将预编译请求参数[{0}]设置为[{1}]
 jsp.error.prefix.refined=尝试将前缀[{0}]重新定义为[{1}],但当前作用域中已将其定义为[{2}]。
@@ -350,7 +344,6 @@ jsp.文件在哪\n\
 \                          文件 (默认是 UTF-8)\n\
 \    -addwebxmlmappings    将生成的.Web.xml片段合并到Web.xml文件中网络应用\n\
 \                          , 我们正在处理哪个.JSP页面\n\
-\    -ieplugin <clsid>     IE浏览器.Java插件的类id\n\
 \    -classpath <path>     重写.java.class.path环境变量参数\n\
 \    -xpoweredBy           添加.X-Powered-By 响应头\n\
 \    -trimSpaces [single]  移除.完全由空格组成的模板文本\n\
diff --git a/test/org/apache/jasper/compiler/Dumper.java b/test/org/apache/jasper/compiler/Dumper.java
index 9bc49170c6..afa55bbaa3 100644
--- a/test/org/apache/jasper/compiler/Dumper.java
+++ b/test/org/apache/jasper/compiler/Dumper.java
@@ -134,20 +134,6 @@ class Dumper {
             printString("</jsp:useBean>");
         }
 
-        @Override
-        public void visit(Node.PlugIn n) throws JasperException {
-            printAttributes("<jsp:plugin", n.getAttributes(), ">");
-            dumpBody(n);
-            printString("</jsp:plugin>");
-        }
-
-        @Override
-        public void visit(Node.ParamsAction n) throws JasperException {
-            printAttributes("<jsp:params", n.getAttributes(), ">");
-            dumpBody(n);
-            printString("</jsp:params>");
-        }
-
         @Override
         public void visit(Node.ParamAction n) throws JasperException {
             printAttributes("<jsp:param", n.getAttributes(), ">");
diff --git a/test/org/apache/jasper/compiler/TestGenerator.java b/test/org/apache/jasper/compiler/TestGenerator.java
index 65fb6d6785..192a4fca17 100644
--- a/test/org/apache/jasper/compiler/TestGenerator.java
+++ b/test/org/apache/jasper/compiler/TestGenerator.java
@@ -749,11 +749,6 @@ public class TestGenerator extends TomcatBaseTest {
         doTestJsp("xml-doctype-02.jspx");
     }
 
-    @Test
-    public void testPlugin01() throws Exception {
-        doTestJsp("plugin-01.jspx");
-    }
-
     @Test
     public void testForward01() throws Exception {
         doTestJsp("forward-01.jsp");
diff --git a/test/org/apache/jasper/compiler/TestJspDocumentParser.java b/test/org/apache/jasper/compiler/TestJspDocumentParser.java
index e1d24555dc..015afaabe5 100644
--- a/test/org/apache/jasper/compiler/TestJspDocumentParser.java
+++ b/test/org/apache/jasper/compiler/TestJspDocumentParser.java
@@ -193,7 +193,12 @@ public class TestJspDocumentParser extends TomcatBaseTest {
 
     @Test
     public void testDocument_4_0() throws Exception {
-        doTestDocument(false, "4.0");
+        doTestDocument(true, "4.0");
+    }
+
+    @Test
+    public void testDocument_4_1() throws Exception {
+        doTestDocument(false, "4.1");
     }
 
     @Test
diff --git a/test/webapp/jsp/doc-version-invalid/document-4.0.jspx b/test/webapp/jsp/doc-version-invalid/document-4.1.jspx
similarity index 92%
copy from test/webapp/jsp/doc-version-invalid/document-4.0.jspx
copy to test/webapp/jsp/doc-version-invalid/document-4.1.jspx
index 9fcdc6bfd1..9126e25306 100644
--- a/test/webapp/jsp/doc-version-invalid/document-4.0.jspx
+++ b/test/webapp/jsp/doc-version-invalid/document-4.1.jspx
@@ -16,7 +16,7 @@
   limitations under the License.
 -->
 <jsp:root
-  xmlns:jsp="http://java.sun.com/JSP/Page" version="4.0">
+  xmlns:jsp="http://java.sun.com/JSP/Page" version="4.1">
 <html>
   <body>
     <p>00-Hello World</p>
diff --git a/test/webapp/jsp/doc-version-invalid/document-4.0.jspx b/test/webapp/jsp/doc-version-valid/document-4.0.jspx
similarity index 100%
rename from test/webapp/jsp/doc-version-invalid/document-4.0.jspx
rename to test/webapp/jsp/doc-version-valid/document-4.0.jspx
diff --git a/test/webapp/jsp/generator/attribute-04.jsp b/test/webapp/jsp/generator/attribute-04.jsp
index fc42a11e5f..7a2d1de8a1 100644
--- a/test/webapp/jsp/generator/attribute-04.jsp
+++ b/test/webapp/jsp/generator/attribute-04.jsp
@@ -47,16 +47,3 @@
     <jsp:setProperty name="bean2" property="intPrimitive" value="1" />
   </jsp:body>
 </bugs:TesterDynamicTag>
-<bugs:TesterDynamicTag bugs:x="foo">
-  <jsp:attribute name="attribute04">
-  </jsp:attribute>
-  <jsp:body>
-    <jsp:plugin code="" type="bean" jreversion="1.5">
-       <jsp:params>
-         <jsp:param name="object" value="bar"/>
-         <jsp:param name="type" value="bar"/>
-         <jsp:param name="foo" value="bar"/>
-       </jsp:params>
-    </jsp:plugin>
-  </jsp:body>
-</bugs:TesterDynamicTag>
\ No newline at end of file
diff --git a/test/webapp/jsp/generator/plugin-01.jspx b/test/webapp/jsp/generator/plugin-01.jspx
deleted file mode 100644
index ab8af3e3aa..0000000000
--- a/test/webapp/jsp/generator/plugin-01.jspx
+++ /dev/null
@@ -1,54 +0,0 @@
-<?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.
--->
-<jsp:root
-    xmlns:jsp="http://java.sun.com/JSP/Page"
-    version="2.0">
-  <jsp:plugin code="" codebase="" type="bean" width="10" height="10" iepluginurl="bar"/>
-  <jsp:plugin code="" codebase="" type="bean" nspluginurl="bar" archive="bar">
-    <jsp:attribute name="width">10</jsp:attribute>
-    <jsp:attribute name="height">10</jsp:attribute>
-    <jsp:body/>
-  </jsp:plugin>
-  <jsp:plugin code="" type="bean" jreversion="1.5">
-    <jsp:body>
-      <jsp:params>
-        <jsp:param name="object" value="bar"/>
-        <jsp:param name="type" value="bar"/>
-        <jsp:param name="foo" value="bar"/>
-      </jsp:params>
-      <p/>
-    </jsp:body>
-  </jsp:plugin>
-  <jsp:plugin code="" type="bean">
-    <jsp:body>
-      <p/>
-      <jsp:params>
-        <jsp:param name="object" value="bar"/>
-        <jsp:param name="type" value="bar"/>
-        <jsp:param name="foo">
-          <jsp:attribute name="value">bar</jsp:attribute>
-        </jsp:param>
-      </jsp:params>
-    </jsp:body>
-  </jsp:plugin>
-  <jsp:plugin code="" type="bean">
-    <jsp:body>
-      <p/>
-    </jsp:body>
-  </jsp:plugin>
-</jsp:root>
\ 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] 03/08: Remove deprecated code - follow-up to JSP 4.0 changes

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

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

commit f5977377e738ae03954f01cd2e7568c31d722d5b
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Oct 19 11:59:29 2022 +0100

    Remove deprecated code - follow-up to JSP 4.0 changes
---
 java/org/apache/jasper/el/ELResolverImpl.java      | 126 ---------------------
 .../apache/jasper/el/ExpressionEvaluatorImpl.java  |  62 ----------
 java/org/apache/jasper/el/ExpressionImpl.java      |  44 -------
 java/org/apache/jasper/el/FunctionMapperImpl.java  |  37 ------
 .../org/apache/jasper/el/VariableResolverImpl.java |  37 ------
 .../apache/jasper/runtime/JspContextWrapper.java   |  28 +----
 .../org/apache/jasper/runtime/PageContextImpl.java |  23 +---
 .../jasper/runtime/ProtectedFunctionMapper.java    |   6 +-
 test/jakarta/servlet/jsp/TesterPageContext.java    |  15 ---
 9 files changed, 3 insertions(+), 375 deletions(-)

diff --git a/java/org/apache/jasper/el/ELResolverImpl.java b/java/org/apache/jasper/el/ELResolverImpl.java
deleted file mode 100644
index e2c389f30f..0000000000
--- a/java/org/apache/jasper/el/ELResolverImpl.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * 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.
- */
-package org.apache.jasper.el;
-
-import java.util.Iterator;
-import java.util.Objects;
-
-import jakarta.el.ELContext;
-import jakarta.el.ELException;
-import jakarta.el.ELResolver;
-import jakarta.el.ExpressionFactory;
-import jakarta.el.PropertyNotWritableException;
-import jakarta.servlet.jsp.el.VariableResolver;
-
-@Deprecated
-public final class ELResolverImpl extends ELResolver {
-
-    private final VariableResolver variableResolver;
-    private final ELResolver elResolver;
-
-    public ELResolverImpl(VariableResolver variableResolver,
-            ExpressionFactory factory) {
-        this.variableResolver = variableResolver;
-        this.elResolver = ELContextImpl.getDefaultResolver(factory);
-    }
-
-    @Override
-    public Object getValue(ELContext context, Object base, Object property) {
-        Objects.requireNonNull(context);
-
-        if (base == null) {
-            context.setPropertyResolved(base, property);
-            if (property != null) {
-                try {
-                    return this.variableResolver.resolveVariable(property
-                            .toString());
-                } catch (jakarta.servlet.jsp.el.ELException e) {
-                    throw new ELException(e.getMessage(), e.getCause());
-                }
-            }
-        }
-
-        if (!context.isPropertyResolved()) {
-            return elResolver.getValue(context, base, property);
-        }
-        return null;
-    }
-
-    @Override
-    public Class<?> getType(ELContext context, Object base, Object property) {
-        Objects.requireNonNull(context);
-
-        if (base == null) {
-            context.setPropertyResolved(base, property);
-            if (property != null) {
-                try {
-                    Object obj = this.variableResolver.resolveVariable(property
-                            .toString());
-                    return (obj != null) ? obj.getClass() : null;
-                } catch (jakarta.servlet.jsp.el.ELException e) {
-                    throw new ELException(e.getMessage(), e.getCause());
-                }
-            }
-        }
-
-        if (!context.isPropertyResolved()) {
-            return elResolver.getType(context, base, property);
-        }
-        return null;
-    }
-
-    @Override
-    public void setValue(ELContext context, Object base, Object property,
-            Object value) {
-        Objects.requireNonNull(context);
-
-        if (base == null) {
-            context.setPropertyResolved(base, property);
-            throw new PropertyNotWritableException(
-                    "Legacy VariableResolver wrapped, not writable");
-        }
-
-        if (!context.isPropertyResolved()) {
-            elResolver.setValue(context, base, property, value);
-        }
-    }
-
-    @Override
-    public boolean isReadOnly(ELContext context, Object base, Object property) {
-        Objects.requireNonNull(context);
-
-        if (base == null) {
-            context.setPropertyResolved(base, property);
-            return true;
-        }
-
-        return elResolver.isReadOnly(context, base, property);
-    }
-
-    @Override
-    public Iterator<java.beans.FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
-        return elResolver.getFeatureDescriptors(context, base);
-    }
-
-    @Override
-    public Class<?> getCommonPropertyType(ELContext context, Object base) {
-        if (base == null) {
-            return String.class;
-        }
-        return elResolver.getCommonPropertyType(context, base);
-    }
-}
diff --git a/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java b/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
deleted file mode 100644
index 0a9aa985ae..0000000000
--- a/java/org/apache/jasper/el/ExpressionEvaluatorImpl.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.
- */
-package org.apache.jasper.el;
-
-import jakarta.el.ExpressionFactory;
-import jakarta.el.ValueExpression;
-import jakarta.servlet.jsp.el.ELException;
-import jakarta.servlet.jsp.el.ELParseException;
-import jakarta.servlet.jsp.el.Expression;
-import jakarta.servlet.jsp.el.ExpressionEvaluator;
-import jakarta.servlet.jsp.el.FunctionMapper;
-import jakarta.servlet.jsp.el.VariableResolver;
-
-@Deprecated
-public final class ExpressionEvaluatorImpl extends ExpressionEvaluator {
-
-    private final ExpressionFactory factory;
-
-    public ExpressionEvaluatorImpl(ExpressionFactory factory) {
-        this.factory = factory;
-    }
-
-    @Override
-    public Expression parseExpression(String expression,
-            @SuppressWarnings("rawtypes") Class expectedType,
-            FunctionMapper fMapper) throws ELException {
-        try {
-            ELContextImpl ctx =
-                new ELContextImpl(ELContextImpl.getDefaultResolver(factory));
-            if (fMapper != null) {
-                ctx.setFunctionMapper(new FunctionMapperImpl(fMapper));
-            }
-            ValueExpression ve = this.factory.createValueExpression(ctx, expression, expectedType);
-            return new ExpressionImpl(ve, factory);
-        } catch (jakarta.el.ELException e) {
-            throw new ELParseException(e.getMessage());
-        }
-    }
-
-    @Override
-    public Object evaluate(String expression,
-            @SuppressWarnings("rawtypes") Class expectedType,
-            VariableResolver vResolver, FunctionMapper fMapper)
-            throws ELException {
-        return this.parseExpression(expression, expectedType, fMapper).evaluate(vResolver);
-    }
-
-}
diff --git a/java/org/apache/jasper/el/ExpressionImpl.java b/java/org/apache/jasper/el/ExpressionImpl.java
deleted file mode 100644
index cf0e8fe74d..0000000000
--- a/java/org/apache/jasper/el/ExpressionImpl.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.
- */
-package org.apache.jasper.el;
-
-import jakarta.el.ELContext;
-import jakarta.el.ExpressionFactory;
-import jakarta.el.ValueExpression;
-import jakarta.servlet.jsp.el.ELException;
-import jakarta.servlet.jsp.el.Expression;
-import jakarta.servlet.jsp.el.VariableResolver;
-
-@Deprecated
-public final class ExpressionImpl extends Expression {
-
-    private final ValueExpression ve;
-    private final ExpressionFactory factory;
-
-
-    public ExpressionImpl(ValueExpression ve, ExpressionFactory factory) {
-        this.ve = ve;
-        this.factory = factory;
-    }
-
-    @Override
-    public Object evaluate(VariableResolver vResolver) throws ELException {
-        ELContext ctx =
-                new ELContextImpl(new ELResolverImpl(vResolver, factory));
-        return ve.getValue(ctx);
-    }
-}
diff --git a/java/org/apache/jasper/el/FunctionMapperImpl.java b/java/org/apache/jasper/el/FunctionMapperImpl.java
deleted file mode 100644
index 490d488f24..0000000000
--- a/java/org/apache/jasper/el/FunctionMapperImpl.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.
- */
-package org.apache.jasper.el;
-
-import java.lang.reflect.Method;
-
-import jakarta.servlet.jsp.el.FunctionMapper;
-
-@Deprecated
-public final class FunctionMapperImpl extends jakarta.el.FunctionMapper {
-
-    private final FunctionMapper fnMapper;
-
-    public FunctionMapperImpl(FunctionMapper fnMapper) {
-        this.fnMapper = fnMapper;
-    }
-
-    @Override
-    public Method resolveFunction(String prefix, String localName) {
-        return this.fnMapper.resolveFunction(prefix, localName);
-    }
-
-}
diff --git a/java/org/apache/jasper/el/VariableResolverImpl.java b/java/org/apache/jasper/el/VariableResolverImpl.java
deleted file mode 100644
index 18bd48c89e..0000000000
--- a/java/org/apache/jasper/el/VariableResolverImpl.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.
- */
-package org.apache.jasper.el;
-
-import jakarta.el.ELContext;
-import jakarta.servlet.jsp.el.ELException;
-import jakarta.servlet.jsp.el.VariableResolver;
-
-@Deprecated
-public final class VariableResolverImpl implements VariableResolver {
-
-    private final ELContext ctx;
-
-    public VariableResolverImpl(ELContext ctx) {
-        this.ctx = ctx;
-    }
-
-    @Override
-    public Object resolveVariable(String pName) throws ELException {
-        return this.ctx.getELResolver().getValue(this.ctx, null, pName);
-    }
-
-}
diff --git a/java/org/apache/jasper/runtime/JspContextWrapper.java b/java/org/apache/jasper/runtime/JspContextWrapper.java
index 9601d8161c..205739262d 100644
--- a/java/org/apache/jasper/runtime/JspContextWrapper.java
+++ b/java/org/apache/jasper/runtime/JspContextWrapper.java
@@ -46,10 +46,7 @@ import jakarta.servlet.jsp.JspContext;
 import jakarta.servlet.jsp.JspFactory;
 import jakarta.servlet.jsp.JspWriter;
 import jakarta.servlet.jsp.PageContext;
-import jakarta.servlet.jsp.el.ELException;
-import jakarta.servlet.jsp.el.ExpressionEvaluator;
 import jakarta.servlet.jsp.el.NotFoundELResolver;
-import jakarta.servlet.jsp.el.VariableResolver;
 import jakarta.servlet.jsp.tagext.BodyContent;
 import jakarta.servlet.jsp.tagext.JspTag;
 import jakarta.servlet.jsp.tagext.VariableInfo;
@@ -68,8 +65,7 @@ import org.apache.jasper.compiler.Localizer;
  * @author Jan Luehe
  * @author Jacob Hookom
  */
-@SuppressWarnings("deprecation") // Have to support old JSP EL API
-public class JspContextWrapper extends PageContext implements VariableResolver {
+public class JspContextWrapper extends PageContext{
 
     private final JspTag jspTag;
 
@@ -338,12 +334,6 @@ public class JspContextWrapper extends PageContext implements VariableResolver {
         invokingJspCtxt.include(relativeUrlPath, false);
     }
 
-    @Override
-    @Deprecated
-    public VariableResolver getVariableResolver() {
-        return this;
-    }
-
     @Override
     public BodyContent pushBody() {
         return invokingJspCtxt.pushBody();
@@ -359,12 +349,6 @@ public class JspContextWrapper extends PageContext implements VariableResolver {
         return invokingJspCtxt.popBody();
     }
 
-    @Override
-    @Deprecated
-    public ExpressionEvaluator getExpressionEvaluator() {
-        return invokingJspCtxt.getExpressionEvaluator();
-    }
-
     @Override
     public void handlePageException(Exception ex) throws IOException,
             ServletException {
@@ -379,16 +363,6 @@ public class JspContextWrapper extends PageContext implements VariableResolver {
         invokingJspCtxt.handlePageException(t);
     }
 
-    /**
-     * VariableResolver interface
-     */
-    @Override
-    @Deprecated
-    public Object resolveVariable(String pName) throws ELException {
-        ELContext ctx = this.getELContext();
-        return ctx.getELResolver().getValue(ctx, null, pName);
-    }
-
     /**
      * Synchronize variables at begin of tag file
      */
diff --git a/java/org/apache/jasper/runtime/PageContextImpl.java b/java/org/apache/jasper/runtime/PageContextImpl.java
index 30476ab09a..d2d7e90692 100644
--- a/java/org/apache/jasper/runtime/PageContextImpl.java
+++ b/java/org/apache/jasper/runtime/PageContextImpl.java
@@ -496,13 +496,6 @@ public class PageContextImpl extends PageContext {
         JspRuntimeLibrary.include(request, response, relativeUrlPath, out, flush);
     }
 
-    @Override
-    @Deprecated
-    public jakarta.servlet.jsp.el.VariableResolver getVariableResolver() {
-        return new org.apache.jasper.el.VariableResolverImpl(
-                this.getELContext());
-    }
-
     @Override
     public void forward(final String relativeUrlPath) throws ServletException, IOException {
         // JSP.4.5 If the buffer was flushed, throw IllegalStateException
@@ -574,18 +567,6 @@ public class PageContextImpl extends PageContext {
         return out;
     }
 
-    /**
-     * Provides programmatic access to the ExpressionEvaluator. The JSP
-     * Container must return a valid instance of an ExpressionEvaluator that can
-     * parse EL expressions.
-     */
-    @Override
-    @Deprecated
-    public jakarta.servlet.jsp.el.ExpressionEvaluator getExpressionEvaluator() {
-        return new org.apache.jasper.el.ExpressionEvaluatorImpl(
-                this.applicationContext.getExpressionFactory());
-    }
-
     @Override
     public void handlePageException(Exception ex) throws IOException,
             ServletException {
@@ -595,7 +576,6 @@ public class PageContextImpl extends PageContext {
     }
 
     @Override
-    @SuppressWarnings("deprecation") // Still have to support old JSP EL
     public void handlePageException(final Throwable t) throws IOException, ServletException {
         if (t == null) {
             throw new NullPointerException(Localizer.getMessage("jsp.error.page.nullThrowable"));
@@ -655,8 +635,7 @@ public class PageContextImpl extends PageContext {
             }
 
             Throwable rootCause = null;
-            if (t instanceof JspException || t instanceof ELException ||
-                    t instanceof jakarta.servlet.jsp.el.ELException) {
+            if (t instanceof JspException || t instanceof ELException) {
                 rootCause = t.getCause();
             }
 
diff --git a/java/org/apache/jasper/runtime/ProtectedFunctionMapper.java b/java/org/apache/jasper/runtime/ProtectedFunctionMapper.java
index 31739b2fb0..0d18844363 100644
--- a/java/org/apache/jasper/runtime/ProtectedFunctionMapper.java
+++ b/java/org/apache/jasper/runtime/ProtectedFunctionMapper.java
@@ -19,8 +19,6 @@ package org.apache.jasper.runtime;
 import java.lang.reflect.Method;
 import java.util.HashMap;
 
-import jakarta.servlet.jsp.el.FunctionMapper;
-
 /**
  * Maps EL functions to their Java method counterparts. Keeps the actual Method
  * objects protected so that JSP pages can't indirectly do reflection.
@@ -28,9 +26,7 @@ import jakarta.servlet.jsp.el.FunctionMapper;
  * @author Mark Roth
  * @author Kin-man Chung
  */
-@SuppressWarnings("deprecation") // Have to support old JSP EL API
-public final class ProtectedFunctionMapper extends jakarta.el.FunctionMapper
-        implements FunctionMapper {
+public final class ProtectedFunctionMapper extends jakarta.el.FunctionMapper {
 
     /**
      * Maps "prefix:name" to java.lang.Method objects.
diff --git a/test/jakarta/servlet/jsp/TesterPageContext.java b/test/jakarta/servlet/jsp/TesterPageContext.java
index 59814ca097..e9d722a07d 100644
--- a/test/jakarta/servlet/jsp/TesterPageContext.java
+++ b/test/jakarta/servlet/jsp/TesterPageContext.java
@@ -172,24 +172,9 @@ public class TesterPageContext extends PageContext {
         return null;
     }
 
-    @Override
-    @Deprecated
-    public jakarta.servlet.jsp.el.ExpressionEvaluator getExpressionEvaluator() {
-        // NO-OP
-        return null;
-    }
-
     @Override
     public ELContext getELContext() {
         // NO-OP
         return null;
     }
-
-    @Override
-    @Deprecated
-    public jakarta.servlet.jsp.el.VariableResolver getVariableResolver() {
-        // NO-OP
-        return null;
-    }
-
 }


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