diff --git a/el/pom.xml b/el/pom.xml
index 51faf6ca55..603c5cd3ff 100644
--- a/el/pom.xml
+++ b/el/pom.xml
@@ -41,6 +41,14 @@
${project.groupId}
common
+
+ ${project.groupId}
+ signaturetest
+
+
+ ${project.groupId}
+ common
+
jakarta.el
jakarta.el-api
diff --git a/el/src/main/java/com/sun/ts/tests/el/signaturetest/el/ELSigTestIT.java b/el/src/main/java/com/sun/ts/tests/el/signaturetest/el/ELSigTestIT.java
new file mode 100644
index 0000000000..a5cfc22886
--- /dev/null
+++ b/el/src/main/java/com/sun/ts/tests/el/signaturetest/el/ELSigTestIT.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2007, 2023 Oracle and/or its affiliates and others.
+ * All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package com.sun.ts.tests.signaturetest.el;
+
+import java.io.PrintWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.File;
+
+import org.junit.jupiter.api.Test;
+
+import com.sun.javatest.Status;
+import com.sun.ts.tests.signaturetest.SigTest;
+import com.sun.ts.tests.signaturetest.SignatureTestDriver;
+import com.sun.ts.tests.signaturetest.SignatureTestDriverFactory;
+
+import java.util.Properties;
+import com.sun.ts.lib.util.TestUtil;
+import java.lang.System.Logger;
+
+/*
+ * This class is a simple example of a signature test that extends the
+ * SigTest framework class. This signature test is run outside of the
+ * Java EE containers. This class also contains the boilerplate
+ * code necessary to create a signature test using the test framework.
+ * To see a complete TCK example see the javaee directory for the Java EE
+ * TCK signature test class.
+ */
+public class ELSigTestIT extends SigTest {
+
+ private static final Logger logger = System.getLogger(ELSigTestIT.class.getName());
+
+ public ELSigTestIT(){
+ setup();
+ }
+
+ /***** Abstract Method Implementation *****/
+
+ /**
+ * Returns a list of strings where each string represents a package name. Each
+ * package name will have it's signature tested by the signature test
+ * framework.
+ *
+ * @return String[] The names of the packages whose signatures should be
+ * verified.
+ */
+ protected String[] getPackages() {
+ return new String[] { "jakarta.el" };
+ }
+
+
+ /*
+ * The following comments are specified in the base class that defines the
+ * signature tests. This is done so the test finders will find the right class
+ * to run. The implementation of these methods is inherited from the super
+ * class which is part of the signature test framework.
+ */
+
+ // NOTE: If the API under test is not part of your testing runtime
+ // environment, you may use the property sigTestClasspath to specify
+ // where the API under test lives. This should almost never be used.
+ // Normally the API under test should be specified in the classpath
+ // of the VM running the signature tests. Use either the first
+ // comment or the one below it depending on which properties your
+ // signature tests need. Please do not use both comments.
+
+ /*
+ * @class.setup_props: ts_home, The base path of this TCK; sigTestClasspath;
+ */
+
+ /*
+ * @testName: signatureTest
+ *
+ * @assertion: An EL container must implement the required classes and APIs
+ * specified in the EL Specification.
+ *
+ * @test_Strategy: Using reflection, gather the implementation specific
+ * classes and APIs. Compare these results with the expected (required)
+ * classes and APIs.
+ *
+ */
+ @Test
+ public void signatureTest() throws Exception {
+
+ logger.log(Logger.Level.INFO, "$$$ SigTestIT.signatureTest() called");
+ String mapFile = null;
+ String packageFile = null;
+ String repositoryDir = null;
+ Properties mapFileAsProps = null;
+ String[] packages = getPackages();
+ String apiPackage = "jakarta.el";
+
+ try {
+
+ InputStream inStreamMapfile = ELSigTestIT.class.getClassLoader().getResourceAsStream("com/sun/ts/tests/signaturetest/el/sig-test.map");
+ File mFile = writeStreamToTempFile(inStreamMapfile, "sig-test", ".map");
+ mapFile = mFile.getCanonicalPath();
+ logger.log(Logger.Level.INFO, "mapFile location is :"+mapFile);
+
+ InputStream inStreamPackageFile = ELSigTestIT.class.getClassLoader().getResourceAsStream("com/sun/ts/tests/signaturetest/el/sig-test-pkg-list.txt");
+ File pFile = writeStreamToTempFile(inStreamPackageFile, "sig-test-pkg-list", ".txt");
+ packageFile = pFile.getCanonicalPath();
+ logger.log(Logger.Level.INFO, "packageFile location is :"+packageFile);
+
+ mapFileAsProps = getSigTestDriver().loadMapFile(mapFile);
+ String packageVersion = mapFileAsProps.getProperty(apiPackage);
+ logger.log(Logger.Level.INFO, "Package version from mapfile :"+packageVersion);
+
+ InputStream inStreamSigFile = ELSigTestIT.class.getClassLoader().getResourceAsStream("com/sun/ts/tests/signaturetest/el/jakarta.el.sig_"+packageVersion);
+ File sigFile = writeStreamToSigFile(inStreamSigFile, apiPackage, packageVersion);
+ logger.log(Logger.Level.INFO, "signature File location is :"+sigFile.getCanonicalPath());
+
+ } catch(IOException ex) {
+ logger.log(Logger.Level.ERROR, "Exception while creating temp files :"+ex);
+ }
+
+ super.signatureTest(mapFile, packageFile, mapFileAsProps, packages);
+ }
+
+
+ /*
+ * Call the parent class's cleanup method.
+ */
+
+ /*
+ * define which sig driver we will use
+ */
+ @Override
+ protected SignatureTestDriver getSigTestDriver() {
+ driver = SignatureTestDriverFactory
+ .getInstance(SignatureTestDriverFactory.SIG_TEST);
+
+ return driver;
+
+ } // END getSigTestDriver
+}
diff --git a/el/src/main/resources/com/sun/ts/tests/signaturetest/el/jakarta.el.sig_5.0 b/el/src/main/resources/com/sun/ts/tests/signaturetest/el/jakarta.el.sig_5.0
new file mode 100644
index 0000000000..dcbc9a3013
--- /dev/null
+++ b/el/src/main/resources/com/sun/ts/tests/signaturetest/el/jakarta.el.sig_5.0
@@ -0,0 +1,434 @@
+#Signature file v4.1
+#Version 5.0
+
+CLSS public jakarta.el.ArrayELResolver
+cons public init()
+cons public init(boolean)
+meth public boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class> getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public java.lang.Class> getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.util.Iterator getFeatureDescriptors(jakarta.el.ELContext,java.lang.Object)
+ anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="5.0")
+meth public void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+supr jakarta.el.ELResolver
+hfds isReadOnly
+
+CLSS public jakarta.el.BeanELResolver
+cons public init()
+cons public init(boolean)
+meth public boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class> getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public java.lang.Class> getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Object invoke(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Class>[],java.lang.Object[])
+meth public java.util.Iterator getFeatureDescriptors(jakarta.el.ELContext,java.lang.Object)
+ anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="5.0")
+meth public void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+supr jakarta.el.ELResolver
+hfds isReadOnly,properties
+hcls BPSoftReference,BeanProperties,BeanProperty,SoftConcurrentHashMap
+
+CLSS public jakarta.el.BeanNameELResolver
+cons public init(jakarta.el.BeanNameResolver)
+meth public boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class> getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public java.lang.Class> getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.util.Iterator getFeatureDescriptors(jakarta.el.ELContext,java.lang.Object)
+ anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="5.0")
+meth public void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+supr jakarta.el.ELResolver
+hfds beanNameResolver
+
+CLSS public abstract jakarta.el.BeanNameResolver
+cons public init()
+meth public boolean canCreateBean(java.lang.String)
+meth public boolean isNameResolved(java.lang.String)
+meth public boolean isReadOnly(java.lang.String)
+meth public java.lang.Object getBean(java.lang.String)
+meth public void setBeanValue(java.lang.String,java.lang.Object)
+supr java.lang.Object
+
+CLSS public jakarta.el.CompositeELResolver
+cons public init()
+meth public <%0 extends java.lang.Object> {%%0} convertToType(jakarta.el.ELContext,java.lang.Object,java.lang.Class<{%%0}>)
+meth public boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class> getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public java.lang.Class> getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Object invoke(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Class>[],java.lang.Object[])
+meth public java.util.Iterator getFeatureDescriptors(jakarta.el.ELContext,java.lang.Object)
+ anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="5.0")
+meth public void add(jakarta.el.ELResolver)
+meth public void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+supr jakarta.el.ELResolver
+hfds elResolvers,size
+hcls CompositeIterator
+
+CLSS public jakarta.el.ELClass
+cons public init(java.lang.Class>)
+meth public java.lang.Class> getKlass()
+supr java.lang.Object
+hfds klass
+
+CLSS public abstract jakarta.el.ELContext
+cons public init()
+meth public <%0 extends java.lang.Object> {%%0} convertToType(java.lang.Object,java.lang.Class<{%%0}>)
+meth public abstract jakarta.el.ELResolver getELResolver()
+meth public abstract jakarta.el.FunctionMapper getFunctionMapper()
+meth public abstract jakarta.el.VariableMapper getVariableMapper()
+meth public boolean isLambdaArgument(java.lang.String)
+meth public boolean isPropertyResolved()
+meth public jakarta.el.ImportHandler getImportHandler()
+meth public java.lang.Object getContext(java.lang.Class>)
+meth public java.lang.Object getLambdaArgument(java.lang.String)
+meth public java.util.List getEvaluationListeners()
+meth public java.util.Locale getLocale()
+meth public void addEvaluationListener(jakarta.el.EvaluationListener)
+meth public void enterLambdaScope(java.util.Map)
+meth public void exitLambdaScope()
+meth public void notifyAfterEvaluation(java.lang.String)
+meth public void notifyBeforeEvaluation(java.lang.String)
+meth public void notifyPropertyResolved(java.lang.Object,java.lang.Object)
+meth public void putContext(java.lang.Class>,java.lang.Object)
+meth public void setLocale(java.util.Locale)
+meth public void setPropertyResolved(boolean)
+meth public void setPropertyResolved(java.lang.Object,java.lang.Object)
+supr java.lang.Object
+hfds importHandler,lambdaArgs,listeners,locale,map,resolved
+
+CLSS public jakarta.el.ELContextEvent
+cons public init(jakarta.el.ELContext)
+meth public jakarta.el.ELContext getELContext()
+supr java.util.EventObject
+hfds serialVersionUID
+
+CLSS public abstract interface jakarta.el.ELContextListener
+intf java.util.EventListener
+meth public abstract void contextCreated(jakarta.el.ELContextEvent)
+
+CLSS public jakarta.el.ELException
+cons public init()
+cons public init(java.lang.String)
+cons public init(java.lang.String,java.lang.Throwable)
+cons public init(java.lang.Throwable)
+supr java.lang.RuntimeException
+hfds serialVersionUID
+
+CLSS public jakarta.el.ELManager
+cons public init()
+meth public jakarta.el.ELContext setELContext(jakarta.el.ELContext)
+meth public jakarta.el.StandardELContext getELContext()
+meth public java.lang.Object defineBean(java.lang.String,java.lang.Object)
+meth public static jakarta.el.ExpressionFactory getExpressionFactory()
+meth public void addBeanNameResolver(jakarta.el.BeanNameResolver)
+meth public void addELResolver(jakarta.el.ELResolver)
+meth public void addEvaluationListener(jakarta.el.EvaluationListener)
+meth public void importClass(java.lang.String)
+meth public void importPackage(java.lang.String)
+meth public void importStatic(java.lang.String)
+meth public void mapFunction(java.lang.String,java.lang.String,java.lang.reflect.Method)
+meth public void setVariable(java.lang.String,jakarta.el.ValueExpression)
+supr java.lang.Object
+hfds elContext
+
+CLSS public jakarta.el.ELProcessor
+cons public init()
+meth public <%0 extends java.lang.Object> {%%0} eval(java.lang.String)
+meth public <%0 extends java.lang.Object> {%%0} getValue(java.lang.String,java.lang.Class<{%%0}>)
+meth public jakarta.el.ELManager getELManager()
+meth public void defineBean(java.lang.String,java.lang.Object)
+meth public void defineFunction(java.lang.String,java.lang.String,java.lang.String,java.lang.String) throws java.lang.ClassNotFoundException,java.lang.NoSuchMethodException
+meth public void defineFunction(java.lang.String,java.lang.String,java.lang.reflect.Method) throws java.lang.NoSuchMethodException
+meth public void setValue(java.lang.String,java.lang.Object)
+meth public void setVariable(java.lang.String,java.lang.String)
+supr java.lang.Object
+hfds elManager,factory
+
+CLSS public abstract jakarta.el.ELResolver
+cons public init()
+fld public final static java.lang.String RESOLVABLE_AT_DESIGN_TIME = "resolvableAtDesignTime"
+fld public final static java.lang.String TYPE = "type"
+meth public <%0 extends java.lang.Object> {%%0} convertToType(jakarta.el.ELContext,java.lang.Object,java.lang.Class<{%%0}>)
+meth public abstract boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public abstract java.lang.Class> getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public abstract java.lang.Class> getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public abstract java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public abstract void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+meth public java.lang.Object invoke(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Class>[],java.lang.Object[])
+meth public java.util.Iterator getFeatureDescriptors(jakarta.el.ELContext,java.lang.Object)
+ anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="5.0")
+supr java.lang.Object
+
+CLSS public abstract jakarta.el.EvaluationListener
+cons public init()
+meth public void afterEvaluation(jakarta.el.ELContext,java.lang.String)
+meth public void beforeEvaluation(jakarta.el.ELContext,java.lang.String)
+meth public void propertyResolved(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+supr java.lang.Object
+
+CLSS public abstract jakarta.el.Expression
+cons public init()
+intf java.io.Serializable
+meth public abstract boolean equals(java.lang.Object)
+meth public abstract boolean isLiteralText()
+meth public abstract int hashCode()
+meth public abstract java.lang.String getExpressionString()
+supr java.lang.Object
+hfds serialVersionUID
+
+CLSS public abstract jakarta.el.ExpressionFactory
+cons public init()
+meth public abstract <%0 extends java.lang.Object> {%%0} coerceToType(java.lang.Object,java.lang.Class<{%%0}>)
+meth public abstract jakarta.el.MethodExpression createMethodExpression(jakarta.el.ELContext,java.lang.String,java.lang.Class>,java.lang.Class>[])
+meth public abstract jakarta.el.ValueExpression createValueExpression(jakarta.el.ELContext,java.lang.String,java.lang.Class>)
+meth public abstract jakarta.el.ValueExpression createValueExpression(java.lang.Object,java.lang.Class>)
+meth public jakarta.el.ELResolver getStreamELResolver()
+meth public java.util.Map getInitFunctionMap()
+meth public static jakarta.el.ExpressionFactory newInstance()
+meth public static jakarta.el.ExpressionFactory newInstance(java.util.Properties)
+supr java.lang.Object
+
+CLSS public abstract jakarta.el.FunctionMapper
+cons public init()
+meth public abstract java.lang.reflect.Method resolveFunction(java.lang.String,java.lang.String)
+meth public void mapFunction(java.lang.String,java.lang.String,java.lang.reflect.Method)
+supr java.lang.Object
+
+CLSS public jakarta.el.ImportHandler
+cons public init()
+meth public java.lang.Class> resolveClass(java.lang.String)
+meth public java.lang.Class> resolveStatic(java.lang.String)
+meth public void importClass(java.lang.String)
+meth public void importPackage(java.lang.String)
+meth public void importStatic(java.lang.String)
+supr java.lang.Object
+hfds classMap,classNameMap,notAClass,packages,staticNameMap
+
+CLSS public jakarta.el.LambdaExpression
+cons public init(java.util.List,jakarta.el.ValueExpression)
+meth public !varargs java.lang.Object invoke(jakarta.el.ELContext,java.lang.Object[])
+meth public !varargs java.lang.Object invoke(java.lang.Object[])
+meth public void setELContext(jakarta.el.ELContext)
+supr java.lang.Object
+hfds context,envirArgs,expression,formalParameters
+
+CLSS public jakarta.el.ListELResolver
+cons public init()
+cons public init(boolean)
+meth public boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class> getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public java.lang.Class> getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.util.Iterator getFeatureDescriptors(jakarta.el.ELContext,java.lang.Object)
+ anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="5.0")
+meth public void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+supr jakarta.el.ELResolver
+hfds isReadOnly,theUnmodifiableListClass
+
+CLSS public jakarta.el.MapELResolver
+cons public init()
+cons public init(boolean)
+meth public boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class> getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public java.lang.Class> getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.util.Iterator getFeatureDescriptors(jakarta.el.ELContext,java.lang.Object)
+ anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="5.0")
+meth public void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+supr jakarta.el.ELResolver
+hfds isReadOnly,theUnmodifiableMapClass
+
+CLSS public abstract jakarta.el.MethodExpression
+cons public init()
+meth public abstract jakarta.el.MethodInfo getMethodInfo(jakarta.el.ELContext)
+meth public abstract java.lang.Object invoke(jakarta.el.ELContext,java.lang.Object[])
+meth public boolean isParametersProvided()
+meth public jakarta.el.MethodReference getMethodReference(jakarta.el.ELContext)
+supr jakarta.el.Expression
+hfds serialVersionUID
+
+CLSS public jakarta.el.MethodInfo
+cons public init(java.lang.String,java.lang.Class>,java.lang.Class>[])
+meth public boolean equals(java.lang.Object)
+meth public int hashCode()
+meth public java.lang.Class> getReturnType()
+meth public java.lang.Class>[] getParamTypes()
+meth public java.lang.String getName()
+supr java.lang.Object
+hfds name,paramTypes,returnType
+
+CLSS public jakarta.el.MethodNotFoundException
+cons public init()
+cons public init(java.lang.String)
+cons public init(java.lang.String,java.lang.Throwable)
+cons public init(java.lang.Throwable)
+supr jakarta.el.ELException
+hfds serialVersionUID
+
+CLSS public jakarta.el.MethodReference
+cons public init(java.lang.Object,jakarta.el.MethodInfo,java.lang.annotation.Annotation[],java.lang.Object[])
+meth public boolean equals(java.lang.Object)
+meth public int hashCode()
+meth public jakarta.el.MethodInfo getMethodInfo()
+meth public java.lang.Object getBase()
+meth public java.lang.Object[] getEvaluatedParameters()
+meth public java.lang.annotation.Annotation[] getAnnotations()
+supr java.lang.Object
+hfds annotations,base,evaluatedParameters,methodInfo
+
+CLSS public jakarta.el.PropertyNotFoundException
+cons public init()
+cons public init(java.lang.String)
+cons public init(java.lang.String,java.lang.Throwable)
+cons public init(java.lang.Throwable)
+supr jakarta.el.ELException
+hfds serialVersionUID
+
+CLSS public jakarta.el.PropertyNotWritableException
+cons public init()
+cons public init(java.lang.String)
+cons public init(java.lang.String,java.lang.Throwable)
+cons public init(java.lang.Throwable)
+supr jakarta.el.ELException
+hfds serialVersionUID
+
+CLSS public jakarta.el.ResourceBundleELResolver
+cons public init()
+meth public boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class> getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public java.lang.Class> getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.util.Iterator getFeatureDescriptors(jakarta.el.ELContext,java.lang.Object)
+ anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="5.0")
+meth public void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+supr jakarta.el.ELResolver
+
+CLSS public jakarta.el.StandardELContext
+cons public init(jakarta.el.ELContext)
+cons public init(jakarta.el.ExpressionFactory)
+meth public jakarta.el.ELResolver getELResolver()
+meth public jakarta.el.FunctionMapper getFunctionMapper()
+meth public jakarta.el.VariableMapper getVariableMapper()
+meth public java.lang.Object getContext(java.lang.Class>)
+meth public void addELResolver(jakarta.el.ELResolver)
+meth public void putContext(java.lang.Class>,java.lang.Object)
+supr jakarta.el.ELContext
+hfds beans,customResolvers,delegate,elResolver,functionMapper,initFunctionMap,streamELResolver,variableMapper
+hcls DefaultFunctionMapper,DefaultVariableMapper,LocalBeanNameResolver
+
+CLSS public jakarta.el.StaticFieldELResolver
+cons public init()
+meth public boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class> getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public java.lang.Class> getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Object invoke(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Class>[],java.lang.Object[])
+meth public java.util.Iterator getFeatureDescriptors(jakarta.el.ELContext,java.lang.Object)
+ anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="5.0")
+meth public void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+supr jakarta.el.ELResolver
+
+CLSS public abstract jakarta.el.TypeConverter
+cons public init()
+meth public abstract <%0 extends java.lang.Object> {%%0} convertToType(jakarta.el.ELContext,java.lang.Object,java.lang.Class<{%%0}>)
+meth public boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class> getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public java.lang.Class> getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.util.Iterator getFeatureDescriptors(jakarta.el.ELContext,java.lang.Object)
+ anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="5.0")
+meth public void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+supr jakarta.el.ELResolver
+
+CLSS public abstract jakarta.el.ValueExpression
+cons public init()
+meth public abstract <%0 extends java.lang.Object> {%%0} getValue(jakarta.el.ELContext)
+meth public abstract boolean isReadOnly(jakarta.el.ELContext)
+meth public abstract java.lang.Class> getExpectedType()
+meth public abstract java.lang.Class> getType(jakarta.el.ELContext)
+meth public abstract void setValue(jakarta.el.ELContext,java.lang.Object)
+meth public jakarta.el.ValueReference getValueReference(jakarta.el.ELContext)
+supr jakarta.el.Expression
+hfds serialVersionUID
+
+CLSS public jakarta.el.ValueReference
+cons public init(java.lang.Object,java.lang.Object)
+intf java.io.Serializable
+meth public java.lang.Object getBase()
+meth public java.lang.Object getProperty()
+supr java.lang.Object
+hfds base,property,serialVersionUID
+
+CLSS public abstract jakarta.el.VariableMapper
+cons public init()
+meth public abstract jakarta.el.ValueExpression resolveVariable(java.lang.String)
+meth public abstract jakarta.el.ValueExpression setVariable(java.lang.String,jakarta.el.ValueExpression)
+supr java.lang.Object
+
+CLSS public abstract interface java.io.Serializable
+
+CLSS public java.lang.Exception
+cons protected init(java.lang.String,java.lang.Throwable,boolean,boolean)
+cons public init()
+cons public init(java.lang.String)
+cons public init(java.lang.String,java.lang.Throwable)
+cons public init(java.lang.Throwable)
+supr java.lang.Throwable
+
+CLSS public java.lang.Object
+cons public init()
+meth protected java.lang.Object clone() throws java.lang.CloneNotSupportedException
+meth protected void finalize() throws java.lang.Throwable
+ anno 0 java.lang.Deprecated(boolean forRemoval=false, java.lang.String since="9")
+meth public boolean equals(java.lang.Object)
+meth public final java.lang.Class> getClass()
+meth public final void notify()
+meth public final void notifyAll()
+meth public final void wait() throws java.lang.InterruptedException
+meth public final void wait(long) throws java.lang.InterruptedException
+meth public final void wait(long,int) throws java.lang.InterruptedException
+meth public int hashCode()
+meth public java.lang.String toString()
+
+CLSS public java.lang.RuntimeException
+cons protected init(java.lang.String,java.lang.Throwable,boolean,boolean)
+cons public init()
+cons public init(java.lang.String)
+cons public init(java.lang.String,java.lang.Throwable)
+cons public init(java.lang.Throwable)
+supr java.lang.Exception
+
+CLSS public java.lang.Throwable
+cons protected init(java.lang.String,java.lang.Throwable,boolean,boolean)
+cons public init()
+cons public init(java.lang.String)
+cons public init(java.lang.String,java.lang.Throwable)
+cons public init(java.lang.Throwable)
+intf java.io.Serializable
+meth public final java.lang.Throwable[] getSuppressed()
+meth public final void addSuppressed(java.lang.Throwable)
+meth public java.lang.StackTraceElement[] getStackTrace()
+meth public java.lang.String getLocalizedMessage()
+meth public java.lang.String getMessage()
+meth public java.lang.String toString()
+meth public java.lang.Throwable fillInStackTrace()
+meth public java.lang.Throwable getCause()
+meth public java.lang.Throwable initCause(java.lang.Throwable)
+meth public void printStackTrace()
+meth public void printStackTrace(java.io.PrintStream)
+meth public void printStackTrace(java.io.PrintWriter)
+meth public void setStackTrace(java.lang.StackTraceElement[])
+supr java.lang.Object
+
+CLSS public abstract interface java.util.EventListener
+
+CLSS public java.util.EventObject
+cons public init(java.lang.Object)
+fld protected java.lang.Object source
+intf java.io.Serializable
+meth public java.lang.Object getSource()
+meth public java.lang.String toString()
+supr java.lang.Object
+
diff --git a/el/src/main/resources/com/sun/ts/tests/signaturetest/el/sig-test-pkg-list.txt b/el/src/main/resources/com/sun/ts/tests/signaturetest/el/sig-test-pkg-list.txt
new file mode 100644
index 0000000000..89236c831f
--- /dev/null
+++ b/el/src/main/resources/com/sun/ts/tests/signaturetest/el/sig-test-pkg-list.txt
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2018, 2020 Oracle and/or its affiliates and others.
+# All rights reserved.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License v. 2.0, which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# This Source Code may also be made available under the following Secondary
+# Licenses when the conditions for such availability set forth in the
+# Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+# version 2 with the GNU Classpath Exception, which is available at
+# https://www.gnu.org/software/classpath/license.html.
+#
+# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+#
+
+##
+# This file contains a list of all the packages
+# contained in the signature files for this
+# deliverable. This file is used to exclude valid
+# sub-packages from being verified when their
+# parent package's signature is checked.
+##
+
+jakarta.el
diff --git a/el/src/main/resources/com/sun/ts/tests/signaturetest/el/sig-test.map b/el/src/main/resources/com/sun/ts/tests/signaturetest/el/sig-test.map
new file mode 100644
index 0000000000..e29861e0fa
--- /dev/null
+++ b/el/src/main/resources/com/sun/ts/tests/signaturetest/el/sig-test.map
@@ -0,0 +1,25 @@
+#
+# Copyright (c) 2018, 2021 Oracle and/or its affiliates and others.
+# All rights reserved.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License v. 2.0, which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# This Source Code may also be made available under the following Secondary
+# Licenses when the conditions for such availability set forth in the
+# Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+# version 2 with the GNU Classpath Exception, which is available at
+# https://www.gnu.org/software/classpath/license.html.
+#
+# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+#
+
+###############################################################
+# The signature test mapping file for the JSF TCK. This file
+# should be formatted as a standard java properties file. The
+# name is the package name and the value is the version of the
+# package that should be tested by the signature tests.
+###############################################################
+
+jakarta.el=5.0
diff --git a/glassfish-runner/el-tck/pom.xml b/glassfish-runner/el-tck/pom.xml
index 7b49c644ab..f9c9f43c85 100644
--- a/glassfish-runner/el-tck/pom.xml
+++ b/glassfish-runner/el-tck/pom.xml
@@ -1,3 +1,4 @@
+
-
- jakarta
- glassfish.el-tck
- 10.0.0-SNAPSHOT
- jar
+
4.0.0
-
+
org.glassfish
standalone-tck
- 10.0.0
+ 10.0.0-SNAPSHOT
../pom.xml
+ jakarta
+ glassfish.el-tck
+ 10.0.0-SNAPSHOT
+ jar
+ 5.9.1
el-tck
5.0.0
@@ -45,7 +46,6 @@
-
org.junit.jupiter
@@ -62,26 +62,13 @@
simple-glassfish-api
${glassfish.container.version}
+
+ org.netbeans.tools
+ sigtest-maven-plugin
+ 1.4
+
-
-
- full
-
- true
-
-
- glassfish
-
-
-
- web
-
- web
-
-
-
-
@@ -91,10 +78,10 @@
unpack
- pre-integration-test
unpack
+ pre-integration-test
@@ -111,16 +98,16 @@
- exec-maven-plugin
org.codehaus.mojo
+ exec-maven-plugin
3.1.0
- StopDomain1
- pre-integration-test
+ 1-StopDomain1
exec
+ pre-integration-test
${project.build.directory}/${glassfish.toplevel.dir}/glassfish/bin/asadmin
@@ -129,11 +116,11 @@
- StartDomain1
- pre-integration-test
+ 2-StartDomain1
exec
+ pre-integration-test
${project.build.directory}/${glassfish.toplevel.dir}/glassfish/bin/asadmin
@@ -142,11 +129,11 @@
- Enable Trace requests
- pre-integration-test
+ 3-Enable Trace requests
exec
+ pre-integration-test
${project.build.directory}/${glassfish.toplevel.dir}/glassfish/bin/asadmin
@@ -156,11 +143,11 @@
- Delete User j2ee
- pre-integration-test
+ 4-Delete User j2ee
exec
+ pre-integration-test
${project.build.directory}/${glassfish.toplevel.dir}/glassfish/bin/asadmin
@@ -176,11 +163,11 @@
- Add User j2ee
- pre-integration-test
+ 5-Add User j2ee
exec
+ pre-integration-test
${project.build.directory}/${glassfish.toplevel.dir}/glassfish/bin/asadmin
@@ -194,11 +181,11 @@
- Delete User javajoe
- pre-integration-test
+ 6-Delete User javajoe
exec
+ pre-integration-test
${project.build.directory}/${glassfish.toplevel.dir}/glassfish/bin/asadmin
@@ -214,11 +201,11 @@
- Add User javajoe
- pre-integration-test
+ 7-Add User javajoe
exec
+ pre-integration-test
${project.build.directory}/${glassfish.toplevel.dir}/glassfish/bin/asadmin
@@ -232,11 +219,11 @@
- list users
- pre-integration-test
+ 8-list users
exec
+ pre-integration-test
${project.build.directory}/${glassfish.toplevel.dir}/glassfish/bin/asadmin
@@ -245,11 +232,11 @@
- StopDomain
- pre-integration-test
+ 9-StopDomain
exec
+ pre-integration-test
${project.build.directory}/${glassfish.toplevel.dir}/glassfish/bin/asadmin
@@ -274,7 +261,7 @@
${project.build.directory}/${glassfish.toplevel.dir}/glassfish/modules/jakarta.el-api.jar
${project.build.directory}/${glassfish.toplevel.dir}/glassfish/modules/expressly.jar
- jakartatck:el-tck
+ jakartatck:el-tck
${project.build.directory}/${glassfish.toplevel.dir}
localhost
@@ -289,6 +276,8 @@
true
true
com.sun.ts.tests.websocket.lib.implementation.sun.common.SunRIURL
+ ${project.build.directory}/jdk11-bundle
+ ${project.build.directory}/${glassfish.toplevel.dir}/glassfish/modules/jakarta.el-api.jar:${project.build.directory}/${glassfish.toplevel.dir}/glassfish/modules/expressly.jar:${project.build.directory}/jdk11-bundle/java.base:${project.build.directory}/jdk11-bundle/java.rmi:${project.build.directory}/jdk11-bundle/java.sql:${project.build.directory}/jdk11-bundle/java.naming
${project.build.directory}/${glassfish.toplevel.dir}
@@ -299,4 +288,22 @@
-
\ No newline at end of file
+
+
+
+ full
+
+ true
+
+
+ glassfish
+
+
+
+ web
+
+ web
+
+
+
+
diff --git a/glassfish-runner/jsp-tck/pom.xml b/glassfish-runner/jsp-tck/pom.xml
index 84fc5d9138..9e6f0801a4 100644
--- a/glassfish-runner/jsp-tck/pom.xml
+++ b/glassfish-runner/jsp-tck/pom.xml
@@ -45,6 +45,11 @@
jsp-tck
10.0.0-SNAPSHOT
+
+ org.netbeans.tools
+ sigtest-maven-plugin
+ 1.4
+
org.glassfish.main.common
simple-glassfish-api
@@ -296,6 +301,8 @@
true
true
com.sun.ts.tests.jsp.lib.implementation.sun.common.SunRIURL
+ ${project.build.directory}/jdk11-bundle
+ ${project.build.directory}/${glassfish.toplevel.dir}/glassfish/modules/jakarta.servlet-api.jar:${project.build.directory}/${glassfish.toplevel.dir}/glassfish/modules/jakarta.servlet.jsp-api.jar:${project.build.directory}/${glassfish.toplevel.dir}/glassfish/modules/jakarta.el-api.jar:${project.build.directory}/${glassfish.toplevel.dir}/glassfish/modules/jakarta.el.jar:${project.build.directory}/jdk11-bundle/java.base:${project.build.directory}/jdk11-bundle/java.rmi:${project.build.directory}/jdk11-bundle/java.sql:${project.build.directory}/jdk11-bundle/java.naming
${project.build.directory}/${glassfish.toplevel.dir}
diff --git a/jsp/pom.xml b/jsp/pom.xml
index 8b26faad43..9f1d84e6ed 100644
--- a/jsp/pom.xml
+++ b/jsp/pom.xml
@@ -48,6 +48,15 @@
${project.groupId}
servlet
+
+ ${project.groupId}
+ signaturetest
+
+
+ org.netbeans.tools
+ sigtest-maven-plugin
+ 1.4
+
javatest
javatest
diff --git a/jsp/src/main/java/com/sun/ts/tests/signaturetest/jsp/JSPSigTestIT.java b/jsp/src/main/java/com/sun/ts/tests/signaturetest/jsp/JSPSigTestIT.java
new file mode 100644
index 0000000000..2934b79b03
--- /dev/null
+++ b/jsp/src/main/java/com/sun/ts/tests/signaturetest/jsp/JSPSigTestIT.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2007, 2023 Oracle and/or its affiliates. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package com.sun.ts.tests.signaturetest.jsp;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+
+import org.junit.jupiter.api.Test;
+
+import com.sun.javatest.Status;
+import com.sun.ts.tests.signaturetest.SigTest;
+import com.sun.ts.tests.signaturetest.SigTestResult;
+import com.sun.ts.lib.util.TestUtil;
+import java.util.Properties;
+import java.lang.System.Logger;
+
+
+/*
+ * This class is a simple example of a signature test that extends the
+ * SigTest framework class. This signature test is run outside of the
+ * Java EE containers. This class also contains the boilerplate
+ * code necessary to create a signature test using the test framework.
+ * To see a complete TCK example see the javaee directory for the Java EE
+ * TCK signature test class.
+ */
+public class JSPSigTestIT extends SigTest {
+
+ private static final Logger logger = System.getLogger(JSPSigTestIT.class.getName());
+
+ public JSPSigTestIT(){
+ setup();
+ }
+
+ /***** Abstract Method Implementation *****/
+
+ /**
+ * Returns a list of strings where each string represents a package name. Each
+ * package name will have it's signature tested by the signature test
+ * framework.
+ *
+ * @return String[] The names of the packages whose signatures should be
+ * verified.
+ */
+ protected String[] getPackages() {
+ return new String[] { "jakarta.servlet.jsp", "jakarta.servlet.jsp.el",
+ "jakarta.servlet.jsp.tagext" };
+ }
+
+
+ /*
+ * The following comments are specified in the base class that defines the
+ * signature tests. This is done so the test finders will find the right class
+ * to run. The implementation of these methods is inherited from the super
+ * class which is part of the signature test framework.
+ */
+
+ // NOTE: If the API under test is not part of your testing runtime
+ // environment, you may use the property sigTestClasspath to specify
+ // where the API under test lives. This should almost never be used.
+ // Normally the API under test should be specified in the classpath
+ // of the VM running the signature tests. Use either the first
+ // comment or the one below it depending on which properties your
+ // signature tests need. Please do not use both comments.
+
+
+
+ /*
+ * The following comments are specified in the base class that defines the
+ * signature tests. This is done so the test finders will find the right class
+ * to run. The implementation of these methods is inherited from the super
+ * class which is part of the signature test framework.
+ */
+
+ // NOTE: If the API under test is not part of your testing runtime
+ // environment, you may use the property sigTestClasspath to specify
+ // where the API under test lives. This should almost never be used.
+ // Normally the API under test should be specified in the classpath
+ // of the VM running the signature tests. Use either the first
+ // comment or the one below it depending on which properties your
+ // signature tests need. Please do not use both comments.
+
+
+ /*
+ * @testName: signatureTest
+ *
+ * @assertion: A JSP container must implement the required classes and APIs
+ * specified in the JSP Specification.
+ *
+ * @test_Strategy: Using reflection, gather the implementation specific
+ * classes and APIs. Compare these results with the expected (required)
+ * classes and APIs.
+ *
+ */
+ @Test
+ public void signatureTest() throws Exception {
+
+ logger.log(Logger.Level.INFO, "$$$ SigTestIT.signatureTest() called");
+ String mapFile = null;
+ String packageFile = null;
+ String repositoryDir = null;
+ Properties mapFileAsProps = null;
+ String[] packages = getPackages();
+ String apiPackage = "jakarta.servlet.jsp";
+
+ try {
+
+ InputStream inStreamMapfile = JSPSigTestIT.class.getClassLoader().getResourceAsStream("com/sun/ts/tests/signaturetest/jsp/sig-test.map");
+ File mFile = writeStreamToTempFile(inStreamMapfile, "sig-test", ".map");
+ mapFile = mFile.getCanonicalPath();
+ logger.log(Logger.Level.INFO, "mapFile location is :"+mapFile);
+
+ InputStream inStreamPackageFile = JSPSigTestIT.class.getClassLoader().getResourceAsStream("com/sun/ts/tests/signaturetest/jsp/sig-test-pkg-list.txt");
+ File pFile = writeStreamToTempFile(inStreamPackageFile, "sig-test-pkg-list", ".txt");
+ packageFile = pFile.getCanonicalPath();
+ logger.log(Logger.Level.INFO, "packageFile location is :"+packageFile);
+
+ mapFileAsProps = getSigTestDriver().loadMapFile(mapFile);
+ String packageVersion = mapFileAsProps.getProperty(apiPackage);
+ logger.log(Logger.Level.INFO, "Package version from mapfile :"+packageVersion);
+
+ InputStream inStreamSigFile = JSPSigTestIT.class.getClassLoader().getResourceAsStream("com/sun/ts/tests/signaturetest/jsp/jakarta.servlet.jsp.sig_"+packageVersion);
+ File sigFile = writeStreamToSigFile(inStreamSigFile, apiPackage, packageVersion);
+ logger.log(Logger.Level.INFO, "signature File location is :"+sigFile.getCanonicalPath());
+
+ } catch(IOException ex) {
+ logger.log(Logger.Level.ERROR , "Exception while creating temp files :"+ex);
+ }
+
+ super.signatureTest(mapFile, packageFile, mapFileAsProps, packages);
+ }
+
+ /*
+ * Call the parent class's cleanup method.
+ */
+
+}
diff --git a/jsp/src/main/resources/com/sun/ts/tests/signaturetest/jsp/jakarta.servlet.jsp.sig_3.1 b/jsp/src/main/resources/com/sun/ts/tests/signaturetest/jsp/jakarta.servlet.jsp.sig_3.1
new file mode 100644
index 0000000000..f11597b672
--- /dev/null
+++ b/jsp/src/main/resources/com/sun/ts/tests/signaturetest/jsp/jakarta.servlet.jsp.sig_3.1
@@ -0,0 +1,663 @@
+#Signature file v4.1
+#Version 3.1
+
+CLSS public abstract jakarta.el.ELResolver
+cons public init()
+fld public final static java.lang.String RESOLVABLE_AT_DESIGN_TIME = "resolvableAtDesignTime"
+fld public final static java.lang.String TYPE = "type"
+meth public <%0 extends java.lang.Object> {%%0} convertToType(jakarta.el.ELContext,java.lang.Object,java.lang.Class<{%%0}>)
+meth public abstract boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public abstract java.lang.Class> getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public abstract java.lang.Class> getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public abstract java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public abstract void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+meth public java.lang.Object invoke(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Class>[],java.lang.Object[])
+meth public java.util.Iterator getFeatureDescriptors(jakarta.el.ELContext,java.lang.Object)
+ anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="5.0")
+supr java.lang.Object
+
+CLSS public abstract interface jakarta.servlet.Servlet
+meth public abstract jakarta.servlet.ServletConfig getServletConfig()
+meth public abstract java.lang.String getServletInfo()
+meth public abstract void destroy()
+meth public abstract void init(jakarta.servlet.ServletConfig) throws jakarta.servlet.ServletException
+meth public abstract void service(jakarta.servlet.ServletRequest,jakarta.servlet.ServletResponse) throws jakarta.servlet.ServletException,java.io.IOException
+
+CLSS public final jakarta.servlet.jsp.ErrorData
+cons public init(java.lang.Throwable,int,java.lang.String,java.lang.String)
+meth public int getStatusCode()
+meth public java.lang.String getRequestURI()
+meth public java.lang.String getServletName()
+meth public java.lang.Throwable getThrowable()
+supr java.lang.Object
+hfds servletName,statusCode,throwable,uri
+
+CLSS public abstract interface jakarta.servlet.jsp.HttpJspPage
+intf jakarta.servlet.jsp.JspPage
+meth public abstract void _jspService(jakarta.servlet.http.HttpServletRequest,jakarta.servlet.http.HttpServletResponse) throws jakarta.servlet.ServletException,java.io.IOException
+
+CLSS public abstract interface jakarta.servlet.jsp.JspApplicationContext
+meth public abstract jakarta.el.ExpressionFactory getExpressionFactory()
+meth public abstract void addELContextListener(jakarta.el.ELContextListener)
+meth public abstract void addELResolver(jakarta.el.ELResolver)
+
+CLSS public abstract jakarta.servlet.jsp.JspContext
+cons public init()
+meth public abstract int getAttributesScope(java.lang.String)
+meth public abstract jakarta.el.ELContext getELContext()
+meth public abstract jakarta.servlet.jsp.JspWriter getOut()
+meth public abstract jakarta.servlet.jsp.el.ExpressionEvaluator getExpressionEvaluator()
+ anno 0 java.lang.Deprecated(boolean forRemoval=false, java.lang.String since="")
+meth public abstract jakarta.servlet.jsp.el.VariableResolver getVariableResolver()
+ anno 0 java.lang.Deprecated(boolean forRemoval=false, java.lang.String since="")
+meth public abstract java.lang.Object findAttribute(java.lang.String)
+meth public abstract java.lang.Object getAttribute(java.lang.String)
+meth public abstract java.lang.Object getAttribute(java.lang.String,int)
+meth public abstract java.util.Enumeration getAttributeNamesInScope(int)
+meth public abstract void removeAttribute(java.lang.String)
+meth public abstract void removeAttribute(java.lang.String,int)
+meth public abstract void setAttribute(java.lang.String,java.lang.Object)
+meth public abstract void setAttribute(java.lang.String,java.lang.Object,int)
+meth public jakarta.servlet.jsp.JspWriter popBody()
+meth public jakarta.servlet.jsp.JspWriter pushBody(java.io.Writer)
+supr java.lang.Object
+
+CLSS public abstract jakarta.servlet.jsp.JspEngineInfo
+cons public init()
+meth public abstract java.lang.String getSpecificationVersion()
+supr java.lang.Object
+
+CLSS public jakarta.servlet.jsp.JspException
+cons public init()
+cons public init(java.lang.String)
+cons public init(java.lang.String,java.lang.Throwable)
+cons public init(java.lang.Throwable)
+meth public java.lang.Throwable getRootCause()
+ anno 0 java.lang.Deprecated(boolean forRemoval=false, java.lang.String since="")
+supr java.lang.Exception
+hfds serialVersionUID
+
+CLSS public abstract jakarta.servlet.jsp.JspFactory
+cons public init()
+meth public abstract jakarta.servlet.jsp.JspApplicationContext getJspApplicationContext(jakarta.servlet.ServletContext)
+meth public abstract jakarta.servlet.jsp.JspEngineInfo getEngineInfo()
+meth public abstract jakarta.servlet.jsp.PageContext getPageContext(jakarta.servlet.Servlet,jakarta.servlet.ServletRequest,jakarta.servlet.ServletResponse,java.lang.String,boolean,int,boolean)
+meth public abstract void releasePageContext(jakarta.servlet.jsp.PageContext)
+meth public static jakarta.servlet.jsp.JspFactory getDefaultFactory()
+meth public static void setDefaultFactory(jakarta.servlet.jsp.JspFactory)
+supr java.lang.Object
+hfds deflt
+
+CLSS public abstract interface jakarta.servlet.jsp.JspPage
+intf jakarta.servlet.Servlet
+meth public abstract void jspDestroy()
+meth public abstract void jspInit()
+
+CLSS public jakarta.servlet.jsp.JspTagException
+cons public init()
+cons public init(java.lang.String)
+cons public init(java.lang.String,java.lang.Throwable)
+cons public init(java.lang.Throwable)
+supr jakarta.servlet.jsp.JspException
+hfds serialVersionUID
+
+CLSS public abstract jakarta.servlet.jsp.JspWriter
+cons protected init(int,boolean)
+fld protected boolean autoFlush
+fld protected int bufferSize
+fld public final static int DEFAULT_BUFFER = -1
+fld public final static int NO_BUFFER = 0
+fld public final static int UNBOUNDED_BUFFER = -2
+meth public abstract int getRemaining()
+meth public abstract void clear() throws java.io.IOException
+meth public abstract void clearBuffer() throws java.io.IOException
+meth public abstract void close() throws java.io.IOException
+meth public abstract void flush() throws java.io.IOException
+meth public abstract void newLine() throws java.io.IOException
+meth public abstract void print(boolean) throws java.io.IOException
+meth public abstract void print(char) throws java.io.IOException
+meth public abstract void print(char[]) throws java.io.IOException
+meth public abstract void print(double) throws java.io.IOException
+meth public abstract void print(float) throws java.io.IOException
+meth public abstract void print(int) throws java.io.IOException
+meth public abstract void print(java.lang.Object) throws java.io.IOException
+meth public abstract void print(java.lang.String) throws java.io.IOException
+meth public abstract void print(long) throws java.io.IOException
+meth public abstract void println() throws java.io.IOException
+meth public abstract void println(boolean) throws java.io.IOException
+meth public abstract void println(char) throws java.io.IOException
+meth public abstract void println(char[]) throws java.io.IOException
+meth public abstract void println(double) throws java.io.IOException
+meth public abstract void println(float) throws java.io.IOException
+meth public abstract void println(int) throws java.io.IOException
+meth public abstract void println(java.lang.Object) throws java.io.IOException
+meth public abstract void println(java.lang.String) throws java.io.IOException
+meth public abstract void println(long) throws java.io.IOException
+meth public boolean isAutoFlush()
+meth public int getBufferSize()
+supr java.io.Writer
+
+CLSS public abstract jakarta.servlet.jsp.PageContext
+cons public init()
+fld public final static int APPLICATION_SCOPE = 4
+fld public final static int PAGE_SCOPE = 1
+fld public final static int REQUEST_SCOPE = 2
+fld public final static int SESSION_SCOPE = 3
+fld public final static java.lang.String APPLICATION = "jakarta.servlet.jsp.jspApplication"
+fld public final static java.lang.String CONFIG = "jakarta.servlet.jsp.jspConfig"
+fld public final static java.lang.String EXCEPTION = "jakarta.servlet.jsp.jspException"
+fld public final static java.lang.String OUT = "jakarta.servlet.jsp.jspOut"
+fld public final static java.lang.String PAGE = "jakarta.servlet.jsp.jspPage"
+fld public final static java.lang.String PAGECONTEXT = "jakarta.servlet.jsp.jspPageContext"
+fld public final static java.lang.String REQUEST = "jakarta.servlet.jsp.jspRequest"
+fld public final static java.lang.String RESPONSE = "jakarta.servlet.jsp.jspResponse"
+fld public final static java.lang.String SESSION = "jakarta.servlet.jsp.jspSession"
+meth public abstract jakarta.servlet.ServletConfig getServletConfig()
+meth public abstract jakarta.servlet.ServletContext getServletContext()
+meth public abstract jakarta.servlet.ServletRequest getRequest()
+meth public abstract jakarta.servlet.ServletResponse getResponse()
+meth public abstract jakarta.servlet.http.HttpSession getSession()
+meth public abstract java.lang.Exception getException()
+meth public abstract java.lang.Object getPage()
+meth public abstract void forward(java.lang.String) throws jakarta.servlet.ServletException,java.io.IOException
+meth public abstract void handlePageException(java.lang.Exception) throws jakarta.servlet.ServletException,java.io.IOException
+meth public abstract void handlePageException(java.lang.Throwable) throws jakarta.servlet.ServletException,java.io.IOException
+meth public abstract void include(java.lang.String) throws jakarta.servlet.ServletException,java.io.IOException
+meth public abstract void include(java.lang.String,boolean) throws jakarta.servlet.ServletException,java.io.IOException
+meth public abstract void initialize(jakarta.servlet.Servlet,jakarta.servlet.ServletRequest,jakarta.servlet.ServletResponse,java.lang.String,boolean,int,boolean) throws java.io.IOException
+meth public abstract void release()
+meth public jakarta.servlet.jsp.ErrorData getErrorData()
+meth public jakarta.servlet.jsp.tagext.BodyContent pushBody()
+supr jakarta.servlet.jsp.JspContext
+
+CLSS public jakarta.servlet.jsp.SkipPageException
+cons public init()
+cons public init(java.lang.String)
+cons public init(java.lang.String,java.lang.Throwable)
+cons public init(java.lang.Throwable)
+supr jakarta.servlet.jsp.JspException
+hfds serialVersionUID
+
+CLSS public jakarta.servlet.jsp.el.ELException
+ anno 0 java.lang.Deprecated(boolean forRemoval=false, java.lang.String since="")
+cons public init()
+cons public init(java.lang.String)
+cons public init(java.lang.String,java.lang.Throwable)
+cons public init(java.lang.Throwable)
+meth public java.lang.Throwable getRootCause()
+supr java.lang.Exception
+hfds mRootCause,serialVersionUID
+
+CLSS public jakarta.servlet.jsp.el.ELParseException
+ anno 0 java.lang.Deprecated(boolean forRemoval=false, java.lang.String since="")
+cons public init()
+cons public init(java.lang.String)
+supr jakarta.servlet.jsp.el.ELException
+hfds serialVersionUID
+
+CLSS public abstract jakarta.servlet.jsp.el.Expression
+ anno 0 java.lang.Deprecated(boolean forRemoval=false, java.lang.String since="")
+cons public init()
+meth public abstract java.lang.Object evaluate(jakarta.servlet.jsp.el.VariableResolver) throws jakarta.servlet.jsp.el.ELException
+supr java.lang.Object
+
+CLSS public abstract jakarta.servlet.jsp.el.ExpressionEvaluator
+ anno 0 java.lang.Deprecated(boolean forRemoval=false, java.lang.String since="")
+cons public init()
+meth public abstract jakarta.servlet.jsp.el.Expression parseExpression(java.lang.String,java.lang.Class>,jakarta.servlet.jsp.el.FunctionMapper) throws jakarta.servlet.jsp.el.ELException
+meth public abstract java.lang.Object evaluate(java.lang.String,java.lang.Class>,jakarta.servlet.jsp.el.VariableResolver,jakarta.servlet.jsp.el.FunctionMapper) throws jakarta.servlet.jsp.el.ELException
+supr java.lang.Object
+
+CLSS public abstract interface jakarta.servlet.jsp.el.FunctionMapper
+ anno 0 java.lang.Deprecated(boolean forRemoval=false, java.lang.String since="")
+meth public abstract java.lang.reflect.Method resolveFunction(java.lang.String,java.lang.String)
+
+CLSS public jakarta.servlet.jsp.el.ImplicitObjectELResolver
+cons public init()
+meth public boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class> getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.util.Iterator getFeatureDescriptors(jakarta.el.ELContext,java.lang.Object)
+ anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="JSP 3.1")
+meth public void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+supr jakarta.el.ELResolver
+hcls EnumeratedMap,ImplicitObjects
+
+CLSS public jakarta.servlet.jsp.el.ImportELResolver
+cons public init()
+meth public boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+supr jakarta.el.ELResolver
+
+CLSS public jakarta.servlet.jsp.el.NotFoundELResolver
+cons public init()
+meth public boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+supr jakarta.el.ELResolver
+hfds LSTRING_FILE,lStrings
+
+CLSS public jakarta.servlet.jsp.el.ScopedAttributeELResolver
+cons public init()
+meth public boolean isReadOnly(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class getType(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.lang.Class getCommonPropertyType(jakarta.el.ELContext,java.lang.Object)
+meth public java.lang.Object getValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object)
+meth public java.util.Iterator getFeatureDescriptors(jakarta.el.ELContext,java.lang.Object)
+ anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="JSP 3.1")
+meth public void setValue(jakarta.el.ELContext,java.lang.Object,java.lang.Object,java.lang.Object)
+supr jakarta.el.ELResolver
+
+CLSS public abstract interface jakarta.servlet.jsp.el.VariableResolver
+ anno 0 java.lang.Deprecated(boolean forRemoval=false, java.lang.String since="")
+meth public abstract java.lang.Object resolveVariable(java.lang.String) throws jakarta.servlet.jsp.el.ELException
+
+CLSS public abstract jakarta.servlet.jsp.tagext.BodyContent
+cons protected init(jakarta.servlet.jsp.JspWriter)
+meth public abstract java.io.Reader getReader()
+meth public abstract java.lang.String getString()
+meth public abstract void writeOut(java.io.Writer) throws java.io.IOException
+meth public jakarta.servlet.jsp.JspWriter getEnclosingWriter()
+meth public void clearBody()
+meth public void flush() throws java.io.IOException
+supr jakarta.servlet.jsp.JspWriter
+hfds enclosingWriter
+
+CLSS public abstract interface jakarta.servlet.jsp.tagext.BodyTag
+fld public final static int EVAL_BODY_BUFFERED = 2
+fld public final static int EVAL_BODY_TAG = 2
+ anno 0 java.lang.Deprecated(boolean forRemoval=false, java.lang.String since="")
+intf jakarta.servlet.jsp.tagext.IterationTag
+meth public abstract void doInitBody() throws jakarta.servlet.jsp.JspException
+meth public abstract void setBodyContent(jakarta.servlet.jsp.tagext.BodyContent)
+
+CLSS public jakarta.servlet.jsp.tagext.BodyTagSupport
+cons public init()
+fld protected jakarta.servlet.jsp.tagext.BodyContent bodyContent
+intf jakarta.servlet.jsp.tagext.BodyTag
+meth public int doAfterBody() throws jakarta.servlet.jsp.JspException
+meth public int doEndTag() throws jakarta.servlet.jsp.JspException
+meth public int doStartTag() throws jakarta.servlet.jsp.JspException
+meth public jakarta.servlet.jsp.JspWriter getPreviousOut()
+meth public jakarta.servlet.jsp.tagext.BodyContent getBodyContent()
+meth public void doInitBody() throws jakarta.servlet.jsp.JspException
+meth public void release()
+meth public void setBodyContent(jakarta.servlet.jsp.tagext.BodyContent)
+supr jakarta.servlet.jsp.tagext.TagSupport
+hfds serialVersionUID
+
+CLSS public abstract interface jakarta.servlet.jsp.tagext.DynamicAttributes
+meth public abstract void setDynamicAttribute(java.lang.String,java.lang.String,java.lang.Object) throws jakarta.servlet.jsp.JspException
+
+CLSS public jakarta.servlet.jsp.tagext.FunctionInfo
+cons public init(java.lang.String,java.lang.String,java.lang.String)
+meth public java.lang.String getFunctionClass()
+meth public java.lang.String getFunctionSignature()
+meth public java.lang.String getName()
+supr java.lang.Object
+hfds functionClass,functionSignature,name
+
+CLSS public abstract interface jakarta.servlet.jsp.tagext.IterationTag
+fld public final static int EVAL_BODY_AGAIN = 2
+intf jakarta.servlet.jsp.tagext.Tag
+meth public abstract int doAfterBody() throws jakarta.servlet.jsp.JspException
+
+CLSS public abstract jakarta.servlet.jsp.tagext.JspFragment
+cons public init()
+meth public abstract jakarta.servlet.jsp.JspContext getJspContext()
+meth public abstract void invoke(java.io.Writer) throws jakarta.servlet.jsp.JspException,java.io.IOException
+supr java.lang.Object
+
+CLSS public abstract interface jakarta.servlet.jsp.tagext.JspIdConsumer
+meth public abstract void setJspId(java.lang.String)
+
+CLSS public abstract interface jakarta.servlet.jsp.tagext.JspTag
+
+CLSS public abstract jakarta.servlet.jsp.tagext.PageData
+cons public init()
+meth public abstract java.io.InputStream getInputStream()
+supr java.lang.Object
+
+CLSS public abstract interface jakarta.servlet.jsp.tagext.SimpleTag
+intf jakarta.servlet.jsp.tagext.JspTag
+meth public abstract jakarta.servlet.jsp.tagext.JspTag getParent()
+meth public abstract void doTag() throws jakarta.servlet.jsp.JspException,java.io.IOException
+meth public abstract void setJspBody(jakarta.servlet.jsp.tagext.JspFragment)
+meth public abstract void setJspContext(jakarta.servlet.jsp.JspContext)
+meth public abstract void setParent(jakarta.servlet.jsp.tagext.JspTag)
+
+CLSS public jakarta.servlet.jsp.tagext.SimpleTagSupport
+cons public init()
+intf jakarta.servlet.jsp.tagext.SimpleTag
+meth protected jakarta.servlet.jsp.JspContext getJspContext()
+meth protected jakarta.servlet.jsp.tagext.JspFragment getJspBody()
+meth public final static jakarta.servlet.jsp.tagext.JspTag findAncestorWithClass(jakarta.servlet.jsp.tagext.JspTag,java.lang.Class>)
+meth public jakarta.servlet.jsp.tagext.JspTag getParent()
+meth public void doTag() throws jakarta.servlet.jsp.JspException,java.io.IOException
+meth public void setJspBody(jakarta.servlet.jsp.tagext.JspFragment)
+meth public void setJspContext(jakarta.servlet.jsp.JspContext)
+meth public void setParent(jakarta.servlet.jsp.tagext.JspTag)
+supr java.lang.Object
+hfds jspBody,jspContext,parentTag
+
+CLSS public abstract interface jakarta.servlet.jsp.tagext.Tag
+fld public final static int EVAL_BODY_INCLUDE = 1
+fld public final static int EVAL_PAGE = 6
+fld public final static int SKIP_BODY = 0
+fld public final static int SKIP_PAGE = 5
+intf jakarta.servlet.jsp.tagext.JspTag
+meth public abstract int doEndTag() throws jakarta.servlet.jsp.JspException
+meth public abstract int doStartTag() throws jakarta.servlet.jsp.JspException
+meth public abstract jakarta.servlet.jsp.tagext.Tag getParent()
+meth public abstract void release()
+meth public abstract void setPageContext(jakarta.servlet.jsp.PageContext)
+meth public abstract void setParent(jakarta.servlet.jsp.tagext.Tag)
+
+CLSS public jakarta.servlet.jsp.tagext.TagAdapter
+cons public init(jakarta.servlet.jsp.tagext.SimpleTag)
+intf jakarta.servlet.jsp.tagext.Tag
+meth public int doEndTag() throws jakarta.servlet.jsp.JspException
+meth public int doStartTag() throws jakarta.servlet.jsp.JspException
+meth public jakarta.servlet.jsp.tagext.JspTag getAdaptee()
+meth public jakarta.servlet.jsp.tagext.Tag getParent()
+meth public void release()
+meth public void setPageContext(jakarta.servlet.jsp.PageContext)
+meth public void setParent(jakarta.servlet.jsp.tagext.Tag)
+supr java.lang.Object
+hfds parent,parentDetermined,simpleTagAdaptee
+
+CLSS public jakarta.servlet.jsp.tagext.TagAttributeInfo
+cons public init(java.lang.String,boolean,java.lang.String,boolean)
+cons public init(java.lang.String,boolean,java.lang.String,boolean,boolean)
+cons public init(java.lang.String,boolean,java.lang.String,boolean,boolean,java.lang.String,boolean,boolean,java.lang.String,java.lang.String)
+fld public final static java.lang.String ID = "id"
+meth public boolean canBeRequestTime()
+meth public boolean isDeferredMethod()
+meth public boolean isDeferredValue()
+meth public boolean isFragment()
+meth public boolean isRequired()
+meth public java.lang.String getDescription()
+meth public java.lang.String getExpectedTypeName()
+meth public java.lang.String getMethodSignature()
+meth public java.lang.String getName()
+meth public java.lang.String getTypeName()
+meth public java.lang.String toString()
+meth public static jakarta.servlet.jsp.tagext.TagAttributeInfo getIdAttribute(jakarta.servlet.jsp.tagext.TagAttributeInfo[])
+supr java.lang.Object
+hfds deferredMethod,deferredValue,description,expectedTypeName,fragment,methodSignature,name,reqTime,required,type
+
+CLSS public jakarta.servlet.jsp.tagext.TagData
+cons public init(java.lang.Object[][])
+cons public init(java.util.Hashtable)
+fld public final static java.lang.Object REQUEST_TIME_VALUE
+intf java.lang.Cloneable
+meth public java.lang.Object getAttribute(java.lang.String)
+meth public java.lang.String getAttributeString(java.lang.String)
+meth public java.lang.String getId()
+meth public java.util.Enumeration getAttributes()
+meth public void setAttribute(java.lang.String,java.lang.Object)
+supr java.lang.Object
+hfds attributes
+
+CLSS public abstract jakarta.servlet.jsp.tagext.TagExtraInfo
+cons public init()
+meth public boolean isValid(jakarta.servlet.jsp.tagext.TagData)
+meth public final jakarta.servlet.jsp.tagext.TagInfo getTagInfo()
+meth public final void setTagInfo(jakarta.servlet.jsp.tagext.TagInfo)
+meth public jakarta.servlet.jsp.tagext.ValidationMessage[] validate(jakarta.servlet.jsp.tagext.TagData)
+meth public jakarta.servlet.jsp.tagext.VariableInfo[] getVariableInfo(jakarta.servlet.jsp.tagext.TagData)
+supr java.lang.Object
+hfds ZERO_VARIABLE_INFO,tagInfo
+
+CLSS public jakarta.servlet.jsp.tagext.TagFileInfo
+cons public init(java.lang.String,java.lang.String,jakarta.servlet.jsp.tagext.TagInfo)
+meth public jakarta.servlet.jsp.tagext.TagInfo getTagInfo()
+meth public java.lang.String getName()
+meth public java.lang.String getPath()
+supr java.lang.Object
+hfds name,path,tagInfo
+
+CLSS public jakarta.servlet.jsp.tagext.TagInfo
+cons public init(java.lang.String,java.lang.String,java.lang.String,java.lang.String,jakarta.servlet.jsp.tagext.TagLibraryInfo,jakarta.servlet.jsp.tagext.TagExtraInfo,jakarta.servlet.jsp.tagext.TagAttributeInfo[])
+cons public init(java.lang.String,java.lang.String,java.lang.String,java.lang.String,jakarta.servlet.jsp.tagext.TagLibraryInfo,jakarta.servlet.jsp.tagext.TagExtraInfo,jakarta.servlet.jsp.tagext.TagAttributeInfo[],java.lang.String,java.lang.String,java.lang.String,jakarta.servlet.jsp.tagext.TagVariableInfo[])
+cons public init(java.lang.String,java.lang.String,java.lang.String,java.lang.String,jakarta.servlet.jsp.tagext.TagLibraryInfo,jakarta.servlet.jsp.tagext.TagExtraInfo,jakarta.servlet.jsp.tagext.TagAttributeInfo[],java.lang.String,java.lang.String,java.lang.String,jakarta.servlet.jsp.tagext.TagVariableInfo[],boolean)
+fld public final static java.lang.String BODY_CONTENT_EMPTY = "empty"
+fld public final static java.lang.String BODY_CONTENT_JSP = "JSP"
+fld public final static java.lang.String BODY_CONTENT_SCRIPTLESS = "scriptless"
+fld public final static java.lang.String BODY_CONTENT_TAG_DEPENDENT = "tagdependent"
+meth public boolean hasDynamicAttributes()
+meth public boolean isValid(jakarta.servlet.jsp.tagext.TagData)
+meth public jakarta.servlet.jsp.tagext.TagAttributeInfo[] getAttributes()
+meth public jakarta.servlet.jsp.tagext.TagExtraInfo getTagExtraInfo()
+meth public jakarta.servlet.jsp.tagext.TagLibraryInfo getTagLibrary()
+meth public jakarta.servlet.jsp.tagext.TagVariableInfo[] getTagVariableInfos()
+meth public jakarta.servlet.jsp.tagext.ValidationMessage[] validate(jakarta.servlet.jsp.tagext.TagData)
+meth public jakarta.servlet.jsp.tagext.VariableInfo[] getVariableInfo(jakarta.servlet.jsp.tagext.TagData)
+meth public java.lang.String getBodyContent()
+meth public java.lang.String getDisplayName()
+meth public java.lang.String getInfoString()
+meth public java.lang.String getLargeIcon()
+meth public java.lang.String getSmallIcon()
+meth public java.lang.String getTagClassName()
+meth public java.lang.String getTagName()
+meth public void setTagExtraInfo(jakarta.servlet.jsp.tagext.TagExtraInfo)
+meth public void setTagLibrary(jakarta.servlet.jsp.tagext.TagLibraryInfo)
+supr java.lang.Object
+hfds attributeInfo,bodyContent,displayName,dynamicAttributes,infoString,largeIcon,smallIcon,tagClassName,tagExtraInfo,tagLibrary,tagName,tagVariableInfo
+
+CLSS public abstract jakarta.servlet.jsp.tagext.TagLibraryInfo
+cons protected init(java.lang.String,java.lang.String)
+fld protected jakarta.servlet.jsp.tagext.FunctionInfo[] functions
+fld protected jakarta.servlet.jsp.tagext.TagFileInfo[] tagFiles
+fld protected jakarta.servlet.jsp.tagext.TagInfo[] tags
+fld protected java.lang.String info
+fld protected java.lang.String jspversion
+fld protected java.lang.String prefix
+fld protected java.lang.String shortname
+fld protected java.lang.String tlibversion
+fld protected java.lang.String uri
+fld protected java.lang.String urn
+meth public abstract jakarta.servlet.jsp.tagext.TagLibraryInfo[] getTagLibraryInfos()
+meth public jakarta.servlet.jsp.tagext.FunctionInfo getFunction(java.lang.String)
+meth public jakarta.servlet.jsp.tagext.FunctionInfo[] getFunctions()
+meth public jakarta.servlet.jsp.tagext.TagFileInfo getTagFile(java.lang.String)
+meth public jakarta.servlet.jsp.tagext.TagFileInfo[] getTagFiles()
+meth public jakarta.servlet.jsp.tagext.TagInfo getTag(java.lang.String)
+meth public jakarta.servlet.jsp.tagext.TagInfo[] getTags()
+meth public java.lang.String getInfoString()
+meth public java.lang.String getPrefixString()
+meth public java.lang.String getReliableURN()
+meth public java.lang.String getRequiredVersion()
+meth public java.lang.String getShortName()
+meth public java.lang.String getURI()
+supr java.lang.Object
+
+CLSS public abstract jakarta.servlet.jsp.tagext.TagLibraryValidator
+cons public init()
+meth public jakarta.servlet.jsp.tagext.ValidationMessage[] validate(java.lang.String,java.lang.String,jakarta.servlet.jsp.tagext.PageData)
+meth public java.util.Map getInitParameters()
+meth public void release()
+meth public void setInitParameters(java.util.Map)
+supr java.lang.Object
+hfds initParameters
+
+CLSS public jakarta.servlet.jsp.tagext.TagSupport
+cons public init()
+fld protected jakarta.servlet.jsp.PageContext pageContext
+fld protected java.lang.String id
+intf jakarta.servlet.jsp.tagext.IterationTag
+intf java.io.Serializable
+meth public final static jakarta.servlet.jsp.tagext.Tag findAncestorWithClass(jakarta.servlet.jsp.tagext.Tag,java.lang.Class>)
+meth public int doAfterBody() throws jakarta.servlet.jsp.JspException
+meth public int doEndTag() throws jakarta.servlet.jsp.JspException
+meth public int doStartTag() throws jakarta.servlet.jsp.JspException
+meth public jakarta.servlet.jsp.tagext.Tag getParent()
+meth public java.lang.Object getValue(java.lang.String)
+meth public java.lang.String getId()
+meth public java.util.Enumeration getValues()
+meth public void release()
+meth public void removeValue(java.lang.String)
+meth public void setId(java.lang.String)
+meth public void setPageContext(jakarta.servlet.jsp.PageContext)
+meth public void setParent(jakarta.servlet.jsp.tagext.Tag)
+meth public void setValue(java.lang.String,java.lang.Object)
+supr java.lang.Object
+hfds parent,serialVersionUID,values
+
+CLSS public jakarta.servlet.jsp.tagext.TagVariableInfo
+cons public init(java.lang.String,java.lang.String,java.lang.String,boolean,int)
+meth public boolean getDeclare()
+meth public int getScope()
+meth public java.lang.String getClassName()
+meth public java.lang.String getNameFromAttribute()
+meth public java.lang.String getNameGiven()
+supr java.lang.Object
+hfds className,declare,nameFromAttribute,nameGiven,scope
+
+CLSS public abstract interface jakarta.servlet.jsp.tagext.TryCatchFinally
+meth public abstract void doCatch(java.lang.Throwable) throws java.lang.Throwable
+meth public abstract void doFinally()
+
+CLSS public jakarta.servlet.jsp.tagext.ValidationMessage
+cons public init(java.lang.String,java.lang.String)
+meth public java.lang.String getId()
+meth public java.lang.String getMessage()
+supr java.lang.Object
+hfds id,message
+
+CLSS public jakarta.servlet.jsp.tagext.VariableInfo
+cons public init(java.lang.String,java.lang.String,boolean,int)
+fld public final static int AT_BEGIN = 1
+fld public final static int AT_END = 2
+fld public final static int NESTED = 0
+meth public boolean getDeclare()
+meth public int getScope()
+meth public java.lang.String getClassName()
+meth public java.lang.String getVarName()
+supr java.lang.Object
+hfds className,declare,scope,varName
+
+CLSS public abstract interface java.io.Closeable
+intf java.lang.AutoCloseable
+meth public abstract void close() throws java.io.IOException
+
+CLSS public abstract interface java.io.Flushable
+meth public abstract void flush() throws java.io.IOException
+
+CLSS public abstract interface java.io.Serializable
+
+CLSS public abstract java.io.Writer
+cons protected init()
+cons protected init(java.lang.Object)
+fld protected java.lang.Object lock
+intf java.io.Closeable
+intf java.io.Flushable
+intf java.lang.Appendable
+meth public abstract void close() throws java.io.IOException
+meth public abstract void flush() throws java.io.IOException
+meth public abstract void write(char[],int,int) throws java.io.IOException
+meth public java.io.Writer append(char) throws java.io.IOException
+meth public java.io.Writer append(java.lang.CharSequence) throws java.io.IOException
+meth public java.io.Writer append(java.lang.CharSequence,int,int) throws java.io.IOException
+meth public static java.io.Writer nullWriter()
+meth public void write(char[]) throws java.io.IOException
+meth public void write(int) throws java.io.IOException
+meth public void write(java.lang.String) throws java.io.IOException
+meth public void write(java.lang.String,int,int) throws java.io.IOException
+supr java.lang.Object
+
+CLSS public abstract interface java.lang.Appendable
+meth public abstract java.lang.Appendable append(char) throws java.io.IOException
+meth public abstract java.lang.Appendable append(java.lang.CharSequence) throws java.io.IOException
+meth public abstract java.lang.Appendable append(java.lang.CharSequence,int,int) throws java.io.IOException
+
+CLSS public abstract interface java.lang.AutoCloseable
+meth public abstract void close() throws java.lang.Exception
+
+CLSS public abstract interface java.lang.Cloneable
+
+CLSS public abstract interface !annotation java.lang.Deprecated
+ anno 0 java.lang.annotation.Documented()
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE])
+intf java.lang.annotation.Annotation
+meth public abstract !hasdefault boolean forRemoval()
+meth public abstract !hasdefault java.lang.String since()
+
+CLSS public java.lang.Exception
+cons protected init(java.lang.String,java.lang.Throwable,boolean,boolean)
+cons public init()
+cons public init(java.lang.String)
+cons public init(java.lang.String,java.lang.Throwable)
+cons public init(java.lang.Throwable)
+supr java.lang.Throwable
+
+CLSS public java.lang.Object
+cons public init()
+meth protected java.lang.Object clone() throws java.lang.CloneNotSupportedException
+meth protected void finalize() throws java.lang.Throwable
+ anno 0 java.lang.Deprecated(boolean forRemoval=false, java.lang.String since="9")
+meth public boolean equals(java.lang.Object)
+meth public final java.lang.Class> getClass()
+meth public final void notify()
+meth public final void notifyAll()
+meth public final void wait() throws java.lang.InterruptedException
+meth public final void wait(long) throws java.lang.InterruptedException
+meth public final void wait(long,int) throws java.lang.InterruptedException
+meth public int hashCode()
+meth public java.lang.String toString()
+
+CLSS public java.lang.Throwable
+cons protected init(java.lang.String,java.lang.Throwable,boolean,boolean)
+cons public init()
+cons public init(java.lang.String)
+cons public init(java.lang.String,java.lang.Throwable)
+cons public init(java.lang.Throwable)
+intf java.io.Serializable
+meth public final java.lang.Throwable[] getSuppressed()
+meth public final void addSuppressed(java.lang.Throwable)
+meth public java.lang.StackTraceElement[] getStackTrace()
+meth public java.lang.String getLocalizedMessage()
+meth public java.lang.String getMessage()
+meth public java.lang.String toString()
+meth public java.lang.Throwable fillInStackTrace()
+meth public java.lang.Throwable getCause()
+meth public java.lang.Throwable initCause(java.lang.Throwable)
+meth public void printStackTrace()
+meth public void printStackTrace(java.io.PrintStream)
+meth public void printStackTrace(java.io.PrintWriter)
+meth public void setStackTrace(java.lang.StackTraceElement[])
+supr java.lang.Object
+
+CLSS public abstract interface java.lang.annotation.Annotation
+meth public abstract boolean equals(java.lang.Object)
+meth public abstract int hashCode()
+meth public abstract java.lang.Class extends java.lang.annotation.Annotation> annotationType()
+meth public abstract java.lang.String toString()
+
+CLSS public abstract interface !annotation java.lang.annotation.Documented
+ anno 0 java.lang.annotation.Documented()
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[ANNOTATION_TYPE])
+intf java.lang.annotation.Annotation
+
+CLSS public abstract interface !annotation java.lang.annotation.Retention
+ anno 0 java.lang.annotation.Documented()
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[ANNOTATION_TYPE])
+intf java.lang.annotation.Annotation
+meth public abstract java.lang.annotation.RetentionPolicy value()
+
+CLSS public abstract interface !annotation java.lang.annotation.Target
+ anno 0 java.lang.annotation.Documented()
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[ANNOTATION_TYPE])
+intf java.lang.annotation.Annotation
+meth public abstract java.lang.annotation.ElementType[] value()
+
diff --git a/jsp/src/main/resources/com/sun/ts/tests/signaturetest/jsp/sig-test-pkg-list.txt b/jsp/src/main/resources/com/sun/ts/tests/signaturetest/jsp/sig-test-pkg-list.txt
new file mode 100644
index 0000000000..9fbd5d3480
--- /dev/null
+++ b/jsp/src/main/resources/com/sun/ts/tests/signaturetest/jsp/sig-test-pkg-list.txt
@@ -0,0 +1,28 @@
+#
+# Copyright (c) 2019, 2020 Oracle and/or its affiliates and others.
+# All rights reserved.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License v. 2.0, which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# This Source Code may also be made available under the following Secondary
+# Licenses when the conditions for such availability set forth in the
+# Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+# version 2 with the GNU Classpath Exception, which is available at
+# https://www.gnu.org/software/classpath/license.html.
+#
+# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+#
+
+##
+# This file contains a list of all the packages
+# contained in the signature files for this
+# deliverable. This file is used to exclude valid
+# sub-packages from being verified when their
+# parent package's signature is checked.
+##
+
+jakarta.servlet.jsp
+jakarta.servlet.jsp.el
+jakarta.servlet.jsp.tagext
diff --git a/jsp/src/main/resources/com/sun/ts/tests/signaturetest/jsp/sig-test.map b/jsp/src/main/resources/com/sun/ts/tests/signaturetest/jsp/sig-test.map
new file mode 100644
index 0000000000..0544334ca9
--- /dev/null
+++ b/jsp/src/main/resources/com/sun/ts/tests/signaturetest/jsp/sig-test.map
@@ -0,0 +1,28 @@
+#
+# Copyright (c) 2019, 2021 Oracle and/or its affiliates and others.
+# All rights reserved.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License v. 2.0, which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# This Source Code may also be made available under the following Secondary
+# Licenses when the conditions for such availability set forth in the
+# Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+# version 2 with the GNU Classpath Exception, which is available at
+# https://www.gnu.org/software/classpath/license.html.
+#
+# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+#
+
+###############################################################
+# The signature test mapping file for the JSP TCK. This file
+# should be formatted as a standard java properties file. The
+# name is the package name and the value is the version of the
+# package that should be tested by the signature tests.
+###############################################################
+
+
+# JSP
+=======
+jakarta.servlet.jsp=3.1
diff --git a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTest.java b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTest.java
index 4adde6a0c9..dc5001392c 100644
--- a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTest.java
+++ b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTest.java
@@ -23,6 +23,9 @@
import java.io.BufferedReader;
import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
@@ -30,6 +33,7 @@
import com.sun.ts.lib.harness.EETest;
import com.sun.ts.lib.util.TestUtil;
+import java.lang.System.Logger;
/**
* This class should be extended by TCK developers that wish to create a set of
@@ -39,6 +43,8 @@
*/
public abstract class SigTest extends EETest {
+ private static final Logger logger = System.getLogger(SigTest.class.getName());
+
protected SignatureTestDriver driver;
/**
@@ -173,18 +179,14 @@ protected String[] getClasses() {
* @param p
* Properties specified by the test user and passed to this test via
* the test framework.
- * @throws Exception
- * When an error occurs reading or saving the state information
- * processed by this method.
*/
- public void setup(String[] args, Properties p) throws Exception {
+ public void setup() {
try {
- TestUtil.logTrace("$$$ SigTest.setup() called");
- this.testInfo = new SigTestData(p);
+ logger.log(Logger.Level.TRACE, "$$$ SigTest.setup() called");
+ this.testInfo = new SigTestData();
TestUtil.logTrace("$$$ SigTest.setup() complete");
} catch (Exception e) {
- logErr("Unexpected exception " + e.getMessage());
- throw new Exception("setup failed!", e);
+ logger.log(Logger.Level.ERROR, "Unexpected exception " + e.getMessage());
}
}
@@ -197,15 +199,13 @@ public void setup(String[] args, Properties p) throws Exception {
* @throws Exception
* When an error occurs executing the signature tests.
*/
- public void signatureTest() throws Exception {
- TestUtil.logTrace("$$$ SigTest.test1() called");
+ public void signatureTest(String mapFile, String packageFile, Properties mapFileAsProps, String[] packages)
+ throws Exception {
+
SigTestResult results = null;
- String mapFile = getMapFile();
- String repositoryDir = getRepositoryDir();
- String[] packages = getPackages();
+ String repositoryDir = System.getProperty("java.io.tmpdir");
String[] classes = getClasses();
- String packageFile = getPackageFile();
- String testClasspath = testInfo.getTestClasspath();
+ String testClasspath = testInfo.getTestClasspath(); // System.getProperty("signature.sigTestClasspath");
String optionalPkgToIgnore = testInfo.getOptionalTechPackagesToIgnore();
// unlisted optional technology packages are packages for optional
@@ -216,35 +216,35 @@ public void signatureTest() throws Exception {
// If testing with Java 9+, extract the JDK's modules so they can be used
// on the testcase's classpath.
- Properties sysProps = System.getProperties();
- String version = (String) sysProps.get("java.version");
- if (!version.startsWith("1.")) {
- String jimageDir = testInfo.getJImageDir();
- File f = new File(jimageDir);
- f.mkdirs();
-
- String javaHome = (String) sysProps.get("java.home");
- TestUtil.logMsg("Executing JImage");
-
- try {
- ProcessBuilder pb = new ProcessBuilder(javaHome + "/bin/jimage", "extract", "--dir=" + jimageDir, javaHome + "/lib/modules");
- TestUtil.logMsg(javaHome + "/bin/jimage extract --dir=" + jimageDir + " " + javaHome + "/lib/modules");
- pb.redirectErrorStream(true);
- Process proc = pb.start();
- BufferedReader out = new BufferedReader(new InputStreamReader(proc.getInputStream()));
- String line = null;
- while ((line = out.readLine()) != null) {
- TestUtil.logMsg(line);
- }
- int rc = proc.waitFor();
- TestUtil.logMsg("JImage RC = " + rc);
- out.close();
- } catch (Exception e) {
- TestUtil.logMsg("Exception while executing JImage! Some tests may fail.");
- e.printStackTrace();
+ String version = System.getProperty("java.version");
+
+ String jimageDir = testInfo.getJImageDir();
+ File f = new File(jimageDir);
+ f.mkdirs();
+
+ String javaHome = System.getProperty("java.home");
+ logger.log(Logger.Level.INFO, "Executing JImage");
+
+ try {
+ ProcessBuilder pb = new ProcessBuilder(javaHome + "/bin/jimage", "extract", "--dir=" + jimageDir, javaHome + "/lib/modules");
+ logger.log(Logger.Level.INFO, javaHome + "/bin/jimage extract --dir=" + jimageDir + " " + javaHome + "/lib/modules");
+ pb.redirectErrorStream(true);
+ Process proc = pb.start();
+ BufferedReader out = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+ String line = null;
+ while ((line = out.readLine()) != null) {
+ TestUtil.logMsg(line);
}
+
+ int rc = proc.waitFor();
+ TestUtil.logMsg("JImage RC = " + rc);
+ out.close();
+ } catch (Exception e) {
+ TestUtil.logMsg("Exception while executing JImage! Some tests may fail.");
+ e.printStackTrace();
}
+
try {
results = getSigTestDriver().executeSigTest(packageFile, mapFile,
@@ -261,11 +261,65 @@ public void signatureTest() throws Exception {
throw new Exception("SigTest.test1() failed!, diffs found");
} else {
TestUtil.logErr("Unexpected exception " + e.getMessage());
- throw new Exception("test1 failed with an unexpected exception", e);
+ throw new Exception("test failed with an unexpected exception", e);
}
}
}
+ public File writeStreamToTempFile(InputStream inputStream, String tempFilePrefix, String tempFileSuffix) throws IOException {
+ FileOutputStream outputStream = null;
+ try {
+ File file = File.createTempFile(tempFilePrefix, tempFileSuffix);
+ file.deleteOnExit();
+ outputStream = new FileOutputStream(file);
+ byte[] buffer = new byte[1024];
+ while (true) {
+ int bytesRead = inputStream.read(buffer);
+ if (bytesRead == -1) {
+ break;
+ }
+ outputStream.write(buffer, 0, bytesRead);
+ }
+ return file;
+ }
+ finally {
+ if (outputStream != null) {
+ outputStream.close();
+ }
+ }
+ }
+
+ public File writeStreamToSigFile(InputStream inputStream, String apiPackage, String packageVersion) throws IOException {
+ FileOutputStream outputStream = null;
+ String tmpdir = System.getProperty("java.io.tmpdir");
+ try {
+ File sigfile = new File(tmpdir+ File.separator + apiPackage + ".sig_"+packageVersion);
+ if(sigfile.exists()){
+ sigfile.delete();
+ TestUtil.logMsg("Existing signature file deleted to create new one");
+ }
+ if(!sigfile.createNewFile()){
+ TestUtil.logErr("signature file is not created");
+ }
+ outputStream = new FileOutputStream(sigfile);
+ byte[] buffer = new byte[1024];
+ while (true) {
+ int bytesRead = inputStream.read(buffer);
+ if (bytesRead == -1) {
+ break;
+ }
+ outputStream.write(buffer, 0, bytesRead);
+ }
+ return sigfile;
+ }
+
+ finally {
+ if (outputStream != null) {
+ outputStream.close();
+ }
+ }
+ }
+
/**
* Called by the test framework to cleanup any outstanding state. This method
* simply passes the message through to the utility class so the
diff --git a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTestData.java b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTestData.java
index 7f36a914be..89d8b60726 100644
--- a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTestData.java
+++ b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTestData.java
@@ -31,8 +31,8 @@ public class SigTestData {
private Properties props;
- public SigTestData(Properties props) {
- this.props = props;
+ public SigTestData() {
+ this.props = System.getProperties();
}
public String getVehicle() {
diff --git a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTestDriver.java b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTestDriver.java
index af41144516..78763088fa 100644
--- a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTestDriver.java
+++ b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTestDriver.java
@@ -22,8 +22,8 @@
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
+import java.lang.System.Logger;
-import com.sun.javatest.Status;
import com.sun.ts.lib.util.TestUtil;
/**
@@ -33,6 +33,8 @@
*/
public class SigTestDriver extends SignatureTestDriver {
+ private static final Logger logger = System.getLogger(SigTestDriver.class.getName());
+
private static final String CLASSPATH_FLAG = "-Classpath";
private static final String FILENAME_FLAG = "-FileName";
@@ -184,12 +186,13 @@ protected boolean runSignatureTest(String packageOrClassName,
// currently, there is no way to determine if there are error msgs in
// the rawmessages, so we will always dump this and call it a status.
- TestUtil.logMsg(
- "********** Status Report '" + packageOrClassName + "' **********\n");
- TestUtil.logMsg(rawMessages);
-
- return Status.parse(sigTestInstance.toString().substring(7)).isPassed();
+ // TestUtil.logMsg(
+ // "********** Status Report '" + packageOrClassName + "' **********\n");
+ // TestUtil.logMsg(rawMessages);
+ logger.log(Logger.Level.INFO, "********** Status Report '" + packageOrClassName + "' **********\n");
+ logger.log(Logger.Level.INFO, rawMessages);
+ return sigTestInstance.toString().substring(7).startsWith("Passed.");
} // END runSignatureTest
/*
@@ -230,11 +233,13 @@ protected boolean runPackageSearch(String packageOrClassName,
// currently, there is no way to determine if there are error msgs in
// the rawmessages, so we will always dump this and call it a status.
- TestUtil.logMsg(
- "********** Status Report '" + packageOrClassName + "' **********\n");
- TestUtil.logMsg(rawMessages);
+ // TestUtil.logMsg(
+ // "********** Status Report '" + packageOrClassName + "' **********\n");
+ // TestUtil.logMsg(rawMessages);
+ logger.log(Logger.Level.INFO, "********** Status Report '" + packageOrClassName + "' **********\n");
+ logger.log(Logger.Level.INFO, rawMessages);
- return Status.parse(sigTestInstance.toString().substring(7)).isPassed();
+ return sigTestInstance.toString().substring(7).startsWith("Passed.");
}
/*
@@ -281,8 +286,11 @@ protected boolean verifyJTAJarForNoXA(String classpath, String repositoryDir) th
// currently, there is no way to determine if there are error msgs in
// the rawmessages, so we will always dump this and call it a status.
- TestUtil.logMsg("********** Status Report JTA JAR validation **********\n");
- TestUtil.logMsg(rawMessages);
- return Status.parse(sigTestInstance.toString().substring(7)).isPassed();
+ // TestUtil.logMsg("********** Status Report JTA JAR validation **********\n");
+ // TestUtil.logMsg(rawMessages);
+ logger.log(Logger.Level.INFO, "********** Status Report JTA JAR validation **********\n");
+ logger.log(Logger.Level.INFO, rawMessages);
+
+ return sigTestInstance.toString().substring(7).startsWith("Passed.");
}
}
diff --git a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTestEE.java b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTestEE.java
index c4e9dce7e7..87267b10b4 100644
--- a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTestEE.java
+++ b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SigTestEE.java
@@ -203,10 +203,10 @@ protected String[] getClasses(String vehicleName) {
* When an error occurs reading or saving the state information
* processed by this method.
*/
- public void setup(String[] args, Properties p) throws Exception {
+ public void setup() throws Exception {
try {
TestUtil.logMsg("$$$ SigTestEE.setup() called");
- this.testInfo = new SigTestData(p);
+ this.testInfo = new SigTestData();
TestUtil.logMsg("$$$ SigTestEE.setup() complete");
} catch (Exception e) {
logErr("Unexpected exception " + e.getMessage());
diff --git a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SignatureTestDriver.java b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SignatureTestDriver.java
index 20fa00cdb2..e34fac97ca 100644
--- a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SignatureTestDriver.java
+++ b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/SignatureTestDriver.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2022 Oracle and/or its affiliates and others.
+ * Copyright (c) 2007, 2023 Oracle and/or its affiliates and others.
* All rights reserved.
*
* This program and the accompanying materials are made available under the
@@ -35,6 +35,8 @@ public abstract class SignatureTestDriver {
private static final String SIG_FILE_EXT = ".sig";
+ private static final String SIG_FILE_VER_SEP = "_";
+
// ---------------------------------------------------------- Public Methods
/**
@@ -448,7 +450,7 @@ protected abstract boolean verifyJTAJarForNoXA(String classpath,
* file, can also be thrown if there is an error creating an input
* stream from the specified file.
*/
- protected Properties loadMapFile(String mapFile)
+ public Properties loadMapFile(String mapFile)
throws IOException, FileNotFoundException {
FileInputStream in = null;
@@ -479,19 +481,23 @@ protected Properties loadMapFile(String mapFile)
* the base portion of the signature filename
* @param repositoryDir
* the directory in which the signatures are stored
+ * @param version
+ * the version of the signature file
* @throws FileNotFoundException
* if the file cannot be validated as existing and is in fact a file
* @return a valid, fully qualified filename, appropriate for the system the
* test is being run on
*/
- protected String getSigFileName(String baseName, String repositoryDir)
- throws FileNotFoundException {
+ protected String getSigFileName(String baseName, String repositoryDir,
+ String version) throws FileNotFoundException {
String sigFile;
if (repositoryDir.endsWith(File.separator)) {
- sigFile = repositoryDir + baseName + SIG_FILE_EXT;
+ sigFile = repositoryDir + baseName + SIG_FILE_EXT + SIG_FILE_VER_SEP
+ + version;
} else {
- sigFile = repositoryDir + File.separator + baseName + SIG_FILE_EXT;
+ sigFile = repositoryDir + File.separator + baseName + SIG_FILE_EXT
+ + SIG_FILE_VER_SEP + version;
}
File testFile = new File(sigFile);
@@ -574,7 +580,7 @@ protected SignatureFileInfo getSigFileInfo(String packageName, String mapFile,
/* Return the expected name of the signature file */
- return new SignatureFileInfo(getSigFileName(name, repositoryDir),
+ return new SignatureFileInfo(getSigFileName(name, repositoryDir, version),
version);
} // END getSigFileInfo
diff --git a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/caj/CAJSigTest.java b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/caj/CAJSigTest.java
index 038f8401ba..56b2709fd7 100644
--- a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/caj/CAJSigTest.java
+++ b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/caj/CAJSigTest.java
@@ -43,6 +43,8 @@
*/
public class CAJSigTest extends SigTest {
+ private Properties props = null;
+
// all the classes that make up common annotations
private final String GENERATED = "jakarta.annotation.Generated";
@@ -167,6 +169,10 @@ protected String[] getClasses() {
}
+ public CAJSigTest (){
+ props = System.getProperties();
+ }
+
/***** Boilerplate Code *****/
/**
@@ -214,39 +220,39 @@ public Status run(String args[], PrintWriter out, PrintWriter err) {
* ca.sig.securityrunas; ca.sig.sqldatasourcedefinition;
* ca.sig.sqldatasourcedefinitions;
*/
- public void setup(String[] args, Properties p) throws Exception {
- super.setup(args, p);
+ public void setup() {
+ super.setup();
// read in the values from the ts.jte file
- ca_generated = Boolean.valueOf(p.getProperty("ca.sig.generated"))
+ ca_generated = Boolean.valueOf(props.getProperty("ca.sig.generated"))
.booleanValue();
- ca_managedbean = Boolean.valueOf(p.getProperty("ca.sig.managedbean"))
+ ca_managedbean = Boolean.valueOf(props.getProperty("ca.sig.managedbean"))
.booleanValue();
- ca_postconstruct = Boolean.valueOf(p.getProperty("ca.sig.postconstruct"))
+ ca_postconstruct = Boolean.valueOf(props.getProperty("ca.sig.postconstruct"))
.booleanValue();
- ca_priority = Boolean.valueOf(p.getProperty("ca.sig.priority"))
+ ca_priority = Boolean.valueOf(props.getProperty("ca.sig.priority"))
.booleanValue();
- ca_predestroy = Boolean.valueOf(p.getProperty("ca.sig.predestroy"))
+ ca_predestroy = Boolean.valueOf(props.getProperty("ca.sig.predestroy"))
.booleanValue();
- ca_resource = Boolean.valueOf(p.getProperty("ca.sig.resource"))
+ ca_resource = Boolean.valueOf(props.getProperty("ca.sig.resource"))
.booleanValue();
- ca_resources = Boolean.valueOf(p.getProperty("ca.sig.resources"))
+ ca_resources = Boolean.valueOf(props.getProperty("ca.sig.resources"))
.booleanValue();
ca_securitydeclareroles = Boolean
- .valueOf(p.getProperty("ca.sig.securitydeclareroles")).booleanValue();
+ .valueOf(props.getProperty("ca.sig.securitydeclareroles")).booleanValue();
ca_securitydenyall = Boolean
- .valueOf(p.getProperty("ca.sig.securitydenyall")).booleanValue();
+ .valueOf(props.getProperty("ca.sig.securitydenyall")).booleanValue();
ca_securitypermitall = Boolean
- .valueOf(p.getProperty("ca.sig.securitypermitall")).booleanValue();
+ .valueOf(props.getProperty("ca.sig.securitypermitall")).booleanValue();
ca_securityrolesallowed = Boolean
- .valueOf(p.getProperty("ca.sig.securityrolesallowed")).booleanValue();
- ca_securityrunas = Boolean.valueOf(p.getProperty("ca.sig.securityrunas"))
+ .valueOf(props.getProperty("ca.sig.securityrolesallowed")).booleanValue();
+ ca_securityrunas = Boolean.valueOf(props.getProperty("ca.sig.securityrunas"))
.booleanValue();
ca_sqldatasourcedefinition = Boolean
- .valueOf(p.getProperty("ca.sig.sqldatasourcedefinition"))
+ .valueOf(props.getProperty("ca.sig.sqldatasourcedefinition"))
.booleanValue();
ca_sqldatasourcedefinitions = Boolean
- .valueOf(p.getProperty("ca.sig.sqldatasourcedefinitions"))
+ .valueOf(props.getProperty("ca.sig.sqldatasourcedefinitions"))
.booleanValue();
}
diff --git a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/jaxws/JAXWSSigTest.java b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/jaxws/JAXWSSigTest.java
index ede69ebd69..058d2ffe37 100644
--- a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/jaxws/JAXWSSigTest.java
+++ b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/jaxws/JAXWSSigTest.java
@@ -99,8 +99,8 @@ public Status run(String args[], PrintWriter out, PrintWriter err) {
/*
* @class.setup_props: sigTestClasspath, Location of JAXWS jar files; ts_home;
*/
- public void setup(String[] args, Properties p) throws Exception {
- super.setup(args, p);
+ public void setup() throws Exception {
+ super.setup();
}
/*
diff --git a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/jms/JMSSigTest.java b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/jms/JMSSigTest.java
index c734902fe2..7601dac003 100644
--- a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/jms/JMSSigTest.java
+++ b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/jms/JMSSigTest.java
@@ -94,8 +94,8 @@ public Status run(String args[], PrintWriter out, PrintWriter err) {
/*
* @class.setup_props: sigTestClasspath, Location of JMS jar files; ts_home;
*/
- public void setup(String[] args, Properties p) throws Exception {
- super.setup(args, p);
+ public void setup() throws Exception {
+ super.setup();
}
/*
diff --git a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/saaj/SAAJSigTest.java b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/saaj/SAAJSigTest.java
index 2c05fbb07e..9da7140543 100644
--- a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/saaj/SAAJSigTest.java
+++ b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/saaj/SAAJSigTest.java
@@ -98,8 +98,8 @@ public Status run(String args[], PrintWriter out, PrintWriter err) {
/*
* @class.setup_props: sigTestClasspath, Location of SAAJ jar files; ts_home;
*/
- public void setup(String[] args, Properties p) throws Exception {
- super.setup(args, p);
+ public void setup() throws Exception {
+ super.setup();
}
/*
diff --git a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/wsmd/Client.java b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/wsmd/Client.java
index 208157b69b..3525f750ad 100644
--- a/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/wsmd/Client.java
+++ b/signaturetest/src/main/java/com/sun/ts/tests/signaturetest/wsmd/Client.java
@@ -98,8 +98,8 @@ public Status run(String args[], PrintWriter out, PrintWriter err) {
/*
* @class.setup_props: ts_home;
*/
- public void setup(String[] args, Properties p) throws Exception {
- super.setup(args, p);
+ public void setup() {
+ super.setup();
}
/*