diff --git a/.gitignore b/.gitignore index 0d7408f7f5..73199b88ab 100644 --- a/.gitignore +++ b/.gitignore @@ -28,5 +28,6 @@ classes/ dist/ .m2/ release/ +el/bundle jakartaeetck-bundles/ /tck-env.cfg \ No newline at end of file diff --git a/el/docs/LICENSE_EFTL.md b/el/docs/LICENSE_EFTL.md new file mode 100644 index 0000000000..a2106828a6 --- /dev/null +++ b/el/docs/LICENSE_EFTL.md @@ -0,0 +1,83 @@ +# Eclipse Foundation Technology Compatibility Kit License - v 1.0 + +Copyright (c) 2018, Eclipse Foundation, Inc. and its licensors. + +Redistribution and use in binary form is permitted provided that the +following conditions are met: + +1. Use of the Technology Compatibility Kit accompanying this license + (the "TCK") and its documentation is permitted solely for the + purpose of testing compatibility of an implementation (the + "Product") of a specification (the "Specification") made available + by the Eclipse Foundation, Inc. ("Eclipse"). + +2. Only those modifications expressly permitted by the TCK and its + documentation are permitted. Except in these limited circumstances, + no modifications to the TCK are permitted under this license. + +3. A Product will be deemed to be "compatible" with the Specification + if it fully and completely meets and satisfies all requirements of + the TCK. + +4. Before any claim of compatibility (or any similar claim suggesting + compatibility) is made based on the TCK, the testing party must: + + a. use the TCK to demonstrate that the Product fully and + completely meets and satisfies all requirements of the TCK; + + b. make TCK test results showing full and complete satisfaction of + all requirements of the TCK publicly available on the testing + party's website and send a link to such test results to Eclipse + at [tck@eclipse.org](mailto:tck@eclipse.org); and + + c. comply with any requirements stated in the Specification with + regard to subsetting, supersetting, modifying or extending the + Specification in any Product claimed to be compatible with the + Specification. + +5. The test results must be continuously available and the link must + be live for at least as long as the Product is available in the + marketplace. + +6. The TCK may not be used as a basis for any statements of partial + compatibility. The TCK may only be used as a basis for true, + factual statements of full compatibility of Products that fully + meet and satisfy all requirements of the TCK. + +7. A determination that a Product is compatible with the TCK does not, + in itself, give rise to the right to use any name, mark, logo + associated with the TCK, Eclipse, or Eclipse's contributors or + licensors. + +8. Upon the request of Eclipse, a tester will retract any statements + of compatibility (or any similar claim suggesting compatibility) + which Eclipse reasonably determines to be false or misleading or in + violation of the terms of this license. + +9. Redistribution of the TCK must be under this Eclipse Foundation + Technology Compatibility Kit License and must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + +10. Neither the name, trademarks or logos of Eclipse, nor the names, + trademarks or logos of its contributors or licensors may be used to + endorse or promote products tested with this software without + specific prior written permission. + +11. The source code for the TCK accompanying this license is available + from Eclipse. + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED ON +AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER +EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR +CONDITIONS OF TITLE, NON- INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR +A PARTICULAR PURPOSE. TO THE EXTENT PERMITTED BY APPLICABLE LAW, +NEITHER THE COPYRIGHT OWNER OR ANY CONTRIBUTORS SHALL HAVE ANY +LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. diff --git a/el/docs/ReleaseNotes.html b/el/docs/ReleaseNotes.html new file mode 100755 index 0000000000..34cfdc6aae --- /dev/null +++ b/el/docs/ReleaseNotes.html @@ -0,0 +1,76 @@ + + + + + + Expression Language TCK, Version 6.0 Release Notes, January 2024 + + + +
+

Expression Language Technology Compatibility Kit, Version 6.0
+Release Notes, January 2024

+
+
+ +

About Expression Language Technology

+ +
+

Technology Compatibility Kit (TCK) Contents

+

The Jakarta Expression Language specification, Version 6.0 Technology Compatibility Kit (TCK) includes the following items:

+ +
+

Platform Notes

+ +

The Expression Language TCK tests have been built and tested with the Java™ Platform, Standard Edition SDK, Version 17 (JavaSE 17) and Jakarta EE Compatible Implementation, Eclipse GlassFish 7.0

+

Note that if you are using a different web server, you will need to make adjustments to the procedures outlined in these documents.

+ +
+

Installing, Setting Up, and Running the EL TCK

+ +

Refer to the Jakarta Expression Language TCK 6.0 User's Guide, available in the EL TCK 6.0 documentation bundle, for complete instructions on installing, setting up, and running the Expression Language TCK. + +


+ +
+

+

+Copyright (c) 2013, 2024 Oracle and/or its affiliates and others. All rights reserved. +
+

+ + diff --git a/el/docs/TCK-Exclude-List.txt b/el/docs/TCK-Exclude-List.txt new file mode 100644 index 0000000000..11d0cfc58e --- /dev/null +++ b/el/docs/TCK-Exclude-List.txt @@ -0,0 +1,20 @@ +# +# Copyright (c) 2024 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 +# + +# This file lists the excluded tests from Jakarta EL TCK. +# This is intended only for documentation purpose and is not used to exclude any tests. +# The tests are excluded from the test source using @Disabled tag in JUnit framework. +# diff --git a/el/docs/assertions/ELJavadocAssertions.xml b/el/docs/assertions/ELJavadocAssertions.xml new file mode 100644 index 0000000000..7fa11d5ecb --- /dev/null +++ b/el/docs/assertions/ELJavadocAssertions.xml @@ -0,0 +1,5054 @@ + + + + + + 414 + 410 + EL + EL + Expression Language + 5.0 + + + + + + 1 + Creates a new read/write ArrayELResolver. + jakarta.el + ArrayELResolver + + + + 2 + Creates a new ArrayELResolver whose read-only status is determined by the given parameter. + jakarta.el + ArrayELResolver + + + boolean + + + + + 3 + If the base object is a Java language array, returns the most general type that this resolver accepts for the property argument. Otherwise, returns null. Assuming the base is an array, this method will always return Integer.class. This is because arrays accept integers for their index. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + 4 + Always returns null, since there is no reason to iterate through set set of all integers. The #getCommonPropertyType method returns sufficient information about what properties this resolver accepts. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + 5 + If the base object is an array, returns the most general acceptable type for a value in this array. If the base is a array, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. Assuming the base is an array, this method will always return base.getClass().getComponentType(), which is the most general type of component that can be stored at any given index in the array. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 6 + If the base object is a Java language array, returns the value at the given index. The index is specified by the property argument, and coerced into an integer. If the coercion could not be performed, an IllegalArgumentException is thrown. If the index is out of bounds, null is returned. If the base is a Java language array, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 7 + If the base object is a Java language array, returns whether a call to #setValue will always fail. If the base is a Java language array, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. If this resolver was constructed in read-only mode, this method will always return true. Otherwise, it returns false. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 8 + If the base object is a Java language array, attempts to set the value at the given index with the given value. The index is specified by the property argument, and coerced into an integer. If the coercion could not be performed, an IllegalArgumentException is thrown. If the index is out of bounds, a PropertyNotFoundException is thrown. If the base is a Java language array, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value was set. If this resolver was constructed in read-only mode, this method will always throw PropertyNotWritableException. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + + + + 9 + Creates a new read/write BeanELResolver. + jakarta.el + BeanELResolver + + + + 10 + Creates a new BeanELResolver whose read-only status is determined by the given parameter. + jakarta.el + BeanELResolver + + + boolean + + + + + 11 + If the base object is not null, returns the most general type that this resolver accepts for the property argument. Otherwise, returns null. Assuming the base is not null, this method will always return Object.class. This is because any object is accepted as a key and is coerced into a string. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + 12 + If the base object is not null, returns an Iterator containing the set of JavaBeans properties available on the given object. Otherwise, returns null. The Iterator returned must contain zero or more instances of java.beans.FeatureDescriptor. Each info object contains information about a property in the bean, as obtained by calling the BeanInfo.getPropertyDescriptors method. The FeatureDescriptor is initialized using the same fields as are present in the PropertyDescriptor, with the additional required named attributes "type" and "resolvableAtDesignTime" set as follows: ELResolver#TYPE - The runtime type of the property, from PropertyDescriptor.getPropertyType(). ELResolver#RESOLVABLE_AT_DESIGN_TIME - true. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + 13 + If the base object is not null, returns the most general acceptable type that can be set on this bean property. If the base is not null, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. The provided property will first be coerced to a String. If there is a BeanInfoProperty for this property and there were no errors retrieving it, the propertyType of the propertyDescriptor is returned. Otherwise, a PropertyNotFoundException is thrown. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 14 + If the base object is not null, returns the current value of the given property on this bean. If the base is not null, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. The provided property name will first be coerced to a String. If the property is a readable property of the base object, as per the JavaBeans specification, then return the result of the getter call. If the getter throws an exception, it is propagated to the caller. If the property is not found or is not readable, a PropertyNotFoundException is thrown. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 15 + If the base object is not null, returns whether a call to #setValue will always fail. If the base is not null, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value was set. If this resolver was constructed in read-only mode, this method will always return true. The provided property name will first be coerced to a String. If property is a writable property of base, false is returned. If the property is found but is not writable, true is returned. If the property is not found, a PropertyNotFoundException is thrown. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 16 + If the base object is not null, attempts to set the value of the given property on this bean. If the base is not null, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value was set. If this resolver was constructed in read-only mode, this method will always throw PropertyNotWritableException. The provided property name will first be coerced to a String. If property is a writable property of base (as per the JavaBeans Specification), the setter method is called (passing value). If the property exists but does not have a setter, then a PropertyNotFoundException is thrown. If the property does not exist, a PropertyNotFoundException is thrown. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + + + + 24 + Adds the given resolver to the list of component resolvers. Resolvers are consulted in the order in which they are added. + jakarta.el + CompositeELResolver + + + jakarta.el.ELResolver + + + + + 25 + + jakarta.el + CompositeELResolver + + + + 26 + Returns the most general type that this resolver accepts for the property argument, given a base object. One use for this method is to assist tools in auto-completion. The result is obtained by querying all component resolvers. The Class returned is the most specific class that is a common superclass of all the classes returned by each component resolver's getCommonPropertyType method. If null is returned by a resolver, it is skipped. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + 27 + Returns information about the set of variables or properties that can be resolved for the given base object. One use for this method is to assist tools in auto-completion. The results are collected from all component resolvers. The propertyResolved property of the ELContext is not relevant to this method. The results of all ELResolvers are concatenated. The Iterator returned is an iterator over the collection of FeatureDescriptor objects returned by the iterators returned by each component resolver's getFeatureDescriptors method. If null is returned by a resolver, it is skipped. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + 28 + For a given base and property, attempts to identify the most general type that is acceptable for an object to be passed as the value parameter in a future call to the #setValue method. The result is obtained by querying all component resolvers. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. First, propertyResolved is set to false on the provided ELContext. Next, for each component resolver in this composite: The getType() method is called, passing in the provided context, base and property. If the ELContext's propertyResolved flag is false then iteration continues. Otherwise, iteration stops and no more component resolvers are considered. The value returned by getType() is returned by this method. If none of the component resolvers were able to perform this operation, the value null is returned and the propertyResolved flag remains set to false. Any exception thrown by component resolvers during the iteration is propagated to the caller of this method. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 29 + Attempts to resolve the given property object on the given base object by querying all component resolvers. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. First, propertyResolved is set to false on the provided ELContext. Next, for each component resolver in this composite: The getValue() method is called, passing in the provided context, base and property. If the ELContext's propertyResolved flag is false then iteration continues. Otherwise, iteration stops and no more component resolvers are considered. The value returned by getValue() is returned by this method. If none of the component resolvers were able to perform this operation, the value null is returned and the propertyResolved flag remains set to false. Any exception thrown by component resolvers during the iteration is propagated to the caller of this method. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 30 + For a given base and property, attempts to determine whether a call to #setValue will always fail. The result is obtained by querying all component resolvers. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. First, propertyResolved is set to false on the provided ELContext. Next, for each component resolver in this composite: The isReadOnly() method is called, passing in the provided context, base and property. If the ELContext's propertyResolved flag is false then iteration continues. Otherwise, iteration stops and no more component resolvers are considered. The value returned by isReadOnly() is returned by this method. If none of the component resolvers were able to perform this operation, the value false is returned and the propertyResolved flag remains set to false. Any exception thrown by component resolvers during the iteration is propagated to the caller of this method. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 31 + Attempts to set the value of the given property object on the given base object. All component resolvers are asked to attempt to set the value. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set. First, propertyResolved is set to false on the provided ELContext. Next, for each component resolver in this composite: The setValue() method is called, passing in the provided context, base, property and value. If the ELContext's propertyResolved flag is false then iteration continues. Otherwise, iteration stops and no more component resolvers are considered. If none of the component resolvers were able to perform this operation, the propertyResolved flag remains set to false. Any exception thrown by component resolvers during the iteration is propagated to the caller of this method. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + + + + 32 + + jakarta.el + ELContext + + + + 33 + Returns the context object associated with the given key. The ELContext maintains a collection of context objects relevant to the evaluation of an expression. These context objects are used by ELResolvers. This method is used to retrieve the context with the given key from the collection. By convention, the object returned will be of the type specified by the key. However, this is not required and the key is used strictly as a unique identifier. + jakarta.el + ELContext + + + java.lang.Class + + + + + 34 + Retrieves the ELResolver associated with this context. The ELContext maintains a reference to the ELResolver that will be consulted to resolve variables and properties during an expression evaluation. This method retrieves the reference to the resolver. Once an ELContext is constructed, the reference to the ELResolver associated with the context cannot be changed. + jakarta.el + ELContext + + + + 35 + Retrieves the FunctionMapper associated with this ELContext. + jakarta.el + ELContext + + + + 36 + Get the Locale stored by a previous invocation to #setLocale. If this method returns non null, this Locale must be used for all localization needs in the implementation. The Locale must not be cached to allow for applications that change Locale dynamically. + jakarta.el + ELContext + + + + 37 + Retrieves the VariableMapper associated with this ELContext. + jakarta.el + ELContext + + + + 38 + Returns whether an ELResolver has successfully resolved a given (base, property) pair. The CompositeELResolver checks this property to determine whether it should consider or skip other component resolvers. + jakarta.el + ELContext + + + + 39 + Associates a context object with this ELContext. The ELContext maintains a collection of context objects relevant to the evaluation of an expression. These context objects are used by ELResolvers. This method is used to add a context object to that collection. By convention, the contextObject will be of the type specified by the key. However, this is not required and the key is used strictly as a unique identifier. + jakarta.el + ELContext + + + java.lang.Class + java.lang.Object + + + + + 42 + Constructs an ELContextEvent object to indicate that an ELContext has been created. + jakarta.el + ELContextEvent + + + jakarta.el.ELContext + + + + + 43 + Returns the ELContext that was created. This is a type-safe equivalent of the #getSource method. + jakarta.el + ELContextEvent + + + + 44 + Invoked when a new ELContext has been created. + jakarta.el + ELContextListener + + + jakarta.el.ELContextEvent + + + + + 45 + Creates an ELException with no detail message. + jakarta.el + ELException + + + + 46 + Creates an ELException with the provided detail message. + jakarta.el + ELException + + + java.lang.String + + + + + 47 + Creates an ELException with the given cause. + jakarta.el + ELException + + + java.lang.Throwable + + + + + 48 + Creates an ELException with the given detail message and root cause. + jakarta.el + ELException + + + java.lang.String + java.lang.Throwable + + + + + 49 + + jakarta.el + ELResolver + + + + 50 + Returns the most general type that this resolver accepts for the property argument, given a base object. One use for this method is to assist tools in auto-completion. This assists tools in auto-completion and also provides a way to express that the resolver accepts a primitive value, such as an integer index into an array. For example, the ArrayELResolver will accept any int as a property, so the return value would be Integer.class. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + 51 + Returns information about the set of variables or properties that can be resolved for the given base object. One use for this method is to assist tools in auto-completion. If the base parameter is null, the resolver must enumerate the list of top-level variables it can resolve. The Iterator returned must contain zero or more instances of java.beans.FeatureDescriptor, in no guaranteed order. In the case of primitive types such as int, the value null must be returned. This is to prevent the useless iteration through all possible primitive values. A return value of null indicates that this resolver does not handle the given base object or that the results are too complex to represent with this method and the #getCommonPropertyType method should be used instead. Each FeatureDescriptor will contain information about a single variable or property. In addition to the standard properties, the FeatureDescriptor must have two named attributes (as set by the setValue method): #TYPE - The value of this named attribute must be an instance of java.lang.Class and specify the runtime type of the variable or property. #RESOLVABLE_AT_DESIGN_TIME - The value of this named attribute must be an instance of java.lang.Boolean and indicates whether it is safe to attempt to resolve this property at design-time. For instance, it may be unsafe to attempt a resolution at design time if the ELResolver needs access to a resource that is only available at runtime and no acceptable simulated value can be provided. The caller should be aware that the Iterator returned might iterate through a very large or even infinitely large set of properties. Care should be taken by the caller to not get stuck in an infinite loop. This is a "best-effort" list. Not all ELResolvers will return completely accurate results, but all must be callable at both design-time and runtime (i.e. whether or not Beans.isDesignTime() returns true), without causing errors. The propertyResolved property of the ELContext is not relevant to this method. The results of all ELResolvers are concatenated in the case of composite resolvers. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + 52 + For a given base and property, attempts to identify the most general type that is acceptable for an object to be passed as the value parameter in a future call to the #setValue method. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. This is not always the same as getValue().getClass(). For example, in the case of an ArrayELResolver, the getType method will return the element type of the array, which might be a superclass of the type of the actual element that is currently in the specified array element. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 53 + Attempts to resolve the given property object on the given base object. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 54 + For a given base and property, attempts to determine whether a call to #setValue will always fail. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 55 + Attempts to set the value of the given property object on the given base object. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + + + + 56 + Determines whether the specified object is equal to this Expression. The result is true if and only if the argument is not null, is an Expression object that is the of the same type (ValueExpression or MethodExpression), and has an identical parsed representation. Note that two expressions can be equal if their expression Strings are different. For example, ${fn1:foo()} and ${fn2:foo()} are equal if their corresponding FunctionMappers mapped fn1:foo and fn2:foo to the same method. + jakarta.el + Expression + + + java.lang.Object + + + + + 57 + + jakarta.el + Expression + + + + 58 + Returns the original String used to create this Expression, unmodified. This is used for debugging purposes but also for the purposes of comparison (e.g. to ensure the expression in a configuration file has not changed). This method does not provide sufficient information to re-create an expression. Two different expressions can have exactly the same expression string but different function mappings. Serialization should be used to save and restore the state of an Expression. + jakarta.el + Expression + + + + 59 + Returns the hash code for this Expression. See the note in the #equals method on how two expressions can be equal if their expression Strings are different. Recall that if two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result. Implementations must take special note and implement hashCode correctly. + jakarta.el + Expression + + + + 60 + Returns whether this expression was created from only literal text. This method must return true if and only if the expression string this expression was created from contained no unescaped EL delimeters (${...} or #{...}). + jakarta.el + Expression + + + + 62 + Parses an expression into a MethodExpression for later evaluation. Use this method for expressions that refer to methods. If the expression is a String literal, a MethodExpression is created, which when invoked, returns the String literal, coerced to expectedReturnType. An ELException is thrown if expectedReturnType is void or if the coercion of the String literal to the expectedReturnType yields an error (see Section "1.16 Type Conversion"). This method should perform syntactic validation of the expression. If in doing so it detects errors, it should raise an ELException. + jakarta.el + ExpressionFactory + + + jakarta.el.ELContext + java.lang.String + java.lang.Class + java.lang.Class[] + + + + + 63 + Parses an expression into a ValueExpression for later evaluation. Use this method for expressions that refer to values. This method should perform syntactic validation of the expression. If in doing so it detects errors, it should raise an ELException. + jakarta.el + ExpressionFactory + + + jakarta.el.ELContext + java.lang.String + java.lang.Class + + + + + 64 + Creates a ValueExpression that wraps an object instance. This method can be used to pass any object as a ValueExpression. The wrapper ValueExpression is read only, and returns the wrapped object via its getValue() method, optionally coerced. + jakarta.el + ExpressionFactory + + + java.lang.Object + java.lang.Class + + + + + 65 + + jakarta.el + ExpressionFactory + + + + 66 + + jakarta.el + FunctionMapper + + + + 67 + Resolves the specified prefix and local name into a java.lang.Method. Returns null if no function could be found that matches the given prefix and local name. + jakarta.el + FunctionMapper + + + java.lang.String + java.lang.String + + + + + 68 + If the base object is a list, returns the most general type that this resolver accepts for the property argument. Otherwise, returns null. Assuming the base is a List, this method will always return Integer.class. This is because Lists accept integers as their index. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + 69 + Always returns null, since there is no reason to iterate through set set of all integers. The #getCommonPropertyType method returns sufficient information about what properties this resolver accepts. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + 70 + If the base object is a list, returns the most general acceptable type for a value in this list. If the base is a List, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. Assuming the base is a List, this method will always return Object.class. This is because Lists accept any object as an element. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 71 + If the base object is a list, returns the value at the given index. The index is specified by the property argument, and coerced into an integer. If the coercion could not be performed, an IllegalArgumentException is thrown. If the index is out of bounds, null is returned. If the base is a List, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 72 + If the base object is a list, returns whether a call to #setValue will always fail. If the base is a List, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. If this resolver was constructed in read-only mode, this method will always return true. If a List was created using java.util.Collections#unmodifiableList, this method must return true. Unfortunately, there is no Collections API method to detect this. However, an implementation can create a prototype unmodifiable List and query its runtime type to see if it matches the runtime type of the base object as a workaround. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 73 + Creates a new read/write ListELResolver. + jakarta.el + ListELResolver + + + + 74 + Creates a new ListELResolver whose read-only status is determined by the given parameter. + jakarta.el + ListELResolver + + + boolean + + + + + 75 + If the base object is a list, attempts to set the value at the given index with the given value. The index is specified by the property argument, and coerced into an integer. If the coercion could not be performed, an IllegalArgumentException is thrown. If the index is out of bounds, a PropertyNotFoundException is thrown. If the base is a List, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value was set. If this resolver was constructed in read-only mode, this method will always throw PropertyNotWritableException. If a List was created using java.util.Collections#unmodifiableList, this method must throw PropertyNotWritableException. Unfortunately, there is no Collections API method to detect this. However, an implementation can create a prototype unmodifiable List and query its runtime type to see if it matches the runtime type of the base object as a workaround. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + + + + 76 + If the base object is a map, returns the most general type that this resolver accepts for the property argument. Otherwise, returns null. Assuming the base is a Map, this method will always return Object.class. This is because Maps accept any object as a key. + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + 77 + If the base object is a map, returns an Iterator containing the set of keys available in the Map. Otherwise, returns null. The Iterator returned must contain zero or more instances of java.beans.FeatureDescriptor. Each info object contains information about a key in the Map, and is initialized as follows: displayName - The return value of calling the toString method on this key, or "null" if the key is null. name - Same as displayName property. shortDescription - Empty string expert - false hidden - false preferred - true In addition, the following named attributes must be set in the returned FeatureDescriptors: ELResolver#TYPE - The return value of calling the getClass() method on this key, or null if the key is null. ELResolver#RESOLVABLE_AT_DESIGN_TIME - true + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + 78 + If the base object is a map, returns the most general acceptable type for a value in this map. If the base is a Map, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. Assuming the base is a Map, this method will always return Object.class. This is because Maps accept any object as the value for a given key. + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 79 + If the base object is a map, returns the value associated with the given key, as specified by the property argument. If the key was not found, null is returned. If the base is a Map, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. Just as in java.util.Map#get, just because null is returned doesn't mean there is no mapping for the key; it's also possible that the Map explicitly maps the key to null. + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 80 + If the base object is a map, returns whether a call to #setValue will always fail. If the base is a Map, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. If this resolver was constructed in read-only mode, this method will always return true. If a Map was created using java.util.Collections#unmodifiableMap, this method must return true. Unfortunately, there is no Collections API method to detect this. However, an implementation can create a prototype unmodifiable Map and query its runtime type to see if it matches the runtime type of the base object as a workaround. + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 81 + Creates a new read/write MapELResolver. + jakarta.el + MapELResolver + + + + 82 + Creates a new MapELResolver whose read-only status is determined by the given parameter. + jakarta.el + MapELResolver + + + boolean + + + + + 83 + If the base object is a map, attempts to set the value associated with the given key, as specified by the property argument. If the base is a Map, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value was set. If this resolver was constructed in read-only mode, this method will always throw PropertyNotWritableException. If a Map was created using java.util.Collections#unmodifiableMap, this method must throw PropertyNotWritableException. Unfortunately, there is no Collections API method to detect this. However, an implementation can create a prototype unmodifiable Map and query its runtime type to see if it matches the runtime type of the base object as a workaround. + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + + + + 84 + Evaluates the expression relative to the provided context, and returns information about the actual referenced method. + jakarta.el + MethodExpression + + + jakarta.el.ELContext + + + + + 86 + + jakarta.el + MethodExpression + + + + 87 + Returns the name of the method + jakarta.el + MethodInfo + + + + 88 + Returns the parameter types of the method + jakarta.el + MethodInfo + + + + 89 + Returns the return type of the method + jakarta.el + MethodInfo + + + + 90 + Creates a new instance of MethodInfo with the given information. + jakarta.el + MethodInfo + + + java.lang.String + java.lang.Class + java.lang.Class[] + + + + + 91 + Creates a MethodNotFoundException with no detail message. + jakarta.el + MethodNotFoundException + + + + 92 + Creates a MethodNotFoundException with the provided detail message. + jakarta.el + MethodNotFoundException + + + java.lang.String + + + + + 93 + Creates a MethodNotFoundException with the given root cause. + jakarta.el + MethodNotFoundException + + + java.lang.Throwable + + + + + 94 + Creates a MethodNotFoundException with the given detail message and root cause. + jakarta.el + MethodNotFoundException + + + java.lang.String + java.lang.Throwable + + + + + 95 + Creates a PropertyNotFoundException with no detail message. + jakarta.el + PropertyNotFoundException + + + + 96 + Creates a PropertyNotFoundException with the provided detail message. + jakarta.el + PropertyNotFoundException + + + java.lang.String + + + + + 97 + Creates a PropertyNotFoundException with the given root cause. + jakarta.el + PropertyNotFoundException + + + java.lang.Throwable + + + + + 98 + Creates a PropertyNotFoundException with the given detail message and root cause. + jakarta.el + PropertyNotFoundException + + + java.lang.String + java.lang.Throwable + + + + + 99 + Creates a PropertyNotWritableException with no detail message. + jakarta.el + PropertyNotWritableException + + + + 100 + Creates a PropertyNotWritableException with the provided detail message. + jakarta.el + PropertyNotWritableException + + + java.lang.String + + + + + 101 + Creates a PropertyNotWritableException with the given root cause. + jakarta.el + PropertyNotWritableException + + + java.lang.Throwable + + + + + 102 + Creates a PropertyNotWritableException with the given detail message and root cause. + jakarta.el + PropertyNotWritableException + + + java.lang.String + java.lang.Throwable + + + + + 103 + If the base object is a ResourceBundle, returns the most general type that this resolver accepts for the property argument. Otherwise, returns null. Assuming the base is a ResourceBundle, this method will always return String.class. + jakarta.el + ResourceBundleELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + 104 + If the base object is a ResourceBundle, returns an Iterator containing the set of keys available in the ResourceBundle. Otherwise, returns null. The Iterator returned must contain zero or more instances of java.beans.FeatureDescriptor. Each info object contains information about a key in the ResourceBundle, and is initialized as follows: displayName - The String key name - Same as displayName property. shortDescription - Empty string expert - false hidden - false preferred - true In addition, the following named attributes must be set in the returned FeatureDescriptors: ELResolver#TYPE - String.class ELResolver#RESOLVABLE_AT_DESIGN_TIME - true + jakarta.el + ResourceBundleELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + 105 + If the base object is an instance of ResourceBundle, return null, since the resolver is read only. If the base is ResourceBundle, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. + jakarta.el + ResourceBundleELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 106 + If the base object is an instance of ResourceBundle, the provided property will first be coerced to a String. The Object returned by getObject on the base ResourceBundle will be returned. If the base is ResourceBundle, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. + jakarta.el + ResourceBundleELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 107 + If the base object is not null and an instanceof ResourceBundle, return true. + jakarta.el + ResourceBundleELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + 108 + + jakarta.el + ResourceBundleELResolver + + + + 109 + If the base object is a ResourceBundle, throw a PropertyNotWritableException. + jakarta.el + ResourceBundleELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + + + + 110 + Returns the type the result of the expression will be coerced to after evaluation. + jakarta.el + ValueExpression + + + + 111 + Evaluates the expression relative to the provided context, and returns the most general type that is acceptable for an object to be passed as the value parameter in a future call to the #setValue method. This is not always the same as getValue().getClass(). For example, in the case of an expression that references an array element, the getType method will return the element type of the array, which might be a superclass of the type of the actual element that is currently in the specified array element. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + + + + + 112 + Evaluates the expression relative to the provided context, and returns the resulting value. The resulting value is automatically coerced to the type returned by getExpectedType(), which was provided to the ExpressionFactory when this expression was created. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + + + + + 113 + Evaluates the expression relative to the provided context, and returns true if a call to #setValue will always fail. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + + + + + 114 + Evaluates the expression relative to the provided context, and sets the result to the provided value. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + java.lang.Object + + + + + 115 + + jakarta.el + ValueExpression + + + + 116 + + jakarta.el + VariableMapper + + + java.lang.String + + + + + 117 + Assign a ValueExpression to an EL variable, replacing any previously assignment to the same variable. The assignment for the variable is removed if the expression is null. + jakarta.el + VariableMapper + + + java.lang.String + jakarta.el.ValueExpression + + + + + 118 + + jakarta.el + VariableMapper + + + + 40 + Sets the Locale for this instance. This method may be called by the party creating the instance, such as JavaServer Faces or JSP, to enable the EL implementation to provide localized messages to the user. If no Locale is set, the implementation must use the locale returned by Locale.getDefault( ). + jakarta.el + ELContext + + + java.util.Locale + + + + + 85 + If a String literal is specified as the expression, returns the String literal coerced to the expected return type of the method signature. An ELException is thrown if expectedReturnType is void or if the coercion of the String literal to the expectedReturnType yields an error (see Section "1.18 Type Conversion" of the EL specification). If not a String literal, evaluates the expression relative to the provided context, invokes the method that was found using the supplied parameters, and returns the result of the method invocation. Any parameters passed to this method is ignored if isLiteralText() or isParmetersProvided() is true. + jakarta.el + MethodExpression + + + jakarta.el.ELContext + java.lang.Object[] + + + + + EL:JAVADOC:121 + if the given index is out of bounds for this array. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:122 + if context is null + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:123 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:124 + if the property could not be coerced into an integer. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.IllegalArgumentException + + + + EL:JAVADOC:125 + if context is null. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:126 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:127 + if the given index is out of bounds for this array. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:128 + if context is null + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:129 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:130 + if the class of the specified element prevents it from being added to this array. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.ClassCastException + + + + EL:JAVADOC:131 + if context is null. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:132 + if the property could not be coerced into an integer, or if some aspect of the specified element prevents it from being added to this array. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.IllegalArgumentException + + + + EL:JAVADOC:133 + if this resolver was constructed in read-only mode. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotWritableException + + + + EL:JAVADOC:134 + if the given index is out of bounds for this array. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:135 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ArrayELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:136 + if context is null + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:137 + if base is not null and the specified property does not exist or is not readable. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:138 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:139 + if context is null. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:140 + if base is not null and the specified property does not exist or is not readable. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:141 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:142 + If the base object is not null, invoke the method, with the given parameters on this bean. The return value from the method is returned. If the base is not null, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. The provided method object will first be coerced to a String. The methods in the bean is then examined and an attempt will be made to select one for invocation. If no suitable can be found, a MethodNotFoundException is thrown. If the given paramTypes is not null, select the method with the given name and parameter types. Else select the method with the given name that has the same number of parameters. If there are more than one such method, the method selection process is undefined. Else select the method with the given name that takes a variable number of arguments. Note the resolution for overloaded methods will likely be clarified in a future version of the spec. The provide parameters are coerced to the correcponding parameter types of the method, and the method is then invoked. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Class[] + java.lang.Object[] + + + + + EL:JAVADOC:143 + if no suitable method can be found. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Class[] + java.lang.Object[] + + jakarta.el.MethodNotFoundException + + + + EL:JAVADOC:144 + if an exception was thrown while performing (base, method) resolution. The thrown exception must be included as the cause property of this exception, if available. If the exception thrown is an InvocationTargetException, extract its cause and pass it to the ELException constructor. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Class[] + java.lang.Object[] + + jakarta.el.ELException + + + + EL:JAVADOC:145 + if context is null + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:146 + if base is not null and the specified property does not exist. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:147 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:148 + if context is null. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:149 + if base is not null and the specified property does not exist. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:150 + if this resolver was constructed in read-only mode, or if there is no setter for the property. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotWritableException + + + + EL:JAVADOC:151 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + BeanELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:152 + Constructor + jakarta.el + BeanNameELResolver + + + jakarta.el.BeanNameResolver + + + + + EL:JAVADOC:153 + Always returns String.class, since a bean name is a String. + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + EL:JAVADOC:154 + Always returns null, since there is no reason to iterate through a list of one element: bean name. + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + EL:JAVADOC:155 + If the base is null and the property is a name resolvable by the BeanNameResolver, return the type of the bean. If the name is resolvable by the BeanNameResolver, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set. + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + EL:JAVADOC:156 + if context is null. + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:157 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:159 + if context is null. + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:160 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:161 + If the base is null and the property is a name resolvable by the BeanNameResolver, attempts to determine if the bean is writable. If the name is resolvable by the BeanNameResolver, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set. + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + EL:JAVADOC:162 + if context is null. + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:163 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:164 + If the base is null and the property is a name that is resolvable by the BeanNameResolver, the bean in the BeanNameResolver is set to the given value. If the name is resolvable by the BeanNameResolver, or if the BeanNameResolver allows creating a new bean, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set. + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + + + + EL:JAVADOC:165 + if context is null + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:166 + if the BeanNameResolver does not allow the bean to be modified. + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotWritableException + + + + EL:JAVADOC:167 + if an exception was thrown while attempting to set the bean with the given name. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:168 + + jakarta.el + BeanNameResolver + + + + EL:JAVADOC:169 + Allow creating a bean of the given name if it does not exist. + jakarta.el + BeanNameResolver + + + java.lang.String + + + + + EL:JAVADOC:170 + Returns the bean known by its name. + jakarta.el + BeanNameResolver + + + java.lang.String + + + + + EL:JAVADOC:171 + Indicates if the bean of the given name is read-only or writable + jakarta.el + BeanNameResolver + + + java.lang.String + + + + + EL:JAVADOC:172 + Sets a value to a bean of the given name. If the bean of the given name does not exist and if #canCreateBean is true, one is created with the given value. + jakarta.el + BeanNameResolver + + + java.lang.String + java.lang.Object + + + + + EL:JAVADOC:173 + if the bean cannot be modified or created. + jakarta.el + BeanNameResolver + + + java.lang.String + java.lang.Object + + jakarta.el.PropertyNotWritableException + + + + EL:JAVADOC:174 + If the provided resolver is null. + jakarta.el + CompositeELResolver + + + jakarta.el.ELResolver + + java.lang.NullPointerException + + + + EL:JAVADOC:175 + if context is null + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:176 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist or is not readable. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:177 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:178 + if context is null + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:179 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist or is not readable. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:180 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:181 + Attemps to resolve and invoke the given method on the given base object by querying all component resolvers. If this resolver handles the given (base, method) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. First, propertyResolved is set to false on the provided ELContext. Next, for each component resolver in this composite: The invoke() method is called, passing in the provided context, base, method, paramTypes, and params. If the ELContext's propertyResolved flag is false then iteration continues. Otherwise, iteration stops and no more component resolvers are considered. The value returned by getValue() is returned by this method. If none of the component resolvers were able to perform this operation, the value null is returned and the propertyResolved flag remains set to false. Any exception thrown by component resolvers during the iteration is propagated to the caller of this method. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Class[] + java.lang.Object[] + + + + + EL:JAVADOC:182 + if context is null + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:183 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:184 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:185 + if context is null + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:186 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:187 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property is not writable. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotWritableException + + + + EL:JAVADOC:188 + if an exception was thrown while attempting to set the property or variable. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:192 + Installs a Lambda argument map, in preparation for the evaluation of a Lambda expression. The arguments in the map will be in scope during the evaluation of the Lambda expression. + jakarta.el + ELContext + + + java.util.Map + + + + + EL:JAVADOC:193 + Exits the Lambda expression evaluation. The Lambda argument map that was previously installed is removed. + jakarta.el + ELContext + + + + EL:JAVADOC:194 + if key is null. + jakarta.el + ELContext + + + java.lang.Class + + java.lang.NullPointerException + + + + EL:JAVADOC:195 + Retrieves the ImportHandler associated with this ELContext. + jakarta.el + ELContext + + + + EL:JAVADOC:196 + Retrieves the Lambda argument associated with a formal parameter. If the Lambda expression is nested within other Lambda expressions, the arguments for the current Lambda expression is first searched, and if not found, the arguments for the immediate nesting Lambda expression then searched, and so on. + jakarta.el + ELContext + + + java.lang.String + + + + + EL:JAVADOC:198 + if key is null or contextObject is null. + jakarta.el + ELContext + + + java.lang.Class + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:200 + Add an user defined ELResolver to the list of ELResolvers. Can be called multiple times. The new ELResolver is placed ahead of the default ELResolvers. The list of the ELResolvers added this way are ordered chronologically. + jakarta.el + ELManager + + + jakarta.el.ELResolver + + + + + EL:JAVADOC:202 + Define a bean in the local bean repository + jakarta.el + ELManager + + + java.lang.String + java.lang.Object + + + + + EL:JAVADOC:203 + + jakarta.el + ELManager + + + + EL:JAVADOC:204 + Return the ELContext used for parsing and evaluating EL expressions. If there is currently no ELContext, a default instance of StandardELContext is returned. + jakarta.el + ELManager + + + + EL:JAVADOC:206 + Import a class. The imported class must be loadable from the classloader, at class resolution time. + jakarta.el + ELManager + + + java.lang.String + + + + + EL:JAVADOC:207 + if the name is not a full class name. + jakarta.el + ELManager + + + java.lang.String + + jakarta.el.ELException + + + + EL:JAVADOC:208 + Import a package. At the class resolution time, the imported package name will be used to construct the full class name, which will then be used to load the class. Inherently, this is less efficient than importing a class. + jakarta.el + ELManager + + + java.lang.String + + + + + EL:JAVADOC:209 + Maps a static method to an EL function. + jakarta.el + ELManager + + + java.lang.String + java.lang.String + java.lang.reflect.Method + + + + + EL:JAVADOC:210 + Set the ELContext used for parsing and evaluating EL expressions. The supplied ELContext will not be modified, except for the context object map. + jakarta.el + ELManager + + + jakarta.el.ELContext + + + + + EL:JAVADOC:211 + Assign a ValueExpression to an EL variable, replacing any previous assignment to the same variable. The assignment for the variable is removed if the expression is null. + jakarta.el + ELManager + + + java.lang.String + jakarta.el.ValueExpression + + + + + EL:JAVADOC:212 + Define a bean in a local bean repository, hiding other beans of the same name. + jakarta.el + ELProcessor + + + java.lang.String + java.lang.Object + + + + + EL:JAVADOC:213 + Define an EL function in the local function mapper. + jakarta.el + ELProcessor + + + java.lang.String + java.lang.String + java.lang.String + java.lang.String + + + + + EL:JAVADOC:215 + if the method (with or without the signature) is not a declared method of the class, or if the method signature is not valid. + jakarta.el + ELProcessor + + + java.lang.String + java.lang.String + java.lang.String + java.lang.String + + java.lang.NoSuchMethodException + + + + EL:JAVADOC:218 + Define an EL function in the local function mapper. + jakarta.el + ELProcessor + + + java.lang.String + java.lang.String + java.lang.reflect.Method + + + + + EL:JAVADOC:219 + if any of the arguements is null. + jakarta.el + ELProcessor + + + java.lang.String + java.lang.String + java.lang.reflect.Method + + java.lang.NullPointerException + + + + EL:JAVADOC:220 + + jakarta.el + ELProcessor + + + + EL:JAVADOC:221 + Evaluates an EL expression. + jakarta.el + ELProcessor + + + java.lang.String + + + + + EL:JAVADOC:222 + Return the ELManager used for EL porcessing. + jakarta.el + ELProcessor + + + + EL:JAVADOC:223 + Evaluates an EL expression, and coerces the result to the specified type. + jakarta.el + ELProcessor + + + java.lang.String + java.lang.Class + + + + + EL:JAVADOC:224 + Sets an expression with a new value. The target expression is evaluated, up to the last property resolution, and the resultant (base, property) pair is set to the provided value. + jakarta.el + ELProcessor + + + java.lang.String + java.lang.Object + + + + + EL:JAVADOC:225 + if one of the property resolutions failed because a specified variable or property does not exist or is not readable. + jakarta.el + ELProcessor + + + java.lang.String + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:226 + if the final variable or property resolution failed because the specified variable or property is not writable. + jakarta.el + ELProcessor + + + java.lang.String + java.lang.Object + + jakarta.el.PropertyNotWritableException + + + + EL:JAVADOC:227 + if an exception was thrown while attempting to set the property or variable. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ELProcessor + + + java.lang.String + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:228 + Assign an EL expression to an EL variable. The expression is parsed, but not evaluated, and the parsed expression is mapped to the EL variable in the local variable map. Any previously assigned expression to the same variable will be replaced. If the expression is null, the variable will be removed. + jakarta.el + ELProcessor + + + java.lang.String + java.lang.String + + + + + EL:JAVADOC:229 + Converts an object to a specific type. An ELException is thrown if an error occurs during the conversion. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Class + + + + + EL:JAVADOC:230 + thrown if errors occur. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Class + + jakarta.el.ELException + + + + EL:JAVADOC:231 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist or is not readable. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:232 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:233 + if context is null + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:234 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist or is not readable. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:235 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:236 + Attemps to resolve and invoke the given method on the given base object. If this resolver handles the given (base, method) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. A default implementation is provided that returns null so that existing classes that extend ELResolver can continue to function. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Class[] + java.lang.Object[] + + + + + EL:JAVADOC:237 + if no suitable method can be found. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Class[] + java.lang.Object[] + + jakarta.el.MethodNotFoundException + + + + EL:JAVADOC:238 + if an exception was thrown while performing (base, method) resolution. The thrown exception must be included as the cause property of this exception, if available. If the exception thrown is an InvocationTargetException, extract its cause and pass it to the ELException constructor. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Class[] + java.lang.Object[] + + jakarta.el.ELException + + + + EL:JAVADOC:239 + if context is null + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:240 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:241 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:242 + if context is null + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:243 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:244 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property is not writable. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotWritableException + + + + EL:JAVADOC:245 + if an exception was thrown while attempting to set the property or variable. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:251 + thrown if an error results from applying the conversion rules. + jakarta.el + ExpressionFactory + + + java.lang.Object + java.lang.Class + + jakarta.el.ELException + + + + EL:JAVADOC:252 + Thrown if there are syntactical errors in the provided expression. + jakarta.el + ExpressionFactory + + + jakarta.el.ELContext + java.lang.String + java.lang.Class + java.lang.Class[] + + jakarta.el.ELException + + + + EL:JAVADOC:253 + if paramTypes is null. + jakarta.el + ExpressionFactory + + + jakarta.el.ELContext + java.lang.String + java.lang.Class + java.lang.Class[] + + java.lang.NullPointerException + + + + EL:JAVADOC:254 + Thrown if expectedType is null. + jakarta.el + ExpressionFactory + + + jakarta.el.ELContext + java.lang.String + java.lang.Class + + java.lang.NullPointerException + + + + EL:JAVADOC:255 + Thrown if there are syntactical errors in the provided expression. + jakarta.el + ExpressionFactory + + + jakarta.el.ELContext + java.lang.String + java.lang.Class + + jakarta.el.ELException + + + + EL:JAVADOC:256 + Thrown if expectedType is null. + jakarta.el + ExpressionFactory + + + java.lang.Object + java.lang.Class + + java.lang.NullPointerException + + + + EL:JAVADOC:258 + Creates a new instance of a ExpressionFactory. This method uses the following ordered lookup procedure to determine the ExpressionFactory implementation class to load: Use the Services API (as detailed in the JAR specification). If a resource with the name of META-INF/services/jakarta.el.ExpressionFactory exists, then its first line, if present, is used as the UTF-8 encoded name of the implementation class. Use the properties file "lib/el.properties" in the JRE directory. If this file exists and it is readable by the java.util.Properties.load(InputStream) method, and it contains an entry whose key is "jakarta.el.ExpressionFactory", then the value of that entry is used as the name of the implementation class. Use the jakarta.el.ExpressionFactory system property. If a system property with this name is defined, then its value is used as the name of the implementation class. Use a platform default implementation. + jakarta.el + ExpressionFactory + + + + EL:JAVADOC:259 + Create a new instance of a ExpressionFactory, with optional properties. This method uses the same lookup procedure as the one used in newInstance(). If the argument properties is not null, and if the implementation contains a constructor with a single parameter of type java.util.Properties, then the constructor is used to create the instance. Properties are optional and can be ignored by an implementation. The name of a property should start with "jakarta.el." The following are some suggested names for properties. jakarta.el.cacheSize + jakarta.el + ExpressionFactory + + + java.util.Properties + + + + + EL:JAVADOC:260 + Adds a static method that can be used as a function. + jakarta.el + FunctionMapper + + + java.lang.String + java.lang.String + java.lang.reflect.Method + + + + + EL:JAVADOC:262 + Import a class. + jakarta.el + ImportHandler + + + java.lang.String + + + + + EL:JAVADOC:263 + if the name is not a full class name. + jakarta.el + ImportHandler + + + java.lang.String + + jakarta.el.ELException + + + + EL:JAVADOC:264 + + jakarta.el + ImportHandler + + + + EL:JAVADOC:265 + Import all the classes in a package. + jakarta.el + ImportHandler + + + java.lang.String + + + + + EL:JAVADOC:266 + Resolve a class name from its imports. + jakarta.el + ImportHandler + + + java.lang.String + + + + + EL:JAVADOC:273 + if not enough arguments are provided + jakarta.el + LambdaExpression + + + jakarta.el.ELContext + java.lang.Object[] + + jakarta.el.ELException + + + + EL:JAVADOC:274 + Creates a new LambdaExpression. + jakarta.el + LambdaExpression + + + java.util.List + jakarta.el.ValueExpression + + + + + EL:JAVADOC:275 + if the given index is out of bounds for this list. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:276 + if context is null + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:277 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:278 + if the property could not be coerced into an integer. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.IllegalArgumentException + + + + EL:JAVADOC:279 + if context is null. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:280 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:281 + if the given index is out of bounds for this list. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:282 + if context is null + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:283 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:284 + if the class of the specified element prevents it from being added to this list. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.ClassCastException + + + + EL:JAVADOC:285 + if context is null, or if the value is null and this List does not support null elements. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:286 + if the property could not be coerced into an integer, or if some aspect of the specified element prevents it from being added to this list. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.IllegalArgumentException + + + + EL:JAVADOC:287 + if this resolver was constructed in read-only mode, or if the set operation is not supported by the underlying list. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotWritableException + + + + EL:JAVADOC:288 + if the given index is out of bounds for this list. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:289 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ListELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:290 + if context is null + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:291 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:292 + if the key is of an inappropriate type for this map (optionally thrown by the underlying Map). + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.ClassCastException + + + + EL:JAVADOC:293 + if context is null, or if the key is null and this map does not permit null keys (the latter is optionally thrown by the underlying Map). + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:294 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:295 + if context is null + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:296 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:297 + if the class of the specified key or value prevents it from being stored in this map. + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.ClassCastException + + + + EL:JAVADOC:298 + if context is null, or if this map does not permit null keys or values, and the specified key or value is null. + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:299 + if some aspect of this key or value prevents it from being stored in this map. + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.IllegalArgumentException + + + + EL:JAVADOC:300 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:301 + if this resolver was constructed in read-only mode, or if the put operation is not supported by the underlying map. + jakarta.el + MapELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotWritableException + + + + EL:JAVADOC:302 + if context is null + jakarta.el + MethodExpression + + + jakarta.el.ELContext + + java.lang.NullPointerException + + + + EL:JAVADOC:303 + if one of the property resolutions failed because a specified variable or property does not exist or is not readable. + jakarta.el + MethodExpression + + + jakarta.el.ELContext + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:304 + if no suitable method can be found. + jakarta.el + MethodExpression + + + jakarta.el.ELContext + + jakarta.el.MethodNotFoundException + + + + EL:JAVADOC:305 + if an exception was thrown while performing property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + MethodExpression + + + jakarta.el.ELContext + + jakarta.el.ELException + + + + EL:JAVADOC:306 + if context is null + jakarta.el + MethodExpression + + + jakarta.el.ELContext + java.lang.Object[] + + java.lang.NullPointerException + + + + EL:JAVADOC:307 + if one of the property resolutions failed because a specified variable or property does not exist or is not readable. + jakarta.el + MethodExpression + + + jakarta.el.ELContext + java.lang.Object[] + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:308 + if no suitable method can be found. + jakarta.el + MethodExpression + + + jakarta.el.ELContext + java.lang.Object[] + + jakarta.el.MethodNotFoundException + + + + EL:JAVADOC:309 + if a String literal is specified and expectedReturnType of the MethodExpression is void or if the coercion of the String literal to the expectedReturnType yields an error (see Section "1.18 Type Conversion"). + jakarta.el + MethodExpression + + + jakarta.el.ELContext + java.lang.Object[] + + jakarta.el.ELException + + + + EL:JAVADOC:310 + if an exception was thrown while performing property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. If the exception thrown is an InvocationTargetException, extract its cause and pass it to the ELException constructor. + jakarta.el + MethodExpression + + + jakarta.el.ELContext + java.lang.Object[] + + jakarta.el.ELException + + + + EL:JAVADOC:311 + Return whether this MethodExpression was created with parameters. This method must return true if and only if parameters are specified in the EL, using the expr-a.expr-b(...) syntax. + jakarta.el + MethodExpression + + + + EL:JAVADOC:312 + Use isParametersProvided instead. + jakarta.el + MethodExpression + + + + EL:JAVADOC:313 + if context is null + jakarta.el + ResourceBundleELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:314 + if context is null + jakarta.el + ResourceBundleELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:315 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ResourceBundleELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:316 + if context is null + jakarta.el + ResourceBundleELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:317 + if context is null. + jakarta.el + ResourceBundleELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:318 + Always thrown if base is an instance of ReasourceBundle. + jakarta.el + ResourceBundleELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotWritableException + + + + EL:JAVADOC:319 + Add a custom ELResolver to the context. The list of the custom ELResolvers will be accessed in the order they are added. A custom ELResolver added to the context cannot be removed. + jakarta.el + StandardELContext + + + jakarta.el.ELResolver + + + + + EL:JAVADOC:320 + Returns the context object associated with the given key. The ELContext maintains a collection of context objects relevant to the evaluation of an expression. These context objects are used by ELResolvers. This method is used to retrieve the context with the given key from the collection. By convention, the object returned will be of the type specified by the key. However, this is not required and the key is used strictly as a unique identifier. + jakarta.el + StandardELContext + + + java.lang.Class + + + + + EL:JAVADOC:321 + if key is null. + jakarta.el + StandardELContext + + + java.lang.Class + + java.lang.NullPointerException + + + + EL:JAVADOC:323 + Construct (if needed) and return a default FunctionMapper. + jakarta.el + StandardELContext + + + + EL:JAVADOC:325 + Construct (if needed) and return a default VariableMapper() { + jakarta.el + StandardELContext + + + + EL:JAVADOC:326 + Associates a context object with this ELContext. The ELContext maintains a collection of context objects relevant to the evaluation of an expression. These context objects are used by ELResolvers. This method is used to add a context object to that collection. By convention, the contextObject will be of the type specified by the key. However, this is not required and the key is used strictly as a unique identifier. + jakarta.el + StandardELContext + + + java.lang.Class + java.lang.Object + + + + + EL:JAVADOC:327 + if key is null or contextObject is null. + jakarta.el + StandardELContext + + + java.lang.Class + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:329 + Construct a StandardELContext from another ELContext. + jakarta.el + StandardELContext + + + jakarta.el.ELContext + + + + + EL:JAVADOC:330 + Returns the type of the property. Always returns String.class, since a field name is a String. + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + EL:JAVADOC:331 + Returns the properties that can be resolved. Always returns null, since there is no reason to iterate through a list of one element: field name. + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + + + + + EL:JAVADOC:332 + Returns the type of a static field. If the base object is an instance of ELClassand the property is a String, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set. If the property is the string "class", returns java.lang.Class.class. If the property string is a public static field of class specified in ELClass, return the type of the static field. + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + EL:JAVADOC:333 + if context is null. + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:334 + if field is not a public static filed of the class, or if the field is inacessible. + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:336 + if context is null. + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:337 + if the specified class does not exist, or if the field is not a public static filed of the class, or if the field is inacessible. + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:339 + if no suitable method can be found. + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Class[] + java.lang.Object[] + + jakarta.el.MethodNotFoundException + + + + EL:JAVADOC:340 + if an exception was thrown while performing (base, method) resolution. The thrown exception must be included as the cause property of this exception, if available. If the exception thrown is an InvocationTargetException, extract its cause and pass it to the ELException constructor. + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Class[] + java.lang.Object[] + + jakarta.el.ELException + + + + EL:JAVADOC:341 + Inquires whether the static field is writable. If the base object is an instance of ELClassand the property is a String, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set. Always returns a true because writing to a static field is not allowed. + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + EL:JAVADOC:342 + if context is null. + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:343 + Attempts to write to a static field. If the base object is an instance of ELClassand the property is String, a PropertyNotWritableException will always be thrown, because writing to a static field is not allowed. + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + + + + EL:JAVADOC:344 + if context is null + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:345 + + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotWritableException + + + + EL:JAVADOC:346 + + jakarta.el + StaticFieldELResolver + + + + EL:JAVADOC:347 + Converts an object to a specific type. An ELException is thrown if an error occurs during the conversion. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Class + + + + + EL:JAVADOC:348 + thrown if errors occur. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Class + + jakarta.el.ELException + + + + EL:JAVADOC:349 + Returns the most general type that this resolver accepts for the property argument, given a base object. One use for this method is to assist tools in auto-completion. This assists tools in auto-completion and also provides a way to express that the resolver accepts a primitive value, such as an integer index into an array. For example, the ArrayELResolver will accept any int as a property, so the return value would be Integer.class. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + + + + + EL:JAVADOC:350 + Returns information about the set of variables or properties that can be resolved for the given base object. One use for this method is to assist tools in auto-completion. If the base parameter is null, the resolver must enumerate the list of top-level variables it can resolve. The Iterator returned must contain zero or more instances of java.beans.FeatureDescriptor, in no guaranteed order. In the case of primitive types such as int, the value null must be returned. This is to prevent the useless iteration through all possible primitive values. A return value of null indicates that this resolver does not handle the given base object or that the results are too complex to represent with this method and the #getCommonPropertyType method should be used instead. Each FeatureDescriptor will contain information about a single variable or property. In addition to the standard properties, the FeatureDescriptor must have two named attributes (as set by the setValue method): #TYPE - The value of this named attribute must be an instance of java.lang.Class and specify the runtime type of the variable or property. #RESOLVABLE_AT_DESIGN_TIME - The value of this named attribute must be an instance of java.lang.Boolean and indicates whether it is safe to attempt to resolve this property at design-time. For instance, it may be unsafe to attempt a resolution at design time if the ELResolver needs access to a resource that is only available at runtime and no acceptable simulated value can be provided. The caller should be aware that the Iterator returned might iterate through a very large or even infinitely large set of properties. Care should be taken by the caller to not get stuck in an infinite loop. This is a "best-effort" list. Not all ELResolvers will return completely accurate results, but all must be callable at both design-time and runtime (i.e. whether or not Beans.isDesignTime() returns true), without causing errors. The propertyResolved property of the ELContext is not relevant to this method. The results of all ELResolvers are concatenated in the case of composite resolvers. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + + + + + EL:JAVADOC:351 + For a given base and property, attempts to identify the most general type that is acceptable for an object to be passed as the value parameter in a future call to the #setValue method. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. This is not always the same as getValue().getClass(). For example, in the case of an ArrayELResolver, the getType method will return the element type of the array, which might be a superclass of the type of the actual element that is currently in the specified array element. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + EL:JAVADOC:352 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist or is not readable. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:353 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:354 + Attempts to resolve the given property object on the given base object. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + EL:JAVADOC:355 + if context is null + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:356 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist or is not readable. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:357 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:358 + For a given base and property, attempts to determine whether a call to #setValue will always fail. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + EL:JAVADOC:359 + if context is null + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:360 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:361 + if an exception was thrown while performing the property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:362 + Attempts to set the value of the given property object on the given base object. If this resolver handles the given (base, property) pair, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller can safely assume no value has been set. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + + + + EL:JAVADOC:363 + if context is null + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:364 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property does not exist. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:365 + if the given (base, property) pair is handled by this ELResolver but the specified variable or property is not writable. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.PropertyNotWritableException + + + + EL:JAVADOC:366 + if an exception was thrown while attempting to set the property or variable. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + TypeConverter + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:367 + + jakarta.el + TypeConverter + + + + EL:JAVADOC:368 + if context is null. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + + java.lang.NullPointerException + + + + EL:JAVADOC:369 + if one of the property resolutions failed because a specified variable or property does not exist or is not readable. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:370 + if an exception was thrown while performing property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + + jakarta.el.ELException + + + + EL:JAVADOC:371 + if context is null. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + + java.lang.NullPointerException + + + + EL:JAVADOC:372 + if one of the property resolutions failed because a specified variable or property does not exist or is not readable. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:373 + if an exception was thrown while performing property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + + jakarta.el.ELException + + + + EL:JAVADOC:374 + Returns a ValueReference for this expression instance. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + + + + + EL:JAVADOC:375 + if context is null. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + + java.lang.NullPointerException + + + + EL:JAVADOC:376 + if one of the property resolutions failed because a specified variable or property does not exist or is not readable. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:377 + if an exception was thrown while performing property or variable resolution. The thrown exception must be included as the cause property of this exception, if available. * @throws NullPointerException if context is null + jakarta.el + ValueExpression + + + jakarta.el.ELContext + + jakarta.el.ELException + + + + EL:JAVADOC:378 + if context is null. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + java.lang.Object + + java.lang.NullPointerException + + + + EL:JAVADOC:379 + if one of the property resolutions failed because a specified variable or property does not exist or is not readable. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + java.lang.Object + + jakarta.el.PropertyNotFoundException + + + + EL:JAVADOC:380 + if the final variable or property resolution failed because the specified variable or property is not writable. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + java.lang.Object + + jakarta.el.PropertyNotWritableException + + + + EL:JAVADOC:381 + if an exception was thrown while attempting to set the property or variable. The thrown exception must be included as the cause property of this exception, if available. + jakarta.el + ValueExpression + + + jakarta.el.ELContext + java.lang.Object + + jakarta.el.ELException + + + + EL:JAVADOC:382 + + jakarta.el + ValueReference + + + + EL:JAVADOC:383 + + jakarta.el + ValueReference + + + + EL:JAVADOC:384 + + jakarta.el + ValueReference + + + java.lang.Object + java.lang.Object + + + + + + + + + + + + + + + 41 + Called to indicate that a ELResolver has successfully resolved a given (base, property) pair. Use #setPropertyResolved(Object, Object) if resolved is true and to notify EvaluationListeners. The CompositeELResolver checks this property to determine whether it should consider or skip other component resolvers. + jakarta.el + ELContext + + + boolean + + + + + 61 + Coerces an object to a specific type according to the EL type conversion rules. The custom type conversions in the ELResolvers are not considered. An ELException is thrown if an error results from applying the conversion rules. + jakarta.el + ExpressionFactory + + + java.lang.Object + java.lang.Class + + + + + EL:JAVADOC:158 + If the base object is null and the property is a name that is resolvable by the BeanNameResolver, returns the value resolved by the BeanNameResolver. If name is resolved by the BeanNameResolver, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. + jakarta.el + BeanNameELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + EL:JAVADOC:199 + Register a BeanNameResolver. Construct a BeanNameELResolver with the BeanNameResolver and add it to the list of ELResolvers. Once registered, the BeanNameResolver cannot be removed. + jakarta.el + ELManager + + + jakarta.el.BeanNameResolver + + + + + EL:JAVADOC:205 + Return the ExpressionFactory instance used for EL evaluations. + jakarta.el + ELManager + + + + EL:JAVADOC:214 + if the specified class does not exists. + jakarta.el + ELProcessor + + + java.lang.String + java.lang.String + java.lang.String + java.lang.String + + java.lang.ClassNotFoundException + + + + EL:JAVADOC:216 + if any of the arguments is null. + jakarta.el + ELProcessor + + + java.lang.String + java.lang.String + java.lang.String + java.lang.String + + java.lang.NullPointerException + + + + EL:JAVADOC:272 + Invoke the encapsulated Lambda expression. The supplied arguments are matched, in the same order, to the formal parameters. If there are more arguments than the formal parameters, the extra arguments are ignored. If there are less arguments than the formal parameters, an ELException is thrown. The actual Lambda arguments are added to the ELContext and are available during the evaluation of the Lambda expression. They are removed after the evaluation. + jakarta.el + LambdaExpression + + + jakarta.el.ELContext + java.lang.Object[] + + + + + EL:JAVADOC:322 + Construct (if needed) and return a default ELResolver. Retrieves the ELResolver associated with this context. This is a CompositeELResover consists of an ordered list of ELResolvers. A BeanNameELResolver for beans defined locally Any custom ELResolvers An ELResolver supporting the collection operations A StaticFieldELResolver for resolving static fields A MapELResolver for resolving Map properties A ResourceBundleELResolver for resolving ResourceBundle properties A ListELResolver for resolving List properties An ArrayELResolver for resolving array properties A BeanELResolver for resolving bean properties + jakarta.el + StandardELContext + + + + EL:JAVADOC:335 + Returns the value of a static field. If the base object is an instance of ELClass and the property is String, the propertyResolved property of the ELContext object must be set to true by this resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. If the property is the string "class", return the java.lang.Class instance of the class specified in ELClass. If the property is a public static field of class specified in ELClass, return the value of the static field. An Enum constant is a public static field of an Enum object, and is a special case of this. + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + EL:JAVADOC:338 + Invokes a public static method or the constructor for a class. If the base object is an instance of ELClass and the method is a String, the propertyResolved property of the ELContext object must be set to true by the resolver, before returning. If this property is not true after this method is called, the caller should ignore the return value. Invoke the public static method specified by method. The process involved in the method selection is the same as that used in BeanELResolver. As a special case, if the name of the method is "<init>", the constructor for the class will be invoked. + jakarta.el + StaticFieldELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + java.lang.Class[] + java.lang.Object[] + + + + + + + + + EL:JAVADOC:17 + + jakarta.el + BeanELResolver.BeanProperties + + + java.lang.Class + + + + + + EL:JAVADOC:18 + + jakarta.el + BeanELResolver.BeanProperties + + + java.lang.String + + + + + + EL:JAVADOC:19 + + jakarta.el + BeanELResolver.BeanProperty + + + java.lang.Class + java.beans.PropertyDescriptor + + + + + + EL:JAVADOC:20 + + jakarta.el + BeanELResolver.BeanProperty + + + + + EL:JAVADOC:21 + + jakarta.el + BeanELResolver.BeanProperty + + + + + EL:JAVADOC:22 + + jakarta.el + BeanELResolver.BeanProperty + + + + + EL:JAVADOC:23 + + jakarta.el + BeanELResolver.BeanProperty + + + + + EL:JAVADOC:119 + Creates a new instance of a ExpressionFactory. This method uses the following ordered lookup procedure to determine the ExpressionFactory implementation class to load: Use the Services API (as detailed in the JAR specification). If a resource with the name of META-INF/services/jakarta.el.ExpressionFactory exists, then its first line, if present, is used as the UTF-8 encoded name of the implementation class. Use the properties file "lib/el.properties" in the JRE directory. If this file exists and it is readable by the java.util.Properties.load(InputStream) method, and it contains an entry whose key is "jakarta.el.ExpressionFactory", then the value of that entry is used as the name of the implementation class. Use the jakarta.el.ExpressionFactory system property. If a system property with this name is defined, then its value is used as the name of the implementation class. Use a platform default implementation. + jakarta.el + ExpressionFactory + + + + + EL:JAVADOC:120 + Create a new instance of a ExpressionFactory, with optional properties. This method uses the same lookup procedure as the one used in newInstance(). If the argument properties is not null, and if the implementation contains a constructor with a single parameter of type java.util.Properties, then the constructor is used to create the instance. Properties are optional and can be ignored by an implementation. The name of a property should start with "jakarta.el." The following are some suggested names for properties. jakarta.el.cacheSize + jakarta.el + ExpressionFactory + + + java.util.Properties + + + + + + EL:JAVADOC:189 + Constructor + jakarta.el + ELClass + + + java.lang.String + + + + + + EL:JAVADOC:190 + Returns the class name for the specified class. + jakarta.el + ELClass + + + + + EL:JAVADOC:191 + Registers a listener to the ELContext. + jakarta.el + ELContext + + + java.util.EventListener + + + + + + EL:JAVADOC:197 + Returns the list of registered listeners. + jakarta.el + ELContext + + + + + EL:JAVADOC:201 + Register a listener. Used only for EvaluationListeners in 3.0, but possibly to used for other listeners. + jakarta.el + ELManager + + + java.util.EventListener + + + + + + EL:JAVADOC:217 + if the specified class does not exists. + jakarta.el + ELProcessor + + + java.lang.String + java.lang.String + java.lang.String + java.lang.String + + ClassNoFoundException + + + + + EL:JAVADOC:246 + Constructor + jakarta.el + EvaluationEvent + + + jakarta.el.ELContext + java.lang.String + + + + + + EL:JAVADOC:247 + Retruns the ELContext used in the evaluation of the expression. + jakarta.el + EvaluationEvent + + + + + EL:JAVADOC:248 + Returns the original expression String + jakarta.el + EvaluationEvent + + + + + EL:JAVADOC:249 + Receives notification after an EL expression is evaluated + jakarta.el + EvaluationListener + + + jakarta.el.EvaluationEvent + + + + + + EL:JAVADOC:250 + Receives notification before an EL expression is evaluated + jakarta.el + EvaluationListener + + + jakarta.el.EvaluationEvent + + + + + + EL:JAVADOC:257 + Retrieves an ELResolver that implements the Query Operators as described in Chapter 2 of the specification. This ELResolver relsoves the method invocation on the pair (base, property) when base is an Iterable and property is the name of the operator. Therefore, the operators behave like built-in methods of Iterables. See EL.2 for detailed descriptions of these operators, the arguments, and the return values. + jakarta.el + ExpressionFactory + + + + + EL:JAVADOC:261 + Return the key for the collection + jakarta.el + Grouping + + + + + EL:JAVADOC:267 + Creates a InvalidOperationException with no detail message. + jakarta.el + InvalidOperationException + + + + + EL:JAVADOC:268 + Creates a InvalidOperationException with the provided detail message. + jakarta.el + InvalidOperationException + + + java.lang.String + + + + + + EL:JAVADOC:269 + Creates a InvalidOperationException with the given root cause. + jakarta.el + InvalidOperationException + + + java.lang.Throwable + + + + + + EL:JAVADOC:270 + Creates a InvalidOperationException with the given detail message and root cause. + jakarta.el + InvalidOperationException + + + java.lang.String + java.lang.Throwable + + + + + + EL:JAVADOC:271 + Retrieves the formal parameters of the Lambda expression + jakarta.el + LambdaExpression + + + + + EL:JAVADOC:324 + Construct (if need) and return an ImportHandler + jakarta.el + StandardELContext + + + + + EL:JAVADOC:328 + Construct a default ELContext for a stand-alone environment. + jakarta.el + StandardELContext + + + jakarta.el.ELResolver + + + + + + + + + EL:JAVADOC:385 + Returns whether the given name is resolved by the BeanNameResolver + jakarta.el + BeanNameResolver + + + java.lang.String + + + + + + EL:JAVADOC:386 + Converts an object to a specific type. An ELException is thrown if an error occurs during the conversion. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Class + + + + + + EL:JAVADOC:387 + thrown if errors occur. + jakarta.el + CompositeELResolver + + + jakarta.el.ELContext + java.lang.Object + java.lang.Class + + jakarta.el.ELException + + + + + EL:JAVADOC:388 + Constructor + jakarta.el + ELClass + + + java.lang.Class + + + + + + EL:JAVADOC:389 + Returns the Class instance + jakarta.el + ELClass + + + + + EL:JAVADOC:390 + Registers an evaluation listener to the ELContext. + jakarta.el + ELContext + + + jakarta.el.EvaluationListener + + + + + + EL:JAVADOC:391 + Converts an object to a specific type. If a custom converter in the ELResolver handles this conversion, it is used. Otherwise the standard coercions is applied. An ELException is thrown if an error occurs during the conversion. + jakarta.el + ELContext + + + java.lang.Object + java.lang.Class + + + + + + EL:JAVADOC:392 + thrown if errors occur. + jakarta.el + ELContext + + + java.lang.Object + java.lang.Class + + jakarta.el.ELException + + + + + EL:JAVADOC:393 + Returns the list of registered evaluation listeners. + jakarta.el + ELContext + + + + + EL:JAVADOC:394 + Inquires if the name is a LambdaArgument + jakarta.el + ELContext + + + java.lang.String + + + + + + EL:JAVADOC:395 + Notifies the listeners after an EL expression is evaluated + jakarta.el + ELContext + + + java.lang.String + + + + + + EL:JAVADOC:396 + Notifies the listeners before an EL expression is evaluated + jakarta.el + ELContext + + + java.lang.String + + + + + + EL:JAVADOC:397 + Notifies the listeners when the (base, property) pair is resolved + jakarta.el + ELContext + + + java.lang.Object + java.lang.Object + + + + + + EL:JAVADOC:398 + Called to indicate that a ELResolver has successfully resolved a given (base, property) pair and to notify the EvaluationListeners. The CompositeELResolver checks this property to determine whether it should consider or skip other component resolvers. + jakarta.el + ELContext + + + java.lang.Object + java.lang.Object + + + + + + EL:JAVADOC:399 + Register an evaluation listener. + jakarta.el + ELManager + + + jakarta.el.EvaluationListener + + + + + + EL:JAVADOC:400 + Receives notification after an EL expression is evaluated + jakarta.el + EvaluationListener + + + jakarta.el.ELContext + java.lang.String + + + + + + EL:JAVADOC:401 + Receives notification before an EL expression is evaluated + jakarta.el + EvaluationListener + + + jakarta.el.ELContext + java.lang.String + + + + + + EL:JAVADOC:402 + + jakarta.el + EvaluationListener + + + + + EL:JAVADOC:403 + Receives notification when the (base, property) pair is resolved + jakarta.el + EvaluationListener + + + jakarta.el.ELContext + java.lang.Object + java.lang.Object + + + + + + EL:JAVADOC:404 + Retrieve a function map containing a pre-configured function mapping. It must include the following functions. linq:range linq:repeat linq:_empty + jakarta.el + ExpressionFactory + + + + + EL:JAVADOC:405 + Retrieves an ELResolver that implements the operations in collections. This ELResolver resolves the method invocation on the pair (base, property) when base is a Collection or a Map, and property is the name of the operation. See EL.2 for detailed descriptions of these operators, their arguments, and return values. + jakarta.el + ExpressionFactory + + + + + EL:JAVADOC:406 + is elContext is null + jakarta.el + LambdaExpression + + + jakarta.el.ELContext + java.lang.Object[] + + java.lang.NullPointerException + + + + + EL:JAVADOC:407 + Invoke the encapsulated Lambda expression. The supplied arguments are matched, in the same order, to the formal parameters. If there are more arguments than the formal parameters, the extra arguments are ignored. If there are less arguments than the formal parameters, an ELException is thrown. The actual Lambda arguments are added to the ELContext and are available during the evaluation of the Lambda expression. They are removed after the evaluation. The ELContext set by LambdaExpression#setELContext is used in the evaluation of the lambda Expression. + jakarta.el + LambdaExpression + + + java.lang.Object[] + + + + + + EL:JAVADOC:408 + if not enough arguments are provided + jakarta.el + LambdaExpression + + + java.lang.Object[] + + jakarta.el.ELException + + + + + EL:JAVADOC:409 + Set the ELContext to use in evaluating the LambdaExpression. The ELContext must to be set prior to the invocation of the LambdaExpression, unless it is supplied with LambdaExpression#invoke. + jakarta.el + LambdaExpression + + + jakarta.el.ELContext + + + + + + EL:JAVADOC:410 + Construct a default ELContext for a stand-alone environment. + jakarta.el + StandardELContext + + + jakarta.el.ExpressionFactory + + + + + EL:JAVADOC:411 + Returns the name of the method + jakarta.el + MethodInfo + + + + EL:JAVADOC:412 + Returns the return type of the method + jakarta.el + MethodInfo + + + + EL:JAVADOC:413 + Returns the parameter types of the method + jakarta.el + MethodInfo + + + + + diff --git a/el/docs/assertions/ELSpecAssertions.xml b/el/docs/assertions/ELSpecAssertions.xml new file mode 100644 index 0000000000..bdc01b7cd4 --- /dev/null +++ b/el/docs/assertions/ELSpecAssertions.xml @@ -0,0 +1,2705 @@ + + + + + + + + 82 + 48 + EL + EL + Expression Language + 5.0 + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + EL:SPEC:45 + Once parsed, an expression can optionally be evaluated + one or + more times. [ExprParsedEvalMany] + + + + EL:SPEC:1 + An eval-expression is formed by using the constructs + ${expr} or + #{expr}. Both constructs are parsed and evaluated in + exactly the same way by + the EL, even though they might carry + different meanings in the technology + that is using the EL. + [PoundDollarSameMeaning] + + + + EL:SPEC:2 + Nested eval-expressions, such as ${item[${i}]}, are + illegal. + [NestedEvalExprIllegal] + + + + EL:SPEC:3 + When parsing a value expression, an expected type is + provided. In + the case of an rvalue, the expected type is what the + result of the expression + evaluation is coerced to. [RValueCoercion] + + + + EL:SPEC:4 + When parsing lvalues, the expected type is ignored and + the + provided value is coerced to the actual type of the property the + expression + points to, before that property is set. [LValueCoercion] + + + + EL:SPEC:5 + There is no coercion performed by method expressions. + [MethodExprSignature] + + + + EL:SPEC:80 + Identification of methods in method expressions from + parameter types follows the rules of the JLS with the addition + that coercion resolution is less specific than overload + resolution. [MethodExpressionMatch] + + + + EL:SPEC:6 + A literal-expression does not use the ${expr} or #{expr} + constructs, and simply evaluates to the text of the expression, of + type + String. Upon evaluation, an expected type of something other + than String can + be provided. [LiteralExprEval] + + + + EL:SPEC:7 + To generate literal values that include the character + sequence + "${" or ?#{?, the developer can choose to use a composite + expression as shown + in the example: [ELSyntaxAsLiteral] + + + + EL:SPEC:8 + The escape characters \$ and \# can be used to escape + what would + otherwise be treated as an eval-expression. + [ELSyntaxEscape] + + + + EL:SPEC:9 + A literal-expression can be used anywhere a value + expression can + be used. [LiteralExprAnywhereValueExprUsed] + + + + EL:SPEC:10 + A literal-expression can also be used as a method + expression that + returns a non-void return value. The standard EL + coercion rules then apply if + the return type of the method + expression is not java.lang.String. + [LiteralExprAsMethodExpr] + + + + EL:SPEC:11 + With composite expressions, eval-expressions are + evaluated from + left to right, coerced to Strings (according to the + EL type conversion + rules), and concatenated with any intervening + literal-expressions. + [CompositeExprEval] + + + + EL:SPEC:12 + It is illegal to mix ${} and #{} constructs in a + composite + expression. [CannotMixTwoSyntax] + + + + EL:SPEC:13 + There are literals for boolean, integer, floating point, + string, + and null in an eval-expression. [EvalExpressionLiterals] + + + + EL:SPEC:13.1 + The boolean literal has values true and false + + + + EL:SPEC:13.2 + The integer literal is defined by the IntegerLiteral + construct. + + + + EL:SPEC:13.3 + The floating point literal is defined by the + FloatingPointLiteral construct + + + + EL:SPEC:13.4 + The string literal is defined with single and double + quotes + + + + EL:SPEC:13.5 + In a string literal, " is escaped as \", ' is escaped + as \', + and \ is escaped as \\. Quotes only need to be escaped in a + string value + enclosed in the same type of quote + + + + EL:SPEC:13.6 + The null literal has a null value. + + + + + + EL:SPEC:14 + The EL does not provide warnings, just default values + and errors. + Default values are type-correct values that are assigned + to a subexpression + when there is some problem. An error is an + exception thrown (to be handled by + the environment where the EL is + used). [DefaultValuesAndErrors] + + + + EL:SPEC:15 + The dot and index operators have equivalent + functionality. + [DotAndIndexOperatorsSame] + + + + EL:SPEC:16 + To evaluate expr-a[expr-b]: + + + + EL:SPEC:16.1 + Evaluate expr-a into value-a + + + + EL:SPEC:16.2 + If value-a is null: + + + + EL:SPEC:16.2.1 + If expr-a[expr-b] is the last property being + resolved: + + + + EL:SPEC:16.2.1.1 + If the expression is a value expression and + ValueExpression.getValue(context) was called to initiate this + expression evaluation, return null. + + + + EL:SPEC:16.2.1.2 + Otherwise, throw PropertyNotFoundException + + + + + + EL:SPEC:16.2.2 + Otherwise, return null. + + + + + + EL:SPEC:16.3 + Evaluate expr-b into value-b + + + + EL:SPEC:16.4 + If value-b is null + + + + EL:SPEC:16.4.1 + If expr-a[expr-b] is the last property being + resolved: + + + + EL:SPEC:16.4.1.1 + If the expression is a value expression and + ValueExpression.getValue(context) was called to initiate this + expression evaluation, return null. + + + + EL:SPEC:16.4.1.2 + Otherwise, throw PropertyNotFoundException + + + + + + EL:SPEC:16.4.2 + Otherwise, return null. + + + + + + EL:SPEC:16.5 + If the expression is a value expression: + + + + EL:SPEC:16.5.1 + If expr-a[expr-b] is the last property being + resolved: + + + + EL:SPEC:16.5.1.1 + If ValueExpression.getValue(context) was called to + initiate this expression evaluation, invoke + elResolver.getValue(context, value-a, value-b) + + + + EL:SPEC:16.5.1.2 + If ValueExpression.getType(context) was called, + invoke + elResolver.getType(context, value-a, value-b). + + + + EL:SPEC:16.5.1.3 + If ValueExpression.isReadOnly(context) was called, + invoke + elResolver.isReadOnly(context, value-a, value-b). + + + + EL:SPEC:16.5.1.4 + If ValueExpression.setValue(context, val) was + called, + invoke elResolver.setValue(context, value-a, value-b, + val). + + + + + + EL:SPEC:16.5.2 + Otherwise, invoke elResolver.getValue(value-a, + value-b) + + + + + + EL:SPEC:16.6 + Otherwise, the expression is a method expression + + + + EL:SPEC:16.6.1 + If expr-a[expr-b] is the last property being + resolved: + + + + EL:SPEC:16.6.1.1 + Coerce value-b to String + + + + EL:SPEC:16.6.1.2 + Find the method on object value-a with name + value-b and + with the set of expected parameter types provided + at parse time. If the + method does not exist, or the return + type does not match the expected + return type provided at parse + time, throw MethodNotFoundException. + + + + EL:SPEC:16.6.1.3 + If MethodExpression.invoke(context, params) was + called, + invoke the found method with the parameters passed to + the invoke method + + + + EL:SPEC:16.6.1.4 + If MethodExpression.getMethodInfo(context) was + called, + construct and return a new MethodInfo object. + + + + + + EL:SPEC:16.6.2 + Otherwise invoke elResolver.getValue(value-a, + value-b). + + + + + + + + EL:SPEC:17 + Binary operators - A { +,-,* } B + + + + EL:SPEC:46 + If the operator is a +, and either A or B is a + String, + then + is + a string concatenation operator. + + + + EL:SPEC:17.1 + If A and B are null, return (Long) 0 + + + + EL:SPEC:17.2 + If A or B is a BigDecimal, coerce both to BigDecimal + and then: + + + + EL:SPEC:17.2.1 + If operator is +, return A.add(B) + + + + EL:SPEC:17.2.2 + If operator is -, return A.subtract(B) + + + + EL:SPEC:17.2.3 + If operator is *, return A.multiply(B) + + + + + + EL:SPEC:17.3 + If A or B is Float, Double, or a String containing + ".", "e", or + "E": + + + + EL:SPEC:17.3.1 + If A or B is BigInteger, coerce both A and B to + BigDecimal + and apply operator. + + + + EL:SPEC:17.3.2 + Otherwise, coerce both A and B to Double and apply + operator + + + + + + EL:SPEC:17.4 + If A or B is BigInteger, coerce both to BigInteger and + then: + + + + EL:SPEC:17.4.1 + If operator is +, return A.add(B) + + + + EL:SPEC:17.4.2 + If operator is -, return A.subtract(B) + + + + EL:SPEC:17.4.3 + If operator is *, return A.multiply(B) + + + + + + EL:SPEC:17.5 + Otherwise coerce both A and B to Long and apply + operator. + + + + EL:SPEC:17.6 + If application of operator against A and B results in + an + exception, error. + + + + + + EL:SPEC:18 + Binary operator - A { / or div } B + + + + EL:SPEC:18.1 + If A and B are null, return (Long) 0 + + + + EL:SPEC:18.2 + If A or B is a BigDecimal or a BigInteger, coerce both + to + BigDecimal and return A.divide(B, BigDecimal.ROUND_HALF_UP) + + + + EL:SPEC:18.3 + Otherwise, coerce both A and B to Double and apply + operator. + + + + EL:SPEC:23.4 + If application of operator against A and B results in + an + exception, error. + + + + + + EL:SPEC:19 + Binary Operator - A { % or mod } B + + + + EL:SPEC:19.1 + If A and B are null, return (Long)0 + + + + EL:SPEC:19.2 + If A or B is a BigDecimal, Float, Double, or String + containing + ., e, or E, coerce both A and B to Double and apply + operator + + + + EL:SPEC:19.3 + If A or B is a BigInteger, coerce both to BigInteger + and return + A.remainder(B). + + + + EL:SPEC:19.4 + Otherwise coerce both A and B to Long and apply + operator. + + + + EL:SPEC:19.5 + If operator results in exception, error + + + + + + EL:SPEC:20 + Unary minus operator - -A + + + + EL:SPEC:20.1 + If A is null, return (Long) 0 + + + + EL:SPEC:20.2 + If A is a BigDecimal or BigInteger, return A.negate() + + + + EL:SPEC:20.3 + If A is a String: + + + + EL:SPEC:20.3.1 + If A contains ".", "e", or "E", coerce to a Double + and apply + operator. + + + + EL:SPEC:20.3.2 + Otherwise, coerce to a Long and apply operator + + + + EL:SPEC:20.3.3 + If operation results in exception, error. + + + + + + EL:SPEC:20.4 + If A is Byte, Short, Integer, Long, Float, Double: + + + + EL:SPEC:20.4.1 + retain the type and apply the operator. + + + + EL:SPEC:20.4.2 + If application of operator results in exception, + error. + + + + + + EL:SPEC:20.5 + Otherwise, error + + + + + + EL:SPEC:47 + String Concatenation Operator - A {+, cat} B + + + + EL:SPEC:47.1 + The + operator is a string concatenation + operator if + and only if + at least one of the operands + is a String. + + + + EL:SPEC:47.1.1 + Coerce A and B to String. + + + + EL:SPEC:47.1.2 + Return the concatenated string of A and B. + + + + + + + + EL:SPEC:21 + Relational operators - A { <,>,<=,=>,lt,gt,le,ge } + B + + + + EL:SPEC:21.1 + If A==B, and operator is <=, le, >=, or ge, return + true + + + + EL:SPEC:21.2 + If A or B is null, return false. + + + + EL:SPEC:21.3 + If A or B is BigDecimal, coerce both A and B to + BigDecimal and + use the return value of A.compareTo(B). + + + + EL:SPEC:21.4 + If A or B is Float or Double coerce both A and B to + Double and + apply operator. + + + + EL:SPEC:21.5 + If A or B is BigInteger, coerce both A and B to + BigInteger and + use the return value of A.compareTo(B) + + + + EL:SPEC:21.6 + If A or B is Byte, Short, Character, Integer, or Long, + coerce + both A and B to Long and apply operator. + + + + EL:SPEC:21.7 + If A or B is String coerce both A and B to String, + compare + lexically. + + + + EL:SPEC:21.8 + If A is Comparable: + + + + EL:SPEC:21.8.1 + If A.compareTo(B) throws an exception, error + + + + EL:SPEC:21.8.2 + Otherwise return the result of A.compareTo(B) + + + + + + EL:SPEC:21.9 + If B is Comparable, then: + + + + EL:SPEC:21.9.1 + If B.compareTo(A) throws exception, error + + + + EL:SPEC:21.9.2 + Otherwise use result of B.compareTo(A) + + + + + + EL:SPEC:21.10 + Otherwise, error + + + + + + EL:SPEC:22 + Relational Operators - A { ==, !=, eq, ne } B + + + + EL:SPEC:22.1 + If A == B, apply operator. + + + + EL:SPEC:22.2 + If A or B is null, return false for == or eq, true for + != or ne + + + + EL:SPEC:22.3 + If A or B is BigDecimal, coerce both A and B to + BigDecimal and + then: + + + + EL:SPEC:22.3.1 + If operator is == or eq, return A.equals(B) + + + + EL:SPEC:22.3.2 + If operator is != or ne, return !A.equals(B) + + + + + + EL:SPEC:22.4 + If A or B is Float or Double coerce both A and B to + Double and + apply operator. + + + + EL:SPEC:22.5 + If A or B is BigInteger, coerce both A and B to + BigInteger and + then: + + + + EL:SPEC:22.5.1 + If operator is == or eq, return A.equals(B) + + + + EL:SPEC:22.5.2 + If operator is != or ne, return !A.equals(B) + + + + + + EL:SPEC:22.6 + If A or B is Byte, Short, Character, Integer, or Long, + coerce + both A and B to Long and apply operator. + + + + EL:SPEC:22.7 + If A or B is Boolean coerce both A and B to Boolean, + apply + operator. + + + + EL:SPEC:22.8 + If A or B is an enum, coerce both A and B to enum, + apply + operator + + + + EL:SPEC:22.9 + If A or B is String coerce both A and B to String and + compare + lexically + + + + EL:SPEC:22.10 + If error occurs calling A.equals(B), error + + + + EL:SPEC:22.11 + Otherwise apply operator to result of A.equals(B). + + + + + + EL:SPEC:23 + Binary Operator - A { &&, ||, and, or } B + + + + EL:SPEC:23.1 + Coerce both A and B to Boolean and apply operator. + + + + EL:SPEC:23.2 + The operator stops as soon as the expression can be + determined, i.e., A and B and C and D ? if B is false, then only A + and B is + evaluated. + + + + + + EL:SPEC:24 + Logical Operators + + + + EL:SPEC:24.2 + Binary operator - A {&&,||,and,or} B + + + + EL:SPEC:24.2.1 + Coerce both A and B to Boolean, apply operator. + + + + + + EL:SPEC:24.1 + Unary operator - { !, not } A + + + + EL:SPEC:24.1.1 + Coerce A to Boolean and apply operator. + + + + + + + + EL:SPEC:25 + Empty operator - empty A + + + + EL:SPEC:25.1 + If A is null, return true + + + + EL:SPEC:25.2 + If A is an emtpy String, return true. + + + + EL:SPEC:25.3 + If A is an empty array, then return true. + + + + EL:SPEC:25.4 + If A is an emtpy Map, then return true. + + + + EL:SPEC:25.5 + If A is an empty Collection, then return true. + + + + EL:SPEC:25.6 + Otherwise return false + + + + + + EL:SPEC:26 + Conditional Operator - A ? B : C + + + + EL:SPEC:26.1 + Evaluate B or C, depending on the result of the + evaluation of + A. + Coerce A to Boolean: + + + + + EL:SPEC:26.1.1 + If A is true, evaluate and return B + + + + EL:SPEC:26.1.2 + If A is false, evaluate and return C + + + + + + + + EL:SPEC:48 + Assignment Operator - A = B + + + + EL:SPEC:48.1 + Assign the value of B to A. A must be a lvalue, + otherwise, a + PropertyNotWritableException will be thrown. + + + + + EL:SPEC:48.1.1 + Evluate expr-a, up to the last property reolution, + to + (base-a, prop-a) + + + + EL:SPEC:48.1.2 + Evaluate expr-b, to value-b + + + + EL:SPEC:48.1.3 + Invoke ELResolver.setValue(base-a, prop-a, value-b) + + + + EL:SPEC:48.1.4 + Return value-b + + + + + + + + EL:SPEC:49 + Semicolon Operator - A ; B + + + + EL:SPEC:49.1 + To evaluate A;B, A is first evaluated, and its value + is + discarded. B is then evaluated and its value is returned. + + + + + + EL:SPEC:27 + Parentheses can be used to change precedence + + + + EL:SPEC:28 + Operator precedence (highest to lowest) - [] . then (), + then + -(unary) not ! empty, then * / div % mod, then + - (binary), + then < > + <= >= lt gt le ge, then == != eq ne, then && + and, then || or, then + ? : then -> then = then ; + + + + EL:SPEC:29 + Qualified functions with a namespace prefix have + precedence over + the operators. [FunctionPrecedenceOverOperators] + + + + EL:SPEC:30 + The following words are reserved for the language and + must not be + used as identifiers. + and eq gt true instanceof + or ne le + false empty + not lt ge + null div mod + + + + + EL:SPEC:31 + EL functions are mapped, resolved and bound at parse + time. + [ELFunctionsBinding] + + + + EL:SPEC:32 + It is the responsibility of the FunctionMapper class to + provide + the mapping of namespace-qualified functions to static + methods of specific + classes when expressions are created. + [FunctionMapperMapping] + + + + EL:SPEC:33 + If no FunctionMapper is provided (by passing in null), + functions + are disabled. [FunctionMapperNull] + + + + EL:SPEC:34 + EL variables are mapped, resolved and bound at parse + time. + [ELVariablesBinding] + + + + EL:SPEC:35 + It is the responsibility of the VariableMapper class to + provide + the mapping of EL variables to ValueExpressions when + expressions are created. + [VariableMapperMapping] + + + + EL:SPEC:36 + If no VariableMapper is provided to a ValueExpression, + variable + mapping is disabled. [VariableMapperNull] + + + + EL:SPEC:50 + Lambda Expressions + + + + EL:SPEC:50.1 + x->x+1 + + + + EL:SPEC:50.2 + (x,y)->x+y + + + + EL:SPEC:50.3 + ((x,y)->x+y)(3,4) evaluates to 7. + + + + EL:SPEC:50.4 + v = (x,y)->x+y + + + + EL:SPEC:50.5 + v(3,4) evaluates to 7 + + + + EL:SPEC:50.6 + fact = n -> n==0? 1: n*fact(n-1); fact(5) evaluates to + 120 + + + + EL:SPEC:50.7 + It can also be passed as an argument to a method, and + be + invoked in the method, by invoking + jakarta.el.LambdaExpression.invoke(), such + as + employees.where(e->e.firstName == 'Larry') + + + + EL:SPEC:50.8 + A Lambda expression can be nested within another + Lambda + expression, like + customers.select(c->[c.name, + c.orders.sum(o->o.total)]) + + + + + + EL:SPEC:37 + To coerce a value X to type Y + + + + EL:SPEC:37.1 + If X is of a primitive type, Let X' be the equivalent + 'boxed + form' of X, otherwise, Let X' be the same as X. + + + + EL:SPEC:37.2 + If Y is of a primitive type, Let Y' be the equivalent + 'boxed + form' of Y. Otherwise, let Y' be the same as Y. + + + + EL:SPEC:37.3 + Apply the rules in Sections 1.18.2-1.18.7 for coercing + X' to Y' + + + + EL:SPEC:37.4 + If Y is a primitive type, then the result is found by + 'unboxing' the result of the coercion. If the result of the + coercion is + null, then error. + + + + EL:SPEC:37.5 + If Y is not a primitive type, then the result is the + result of + the coercion. + + + + + + EL:SPEC:38 + Coerce A to String + + + + EL:SPEC:38.1 + If A is a String: return A + + + + EL:SPEC:38.2 + If A is null, return an empty String (""). + + + + EL:SPEC:38.3 + If A is Enum, return A.name() + + + + EL:SPEC:38.4 + If A.toString() throws exception, error. + + + + EL:SPEC:38.5 + Otherwise return A.toString() + + + + + + EL:SPEC:39 + Coerce A to Number type N + + + + EL:SPEC:39.1 + If A is null or "", return 0 + + + + EL:SPEC:39.2 + If A is Character, convert to short, apply numeric + rules below. + + + + EL:SPEC:39.3 + If A is a Boolean, then error. + + + + EL:SPEC:39.4 + If A is Number type N, return A + + + + EL:SPEC:39.5 + If A is a Number, coerce quietly to type N using the + following + algorithm: + + + + EL:SPEC:39.5.1 + If N is BigInteger: + + + + EL:SPEC:39.5.1.1 + If A is a BigDecimal, return A.toBigInteger() + + + + EL:SPEC:39.5.1.2 + Otherwise, return + BigInteger.valueOf(A.longValue()) + + + + + + EL:SPEC:39.5.2 + If N is BigDecimal + + + + EL:SPEC:39.5.2.1 + If A is a BigInteger, return new BigDecimal(A) + + + + EL:SPEC:39.5.2.2 + Otherwise, return new BigDecimal(A.doubleValue()) + + + + + + EL:SPEC:39.5.3 + If N is Byte, return new Byte(A.byteValue()) + + + + EL:SPEC:39.5.4 + If N is Short, return new Short(A.shortValue()) + + + + EL:SPEC:39.5.5 + If N is Integer, return new Integer(A.intValue()) + + + + EL:SPEC:39.5.6 + If N is Long, return new Long(A.longValue()) + + + + EL:SPEC:39.5.7 + If N is Float, return new Float(A.floatValue()) + + + + EL:SPEC:39.5.8 + If N is Double, return new Double(A.doubleValue()) + + + + EL:SPEC:39.5.9 + Otherwise, error. + + + + + + EL:SPEC:39.6 + If A is String, then: + + + + EL:SPEC:39.6.1 + If N is BigDecimal then: + + + + EL:SPEC:39.6.1.1 + If new BigDecimal(A) throws an exception then + error. + + + + EL:SPEC:39.6.1.2 + Otherwise, return new BigDecimal(A). + + + + + + + + EL:SPEC:39.7 + If N is BigInteger then + + + + EL:SPEC:39.7.1 + If new BigInteger(A) throws an exception then error. + + + + EL:SPEC:39.7.2 + Otherwise, return new BigInteger(A). + + + + EL:SPEC:39.7.3 + If N.valueOf(A) throws an exception, then error. + + + + EL:SPEC:39.7.4 + Otherwise, return N.valueOf(A). + + + + + + EL:SPEC:39.8 + Otherwise error. + + + + + + EL:SPEC:40 + Coerce A to Character + + + + EL:SPEC:40.1 + If A is null or "". return (char) 0 + + + + EL:SPEC:40.2 + If A is Character, then return A + + + + EL:SPEC:40.3 + If A is Boolean, error. + + + + EL:SPEC:40.4 + If A is Number, coerce quietly to type Short, then + return a + Character whose numeric value is equivalent to that + Short. + + + + EL:SPEC:40.5 + If A is String, return A.charAt(0) + + + + EL:SPEC:40.6 + All other types will result in an error. + + + + + + EL:SPEC:41 + Coerce A to Boolean + + + + EL:SPEC:41.1 + If A is null or "", return false + + + + EL:SPEC:41.2 + Otherwise if A is Boolean, return A + + + + EL:SPEC:41.3 + Otherwise if A is String, and Boolean.valueOf(A) does + not throw + an exception, return it. + + + + EL:SPEC:41.4 + Otherwise error. + + + + + + EL:SPEC:42 + Coerce A to an Enum Type T + + + + EL:SPEC:42.1 + If A is null, return null + + + + EL:SPEC:42.2 + If A is assignable to T, coerce quietly + + + + EL:SPEC:42.3 + If A is "", return null. + + + + EL:SPEC:42.4 + If A is a String call Enum.valueOf(T.getClass(), A) + and return + the result. + + + + + + EL:SPEC:81 + Coerce A to array of type T + + + + EL:SPEC:81.1 + If A is null, return null + + + + EL:SPEC:81.2 + If A is assignable to an array of type T, coerce + quietly + + + + EL:SPEC:81.3 + If A is an array, return a copy of the array where + each element has been coerced to type T using these + rules + + + + EL:SPEC:81.4 + If A is an array but at least one element of the + array cannot be coerced to type T, error + + + + EL:SPEC:81.5 + If A is not an array, error + + + + + + EL:SPEC:79 + Coerce A to functional interface method invocation + + + + EL:SPEC:79.1 + If A is LamdaEXpression and parameters are an exact match, coerce to functional interface invocation. + + + + EL:SPEC:79.2 + If A is not LamdaEXpression, follow 1.23.9 and throw an exception. + + + + EL:SPEC:79.3 + If A is LamdaEXpression and parameters match if coerced, coerce to functional interface invocation. + + + + + + EL:SPEC:43 + Coerce A to any other type T + + + + EL:SPEC:43.1 + If A is null, return null. + + + + EL:SPEC:43.2 + If A is assignable to T, coerce quietly. + + + + EL:SPEC:43.3 + If A is String, and T has no Property Editor, then if + A is "" + return null, otherwise error. + + + + EL:SPEC:43.4 + If A is String, and T's PropertyEditor throws + exception, then + if A is "" return null, otherwise error. + + + + EL:SPEC:43.5 + Otherwise, apply T's PropertyEditor + + + + EL:SPEC:43.6 + Otherwise, error + + + + + + + + EL:SPEC:44 + All Expressions must be Serializable + + + + EL:SPEC:51 + + Construct an instance of java.lang.util.Set<Object>. + + + + + EL:SPEC:51.1 + SetData := '{' DataList '}' + + + + EL:SPEC:51.2 + DataList := (expression (',' expression)* )? + + + + + + EL:SPEC:52 + + Construct an instance of java.lang.util.List<Object>. + + + + + EL:SPEC:52.1 + ListData := '{' DataList '}' + + + + EL:SPEC:52.2 + DataList := (expression (',' expression)* )? + + + + + + EL:SPEC:53 + + Construct an instance of java.lang.util.Map<Object>. + + + + + EL:SPEC:53.1 + Map := '{' MapEntries '}' + + + + EL:SPEC:53.2 + MapEntries := (MapEntry (',' MapEntry)* )? + + + + EL:SPEC:53.3 + MapEntry := expression ':' expression + + + + + + EL:SPEC:54 + Some methods have optional parameters. The + declarations + of the + methods with all possible combinations of the + parameters are + listed in the + syntax sections, as if they are + overloaded. A null + parameter is not allowed, + and will result in + NullPointerException. + + + + EL:SPEC:55 + + An instant of Stream is obtained by calling the method + stream() + of a collection. The methods in this class support the + stream + operations and + are described in Section 2.3.5 to Section + 2.3.24. + + + + + EL:SPEC:56 + + The following are methods in an Optional<T> + + + + EL:SPEC:56.1 + + T get() Returns the value held by the Optional, or + throws an + ELException if the Optional is empty. + + + + + EL:SPEC:56.2 + + T orElse(T other) Returns the value held by the + Optional, or + the value other if the Optional is empty. + + + + + EL:SPEC:56.3 + + T orElseGet((()->T) other) Returns the value held by the + Optional, or the value returned by the lambda expression + other if + the + Optional is empty. + + + + + + + EL:SPEC:57 + Some operations takes functions (lambda expressions) as + parameters. Again, we used the notion (arg1Type, + ...)->returnType + to + describe the argument types and the + return type of a function. + + + + EL:SPEC:57.1 + predicate S -> boolean + This function takes the input + argument, usually the element of the + source stream, and determines + if it + satisfies some criteria + + + + EL:SPEC:57.2 + booleanSupplier () -> boolean + This function takes + noarguments, and returns a boolean + value. + + + + EL:SPEC:57.3 + mapper S -> R + This function maps, or transforms the + input + argument, usually the + element of the source stream, to the + result. + + + + EL:SPEC:57.4 + + comparator + (S, S) -> int + This function compares two + arguments, usually the elements of the + source stream, and returns a + negative integer, zero, or a positive + integer, if the first + argument is + respectively less than, equal + to, or greater than the + second argument. + + + + + EL:SPEC:57.5 + + consumer S -> void + This function processes the input + argument, usually the element of the + source stream, and returns + nothing. + + + + + EL:SPEC:57.6 + + binaryOperator (S, S) -> S + This function applies a + binary + operation to the input + arguments, and returns the result. + The first argument + is usually an internal + accumulator, and the + second argument is usually the + element of the source stream. The + arguments and the result are of the same + type. + + + + + + + EL:SPEC:58 + + The filter method + produces a stream containing the source + stream + elements for which + the predicate function return true. The + argument + of + predicate + function represents the element to test. + + + + + EL:SPEC:58.1 + + Stream<S> + + + + EL:SPEC:58.2 + + Stream<S>.filter((S->boolean) predicate) + + + + + + + EL:SPEC:59 + + The map method produces a stream by applying the mapper + function + on the elements of the source stream. The argument of + mapper function + represents the element to process. + + + + + EL:SPEC:59.1 + + Stream<R> Stream<S>.map((S->R)mapper) + + + + + + + EL:SPEC:60 + + The flatMap method produces a stream by mapping each of the + source elements to another stream and then concatenating the mapped streams. + If the mapper function does not return a Stream, the behavior is undefined. + source elements to zero or more elements. + + + + + EL:SPEC:60.1 + + Stream<R> + Stream<S>.flatMap((S->Stream<R>) mapper) + + + + + + + EL:SPEC:61 + + The distinct method produces a stream containing the + elements of + the source stream that are distinct, according to + Object.equals. + + + + + EL:SPEC:61.1 + + Stream<S> Stream<S>.distinct() + + + + + + + EL:SPEC:62 + + The sorted method produces a stream containing the + elements of + the source + stream in sorted order. If no comparator is + specified, the elements + are sorted in natural order, and a + ELException is thrown if the + elements do + not implement + java.lang.Comparable. If a comparator is + specified, the elements + are + sorted with the provided comparator. + + + + + EL:SPEC:62.1 + + Stream<S> Stream<S>.sorted() + + + + + EL:SPEC:62.2 + + Stream<S> Stream<S>.sorted((p,q)->int) + comparator) + + + + + + + EL:SPEC:63 + + The forEach method invokes the consumer function for each + element in the source + stream. This method always returns null. + + + + + EL:SPEC:63.1 + + Object stream<S>.forEach(((S)->void)consumer) + + + + + + + EL:SPEC:64 + + The peek method produces a stream containing the elements of the + source stream, and + invokes the consumer function for each element in the + stream. + + + + + EL:SPEC:64.1 + + Stream<S> Stream<S>.peek(((S)->void)consumer) + + + + + + + EL:SPEC:65 + + The iterator method returns an iterator for the source stream, + suitable for use in Java codes. + + + + + EL:SPEC:65.1 + + Iterator<S> Stream<S>.iterator() + + + + + + + EL:SPEC:66 + + The limit method produces a stream containing the first count + number of elements of the source stream. + + + + + EL:SPEC:66.1 + + Stream<S> Stream<S>.limit(long count) + + + + + + + EL:SPEC:67 + + The substream method produces a stream containing the source + elements, skipping the first start elements, and including the rest of the + elements in the stream if end is not specified, or the next (end - start) + elements in the stream if end is specified. + + + + + EL:SPEC:67.1 + + Stream<S> Stream<S>.substream(long start) + + + + + EL:SPEC:67.2 + + Stream<S> Stream<S>.substream(long start, + long end) + + + + + + + EL:SPEC:68 + + the toArray method returns an array containing the elements of + the source stream. + + + + + EL:SPEC:68.1 + + S[] Stream<S>.toArray() + + + + + + + EL:SPEC:69 + + The toList + + + + + EL:SPEC:69.1 + + S[] Stream<S>.toList() + + + + + + + EL:SPEC:70 + + The reduce method with a seed value starts by assigning the seed + value to an internal accumulator. Then for each of the elements in the + source stream, the next accumulator value is computed, by invoking the + binaryOperator function, with the current accumulator value as the first + argument and the current element as the second argument. The final + accumulator value is returned + + + + + EL:SPEC:70.1 + + Optional<S> Stream<S>.reduce(((S,S)->S) + binaryOperator) + + + + + EL:SPEC:70.2 + + S Stream<S>.reduce(S seed, ((S,S)->S) + binaryOperator)) + + + + + + + EL:SPEC:71 + + The max method computes the maximum of the elelments in the + source stream. If the comparator function is specified, it is used for + comparisons. If no comparator function is specified, the elements themselves + are compared, and must implement Comparable, otherwise an ELException is + thrown. + + + + + EL:SPEC:71.1 + + Optional Stream<S>.max() + + + + + EL:SPEC:71.2 + + Optional Stream<S>.max(((p,q)->int) comparator) + + + + + + + EL:SPEC:72 + + The min method computes the minimum of the elelments in the + source stream. If the comparator function is specified, it is used for + comparisons. If no comparator function is specified, the elements themselves + are compared, and must implement Comparable, otherwise an ELException is + thrown. + + + + + EL:SPEC:72.1 + + Optional Stream<S>.min() + + + + + EL:SPEC:72.2 + + Optional Stream<S>.min(((p,q)->int) comparator) + + + + + + + EL:SPEC:73 + + The average method computes the average of all elements in the + source stream by first computes the sum of the elements and then divides the + sum by the number of elements. The elements are coerced to Number types + according to Section 1.23.3 during the computation. + This method returns zero + for an empty stream. + + + + + EL:SPEC:73.1 + + Optional Stream<S>.average() + + + + + + + EL:SPEC:74 + + The sum method computes the sum of all elements in the source + stream. The elements are coerced to Number types according to Section 1.23.3 + during the computation. + This method returns zero for an empty stream. + + + + + EL:SPEC:74.1 + + Number Stream<S>.sum() + + + + + + + EL:SPEC:79 + + This method returns the count of elements in the source stream. + + + + + EL:SPEC:79.1 + + Long Stream<S>.count() + + + + + + + EL:SPEC:75 + + The anyMatch method returns an Optional of true if any element + in the source stream satisfies the test given by the predicate. It returns + an empty Optional if the stream is empty. + + + + + EL:SPEC:75.1 + + Optional<boolean> + Stream<S>.anyMatch((S->boolean) predicate) + + + + + + + EL:SPEC:76 + + The allMatch method returns an Optional of true if all elements + in the source stream satisfy the test given by the predicate. It returns an + empty Optional if the stream is empty. + + + + + EL:SPEC:76.1 + + Optional<boolean> + Stream<S>.allMatch((S->boolean) predicate) + + + + + + + EL:SPEC:77 + + The nonematch method returns an Optional of true if none of the + elements in the source stream satisfies the test given by the predicate. It + returns an empty Optional if the stream is empty. + + + + + EL:SPEC:77.1 + + Optional<boolean> + Stream<S>.noneMatch((S->boolean) predicate) + + + + + + + EL:SPEC:78 + + The findFirst method returns an Optional containing the first + element in the stream, or an empty Optional if the stream is empty. + + + + + EL:SPEC:78.1 + + Optional<S> Stream<S>.findFirst() + + + + + + + diff --git a/el/docs/index.html b/el/docs/index.html new file mode 100755 index 0000000000..42531eedd4 --- /dev/null +++ b/el/docs/index.html @@ -0,0 +1,71 @@ + + + + + + Welcome to the Jakarta Expression Language TCK, Version 6.0 + + + + +
+

Welcome to the Jakarta Expression Language TCK, Version 6.0
+Your Starting Point

+
+
+

Guide to Expression Language TCK 6.0 Documentation

+ +

The Expression Language TCK 6.0 documentation includes the following:

+ +
    +
  • +

    The Expression Language TCK Release Notes provide last-minute information about the EL TCK, Version 6.0. The Release Notes are located in the TCK product bundle.

    +
  • +
  • +

    The Jakarta Expression Language 6.0 Technology Compatibility Kit User's Guide provides the information you need to install, configure, and run the TCK. The User's Guide also contains the rules you need to pass for certification.

    +
  • +
  • +

    The Javadoc Assertion List lists all the javadoc test assertions for the Expression Language TCK.

    +
  • +
  • +

    The Specification Assertion List lists all the specification test assertions for the Expression Language TCK.

    +
  • +
+ +
+

+

+Copyright (c) 2007, 2024 Oracle and/or its affiliates and others. All rights reserved. +
+

+ + diff --git a/el/docs/userguide/README.md b/el/docs/userguide/README.md new file mode 100644 index 0000000000..a3ec2b697b --- /dev/null +++ b/el/docs/userguide/README.md @@ -0,0 +1,77 @@ +# A JBake project template + +## About JBake + +JBake is a static site generator, it's inspired from jekyll and written +in java. The basic idea is to have templates for the structure of the +page, and the body generated from asciidoc content. + +## Pre requisites + +- Maven +- JDK8+ + +Deploying to Github will require password less authentication. + +This is done by exporting your SSH public key into your Github account. + +## Build the site locally + +The site is generated under target/staging. + +Open file:///PATH_TO_PROJECT_DIR/target/staging in a browser to view the site. + +``` +mvn generate-resources +``` + +Or you can invoke the JBake plugin directly. + +``` +mvn jbake:build +``` + +### Rebuild the site on changes + +``` +mvn jbake:watch +``` + +If you keep this command running, changes to the sources will be +detected and the site will be rendered incrementally. + +This is convenient when writing content. + +### Serve the site locally + +``` +mvn jbake:serve +``` + +If a webserver is required (e.g. absolute path are used), this command +will start a webserver (jetty) at http://localhost:8820. It will also +watch for changes and rebuild incrementally. + +## Deploy the site to Github Pages + +``` +mvn deploy +``` + +## Produce a zip file for download + +To produce a zip file containing the generated html files, use: + +``` +mvn package +``` + +When making a release on GitHub, this zip file should be added to the release. + +## Links + +- [JBake maven plugin documentation](https://github.com/Blazebit/jbake-maven-plugin) +- [JBake documentation](http://jbake.org/docs/2.5.1) +- [Freemarker documentation](http://freemarker.org/docs) +- [AsciiDoc User Guide](http://asciidoc.org/userguide.html) +- [Asciidoctor quick reference](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference) diff --git a/el/docs/userguide/pom.xml b/el/docs/userguide/pom.xml new file mode 100644 index 0000000000..83d9694dd2 --- /dev/null +++ b/el/docs/userguide/pom.xml @@ -0,0 +1,259 @@ + + + + + 4.0.0 + + org.eclipse.ee4j + project + 1.0.5 + + org.glassfish + tck_el + pom + 5.0.0 + Eclipse Foundation Technology Compatibility Kit User's Guide for Jakarta Expression Language for Jakarta EE, Release 5.0 + + + UTF-8 + ${project.build.directory}/staging + true + 2.4.2 + 2.1.0 + 2.1.0 + 1.5.3 + 0.3.3 + 2.3.30 + + + Expression-Language-TCK-Users-Guide.pdf + true + + + + + scm:git:git@github.com:eclipse-ee4j/jakartaee-tck.git + + + + + package + + + org.apache.maven.plugins + maven-clean-plugin + + + + src/main/jbake/content + + toc.adoc + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-versions + + enforce + + + + + [1.8.0,) + You need JDK8 or newer + + + + + + + + org.glassfish.doc + glassfish-doc-maven-plugin + + + generate-toc + generate-resources + + toc + + + + [0-9]+\s.*,Preface.*,Part\s.* + + + + + generate-book + generate-resources + + book + + + + + + org.jbake + jbake-maven-plugin + + ${site.output.dir} + + ${status} + + + + + build-site + generate-resources + + generate + + + + + + org.asciidoctor + asciidoctor-maven-plugin + + ${project.build.directory}/book + book.adoc + + ${project.build.directory}/staging/ + pdf + ${doc.pdf} + + ${project.basedir}/src/theme + jakartaee + book + ${status} + + + font + + + font + true + + - + true + true + + + + + generate-pdf-doc + generate-resources + + process-asciidoc + + + + + + org.apache.maven.plugins + maven-scm-publish-plugin + + + deploy-site + deploy + + publish-scm + + + gh-pages + false + Update site + + + + + + + + + + org.apache.maven.plugins + maven-clean-plugin + 3.1.0 + + + org.glassfish.doc + glassfish-doc-maven-plugin + 1.3 + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.0.0-M3 + + + org.apache.maven.plugins + maven-assembly-plugin + 3.3.0 + + + org.apache.maven.plugins + maven-scm-publish-plugin + 3.1.0 + + + org.jbake + jbake-maven-plugin + ${jbake.maven.plugin.version} + + + org.asciidoctor + asciidoctorj + ${asciidoctorj.version} + + + org.asciidoctor + asciidoctorj-diagram + ${asciidoctorj.diagram.version} + + + org.freemarker + freemarker + ${freemarker.version} + + + + + org.asciidoctor + asciidoctor-maven-plugin + ${asciidoctorj.maven.plugin.version} + + + org.asciidoctor + asciidoctorj-pdf + ${asciidoctorj.pdf.version} + + + + + + + diff --git a/el/docs/userguide/src/main/jbake/assets/README.md b/el/docs/userguide/src/main/jbake/assets/README.md new file mode 100644 index 0000000000..f8f962c0ab --- /dev/null +++ b/el/docs/userguide/src/main/jbake/assets/README.md @@ -0,0 +1,4 @@ +# About + +The {{site.title}} project contains the [AsciiDoc](http://asciidoc.org/) +source code for the ... diff --git a/el/docs/userguide/src/main/jbake/assets/_config.yml b/el/docs/userguide/src/main/jbake/assets/_config.yml new file mode 100644 index 0000000000..0b6dd986f3 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/assets/_config.yml @@ -0,0 +1,14 @@ +remote_theme: jakartaee/jekyll-theme-jakarta-ee + +title: [tck_uml_v3_0] +description: [Oracle Technology Compatibility Kit User's Guide for Expression Language 6.0 for Technology Licensees, Release 6.0] + +# sidebar links url +links: + source: https://github.com/jakartaee/platform-tck + download: https://download.eclipse.org/jakartaee/expression-language/ + #mailinglist: https://javaee.groups.io/g/tck_uml_v3_0 + #javadocs: + docs: https://jakarta.ee/specifications/expression-language/6.0/apidocs + #faq: + diff --git a/el/docs/userguide/src/main/jbake/assets/css/style.css b/el/docs/userguide/src/main/jbake/assets/css/style.css new file mode 100644 index 0000000000..182f7559b6 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/assets/css/style.css @@ -0,0 +1,313 @@ +/* CSS */ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */ +html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } + +/* HTML5 display definitions ========================================================================== */ +/** Correct `block` display not defined for any HTML5 element in IE 8/9. Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. Correct `block` display not defined for `main` in IE 11. */ +article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; } + +/** 1. Correct `inline-block` display not defined in IE 8/9. 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */ +audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ } + +/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */ +audio:not([controls]) { display: none; height: 0; } + +/** Address `[hidden]` styling not present in IE 8/9/10. Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */ +[hidden], template { display: none; } + +/* Links ========================================================================== */ +/** Remove the gray background color from active links in IE 10. */ +a { background-color: transparent; } + +/** Improve readability when focused and also mouse hovered in all browsers. */ +a:active, a:hover { outline: 0; } + +/* Text-level semantics ========================================================================== */ +/** Address styling not present in IE 8/9/10/11, Safari, and Chrome. */ +abbr[title] { border-bottom: 1px dotted; } + +/** Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */ +b, strong { font-weight: bold; } + +/** Address styling not present in Safari and Chrome. */ +dfn { font-style: italic; } + +/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari, and Chrome. */ +h1 { font-size: 2em; margin: 0.67em 0; } + +/** Address styling not present in IE 8/9. */ +mark { background: #ff0; color: #000; } + +/** Address inconsistent and variable font size in all browsers. */ +small { font-size: 80%; } + +/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */ +sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } + +sup { top: -0.5em; } + +sub { bottom: -0.25em; } + +/* Embedded content ========================================================================== */ +/** Remove border when inside `a` element in IE 8/9/10. */ +img { border: 0; } + +/** Correct overflow not hidden in IE 9/10/11. */ +svg:not(:root) { overflow: hidden; } + +/* Grouping content ========================================================================== */ +/** Address margin not present in IE 8/9 and Safari. */ +figure { margin: 1em 40px; } + +/** Address differences between Firefox and other browsers. */ +hr { box-sizing: content-box; height: 0; } + +/** Contain overflow in all browsers. */ +pre { overflow: auto; } + +/** Address odd `em`-unit font size rendering in all browsers. */ +code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; } + +/* Forms ========================================================================== */ +/** Known limitation: by default, Chrome and Safari on OS X allow very limited styling of `select`, unless a `border` property is set. */ +/** 1. Correct color not being inherited. Known issue: affects color of disabled elements. 2. Correct font properties not being inherited. 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */ +button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ } + +/** Address `overflow` set to `hidden` in IE 8/9/10/11. */ +button { overflow: visible; } + +/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. Correct `select` style inheritance in Firefox. */ +button, select { text-transform: none; } + +/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */ +button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ } + +/** Re-set default cursor for disabled elements. */ +button[disabled], html input[disabled] { cursor: default; } + +/** Remove inner padding and border in Firefox 4+. */ +button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } + +/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */ +input { line-height: normal; } + +/** It's recommended that you don't attempt to style these elements. Firefox's implementation doesn't respect box-sizing, padding, or width. 1. Address box sizing set to `content-box` in IE 8/9/10. 2. Remove excess padding in IE 8/9/10. */ +input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } + +/** Fix the cursor style for Chrome's increment/decrement buttons. For certain `font-size` values of the `input`, it causes the cursor style of the decrement button to change from `default` to `text`. */ +input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; } + +/** 1. Address `appearance` set to `searchfield` in Safari and Chrome. 2. Address `box-sizing` set to `border-box` in Safari and Chrome (include `-moz` to future-proof). */ +input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; } + +/** Remove inner padding and search cancel button in Safari and Chrome on OS X. Safari (but not Chrome) clips the cancel button when the search input has padding (and `textfield` appearance). */ +input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +/** Define consistent border, margin, and padding. */ +fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } + +/** 1. Correct `color` not being inherited in IE 8/9/10/11. 2. Remove padding so people aren't caught out if they zero out fieldsets. */ +legend { border: 0; /* 1 */ padding: 0; /* 2 */ } + +/** Remove default vertical scrollbar in IE 8/9/10/11. */ +textarea { overflow: auto; } + +/** Don't inherit the `font-weight` (applied by a rule above). NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */ +optgroup { font-weight: bold; } + +/* Tables ========================================================================== */ +/** Remove most spacing between table cells. */ +table { border-collapse: collapse; border-spacing: 0; } + +td, th { padding: 0; } + +/* LAYOUT STYLES */ + +p { margin-top: 0; } + +code, pre { margin-bottom: 30px; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 13px; color: #222; } + +code { padding: 0 3px; background-color: #f2f8fc; border: solid 1px #dbe7f3; } + +pre { padding: 20px; overflow: auto; text-shadow: none; background: #fff; border: solid 1px #f2f2f2; } + +pre code { padding: 0; color: #2879d0; background-color: #fff; border: none; } + +ul, ol, dl { margin-bottom: 20px; } + +/* COMMON STYLES */ + +td.halign-right { text-align: right; } + +td.halign-center { text-align: center; } + +form { padding: 20px; background: #f2f2f2; } + +h2 { + font-size: 2em; + line-height: 1.2em; + font-weight: 200; + letter-spacing: 0; +} + +h3 { + font-size: 1.4em; + line-height: 1.2em; + font-weight: normal; + letter-spacing: 0; +} + +.sect1 { + margin-left: 4%; + margin-right: 4%; + font: 13px/20px Arial, Helvetica, sans-serif +} + +a:link { + text-decoration: none; + color: #09569d; +} + +#preamble hr{ + margin-left: 0%; + margin-right: 0%; +} + +#preamble .sectionbody table { + font-weight: 200; + margin-left: 4%; + margin-right: 4%; +} + +hr { + margin-bottom: 12px; +} + +table.tableblock.frame-all.grid-all.spread { + font-size: 12px; +} + +code { + font-size:.9em; + border: 1px solid #eaeaea; + background-color: #f6f6f6; + border-radius: 3px; + padding: 1px; + padding-left:2px; + padding-right:2px; +} + +pre.prettyprint.highlight { + border: 1px solid #eaeaea; + background-color: #f6f6f6; + border-radius: 4px; + padding: 8px; + padding-top:4px; + padding-bottom:4px; +} + +.language-oac_no_warn { + font-size:.9em; + color:#222; + background-color: transparent; +} + +#doc-title { + margin-left: 4%; +} + +#top-nav { + margin-left: 4%; + font-size: 12px; +} + +#bottom-nav { + margin-left: 4%; + font-size: 12px; +} + +.vector-font { + color:grey; + font-size: 20px; +} + +#copyright { + padding-top: 10px; + padding-bottom: 4px; + display: table; + margin:0 auto; + color: grey; + font-size: 12px; + vertical-align: middle; +} + +.beta {color: #FF0000} + +/* GENERAL ELEMENT TYPE STYLES */ + +/* #Media Queries +================================================== */ +/* Smaller than standard 960 (devices and browsers) */ +/* Tablet Portrait size to standard 960 (devices and browsers) */ +@media only screen and (min-width: 768px) and (max-width: 959px) { .inner { width: 740px; } + header h1, header h2 { width: 340px; } + header h1 { font-size: 60px; } + header h2 { font-size: 30px; } +} +/* All Mobile Sizes (devices and browser) */ +@media only screen and (max-width: 767px) { .inner { width: 93%; } + header { padding: 20px 0; } + header .inner { position: relative; } + header h1, header h2 { width: 100%; } + header h1 { font-size: 48px; } + header h2 { font-size: 24px; } + header a.button { position: relative; display: inline-block; width: auto; height: auto; padding: 5px 10px; margin-top: 15px; font-size: 13px; line-height: 1; color: #2879d0; text-align: center; background-color: #9ddcff; background-image: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; } + header a.button small { display: inline; font-size: 13px; } +} +/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */ +/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */ + +header h1 { padding-top: 14px; font-size: 2em; font-weight: 200; line-height: 1.4; color: #FFFFFF; letter-spacing: 0px; border-bottom: 0px; } + +header h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 0; font-weight: 200; line-height: .8; color: #ec7D11; letter-spacing: 0; } + +//header a.button { background: transparent url(../images/logo.png) 0 0 no-repeat; padding-left: 32px; } + +header a:hover { text-decoration: none; } + +/* Admonition (Note) block */ +.admonitionblock > table { + border: 0; + background: none; + width: 100%; + table-layout: auto; + margin-bottom: 10.5px; +} +.admonitionblock > table td.icon { + text-align: center; + width: 60px; +} +.admonitionblock > table td.icon img { + max-width: none; +} +.admonitionblock > table td.icon .title { + text-transform: uppercase; +} +.admonitionblock > table td.content { + padding-left: 1em; + padding-right: 1em; + border-left: 3px solid #ddd; +} +.admonitionblock > table td.content > :last-child > :last-child { + margin-bottom: 0; +} +.admonitionblock td.icon [class^="fa icon-"]:before { + font-size: 2.5em; + text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); + cursor: default; +} +.admonitionblock td.icon .icon-note:before { + content: "\f05a"; + color: #5bc0de; +} diff --git a/el/docs/userguide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png b/el/docs/userguide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png new file mode 100644 index 0000000000..ee830aeb93 Binary files /dev/null and b/el/docs/userguide/src/main/jbake/assets/img/eclipse_foundation_logo_tiny.png differ diff --git a/el/docs/userguide/src/main/jbake/content/README b/el/docs/userguide/src/main/jbake/content/README new file mode 100644 index 0000000000..05fa2c27fd --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/README @@ -0,0 +1,77 @@ +The file attributes.conf defines several attributes (variables) that +need to be customized for each technology. + +The *.adoc files should not be modified. + +The following "include" files should be customized as necessary +for the specific technology: + +- rules.inc + + Additional compatibility rules needed by some technologies. + The rules in rules.adoc should NOT be changed. + +- defns.inc + + Additional definitions needed by additional compatibility + rules in rules.inc. + +- config.inc + + Detailed instructions for configuring the TCK, included in + Chapter 4. Unfortunately, these are sections 4.1 - 4.3, + so even if the TCK doesn't require 3 sections you need to + make up something, or else change the sections to "N/A". + +- packages.inc + + A simple list of Jakarta EE package names for the technology. + +- tck-packages.inc + + A list of additional software packages included in the TCK. + +- req-software.inc + + A list of software required in addition to the TCK and CI. + +- install-server.inc + + Steps to install the Jakarta EE CI, if needed. + For standalone technologies, no server may be required, + and this file can be empty. + This is used in install.adoc in section 3.2. + +- install-server-vi.inc + + Steps to install a Vendor's web server, if needed. + For standalone technologies, no web server may be required, + and this file can be empty. + This is used in install.adoc in section 3.2. + +- using-examples.inc + + Command line examples showing how to run the TCK. + +- using.inc + + Optional additional instructions for running the TCK. + +- debug-tips.inc + + Technology-specific troubleshooting tips for Chapter 6. + If this isn't needed, it can be an empty file, but toc.adoc + will need to be fixed. + +- rebuild.inc + + Special instructions for rebuilding the WAR files used by some TCKs. + If needed, customize it appropriately and define the "rebuild" + attribute in attributes.conf. + +- title.inc + Add acronym references as required do distinguish between legacy and + current APIs. + +Note that this template is NOT sufficient for the Jakarta EE platform +or Jakarta EE Web Profile. diff --git a/el/docs/userguide/src/main/jbake/content/attributes.conf b/el/docs/userguide/src/main/jbake/content/attributes.conf new file mode 100644 index 0000000000..524a73b9e5 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/attributes.conf @@ -0,0 +1,35 @@ +:TechnologyFullName: Jakarta Expression Language +:TechnologyShortName: Expression Language +:LegacyAcronym: EL +:TechnologyVersion: 6.0 +:ReleaseDate: January 2024 +:CopyrightDates: 2017, 2024 +:TechnologyRI: Eclipse GlassFish 6.0 +:TechnologyRIURL: https://projects.eclipse.org/projects/ee4j.glassfish +:SpecificationURL: https://jakarta.ee/specifications/expression-language/6.0/ +:TCKInquiryList: mailto:jakartaee-tck-dev@eclipse.org[jakartaee-tck-dev@eclipse.org] +:SpecificationInquiryList: mailto:el-dev@eclipse.org[el-dev@eclipse.org] +:techID: ExpressionLanguage +// Define this attribute (uncomment it) if the TCK includes no API tests. (Rare.) +// :no-api-tests: +// Define this attribute (uncomment it) if the TCK includes end-to-end tests. +// :end-to-end-tests: +// Define this attribute (uncomment it) if subsets of the API are allowed. +// (Common Annotations only) +// :subset-allowed: +// +// The environment variable used to specify the home directory +// for the technology. Used in config.inc. +:TechnologyHomeEnv: EL_HOME +// Java SE version required. +:SEversion: 21 +:MavenVersion: 3.6.3+ +:JakartaEEVersion: 11 +:excludeListFileName: docs/TCK-Exclude-List.txt +:TCKPackageName: jakarta-expression-language-tck-5.0.0.zip +// Directory names used in examples in using.adoc. +:sigTestDirectoryExample: com/sun/ts/tests/signaturetest/el +:singleTestDirectoryExample: com/sun/ts/tests/el/api/client +:subsetTestDirectoryExample: com/sun/ts/tests/el/api +// Define this attribute (uncomment it) if the TCK needs the rebuild appendix. +// :rebuild: diff --git a/el/docs/userguide/src/main/jbake/content/config.adoc b/el/docs/userguide/src/main/jbake/content/config.adoc new file mode 100644 index 0000000000..7f43a03562 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/config.adoc @@ -0,0 +1,47 @@ +type=page +status=published +title=Setup and Configuration +next=using.html +prev=install.html +~~~~~~ +include::attributes.conf[] +Setup and Configuration +======================= + +[[GBFVV]] + + + +[[setup-and-configuration]] +4 Setup and Configuration +------------------------- + + +[NOTE] +==== +The Jakarta EE Specification process provides for any number of compatible implementations. +As additional implementations become available, refer to project or product documentation from +those vendors for specific TCK setup and operational guidance. + +==== + +This chapter describes how to set up the {TechnologyShortName} TCK. +Before proceeding with the instructions in +this chapter, be sure to install all required software, as described in +link:install.html#GBFTP[Chapter 3, "Installation."] + +After completing the instructions in this chapter, proceed to +link:using.html#GBFWO[Chapter 5, "Executing Tests,"] for instructions on +running the {TechnologyShortName} TCK. + +[NOTE] +==== +The {TechnologyShortName} TCK is not depended on any particular build +tool to run the tests. It will be convenient and advisable to create a +Apache Maven project to setup and run the TCK. +This chapter will henceforth use instructions and steps to provide setup +with Apache Maven as a build tool. +==== + +include::config.inc[] + diff --git a/el/docs/userguide/src/main/jbake/content/config.inc b/el/docs/userguide/src/main/jbake/content/config.inc new file mode 100644 index 0000000000..cee2e94d17 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/config.inc @@ -0,0 +1,143 @@ +/////////////////////////////////////////////////////////////////////////////// + + Copyright (c) 2020, 2024 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 + +/////////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////// +NOTE TO WRITERS: +The following sections should be customized for the technology. +This text was originally from the {TechnologyShortName} TCK. Most references +to {TechnologyShortName} have been parameterized to serve as a simple starting +point for customization. There are still many details that will +need to be changed or removed. The major sections 4.1, 4.2, and +4.3 should be preserved. If their titles are changed, the links +at the top of config.adoc will need to be changed as well as well +as toc.adoc. +/////////////////////////////////////////////////////////////////////// + +[[GBFVU]][[configuring-your-environment-to-run-the-tck-against-the-reference-implementation]] + +4.1 Configuring Your Environment to Run the TCK Against a Compatible Implementation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +After configuring your environment as described in this section, +continue with the instructions in link:using.html#GBFWO[Chapter 5, "Executing Tests."] + + +[NOTE] +======================================================================= + +In these instructions, variables in angle brackets need to be expanded +for each platform. For example, `` becomes `$JAVA_HOME` on +Solaris/Linux and `%JAVA_HOME%` on Windows. In addition, the forward +slashes (`/`) used in all of the examples need to be replaced with +backslashes (`\`) for Windows. Finally, be sure to use the appropriate +separator for your operating system when specifying multiple path +entries (`;` on Windows, `:` on UNIX/Linux). + +On Windows, you must escape any backslashes with an extra backslash in +path separators used in any of the following properties, or use forward +slashes as a path separator instead. + +======================================================================= + + +1. Set the following environment variables in your shell environment: + a. `JAVA_HOME` to the directory in which Java SE {SEversion} is installed + b. `M2_HOME` to the directory in which the Apache Maven build tool is installed. + c. `PATH` to include the following directories: `JAVA_HOME/bin`, + and `M2_HOME/bin` +2. Set the following System properties: + a. Set the `webServerHost` property to the name of the host on which + Jakarta EE {JakartaEEVersion} CI is running. + + The default setting is `localhost`. + b. Set the `webServerPort` property to the port number of the host on + which Jakarta EE {JakartaEEVersion} CI is running. + + The default setting is `8080`. + c. Set the `el.classes` property to the directory of Jakarta EE + {JakartaEEVersion} CI with implementation jar and api jar. + d. Set the `porting.ts.url.class.1` property to your porting + implementation class that is used for obtaining URLs. + + The default setting for this property is + `com.sun.ts.lib.implementation.sun.common.SunRIURL`. ++ +3. Set the below jars to the classpath + a. JAR file for the {TechnologyShortName} {TechnologyVersion} API. + + eg. `${webServerHost}/modules/jakarta.el-api.jar`. ++ + b. JUnit 5 jars (5.7.2+) + Maven cordinates : ++ +[source,oac_no_warn] +---- + + org.junit + junit-bom + 5.7.2 + pom + import + +---- ++ + c. sigtest-maven-plugin (1.4) to run the signature tests. + Maven cordinates : ++ +[source,oac_no_warn] +---- + + org.netbeans.tools + sigtest-maven-plugin + 1.4 + +---- ++ + d. {TechnologyRI} CI jars + + For eg, if you are using the {TechnologyRI} CI below jars need to be added to Classpath + ++ +[source,oac_no_warn] +---- +${webServerHost}/modules/expressly.jar: +---- ++ +4. Provide compatible implementation of the porting package interface +provided with the {TechnologyShortName} TCK. + +The porting package interface, `TSURLInterface.java`, obtains URL +strings for web resources in an implementation-specific manner. API +documentation for the `TSURLInterface.java` porting package interface is +available in the {TechnologyShortName} TCK documentation bundle. +5. If the {TechnologyShortName} TCK test applications are published on +a Servlet 5.0-compliant Web container to run the CI, the `servlet_adaptor` +property needs to be set as System property, and CI-specific WAR files +containing the Servlet information need to be created for publishing. + +The CI-specific WAR files should never override any existing files that +come with the TCK. Refer to link:rebuild.html#GCLIZ[Appendix B, +"Packaging the Test Applications in Servlet-Compliant WAR +Files With VI-Specific Information,"] for more information. + +[[GCLHU]][[configuring-your-environment-to-repackage-and-run-the-tck-against-the-vendor-implementation]] + +4.2 Configuring Your Environment to Repackage and Run the TCK Against the Vendor Implementation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Not needed for the EL TCK. + +[[GHGDG]][[publishing-the-test-applications]] + +4.3 Publishing the Test Applications +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Not needed for the EL TCK. diff --git a/el/docs/userguide/src/main/jbake/content/debug-tips.inc b/el/docs/userguide/src/main/jbake/content/debug-tips.inc new file mode 100644 index 0000000000..bbe4252cc5 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/debug-tips.inc @@ -0,0 +1,15 @@ +/////////////////////////////////////////////////////////////////////// +NOTE TO WRITERS: +The following sections should be customized for the technology. +This text was originally from the JACC TCK. Some references +to JACC have been parameterized to serve as a simple starting +point for customization. There are still many details that will +need to be changed or removed. +/////////////////////////////////////////////////////////////////////// + +[[GBFHA]][[troubleshooting-tips]] + +6.7 Troubleshooting Tips +~~~~~~~~~~~~~~~~~~~~~~~~ + +None for the {TechnologyShortName} TCK. diff --git a/el/docs/userguide/src/main/jbake/content/debug.adoc b/el/docs/userguide/src/main/jbake/content/debug.adoc new file mode 100644 index 0000000000..305d8c7c80 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/debug.adoc @@ -0,0 +1,82 @@ +type=page +status=published +title=Debugging Test Problems +next=faq.html +prev=using.html +~~~~~~ +include::attributes.conf[] +Debugging Test Problems +======================= + +[[GBFUV]] + + +[[debugging-test-problems]] +6 Debugging Test Problems +------------------------- + +There are a number of reasons that tests can fail to execute properly. +This chapter provides some approaches for dealing with these failures. +Please note that most of these suggestions are only relevant when +running the test harness in GUI mode. + +This chapter includes the following topics: + +* link:#GBFYP[Overview] +* link:#GBFVF[Test Tree] +* link:#GBFWI[Folder Information] +* link:#GBFVP[Test Information] +* link:#GBFVZ[Report Files] +* link:#GBFYF[Configuration Failures] + +[[GBFYP]][[overview]] + +6.1 Overview +~~~~~~~~~~~~ +The goal of a test run is for all tests in the test suite that are not +filtered out to have passing results. If the root test suite folder +contains tests with errors or failing results, you must troubleshoot and +correct the cause to satisfactorily complete the test run. + +* Errors: Tests with errors could not be executed by the Junit +framework. These errors usually occur because the test environment is not +properly configured. +* Failures: Tests that fail were executed but had failing results. + + +For every test run, the Junit framework creates a set of report files +in the target directory. + + +If a large number of tests failed, you should read +link:#GBFYF[Configuration Failures] to see if a +configuration issue is the cause of the failures. + +[NOTE] +======================================================================= + +You can set `junit.log.traceflag=true` as System property to +get more debugging information. + +======================================================================= + + +[[GBFVP]][[test-information]] + +6.2 Test Information +~~~~~~~~~~~~~~~~~~~~ + +If you need more information to identify the cause of the error or +failure, use the Junit reports generated after running the tests. + + +[[GBFYF]][[configuration-failures]] + +6.3 Configuration Failures +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Configuration failures are easily recognized because many tests fail the +same way. When all your tests begin to fail, you may want to stop the +run immediately and start viewing individual test output. + +include::debug-tips.inc[] diff --git a/el/docs/userguide/src/main/jbake/content/defns.inc b/el/docs/userguide/src/main/jbake/content/defns.inc new file mode 100644 index 0000000000..038db2dda3 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/defns.inc @@ -0,0 +1,46 @@ +// NOTE TO WRITERS: +// Most technologies will only need the compatibility rules in rules.adoc. +// Some technologies will need additional definitions to go with additional +// rules. If they're needed, remove the comment characters below +// and update the definitions as appropriate. +// +// The first block below is additional definitions needed by +// Jakarta XML Web Services. +// +// The second block below is additional defintions needed by +// Jakarta Server Pages. +// +// NOTE: This set of examples is NOT complete, but should be. +// +// +// Jakarta XML Web Services +// +// |Development Kit |A software product that implements or incorporates a +// Compiler, a Schema Compiler, a Schema Generator, a Java-to-WSDL Tool, a +// WSDL-to-Java Tool, and/or an RMI Compiler. +// +// |Java-to-WSDL Output |Output of a Java-to-WSDL Tool that is required for +// Web service deployment and invocation. +// +// |Java-to-WSDL Tool |A software development tool that implements or +// incorporates a function that generates web service endpoint descriptions +// in WSDL and XML schema format from Source Code as specified by the +// Jakarta XML Web Services Specification. +// +// |WSDL-to-Java Output |Output of a WSDL-to-Java tool that is required for +// Web service deployment and invocation. +// +// |WSDL-to-Java Tool |A software development tool that implements or +// incorporates a function that generates web service interfaces for +// clients and endpoints from a WSDL description as specified by the +// Jakarta XML Web Services Specification. +// +// +// Jakarta Server Pages +// +// |Jakarta Server Page |A text-based document that uses Jakarta Server +// Pages technology. +// +// |Jakarta Server Page Implementation Class |A program constructed by +// transforming the Jakarta Server Page text into a Java language program +// using the transformation rules described in the Specifications. diff --git a/el/docs/userguide/src/main/jbake/content/faq.adoc b/el/docs/userguide/src/main/jbake/content/faq.adoc new file mode 100644 index 0000000000..a9a9928b0c --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/faq.adoc @@ -0,0 +1,63 @@ +type=page +status=published +title=Appendix A: Frequently Asked Questions +next=rebuild.html +prev=debug.html +~~~~~~ +include::attributes.conf[] +Appendix A: Frequently Asked Questions +====================================== + +[[GBFYD]] + + +[[a-frequently-asked-questions]] +A Frequently Asked Questions +---------------------------- + +This appendix contains the following questions. + +* link:#GBFYQ[Where do I start to debug a test failure?] +* link:#GBFYR[How do I restart a crashed test run?] +* link:#GBFWU[What would cause tests be added to the exclude list?] + +[[GBFYQ]][[a.1-where-do-i-start-to-debug-a-test-failure]] + +A.1 Where do I start to debug a test failure? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +From the JavaTest GUI, you can view recently run tests using the Test +Results Summary, by selecting the red Failed tab or the blue Error tab. +See link:debug.html#GBFUV[Chapter 6, "Debugging Test Problems,"] for more +information. + +[[GBFYR]][[a.2-how-do-i-restart-a-crashed-test-run]] + +A.2 How do I restart a crashed test run? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you need to restart a test run, you can figure out which test crashed +the test suite by looking at the `harness.trace` file. The +`harness.trace` file is in the report directory that you supplied to the +JavaTest GUI or parameter file. Examine this trace file, then change the +JavaTest GUI initial files to that location or to a directory location +below that file, and restart. This will overwrite only `.jtr` files that +you rerun. As long as you do not change the value of the GUI work +directory, you can continue testing and then later compile a complete +report to include results from all such partial runs. + +[[GBFWU]][[a.3-what-would-cause-tests-be-added-to-the-exclude-list]] + +A.3 What would cause tests be added to the exclude list? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The exclude file (+{excludeListFileName}+) contains all tests that are not +required to be run. The file is used only for documentation purpose. The tests are excluded using +@Disabled tag in Junit when necessary. The following is a list of reasons for a test to be +included in the Exclude List: + +* An error in a Compatible Implementation that does not allow the test to +execute properly has been discovered. +* An error in the specification that was used as the basis of the test +has been discovered. +* An error in the test has been discovered. diff --git a/el/docs/userguide/src/main/jbake/content/install-server-vi.inc b/el/docs/userguide/src/main/jbake/content/install-server-vi.inc new file mode 100644 index 0000000000..e69de29bb2 diff --git a/el/docs/userguide/src/main/jbake/content/install-server.inc b/el/docs/userguide/src/main/jbake/content/install-server.inc new file mode 100644 index 0000000000..f8e47e1283 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/install-server.inc @@ -0,0 +1,10 @@ +. Install the Jakarta EE {JakartaEEVersion} CI software (the servlet Web container used +for running the {TechnologyShortName} TCK with the +{TechnologyShortName} {TechnologyVersion} CI), if it is not already +installed. + +Download and install the Servlet Web container with the +{TechnologyShortName} {TechnologyVersion} CI used for running the +{TechnologyShortName} TCK {TechnologyVersion}, represented by the Jakarta +EE {JakartaEEVersion} CI. +You may obtain a copy of this CI by downloading it from {TechnologyRIURL}. + diff --git a/el/docs/userguide/src/main/jbake/content/install.adoc b/el/docs/userguide/src/main/jbake/content/install.adoc new file mode 100644 index 0000000000..9bb768c9e7 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/install.adoc @@ -0,0 +1,93 @@ +type=page +status=published +title=Installation +next=config.html +prev=rules.html +~~~~~~ +include::attributes.conf[] +Installation +============ + +[[GBFTP]] + + +[[installation]] +3 Installation +-------------- + +This chapter explains how to install the {TechnologyFullName} TCK software. + +After installing the software according to the instructions in this +chapter, proceed to link:config.html#GBFVV[Chapter 4, "Setup and +Configuration,"] for instructions on configuring your test environment. + +[NOTE] +======================================================================= + +Although the {TechnologyShortName} {TechnologyVersion} TCK is not +depended on any particular build tool, it is convenient to install +Apache Maven {MavenVersion} for setup and execution of tests. +Any other build tools like Gradle and JUnit 5 Console Runner can also +be used that is Jupiter API compatible. + +======================================================================= + + +[[GBFUD]][[obtaining-the-reference-implementation]] + +3.1 Obtaining a Compatible Implementation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Each compatible implementation (CI) will provide instructions for obtaining +their implementation. +{TechnologyRI} is a compatible implementation which may be obtained +from {TechnologyRIURL} + +[[GBFTS]][[installing-the-software]] + +3.2 Installing the Software +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Before you can run the {TechnologyShortName} TCK tests, you must +install and set up the following software components: + +include::req-software.inc[] +* Java SE {SEversion} +* A CI for {TechnologyShortName} {TechnologyVersion}, one example is {TechnologyRI} +* {TechnologyShortName} TCK version {TechnologyVersion} +* The {TechnologyShortName} {TechnologyVersion} Vendor Implementation (VI) +* Any Jupiter API compatible test runner (eg. Apache Maven {MavenVersion}) + +Follow these steps: + +. Install the Java SE {SEversion} software, if it is not already installed. + +Download and install the Java SE {SEversion} software from +http://www.oracle.com/technetwork/java/javase/downloads/index.html. +Refer to the installation instructions that accompany the software for +additional information. + +. Install the build tool that will be used to run the TCK, if it is not already installed. + +It will be convenient to use Apache Maven {MavenVersion} for running the tests. The test kit +is not depended on Maven, any build tool compatible with Jupiter API is suffitient. + +. Install the {TechnologyShortName} TCK {TechnologyVersion} software. + a. Copy or download the {TechnologyShortName} TCK software to your + local system. + + You can obtain the {TechnologyShortName} TCK software from the + Jakarta EE site {SpecificationURL}. + b. Use the `unzip` command to extract the bundle in the directory of + your choice: + + +unzip {TCKPackageName}+ + + +include::install-server.inc[] +. Install a {TechnologyShortName} {TechnologyVersion} Compatible +Implementation. + +A Compatible Implementation is used to validate your initial +configuration and setup of the {TechnologyShortName} TCK +{TechnologyVersion} tests, which are explained further in +link:config.html#GBFVV[Chapter 4, "Setup and Configuration."] + +The Compatible Implementations for {TechnologyShortName} are listed on +the Jakarta EE Specifications web site: {SpecificationURL}. +include::install-server-vi.inc[] +. Install the {TechnologyShortName} VI to be tested. + +Follow the installation instructions for the particular VI under test. diff --git a/el/docs/userguide/src/main/jbake/content/intro.adoc b/el/docs/userguide/src/main/jbake/content/intro.adoc new file mode 100644 index 0000000000..85724fcc15 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/intro.adoc @@ -0,0 +1,313 @@ +type=page +status=published +title=Introduction +next=rules.html +prev=preface.html +~~~~~~ +include::attributes.conf[] +Introduction +============ + +[[GBFOW]] + + +[[introduction]] +1 Introduction +-------------- + +This chapter provides an overview of the principles that apply +generally to all Technology Compatibility Kits (TCKs) and describes the +{TechnologyFullName} TCK ({TechnologyShortName} {TechnologyVersion} TCK). +It also includes a high level listing +of what is needed to get up and running with the {TechnologyShortName} +TCK. + +This chapter includes the following topics: + +* link:#GBFTK[Compatibility Testing] +* link:#GBFQR[About the TCK] +* link:#GBFQW[Getting Started With the TCK] + +[[GBFTK]][[compatibility-testing]] + +1.1 Compatibility Testing +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Compatibility testing differs from traditional product testing in a +number of ways. The focus of compatibility testing is to test those +features and areas of an implementation that are likely to differ across +other implementations, such as those features that: + +* Rely on hardware or operating system-specific behavior +* Are difficult to port +* Mask or abstract hardware or operating system behavior + +Compatibility test development for a given feature relies on a complete +specification and compatible implementation (CI) for that feature. +Compatibility testing is not primarily concerned with robustness, +performance, nor ease of use. + +[[GBFQN]][[why-compatibility-testing-is-important]] + +1.1.1 Why Compatibility Testing is Important +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Jakarta platform compatibility is important to different groups involved +with Jakarta technologies for different reasons: + +* Compatibility testing ensures that the Jakarta platform does not become +fragmented as it is ported to different operating systems and hardware +environments. +* Compatibility testing benefits developers working in the Jakarta +programming language, allowing them to write applications once and then +to deploy them across heterogeneous computing environments without +porting. +* Compatibility testing allows application users to obtain applications +from disparate sources and deploy them with confidence. +* Conformance testing benefits Jakarta platform implementors by ensuring a +level playing field for all Jakarta platform ports. + +[[GBFPR]][[tck-compatibility-rules]] + +1.1.2 TCK Compatibility Rules +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Compatibility criteria for all technology implementations are embodied +in the TCK Compatibility Rules that apply to a specified technology. +Each TCK tests for adherence to these Rules as described in +link:rules.html#GBFSN[Chapter 2, "Procedure for Certification."] + +[[GBFPW]][[tck-overview]] + +1.1.3 TCK Overview +^^^^^^^^^^^^^^^^^^ + +A TCK is a set of tools and tests used to verify that a vendor's compatible +implementation of a Jakarta EE technology conforms to the applicable +specification. All tests in the TCK are based on the written +specifications for the Jakarta EE platform. A TCK tests compatibility of a +vendor's compatible implementation of the technology to the applicable +specification of the technology. Compatibility testing is a means of +ensuring correctness, completeness, and consistency across all +implementations developed by technology licensees. + +The set of tests included with each TCK is called the test suite. Most +tests in a TCK's test suite are self-checking, but some tests may +require tester interaction. Most tests return either a Pass or Fail +status. For a given platform to be certified, all of the required tests +must pass. The definition of required tests may change from platform to +platform. + +The definition of required tests will change over time. Before your +final certification test pass, be sure to download the latest version +of this TCK. + +[[GBFPB]][[java-community-process-jcp-program-and-compatibility-testing]] + +1.1.4 Jakarta EE Specification Process (JESP) Program and Compatibility Testing +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The Jakarta EE Specification Process (JESP) program is the formalization of the +open process that has been used since 2019 to develop and revise Jakarta EE +technology specifications in cooperation with the international Jakarta EE +community. The JESP program specifies that the following three major +components must be included as deliverables in a final Jakarta EE technology +release under the direction of the responsible Expert Group: + +* Technology Specification +* Compatible Implementation (CI) +* Technology Compatibility Kit (TCK) + +For further information about the JESP program, go to Jakarta EE Specification +Process community page https://jakarta.ee/specifications. + +[[GBFQR]][[about-the-tck]] + +1.2 About the TCK +~~~~~~~~~~~~~~~~~ + +The {TechnologyShortName} TCK {TechnologyVersion} is designed as a +portable, configurable, automated test suite for verifying the +compatibility of a vendor's implementation of the +{TechnologyShortName} {TechnologyVersion} Specification. + +[[GBFQV]][[tck-specifications-and-requirements]] + +1.2.1 TCK Specifications and Requirements +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This section lists the applicable requirements and specifications. + +* Specification Requirements: Software requirements for a +{TechnologyShortName} implementation are described in detail in the +{TechnologyShortName} {TechnologyVersion} Specification. Links to the +{TechnologyShortName} specification and other product information can +be found at {SpecificationURL}. +* {TechnologyShortName} Version: The {TechnologyShortName} {TechnologyVersion} TCK +is based on the {TechnologyShortName} +Specification, Version {TechnologyVersion}. +* Compatible Implementation: One {TechnologyShortName} +{TechnologyVersion} Compatible Implementation, {TechnologyRI} is +available from the Eclipse EE4J project +(https://projects.eclipse.org/projects/ee4j). See the CI documentation page at +{TechnologyRIURL} for more information. + +See the {TechnologyShortName} TCK Release Notes for more specific +information about Java SE version requirements, supported platforms, +restrictions, and so on. + +[[GBFSQ]][[tck-components]] + +1.2.2 TCK Components +^^^^^^^^^^^^^^^^^^^^ + +The {TechnologyShortName} TCK {TechnologyVersion} includes the +following components: + +* {TechnologyShortName} TCK signature tests; check that all public APIs +are supported and/or defined as specified in the {TechnologyShortName} +Version {TechnologyVersion} implementation under test. +* If applicable, an exclude list, which provides a list of tests that your +implementation is not required to pass. +ifndef::no-api-tests[] +* API tests for all of the {TechnologyShortName} API in all related packages: +include::packages.inc[] +endif::no-api-tests[] +ifdef::end-to-end-tests[] +* End-to-end tests that demonstrate compliance with the {TechnologyFullName} +Specification. +endif::end-to-end-tests[] + +The {TechnologyShortName} TCK tests run on the following platforms: + +include::platforms.inc[] + +[[GBFRA]][[tck-compatibility-test-suite]] + +1.2.3 TCK Compatibility Test Suite +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The test suite is the collection of tests used by the JavaTest harness +to test a particular technology implementation. In this case, it is the +collection of tests used by the {TechnologyShortName} TCK +{TechnologyVersion} to test a {TechnologyShortName} {TechnologyVersion} +implementation. The tests are designed to verify that a vendor's +runtime implementation of the technology complies with the appropriate +specification. The individual tests correspond to assertions of the +specification. + +The tests that make up the TCK compatibility test suite are precompiled +and indexed within the TCK test directory structure. When a test run is +started, the JavaTest harness scans through the set of tests that are +located under the directories that have been selected. While scanning, +the JavaTest harness selects the appropriate tests according to any +matches with the filters you are using and queues them up for execution. + +[[GBFSH]][[exclude-lists]] + +1.2.4 Exclude Lists +^^^^^^^^^^^^^^^^^^^ + +Each version of a TCK includes an Exclude List contained in a `TCK-Exclude-List.txt` +file. +This is a list of test file URLs that identify tests which do not +have to be run for the specific version of the TCK being used. +Whenever tests are run, the Junit framework automatically excludes +these tests from being executed as those are disabled using '@Disabled' tag in JUnit. + +A vendor's compatible implementation is not required to pass or run any test on the Exclude List. +The Exclude List file, +{excludeListFileName}+, is documented in the +{TechnologyShortName} TCK. Please note this file is not parsed to exclude any test and is only +for documentation purpose. + + +[NOTE] +======================================================================= + +From time to time, updates to the Exclude List are made available. +The exclude list is included in the Jakarta TCK ZIP archive. +Each time an update is approved and released, the version number +will be incremented. +You should always make sure you are using an up-to-date copy of the +Exclude List before running the {TechnologyShortName} TCK to verify your +implementation. + +======================================================================= + + +A test might be in the Exclude List for reasons such as: + +* An error in an underlying implementation API has been discovered which +does not allow the test to execute properly. +* An error in the specification that was used as the basis of the test +has been discovered. +* An error in the test itself has been discovered. +* The test fails due to a bug in the tools (such as the JavaTest +harness, for example). + +In addition, all tests are run against the compatible implementations. +Any tests that fail when run on a compatible Jakarta platform are put on the +Exclude List. Any test that is not specification-based, or for which the +specification is vague, may be excluded. Any test that is found to be +implementation dependent (based on a particular thread scheduling model, +based on a particular file system behavior, and so on) may be excluded. + + +[NOTE] +======================================================================= + +Vendors are not permitted to alter or modify Exclude Lists. Changes to +an Exclude List can only be made by using the procedure described in +link:rules.html#CJAJEAEI[Section 2.3.1, "TCK Test Appeals Steps."] + +======================================================================= + + +[[GBFRR]][[tck-configuration]] + +1.2.5 TCK Configuration +^^^^^^^^^^^^^^^^^^^^^^^ + +You need to set several variables in your test environment, +and run the {TechnologyShortName} tests, as described in +link:config.html#GBFVV[Chapter 4, "Setup and Configuration."] + +include::intro.inc[] + +[[GBFQW]][[getting-started-with-the-tck]] + +[NOTE] +==== +The Jakarta EE Specification Process support multiple compatible implementations. +These instructions explain how to get started with the {TechnologyRI} CI. +If you are using another compatible implementation, refer to material provided +by that implementation for specific instructions and procedures. + +==== + +1.3 Getting Started With the TCK +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This section provides an general overview of what needs to be done to +install, set up, test, and use the {TechnologyShortName} TCK. These +steps are explained in more detail in subsequent chapters of this +guide. + +1. Make sure that the following software has been correctly installed +on the system : +include::req-software.inc[] +* Java SE {SEversion} +* A CI for {TechnologyShortName} {TechnologyVersion}. One example is {TechnologyRI}. +* {TechnologyShortName} TCK version {TechnologyVersion} +* The {TechnologyShortName} {TechnologyVersion} Vendor Implementation (VI) + +See the documentation for each of these software applications for +installation instructions. See link:install.html#GBFTP[Chapter 3, +"Installation,"] for instructions on installing the {TechnologyShortName} TCK. +2. Set up the {TechnologyShortName} TCK software. + +See link:config.html#GBFVV[Chapter 4, "Setup and Configuration,"] for +details about the following steps. + a. Set up your shell environment. + b. Set the required System properties. +3. Test the {TechnologyShortName} {TechnologyVersion} implementation. + +Test the {TechnologyShortName} implementation installation by running +the test suite. See link:using.html#GBFWO[Chapter 5, "Executing Tests."] diff --git a/el/docs/userguide/src/main/jbake/content/intro.inc b/el/docs/userguide/src/main/jbake/content/intro.inc new file mode 100644 index 0000000000..e69de29bb2 diff --git a/el/docs/userguide/src/main/jbake/content/packages.inc b/el/docs/userguide/src/main/jbake/content/packages.inc new file mode 100644 index 0000000000..163665045d --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/packages.inc @@ -0,0 +1 @@ +** `jakarta.el` diff --git a/el/docs/userguide/src/main/jbake/content/platforms.inc b/el/docs/userguide/src/main/jbake/content/platforms.inc new file mode 100644 index 0000000000..1afa2d21ad --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/platforms.inc @@ -0,0 +1 @@ +* Debian GNU/Linux 10 \ No newline at end of file diff --git a/el/docs/userguide/src/main/jbake/content/preface.adoc b/el/docs/userguide/src/main/jbake/content/preface.adoc new file mode 100644 index 0000000000..bbedf61690 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/preface.adoc @@ -0,0 +1,145 @@ +type=page +status=published +title=Preface +next=intro.html +prev=title.html +~~~~~~ +include::attributes.conf[] +Preface +======= + +[[TCJRS00001]][[GBFTI]] + + +[[preface]] +Preface +------- + +This guide describes how to install, configure, and run the Technology +Compatibility Kit (TCK) that is used to test the {TechnologyFullName} +({TechnologyShortName} {TechnologyVersion}) technology. + +The {TechnologyShortName} TCK is a portable, configurable automated +test suite for verifying the compatibility of a vendor's +implementation of the {TechnologyShortName} {TechnologyVersion} +Specification (hereafter referred to as the vendor implementation or VI). + + +[NOTE] +======================================================================= + +Note All references to specific Web URLs are given for the sake of your +convenience in locating the resources quickly. These references are +always subject to changes that are in many cases beyond the control of +the authors of this guide. + +======================================================================= + +Jakarta EE is a community sponsored and community run program. +Organizations contribute, along side individual contributors who use, evolve +and assist others. +Commercial support is not available through the Eclipse Foundation resources. +Please refer to the Eclipse EE4J project site +(https://projects.eclipse.org/projects/ee4j). +There, you will find additional details as well as a list of all the associated sub-projects +(Implementations and APIs), that make up Jakarta EE and define these specifications. +If you have questions about this Specification you may +send inquiries to {SpecificationInquiryList}. +If you have questions about this TCK, you may send inquiries to +{TCKInquiryList}. + +[[TCJRS00034]][[GBFUS]] + + +[[who-should-use-this-book]] +Who Should Use This Book +~~~~~~~~~~~~~~~~~~~~~~~~ + +This guide is for vendors that implement the {TechnologyShortName} +{TechnologyVersion} technology to assist them in running the test suite +that verifies compatibility of their implementation of the +{TechnologyShortName} {TechnologyVersion} Specification. + + +[[TCJRS00035]][[GBFPO]] + + +[[before-you-read-this-book]] +Before You Read This Book +~~~~~~~~~~~~~~~~~~~~~~~~~ + +You should be familiar with the {TechnologyShortName} +{TechnologyVersion}, version {TechnologyVersion} Specification, +which can be found at {SpecificationURL}. + +Before running the tests in the {TechnologyShortName} TCK, you should +familiarize yourself with the JavaTest documentation which can be +accessed at the +link:https://wiki.openjdk.java.net/display/CodeTools/JT+Harness[JT Harness web site]. + +[[TCJRS00036]][[GBFWF]] + + +[[typographic-conventions]] +Typographic Conventions +~~~~~~~~~~~~~~~~~~~~~~~ + +The following table describes the typographic conventions that are used +in this book. + +[width="100%",cols="15%,40%,45%",options="header",] +|======================================================================= +|Convention |Meaning |Example +|*Boldface* |Boldface type indicates graphical user interface elements +associated with an action, terms defined in text, or what you type, +contrasted with onscreen computer output. a| +From the *File* menu, select *Open Project*. + +A *cache* is a copy that is stored locally. + +`machine_name% *su*` + +`Password:` + +|`Monospace` |Monospace type indicates the names of files and +directories, commands within a paragraph, URLs, code in examples, text +that appears on the screen, or text that you enter. a| +Edit your `.login` file. + +Use `ls` `-a` to list all files. + +`machine_name% you have mail.` + +|_Italic_ |Italic type indicates book titles, emphasis, or placeholder +variables for which you supply particular values. a| +Read Chapter 6 in the _User's Guide_. + +Do _not_ save the file. + +The command to remove a file is `rm` _filename_. + +|======================================================================= + + +[[TCJRS00037]][[FWBSD]] + + +[[shell-prompts-in-command-examples]] +Shell Prompts in Command Examples +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The following table shows the default UNIX system prompt and superuser +prompt for the C shell, Bourne shell, and Korn shell. + +[width="100%",cols="50%,50%",options="header",] +|===================================================== +|Shell |Prompt +|C shell |`machine_name%` +|C shell for superuser |`machine_name#` +|Bourne shell and Korn shell |`$` + +|Bourne shell and Korn shell for superuser |`#` + +|Bash shell |`shell_name-shell_version$` +|Bash shell for superuser |`shell_name-shell_version#` +|===================================================== + + + diff --git a/el/docs/userguide/src/main/jbake/content/rebuild.adoc b/el/docs/userguide/src/main/jbake/content/rebuild.adoc new file mode 100644 index 0000000000..e4021cfa19 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/rebuild.adoc @@ -0,0 +1,20 @@ +type=page +status=published +title=Appendix B: Rebuild Rules +prev=faq.html +~~~~~~ +include::attributes.conf[] + +Appendix B: Rebuild Rules +========================= + + +ifdef::rebuild[] +include::rebuild.inc[] +endif::rebuild[] +ifndef::rebuild[] + +<<< +Appendix B is not used for the {TechnologyShortName} TCK. + +endif::rebuild[] diff --git a/el/docs/userguide/src/main/jbake/content/rebuild.inc b/el/docs/userguide/src/main/jbake/content/rebuild.inc new file mode 100644 index 0000000000..3582e35212 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/rebuild.inc @@ -0,0 +1,8 @@ +/////////////////////////////////////////////////////////////////////// +NOTE TO WRITERS: +The following sections should be customized for the technology. +See JAXRS UG for an example of this include file +/////////////////////////////////////////////////////////////////////// + +[[GCLIZ]] + diff --git a/el/docs/userguide/src/main/jbake/content/req-software.inc b/el/docs/userguide/src/main/jbake/content/req-software.inc new file mode 100644 index 0000000000..3f5b241f1b --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/req-software.inc @@ -0,0 +1,11 @@ +/////////////////////////////////////////////////////////////////////// +NOTE TO WRITERS: +This is a list of software required in addition to the TCK and a Compatible Implementation(CI). +For many Jakarta EE APIs, a Jakarta EE CI will be required, as described below. +For standalone technologies, no other software may be required, and the +below line can be removed. + +This is used in intro.adoc in section 1.3 and install.adoc in section 3.2. +/////////////////////////////////////////////////////////////////////// + +* A Jakarta EE 11 Compatible Implementation diff --git a/el/docs/userguide/src/main/jbake/content/rules.adoc b/el/docs/userguide/src/main/jbake/content/rules.adoc new file mode 100644 index 0000000000..f6b08cebb9 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/rules.adoc @@ -0,0 +1,403 @@ +type=page +status=published +title=Procedure for Certification +next=install.html +prev=intro.html +~~~~~~ +include::attributes.conf[] +Procedure for Certification +=========================== + +[[GBFSN]] + + +[[procedure-for-certification]] +2 Procedure for Certification +----------------------------- + +This chapter describes the compatibility testing procedure and +compatibility requirements for {TechnologyFullName}. +This chapter contains the following sections: + +* link:#CJAFFDGI[Certification Overview] +* link:#CJAFGIGG[Compatibility Requirements] +* link:#CJAIIBDJ[Test Appeals Process] +* link:#CJAJECIE[Specifications for {TechnologyFullName}] +* link:#CJABAHGI[Libraries for {TechnologyFullName}] + +[[CJAFFDGI]][[certification-overview]] + +2.1 Certification Overview +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The certification process for {technologyShortName} {TechnologyVersion} +consists of the following activities: + +* Install the appropriate version of the Technology Compatibility Kit +(TCK) and execute it in accordance with the instructions in this User's +Guide. +* Ensure that you meet the requirements outlined in +link:#CJAFGIGG[Compatibility Requirements] below. +* Certify to the Eclipse Foundation that you have finished +testing and that you meet all of the compatibility requirements, +as required by the Eclipse Foundation TCK License. + +[[CJAFGIGG]][[compatibility-requirements]] + +2.2 Compatibility Requirements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The compatibility requirements for {TechnologyShortName} +{TechnologyVersion} consist of meeting the requirements set forth by +the rules and associated definitions contained in this section. + +[[sthref4]][[definitions]] + +2.2.1 Definitions +^^^^^^^^^^^^^^^^^ + +These definitions are for use only with these compatibility requirements +and are not intended for any other purpose. + +[[sthref5]][[sthref6]] + +Table 2-1 Definitions  + +[width="100%",cols="25%,75%",options="header",] +|======================================================================= +|Term |Definition +|API Definition Product |A Product for which the only Java class files +contained in the product are those corresponding to the application +programming interfaces defined by the Specifications, and which is +intended only as a means for formally specifying the application +programming interfaces defined by the Specifications. + +|Computational Resource a| +A piece of hardware or software that may vary in quantity, existence, or +version, which may be required to exist in a minimum quantity and/or at +a specific or minimum revision level so as to satisfy the requirements +of the Test Suite. + +Examples of computational resources that may vary in quantity are RAM +and file descriptors. + +Examples of computational resources that may vary in existence (that is, +may or may not exist) are graphics cards and device drivers. + +Examples of computational resources that may vary in version are +operating systems and device drivers. + +|Configuration Descriptor |Any file whose format is well defined by a +specification and which contains configuration information for a set of +Java classes, archive, or other feature defined in the specification. + +|Conformance Tests |All tests in the Test Suite for an indicated +Technology Under Test, as released and distributed by the +Eclipse Foundation, excluding those tests on the +published Exclude List for the Technology Under Test. + +|Container |An implementation of the associated Libraries, as specified +in the Specifications, and a version of a Java Platform, Standard +Edition Runtime Product, as specified in the Specifications, or a later +version of a Java Platform, Standard Edition Runtime Product that also +meets these compatibility requirements. + +|Documented |Made technically accessible and made known to users, +typically by means such as marketing materials, product documentation, +usage messages, or developer support programs. + +|Exclude List |The most current list of tests, released and distributed by the +Eclipse Foundation, that are not required to be passed to certify +conformance. The Jakarta EE Specification Committee may add to the Exclude List for that +Test Suite as needed at any time, in which case the updated TCK version +supplants any previous Exclude Lists for that Test Suite. + +|Libraries a| +The class libraries, as specified through the Jakarta EE Specification Process +(JESP), for the Technology Under Test. + +The Libraries for {TechnologyFullName} are listed at the end of this chapter. + +|Location Resource a| +A location of classes or native libraries that are components of the +test tools or tests, such that these classes or libraries may be +required to exist in a certain location in order to satisfy the +requirements of the test suite. + +For example, classes may be required to exist in directories named in a +CLASSPATH variable, or native libraries may be required to exist in +directories named in a PATH variable. + +|Maintenance Lead |The corresponding Jakarta EE Specification Project +is responsible for maintaining the Specification, and the TCK for the +Technology. The Specification Project Team will propose revisions and +updates to the Jakarta EE Specification Committee which will approve +and release new versions of the specification and TCK. + +|Operating Mode a| +Any Documented option of a Product that can be changed by a user in +order to modify the behavior of the Product. + +For example, an Operating Mode can be binary (enable/disable +optimization), an enumeration (select from a list of protocols), or a +range (set the maximum number of active threads). + +Note that an Operating Mode may be selected by a command line switch, an +environment variable, a GUI user interface element, a configuration or +control file, etc. + +|Product |A vendor's product in which the Technology Under Test is +implemented or incorporated, and that is subject to compatibility +testing. + +|Product Configuration a| +A specific setting or instantiation of an Operating Mode. + +For example, a Product supporting an Operating Mode that permits user +selection of an external encryption package may have a Product +Configuration that links the Product to that encryption package. + +|Rebuildable Tests |Tests that must be built using an +implementation-specific mechanism. This mechanism must produce +specification-defined artifacts. Rebuilding and running these tests +against a known compatible implementation verifies that the mechanism generates +compatible artifacts. + +|Resource |A Computational Resource, a Location Resource, or a Security +Resource. + +|Rules |These definitions and rules in this Compatibility Requirements +section of this User's Guide. + +|Runtime |The Containers specified in the Specifications. + +|Security Resource a| +A security privilege or policy necessary for the proper execution of the +Test Suite. + +For example, the user executing the Test Suite will need the privilege +to access the files and network resources necessary for use of the +Product. + +|Specifications a| +The documents produced through the Jakarta EE Specification Process (JESP) +that define a particular Version of a Technology. + +The Specifications for the Technology Under Test are referenced later in +this chapter. + +|Technology |Specifications and one or more compatible implementations produced +through the Jakarta EE Specification Process (JESP). + +|Technology Under Test |Specifications and a compatible implementation +for {TechnologyFullName} Version {TechnologyVersion}. + +|Test Suite |The requirements, tests, and testing tools distributed by +the Maintenance Lead as applicable to a given Version of the Technology. + +|Version |A release of the Technology, as produced through the +Jakarta EE Specification Process (JESP). + +include::defns.inc[] +|======================================================================= + + +[[sthref7]][[rules-for-products]] + +2.2.2 Rules for {TechnologyFullName} Products +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The following rules apply for each version of an operating system, +software component, and hardware platform Documented as supporting the +Product: + +*{techID}1* The Product must be able to satisfy all applicable compatibility +requirements, including passing all Conformance Tests, in every Product +Configuration and in every combination of Product Configurations, except +only as specifically exempted by these Rules. + +For example, if a Product provides distinct Operating Modes to optimize +performance, then that Product must satisfy all applicable compatibility +requirements for a Product in each Product Configuration, and +combination of Product Configurations, of those Operating Modes. + +*{techID}1.1* If an Operating Mode controls a Resource necessary for the +basic execution of the Test Suite, testing may always use a Product +Configuration of that Operating Mode providing that Resource, even if +other Product Configurations do not provide that Resource. +Notwithstanding such exceptions, each Product must have at least one set +of Product Configurations of such Operating Modes that is able to pass +all the Conformance Tests. + +For example, a Product with an Operating Mode that controls a security +policy (i.e., Security Resource) which has one or more Product +Configurations that cause Conformance Tests to fail may be tested using +a Product Configuration that allows all Conformance Tests to pass. + +*{techID}1.2* A Product Configuration of an Operating Mode that causes the +Product to report only version, usage, or diagnostic information is +exempted from these compatibility rules. + +*{techID}1.3* An API Definition Product is exempt from all functional +testing requirements defined here, except the signature tests. + +*{techID}2* Some Conformance Tests may have properties that may be changed. +Properties that can be changed are identified in the configuration +interview. Properties that can be changed are identified in the JavaTest +Environment (.jte) files in the Test Suite +installation. Apart from changing such properties and other allowed +modifications described in this User's Guide (if any), no source or +binary code for a Conformance Test may be altered in any way without +prior written permission. Any such allowed alterations to the +Conformance Tests will be provided via the Jakarta EE Specification Project +website and apply to all vendor compatible implementations. + +*{techID}3* The testing tools supplied as part of the Test Suite or as +updated by the Maintenance Lead must be used to certify compliance. + +*{techID}4* The Exclude List associated with the Test Suite cannot be +modified. + +*{techID}5* The Maintenance Lead can define exceptions to these Rules. Such +exceptions would be made available as above, and will apply to all vendor implementations. + +*{techID}6* All hardware and software component additions, deletions, and +modifications to a Documented supporting hardware/software platform, +that are not part of the Product but required for the Product to satisfy +the compatibility requirements, must be Documented and available to +users of the Product. + +For example, if a patch to a particular version of a supporting +operating system is required for the Product to pass the Conformance +Tests, that patch must be Documented and available to users of the +Product. + +*{techID}7* The Product must contain the full set of public and protected +classes and interfaces for all the Libraries. Those classes and +interfaces must contain exactly the set of public and protected methods, +constructors, and fields defined by the Specifications for those +Libraries. No subsetting, supersetting, or modifications of the public +and protected API of the Libraries are allowed except only as +specifically exempted by these Rules. + +*{techID}7.1* If a Product includes Technologies in addition to the +Technology Under Test, then it must contain the full set of combined +public and protected classes and interfaces. The API of the Product +must contain the union of the included Technologies. No further +modifications to the APIs of the included Technologies are allowed. + +ifdef::subset-allowed[] +*{techID}7.2* The Product may contain a subset of the classes and +interfaces for the Libraries. +endif::subset-allowed[] + +*{techID}8* Except for tests specifically required by this TCK to be rebuilt +(if any), the binary Conformance Tests supplied as part of the Test +Suite or as updated by the Maintenance Lead must be used to certify +compliance. + +*{techID}9* The functional programmatic behavior of any binary class or +interface must be that defined by the Specifications. + +include::rules.inc[] + +[[CJAIIBDJ]][[test-appeals-process]] + +2.3 Test Appeals Process +~~~~~~~~~~~~~~~~~~~~~~~~ + +Jakarta has a well established process for managing challenges to its +TCKs. Any implementor may submit a challenge to one or more tests in the +{TechnologyShortName} TCK as it relates to their implementation. Implementor +means the entity as a whole in charge of producing the final certified release. +*Challenges filed should represent the consensus of that entity*. + +2.3.1 Valid Challenges +^^^^^^^^^^^^^^^^^^^^^^ +Any test case (e.g., test class, @Test method), test case configuration (e.g., deployment descriptor), test beans, annotations, and other resources considered part of the TCK may be challenged. + +The following scenarios are considered in scope for test challenges: + +* Claims that a test assertion conflicts with the specification. +* Claims that a test asserts requirements over and above that of the specification. +* Claims that an assertion of the specification is not sufficiently implementable. +* Claims that a test is not portable or depends on a particular implementation. + +2.3.2 Invalid Challenges +^^^^^^^^^^^^^^^^^^^^^^^^ +The following scenarios are considered out of scope for test challenges and will be immediately closed if filed: + +* Challenging an implementation’s claim of passing a test. Certification is an honor system and these issues must be raised directly with the implementation. +* Challenging the usefulness of a specification requirement. The challenge process cannot be used to bypass the specification process and raise in question the need or relevance of a specification requirement. +* Claims the TCK is inadequate or missing assertions required by the specification. See the Improvement section, which is outside the scope of test challenges. +* Challenges that do not represent a consensus of the implementing community will be closed until such time that the community does agree or agreement cannot be made. The test challenge process is not the place for implementations to initiate their own internal discussions. +* Challenges to tests that are already excluded for any reason. +* Challenges that an excluded test should not have been excluded and should be re-added should be opened as a new enhancement request + +Test challenges must be made in writing via the {TechnologyShortName} specification project issue tracker +as described in link:#CJAJEAEI[Section 2.3.3, "TCK Test Appeals Steps."] + +All tests found to be invalid will be placed on the Exclude List +for that version of the {TechnologyShortName} TCK. + + +[[CJAJEAEI]][[tck-test-appeals-steps]] + +2.3.3 TCK Test Appeals Steps +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +1. Challenges should be filed via the {TechnologyFullName} specification project’s issue tracker using the label `challenge` and include the following information: +* The relevant specification version and section number(s) +* The coordinates of the challenged test(s) +* The exact TCK and exclude list versions +* The implementation being tested, including name and company +* The full test name +* A full description of why the test is invalid and what the correct behavior is believed to be +* Any supporting material; debug logs, test output, test logs, run scripts, etc. + + + +2. Specification project evaluates the challenge. + +Challenges can be resolved by a specification project lead, or a project challenge triage team, after a consensus of the specification project committers is reached or attempts to gain consensus fails. +Specification projects may exercise lazy consensus, voting or any practice that follows the principles of Eclipse Foundation Development Process. +The expected timeframe for a response is two weeks or less. +If consensus cannot be reached by the specification project for a prolonged period of time, the default recommendation is to exclude the tests and address the dispute in a future revision of the specification. + +3. Accepted Challenges. + +A consensus that a test produces invalid results will result in the exclusion of that test from certification requirements, and an immediate update and release of an official distribution of the TCK including the new exclude list. The associated `challenge` issue must be closed with an `accepted` label to indicate it has been resolved. + +4. Rejected Challenges and Remedy. + +When a`challenge` issue is rejected, it must be closed with a label of `invalid` to indicate it has been rejected. +There appeal process for challenges rejected on technical terms is outlined in Escalation Appeal. +If, however, an implementer feels the TCK challenge process was not followed, an appeal issue should be filed with specification project’s TCK issue tracker using the label `challenge-appeal`. +A project lead should escalate the issue with the Jakarta EE Specification Committee via email (jakarta.ee-spec@eclipse.org). +The committee will evaluate the matter purely in terms of due process. +If the appeal is accepted, the original TCK challenge issue will be reopened and a label of `appealed-challenge` added, along with a discussion of the appeal decision, and the `challenge-appeal` issue with be closed. +If the appeal is rejected, the `challenge-appeal` issue should closed with a label of `invalid`. + +5. Escalation Appeal. + +If there is a concern that a TCK process issue has not been resolved satisfactorily, the +https://www.eclipse.org/projects/dev_process/#6_5_Grievance_Handling[Eclipse Development Process Grievance Handling] procedure should be followed to escalate the resolution. Note that this is not a mechanism to attempt to handle implementation specific issues. + + +[[CJAJECIE]][[specifications-for-technology]] + +2.4 Specifications for {TechnologyFullName} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The {TechnologyFullName} specification is available from the specification +project web-site: {SpecificationURL}. + +[[CJABAHGI]][[libraries-for-technology]] + +2.5 Libraries for {TechnologyFullName} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The following is a list of the packages comprising the required class +libraries for {TechnologyShortName} {TechnologyVersion}: + +include::packages.inc[] + +For the latest list of packages, also see: + +{SpecificationURL} diff --git a/el/docs/userguide/src/main/jbake/content/rules.inc b/el/docs/userguide/src/main/jbake/content/rules.inc new file mode 100644 index 0000000000..b5a250f697 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/rules.inc @@ -0,0 +1,78 @@ +/////////////////////////////////////////////////////////////////////// +NOTE TO WRITERS: +Most technologies will only need the compatibility rules in rules.adoc. +Some technologies will need additional rules. If they're needed, +remove the comment block delimiters below and update the rules as +appropriate. You may need to adjust the rule numbers to avoid gaps. + +The first comment block below is additional rules needed by JPA. + +The second comment block below is additional rules needed by +JSP and Servlet. (And EJB, if it had a standalone TCK.) + +The third comment block below is additional rules that apply +to any technology that defines deployment descriptors. + +The fourth comment block is special rules that apply only to JSP. + +NOTE: This set of examples is NOT complete, but should be. +/////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////// +*{techID}10* The Runtime must report an error when processing a +Configuration Descriptor that does not conform to the Specifications. + +*{techID}11* An error must be reported when processing a configuration +descriptor that includes a Java Persistence QL expression that does not +conform to the Specifications. + +*{techID}12* The presence of an XML comment in a Configuration +Descriptor, when processed by the Runtime, must not cause the +functional programmatic behavior of the Runtime to vary from the +functional programmatic behavior of the Runtime in the absence of that +comment. +/////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////// +*{techID}10* Each Container must make technically accessible all Java SE +Runtime interfaces and functionality, as defined by the Specifications, +to programs running in the Container, except only as specifically +exempted by these Rules. + +*{techID}10.1* Containers may impose security constraints, as defined by +the Specifications. +/////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////// +*{techID}11* A Deployment Tool must report an error when processing a +Configuration Descriptor that does not conform to the Specifications. + +*{techID}12* The presence of an XML comment in a Configuration +Descriptor, when processed by a Deployment Tool, must not cause the +functional programmatic behavior of the Deployment Tool to vary from +the functional programmatic behavior of the Deployment Tool in the +absence of that comment. +/////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////// +*{techID}11* A web Container must report an error, as defined by the +Specifications, when processing a JSP Page that does not conform to the +Specifications. + +*{techID}12* The presence of a Java language comment or Java language +directive in a JSP Page that specifies ”java” as the scripting +language, when processed by a web Container, must not cause the +functional programmatic behavior of that JSP Page to vary from the +functional programmatic behavior of that JSP Page in the absence of +that Java language comment or Java language directive. + +*{techID}13* The contents of any fixed template data (defined by the +Specifications) in a JSP Page, when processed by a web Container, must +not affect the functional programmatic behavior of that JSP Page, +except as defined by the Specifications. + +*{techID}14* The functional programmatic behavior of a JSP Page that +specifies ”java” as the scripting language must be equivalent to the +functional programmatic behavior of the JSP Page Implementation Class +constructed from that JSP Page. +/////////////////////////////////////////////////////////////////////// diff --git a/el/docs/userguide/src/main/jbake/content/tck-packages.inc b/el/docs/userguide/src/main/jbake/content/tck-packages.inc new file mode 100644 index 0000000000..e69de29bb2 diff --git a/el/docs/userguide/src/main/jbake/content/title.adoc b/el/docs/userguide/src/main/jbake/content/title.adoc new file mode 100644 index 0000000000..232172d727 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/title.adoc @@ -0,0 +1,42 @@ +type=page +status=published +title=TCK User's Guide for Technology Implementors +next=preface.html +prev=toc.html +~~~~~~ +include::attributes.conf[] + +TCK User's Guide for {TechnologyFullName}, Release {TechnologyVersion} for Jakarta EE +===================================================================================== + +[[eclipse-foundation]] +Eclipse Foundation +------------------ + +Technology Compatibility Kit User's Guide for {TechnologyFullName} + +Release {TechnologyVersion} for Jakarta EE + +{ReleaseDate} + +[[sthref1]] + +''''' + +Technology Compatibility Kit User's Guide for {TechnologyFullName}, +Release {TechnologyVersion} for Jakarta EE + +Copyright © {CopyrightDates} 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. + +SPDX-License-Identifier: EPL-2.0 + +Oracle and Java are registered trademarks of Oracle and/or its +affiliates. Other names may be trademarks of their respective owners. + +include::title.inc[] + + diff --git a/el/docs/userguide/src/main/jbake/content/title.inc b/el/docs/userguide/src/main/jbake/content/title.inc new file mode 100644 index 0000000000..25bf47e08d --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/title.inc @@ -0,0 +1,11 @@ +/////////////////////////////////////////////////////////////////////// +NOTE TO WRITERS: +This is included at the tail end of the Title page. +The following section should be customized for the technology. +This is provided to allow each technology to customize legacy acronym names +that are used in this TCK. +Be sure to customize LegacyAcronym in attributes.conf +Add additional lines as needed for acronyms found in your TCK user guide. +/////////////////////////////////////////////////////////////////////// + +References in this document to {LegacyAcronym} refer to the {TechnologyFullName} unless otherwise noted. diff --git a/el/docs/userguide/src/main/jbake/content/using-examples.inc b/el/docs/userguide/src/main/jbake/content/using-examples.inc new file mode 100644 index 0000000000..6207cedacf --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/using-examples.inc @@ -0,0 +1,50 @@ +/////////////////////////////////////////////////////////////////////// +NOTE TO WRITERS: +These CLI examples can be customized as necessary. +/////////////////////////////////////////////////////////////////////// + +Start the Junit tests using the following command: + +-- +[source,oac_no_warn] +---- +mvn verify +---- +-- + + +[[GCMCU]] + +Example 5-1 {TechnologyShortName} TCK Signature Tests + +To run the {TechnologyShortName} TCK signature tests, enter the +following commands: + +[source,subs="attributes"] +---- +mvn verify -Dit.test=com.sun.ts.tests.el.signaturetest.** +---- + +[[GCMBV]] + + +Example 5-2 Single Test Directory + +To run a single test directory, enter the following commands: + +[source,subs="attributes"] +---- +mvn verify -Dit.test={singleTestDirectoryExample}.** +---- + +[[GCMCA]] + + +Example 5-3 Subset of Test Directories + +To run a subset of test directories, enter the following commands: + +[source,subs="attributes"] +---- +mvn verify -Dit.test={subsetTestDirectoryExample}.** +---- diff --git a/el/docs/userguide/src/main/jbake/content/using.adoc b/el/docs/userguide/src/main/jbake/content/using.adoc new file mode 100644 index 0000000000..205a426d84 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/content/using.adoc @@ -0,0 +1,195 @@ +type=page +status=published +title=Executing Tests +next=debug.html +prev=config.html +~~~~~~ +include::attributes.conf[] +Executing Tests +=============== + +[[GBFWO]] + + +[[executing-tests]] +5 Executing Tests +----------------- + +The {TechnologyShortName} TCK uses the Junit and Jboss Arquillian +frameworks to execute the tests. + +This chapter includes the following topics: + +* link:#GBFUZ[Starting the tests] +* link:#GBFWM[Running a Subset of the Tests] +* link:#GCLRR[Running the TCK Against your selected CI] +* link:#GCLRZ[Running the TCK Against a Vendor's Implementation] +* link:#GBFVK[Test Reports] + + +[NOTE] +======================================================================= + +The instructions in this chapter assume that you have installed and +configured your test environment as described in +link:install.html#GBFTP[Chapter 3, "Installation,"] and +link:config.html#GBFVV[Chapter 4, "Setup and Configuration,"], +respectively. + +======================================================================= + +ifdef::rebuild[] +As explained in link:rebuild.html#GCLIZ[Appendix B, "Packaging the +Test Applications in Servlet-Compliant WAR +Files With VI-Specific Information,"] the {TechnologyShortName} TCK +introduces the concept of repackaging the TCK tests. +endif::rebuild[] + +[NOTE] +======================================================================= + +The Jakarta Expression Language TCK is not depended on any particular build tool to +run the tests. It will be convenient and advisable to create a +Apache Maven project to setup and run the TCK. This chapter will +henceforth use instructions and steps to provide setup with Apache +Maven as a build tool. + +======================================================================= + + + +[[GBFUZ]][[starting-javatest]] + +5.1 Starting the tests +~~~~~~~~~~~~~~~~~~~~~~ + +The {TechnologyShortName} TCK can be run from the command line +in your shell environment by executing the TCK jar. + + +[NOTE] +======================================================================= + +The `mvn` command referenced in the following +two procedures and elsewhere in this guide is the Apache Maven +build tool, which will need to be downloaded separately. + +======================================================================= + + + + +[[GBFVW]][[to-start-javatest-in-command-line-mode]] + +5.1.1 To Start Tests in Command-Line Mode +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +include::using-examples.inc[] + +[[GBFWM]][[running-a-subset-of-the-tests]] + +5.2 Running a Subset of the Tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Use the following modes to run a subset of the tests: + +* link:#GBFWK[Section 5.2.1, "To Run a Subset of Tests in Command-Line Mode"] + + +[[GBFWK]][[to-run-a-subset-of-tests-in-command-line-mode]] + +5.2.1 To Run a Subset of Tests in Command-Line Mode +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Start the test run by executing the following command: + + +[source,subs="attributes"] +---- +mvn verify -Dit.test={subsetTestDirectoryExample}.** +---- + +The tests in the directory and its subdirectories are run. + +[NOTE] +======================================================================= + +Currently there are no Junit test tags(groups) available in the TCK. + +======================================================================= + +[[GBFQA]][[to-run-a-group-of-tests-in-command-line-mode]] + +5.2.2 To Run a Group of Tests in Command-Line Mode +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Start the test run by executing the following command: + + +[source,subs="attributes"] +---- +mvn verify -Dgroups={groupsExample} +---- + +Only the tests in the group +{groupsExample}+ is run. +Multiple groups can be separated by comma. + + +[[GBFEP]][[to-exclude-a-group-of-tests-in-command-line-mode]] + +5.2.3 To Exclude a Group of Tests in Command-Line Mode +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Start the test run by executing the following command: + + +[source,subs="attributes"] +---- +mvn verify -DexcludedGroups={groupsExample} +---- + +The tests in the group +{groupsExample}+ is exclued from the run. +Multiple groups can be separated by comma. + +[[GCLRR]][[running-the-tck-against-the-ri]] + +5.3 Running the TCK Against another CI +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Some test scenarios are designed to ensure that the configuration and deployment of +all the prebuilt {TechnologyShortName} TCK tests against one Compatible +Implementation are successful operating with other compatible implementations, and that the TCK is ready for +compatibility testing against the Vendor and Compatible Implementations. + +1. Verify that you have followed the configuration instructions in +link:config.html#GBFVU[Section 4.1, "Configuring Your Environment to Run +the TCK Against the Compatible Implementation."] +2. If required, verify that you have completed the steps in +link:config.html#GCLIW[Section 4.3.2, "Deploying the Prebuilt Archives."] +3. Run the tests, as described in link:#GBFUZ[Section 5.1, "Starting +the tests,"] and, if desired, link:#GBFWM[Section 5.2, "Running a Subset +of the Tests."] + +[[GCLRZ]][[running-the-tck-against-a-vendors-implementation]] + +5.4 Running the TCK Against a Vendor's Implementation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This test scenario is one of the compatibility test phases that all +Vendors must pass. + +1. Verify that you have followed the configuration instructions in +link:config.html#GCLHU[Section 4.2, "Configuring Your Environment to +Repackage and Run the TCK Against the Vendor Implementation."] +2. If required, verify that you have completed the steps in +link:config.html#GCLIL[Section 4.3.3, "Deploying the +Test Applications Against the Vendor Implementation."] +3. Run the tests, as described in link:#GBFUZ[Section 5.1, "Starting +the tests,"] and, if desired, link:#GBFWM[Section 5.2, "Running a Subset +of the Tests."] + +[[GBFVK]][[test-reports]] + +5.5 Test Reports +~~~~~~~~~~~~~~~~ + +A set of report files is created for every test run. These report files +can be found in the target directory that the test is run. After a test run is +completed, the Junit framework writes reports for the test run. diff --git a/el/docs/userguide/src/main/jbake/content/using.inc b/el/docs/userguide/src/main/jbake/content/using.inc new file mode 100644 index 0000000000..e69de29bb2 diff --git a/el/docs/userguide/src/main/jbake/jbake.properties b/el/docs/userguide/src/main/jbake/jbake.properties new file mode 100644 index 0000000000..05c7056f0a --- /dev/null +++ b/el/docs/userguide/src/main/jbake/jbake.properties @@ -0,0 +1,24 @@ +# +# Copyright (c) 2021 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 +# + +site.host=http://jbake.org +render.tags=false +render.sitemap=false +render.archive=false +render.feed=false +render.index=false +asciidoctor.option.safe=0 +asciidoctor.attributes.export=true \ No newline at end of file diff --git a/el/docs/userguide/src/main/jbake/templates/footer.ftl b/el/docs/userguide/src/main/jbake/templates/footer.ftl new file mode 100644 index 0000000000..746cbf1ccd --- /dev/null +++ b/el/docs/userguide/src/main/jbake/templates/footer.ftl @@ -0,0 +1,44 @@ +<#-- a footer template fragment included in the page template --> +
+ + + + + + + + + <#if content.prev??> + + + + <#if content.next??> + + + + + +
+ + + Previous + + + + + Next + + + + + Contents + +
+ + + Eclipse Foundation Logo  + Copyright © 2017, 2021 Oracle and/or its affiliates. All rights reserved. + + + + diff --git a/el/docs/userguide/src/main/jbake/templates/header.ftl b/el/docs/userguide/src/main/jbake/templates/header.ftl new file mode 100644 index 0000000000..50b72ae8d0 --- /dev/null +++ b/el/docs/userguide/src/main/jbake/templates/header.ftl @@ -0,0 +1,54 @@ + +<#-- a header template fragment included in the page template --> + + + + <#if (content.title)??><#escape x as x?xml>${content.title}</#escape></#if> + + + + + + + + + +
+ ${content.title}
+
+
+ + + + + + + + + <#if content.prev??> + + + + <#if content.next??> + + + + + +
+ + + Previous + + + + + Next + + + + + Contents + +
+ diff --git a/el/docs/userguide/src/main/jbake/templates/menu.ftl b/el/docs/userguide/src/main/jbake/templates/menu.ftl new file mode 100644 index 0000000000..888c03dcff --- /dev/null +++ b/el/docs/userguide/src/main/jbake/templates/menu.ftl @@ -0,0 +1 @@ +<#-- a menu bar template fragment included in the page template --> \ No newline at end of file diff --git a/el/docs/userguide/src/main/jbake/templates/page.ftl b/el/docs/userguide/src/main/jbake/templates/page.ftl new file mode 100644 index 0000000000..eca51db35d --- /dev/null +++ b/el/docs/userguide/src/main/jbake/templates/page.ftl @@ -0,0 +1,8 @@ +<#-- a top level page layout template --> + +<#include "header.ftl"> +<#include "menu.ftl"> + +${content.body} + +<#include "footer.ftl"> \ No newline at end of file diff --git a/el/docs/userguide/src/theme/jakartaee-theme.yml b/el/docs/userguide/src/theme/jakartaee-theme.yml new file mode 100644 index 0000000000..6092a2f5c9 --- /dev/null +++ b/el/docs/userguide/src/theme/jakartaee-theme.yml @@ -0,0 +1,299 @@ +# +# Following is the asciidoctor-pdf default theme [1], with small +# customizations, mostly for header and footer, marked "EE". +# +# [1] https://github.com/asciidoctor/asciidoctor-pdf/blob/master/data/themes/default-theme.yml +# +font: + catalog: + # Noto Serif supports Latin, Latin-1 Supplement, Latin Extended-A, Greek, Cyrillic, Vietnamese & an assortment of symbols + Noto Serif: + normal: notoserif-regular-subset.ttf + bold: notoserif-bold-subset.ttf + italic: notoserif-italic-subset.ttf + bold_italic: notoserif-bold_italic-subset.ttf + # M+ 1mn supports ASCII and the circled numbers used for conums + M+ 1mn: + normal: mplus1mn-regular-ascii-conums.ttf + bold: mplus1mn-bold-ascii.ttf + italic: mplus1mn-italic-ascii.ttf + bold_italic: mplus1mn-bold_italic-ascii.ttf + # M+ 1p supports Latin, Latin-1 Supplement, Latin Extended, Greek, Cyrillic, Vietnamese, Japanese & an assortment of symbols + # It also provides arrows for ->, <-, => and <= replacements in case these glyphs are missing from font + M+ 1p Fallback: + normal: mplus1p-regular-fallback.ttf + bold: mplus1p-regular-fallback.ttf + italic: mplus1p-regular-fallback.ttf + bold_italic: mplus1p-regular-fallback.ttf + fallbacks: + - M+ 1p Fallback +page: + background_color: ffffff + layout: portrait + margin: [0.5in, 0.67in, 0.67in, 0.67in] + # margin_inner and margin_outer keys are used for recto/verso print margins when media=prepress + margin_inner: 0.75in + margin_outer: 0.59in + #size: A4 # EE + size: Letter # EE +base: + align: justify + # color as hex string (leading # is optional) + font_color: 333333 + # color as RGB array + #font_color: [51, 51, 51] + # color as CMYK array (approximated) + #font_color: [0, 0, 0, 0.92] + #font_color: [0, 0, 0, 92%] + font_family: Noto Serif + # choose one of these font_size/line_height_length combinations + #font_size: 14 + #line_height_length: 20 + #font_size: 11.25 + #line_height_length: 18 + #font_size: 11.2 + #line_height_length: 16 + font_size: 10.5 + #line_height_length: 15 + # correct line height for Noto Serif metrics + line_height_length: 12 + #font_size: 11.25 + #line_height_length: 18 + line_height: $base_line_height_length / $base_font_size + font_size_large: round($base_font_size * 1.25) + font_size_small: round($base_font_size * 0.85) + font_size_min: $base_font_size * 0.75 + font_style: normal + border_color: eeeeee + border_radius: 4 + border_width: 0.5 +# FIXME vertical_rhythm is weird; we should think in terms of ems +#vertical_rhythm: $base_line_height_length * 2 / 3 +# correct line height for Noto Serif metrics (comes with built-in line height) +vertical_rhythm: $base_line_height_length +horizontal_rhythm: $base_line_height_length +# QUESTION should vertical_spacing be block_spacing instead? +vertical_spacing: $vertical_rhythm +link: + font_color: 428bca +# literal is currently used for inline monospaced in prose and table cells +literal: + font_color: b12146 + font_family: M+ 1mn +menu_caret_content: " \u203a " +heading: + align: left + #font_color: 181818 + font_color: $base_font_color + font_family: $base_font_family + font_style: bold + # h1 is used for part titles (book doctype) or the doctitle (article doctype) + #h1_font_size: floor($base_font_size * 2.6) # EE + h1_font_size: floor($base_font_size * 2.5) # EE, squeeze title onto one line + # h2 is used for chapter titles (book doctype only) + h2_font_size: floor($base_font_size * 2.15) + h3_font_size: round($base_font_size * 1.7) + h4_font_size: $base_font_size_large + h5_font_size: $base_font_size + h6_font_size: $base_font_size_small + #line_height: 1.4 + # correct line height for Noto Serif metrics (comes with built-in line height) + line_height: 1 + margin_top: $vertical_rhythm * 0.4 + margin_bottom: $vertical_rhythm * 0.9 +title_page: + align: right + logo: + top: 10% + title: + top: 55% + font_size: $heading_h1_font_size + font_color: 999999 + line_height: 0.9 + subtitle: + font_size: $heading_h3_font_size + font_style: bold_italic + line_height: 1 + authors: + margin_top: $base_font_size * 1.25 + font_size: $base_font_size_large + font_color: 181818 + revision: + margin_top: $base_font_size * 1.25 +block: + margin_top: 0 + margin_bottom: $vertical_rhythm +caption: + align: left + font_size: $base_font_size * 0.95 + font_style: italic + # FIXME perhaps set line_height instead of / in addition to margins? + margin_inside: $vertical_rhythm / 3 + #margin_inside: $vertical_rhythm / 4 + margin_outside: 0 +lead: + font_size: $base_font_size_large + line_height: 1.4 +abstract: + font_color: 5c6266 + font_size: $lead_font_size + line_height: $lead_line_height + font_style: italic + first_line_font_style: bold + title: + align: center + font_color: $heading_font_color + font_family: $heading_font_family + font_size: $heading_h4_font_size + font_style: $heading_font_style +admonition: + column_rule_color: $base_border_color + column_rule_width: $base_border_width + padding: [0, $horizontal_rhythm, 0, $horizontal_rhythm] + #icon: + # tip: + # name: fa-lightbulb-o + # stroke_color: 111111 + # size: 24 + label: + text_transform: uppercase + font_style: bold +blockquote: + font_color: $base_font_color + font_size: $base_font_size_large + border_color: $base_border_color + border_width: 5 + # FIXME disable negative padding bottom once margin collapsing is implemented + padding: [0, $horizontal_rhythm, $block_margin_bottom * -0.75, $horizontal_rhythm + $blockquote_border_width / 2] + cite_font_size: $base_font_size_small + cite_font_color: 999999 +# code is used for source blocks (perhaps change to source or listing?) +code: + font_color: $base_font_color + font_family: $literal_font_family + font_size: ceil($base_font_size) + padding: $code_font_size + line_height: 1.25 + # line_gap is an experimental property to control how a background color is applied to an inline block element + line_gap: 3.8 + background_color: f5f5f5 + border_color: cccccc + border_radius: $base_border_radius + border_width: 0.75 +conum: + font_family: M+ 1mn + font_color: $literal_font_color + font_size: $base_font_size + line_height: 4 / 3 +example: + border_color: $base_border_color + border_radius: $base_border_radius + border_width: 0.75 + background_color: ffffff + # FIXME reenable padding bottom once margin collapsing is implemented + padding: [$vertical_rhythm, $horizontal_rhythm, 0, $horizontal_rhythm] +image: + align: left +prose: + margin_top: $block_margin_top + margin_bottom: $block_margin_bottom +sidebar: + background_color: eeeeee + border_color: e1e1e1 + border_radius: $base_border_radius + border_width: $base_border_width + # FIXME reenable padding bottom once margin collapsing is implemented + padding: [$vertical_rhythm, $vertical_rhythm * 1.25, 0, $vertical_rhythm * 1.25] + title: + align: center + font_color: $heading_font_color + font_family: $heading_font_family + font_size: $heading_h4_font_size + font_style: $heading_font_style +thematic_break: + border_color: $base_border_color + border_style: solid + border_width: $base_border_width + margin_top: $vertical_rhythm * 0.5 + margin_bottom: $vertical_rhythm * 1.5 +description_list: + term_font_style: bold + term_spacing: $vertical_rhythm / 4 + description_indent: $horizontal_rhythm * 1.25 +outline_list: + indent: $horizontal_rhythm * 1.5 + #marker_font_color: 404040 + # NOTE outline_list_item_spacing applies to list items that do not have complex content + item_spacing: $vertical_rhythm / 2 +table: + background_color: $page_background_color + #head_background_color: + #head_font_color: $base_font_color + head_font_style: bold + #body_background_color: + body_stripe_background_color: f9f9f9 + foot_background_color: f0f0f0 + border_color: dddddd + border_width: $base_border_width + cell_padding: 3 +toc: + indent: $horizontal_rhythm + line_height: 1.4 + dot_leader: + #content: ". " + font_color: a9a9a9 + #levels: 2 3 +# NOTE in addition to footer, header is also supported +footer: + font_size: $base_font_size_small + # NOTE if background_color is set, background and border will span width of page + #border_color: dddddd # EE + #border_width: 0.25 # EE + height: $base_line_height_length * 2.5 + line_height: 1 + padding: [$base_line_height_length / 2, 1, 0, 1] + vertical_align: top + #image_vertical_align: or + # additional attributes for content: + # * {page-count} + # * {page-number} + # * {document-title} + # * {document-subtitle} + # * {chapter-title} + # * {section-title} + # * {section-or-chapter-title} + recto: + #columns: "<50% =0% >50%" + right: + #content: '{page-number}' # EE + #content: '{section-or-chapter-title} | {page-number}' + #content: '{document-title} | {page-number}' + content: '{document-title}{nbsp}{nbsp}{nbsp} *{page-number}*' # EE + #center: + # content: '{page-number}' + left: # EE + content: '{status}' # EE + verso: + #columns: $footer_recto_columns + left: + #content: $footer_recto_right_content # EE + #content: '{page-number} | {chapter-title}' + content: '*{page-number}* {nbsp}{nbsp}{nbsp}{document-title}' # EE + #center: + # content: '{page-number}' + right: # EE + content: '{status}' # EE +header: # EE + font_size: $base_font_size_small # EE + border_color: dddddd # EE + border_width: 0.25 # EE + height: $base_line_height_length * 2.5 # EE + line_height: 1 # EE + padding: [$base_line_height_length / 2, 1, 0, 1] # EE + vertical_align: top # EE + recto: # EE + right: # EE + content: '{section-or-chapter-title}' # EE + verso: # EE + left: # EE + content: '{section-or-chapter-title}' # EE diff --git a/el/pom.xml b/el/pom.xml index 51faf6ca55..9f2e4369e1 100644 --- a/el/pom.xml +++ b/el/pom.xml @@ -26,7 +26,8 @@ 10.0.0-SNAPSHOT - el-tck + jakarta-expression-language-tck + 6.0.0-SNAPSHOT jar el-tck @@ -36,14 +37,22 @@ ${project.groupId} libutil + ${project.parent.version} + + + ${project.groupId} + runtime + ${project.parent.version} ${project.groupId} common + ${project.parent.version} jakarta.el jakarta.el-api + ${jakarta.el-api.version} org.junit.jupiter @@ -52,4 +61,78 @@ + + ${bundle-name}-${project.version} + + + src/main/resources + + LICENSE_${license}.md + + + + + + maven-javadoc-plugin + + none + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.3.0 + + + distribution + + single + + package + + + src/main/assembly/assembly.xml + + \ + false + ${bundle-name}-${project.version} + + + + + + + + + + EFTL + + true + + + jakarta-expression-language-tck + EFTL + + + + EPL + + expression-language-tck + EPL + + + + diff --git a/el/src/main/assembly/assembly.xml b/el/src/main/assembly/assembly.xml new file mode 100644 index 0000000000..b9bb120b97 --- /dev/null +++ b/el/src/main/assembly/assembly.xml @@ -0,0 +1,73 @@ + + + + + distribution + el-tck + + zip + + + + + + ${project.basedir}/src/main/resources/LICENSE_${license}.md + LICENSE.md + + + + + ${project.build.directory} + artifacts + 755 + + **/*.jar + + + + ${project.basedir}/docs + docs + 755 + + assertions + *.html + *.txt + + + + ${project.basedir}/docs/userguide/target/generated-docs + docs/pdf-usersguide + 755 + + *.pdf + + + + ${project.basedir}/docs/userguide/target/staging + docs/html-usersguide + 755 + + *.html + css/** + img/** + + + + diff --git a/el/src/main/resources/LICENSE_EFTL.md b/el/src/main/resources/LICENSE_EFTL.md new file mode 100644 index 0000000000..a2106828a6 --- /dev/null +++ b/el/src/main/resources/LICENSE_EFTL.md @@ -0,0 +1,83 @@ +# Eclipse Foundation Technology Compatibility Kit License - v 1.0 + +Copyright (c) 2018, Eclipse Foundation, Inc. and its licensors. + +Redistribution and use in binary form is permitted provided that the +following conditions are met: + +1. Use of the Technology Compatibility Kit accompanying this license + (the "TCK") and its documentation is permitted solely for the + purpose of testing compatibility of an implementation (the + "Product") of a specification (the "Specification") made available + by the Eclipse Foundation, Inc. ("Eclipse"). + +2. Only those modifications expressly permitted by the TCK and its + documentation are permitted. Except in these limited circumstances, + no modifications to the TCK are permitted under this license. + +3. A Product will be deemed to be "compatible" with the Specification + if it fully and completely meets and satisfies all requirements of + the TCK. + +4. Before any claim of compatibility (or any similar claim suggesting + compatibility) is made based on the TCK, the testing party must: + + a. use the TCK to demonstrate that the Product fully and + completely meets and satisfies all requirements of the TCK; + + b. make TCK test results showing full and complete satisfaction of + all requirements of the TCK publicly available on the testing + party's website and send a link to such test results to Eclipse + at [tck@eclipse.org](mailto:tck@eclipse.org); and + + c. comply with any requirements stated in the Specification with + regard to subsetting, supersetting, modifying or extending the + Specification in any Product claimed to be compatible with the + Specification. + +5. The test results must be continuously available and the link must + be live for at least as long as the Product is available in the + marketplace. + +6. The TCK may not be used as a basis for any statements of partial + compatibility. The TCK may only be used as a basis for true, + factual statements of full compatibility of Products that fully + meet and satisfy all requirements of the TCK. + +7. A determination that a Product is compatible with the TCK does not, + in itself, give rise to the right to use any name, mark, logo + associated with the TCK, Eclipse, or Eclipse's contributors or + licensors. + +8. Upon the request of Eclipse, a tester will retract any statements + of compatibility (or any similar claim suggesting compatibility) + which Eclipse reasonably determines to be false or misleading or in + violation of the terms of this license. + +9. Redistribution of the TCK must be under this Eclipse Foundation + Technology Compatibility Kit License and must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + +10. Neither the name, trademarks or logos of Eclipse, nor the names, + trademarks or logos of its contributors or licensors may be used to + endorse or promote products tested with this software without + specific prior written permission. + +11. The source code for the TCK accompanying this license is available + from Eclipse. + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED ON +AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER +EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR +CONDITIONS OF TITLE, NON- INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR +A PARTICULAR PURPOSE. TO THE EXTENT PERMITTED BY APPLICABLE LAW, +NEITHER THE COPYRIGHT OWNER OR ANY CONTRIBUTORS SHALL HAVE ANY +LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. diff --git a/el/src/main/resources/LICENSE_EPL.md b/el/src/main/resources/LICENSE_EPL.md new file mode 100644 index 0000000000..1d428edaa0 --- /dev/null +++ b/el/src/main/resources/LICENSE_EPL.md @@ -0,0 +1,637 @@ +# Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + + 1. DEFINITIONS + + "Contribution" means: + + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. + + "Contributor" means any person or entity that Distributes the Program. + + "Licensed Patents" mean patent claims licensable by a Contributor which + are necessarily infringed by the use or sale of its Contribution alone + or when combined with the Program. + + "Program" means the Contributions Distributed in accordance with this + Agreement. + + "Recipient" means anyone who receives the Program under this Agreement + or any Secondary License (as applicable), including Contributors. + + "Derivative Works" shall mean any work, whether in Source Code or other + form, that is based on (or derived from) the Program and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. + + "Modified Works" shall mean any work in Source Code or other form that + results from an addition to, deletion from, or modification of the + contents of the Program, including, for purposes of clarity any new file + in Source Code form that contains any contents of the Program. Modified + Works shall not include works that contain only declarations, + interfaces, types, classes, structures, or files of the Program solely + in each case in order to link to, bind by name, or subclass the Program + or Modified Works thereof. + + "Distribute" means the acts of a) distributing or b) making available + in any manner that enables the transfer of a copy. + + "Source Code" means the form of a Program preferred for making + modifications, including but not limited to software source code, + documentation source, and configuration files. + + "Secondary License" means either the GNU General Public License, + Version 2.0, or any later versions of that license, including any + exceptions or additional permissions as identified by the initial + Contributor. + + 2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). + + 3. REQUIREMENTS + + 3.1 If a Contributor Distributes the Program in any form, then: + + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + + 3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + + 3.3 Contributors may not remove or alter any copyright, patent, + trademark, attribution notices, disclaimers of warranty, or limitations + of liability ("notices") contained within the Program from any copy of + the Program which they Distribute, provided that Contributors may add + their own appropriate notices. + + 4. COMMERCIAL DISTRIBUTION + + Commercial distributors of software may accept certain responsibilities + with respect to end users, business partners and the like. While this + license is intended to facilitate the commercial use of the Program, + the Contributor who includes the Program in a commercial product + offering should do so in a manner which does not create potential + liability for other Contributors. Therefore, if a Contributor includes + the Program in a commercial product offering, such Contributor + ("Commercial Contributor") hereby agrees to defend and indemnify every + other Contributor ("Indemnified Contributor") against any losses, + damages and costs (collectively "Losses") arising from claims, lawsuits + and other legal actions brought by a third party against the Indemnified + Contributor to the extent caused by the acts or omissions of such + Commercial Contributor in connection with its distribution of the Program + in a commercial product offering. The obligations in this section do not + apply to any claims or Losses relating to any actual or alleged + intellectual property infringement. In order to qualify, an Indemnified + Contributor must: a) promptly notify the Commercial Contributor in + writing of such claim, and b) allow the Commercial Contributor to control, + and cooperate with the Commercial Contributor in, the defense and any + related settlement negotiations. The Indemnified Contributor may + participate in any such claim at its own expense. + + For example, a Contributor might include the Program in a commercial + product offering, Product X. That Contributor is then a Commercial + Contributor. If that Commercial Contributor then makes performance + claims, or offers warranties related to Product X, those performance + claims and warranties are such Commercial Contributor's responsibility + alone. Under this section, the Commercial Contributor would have to + defend claims against the other Contributors related to those performance + claims and warranties, and if a court requires any other Contributor to + pay any damages as a result, the Commercial Contributor must pay + those damages. + + 5. NO WARRANTY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT + PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR + IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF + TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR + PURPOSE. Each Recipient is solely responsible for determining the + appropriateness of using and distributing the Program and assumes all + risks associated with its exercise of rights under this Agreement, + including but not limited to the risks and costs of program errors, + compliance with applicable laws, damage to or loss of data, programs + or equipment, and unavailability or interruption of operations. + + 6. DISCLAIMER OF LIABILITY + + EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT + PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS + SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST + PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE + EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGES. + + 7. GENERAL + + If any provision of this Agreement is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this Agreement, and without further + action by the parties hereto, such provision shall be reformed to the + minimum extent necessary to make such provision valid and enforceable. + + If Recipient institutes patent litigation against any entity + (including a cross-claim or counterclaim in a lawsuit) alleging that the + Program itself (excluding combinations of the Program with other software + or hardware) infringes such Recipient's patent(s), then such Recipient's + rights granted under Section 2(b) shall terminate as of the date such + litigation is filed. + + All Recipient's rights under this Agreement shall terminate if it + fails to comply with any of the material terms or conditions of this + Agreement and does not cure such failure in a reasonable period of + time after becoming aware of such noncompliance. If all Recipient's + rights under this Agreement terminate, Recipient agrees to cease use + and distribution of the Program as soon as reasonably practicable. + However, Recipient's obligations under this Agreement and any licenses + granted by Recipient relating to the Program shall continue and survive. + + Everyone is permitted to copy and distribute copies of this Agreement, + but in order to avoid inconsistency the Agreement is copyrighted and + may only be modified in the following manner. The Agreement Steward + reserves the right to publish new versions (including revisions) of + this Agreement from time to time. No one other than the Agreement + Steward has the right to modify this Agreement. The Eclipse Foundation + is the initial Agreement Steward. The Eclipse Foundation may assign the + responsibility to serve as the Agreement Steward to a suitable separate + entity. Each new version of the Agreement will be given a distinguishing + version number. The Program (including Contributions) may always be + Distributed subject to the version of the Agreement under which it was + received. In addition, after a new version of the Agreement is published, + Contributor may elect to Distribute the Program (including its + Contributions) under the new version. + + Except as expressly stated in Sections 2(a) and 2(b) above, Recipient + receives no rights or licenses to the intellectual property of any + Contributor under this Agreement, whether expressly, by implication, + estoppel or otherwise. All rights in the Program not expressly granted + under this Agreement are reserved. Nothing in this Agreement is intended + to be enforceable by any entity that is not a Contributor or Recipient. + No third-party beneficiary rights are created under this Agreement. + + Exhibit A - Form of Secondary Licenses Notice + + "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: {name license(s), + version(s), and exceptions or additional permissions here}." + + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. + + You may add additional accurate notices of copyright ownership. + +--- + +## The GNU General Public License (GPL) Version 2, June 1991 + + Copyright (C) 1989, 2022 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor + Boston, MA 02110-1335 + USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your freedom to + share and change it. By contrast, the GNU General Public License is + intended to guarantee your freedom to share and change free software--to + make sure the software is free for all its users. This General Public + License applies to most of the Free Software Foundation's software and + to any other program whose authors commit to using it. (Some other Free + Software Foundation software is covered by the GNU Library General + Public License instead.) You can apply it to your programs, too. + + When we speak of free software, we are referring to freedom, not price. + Our General Public Licenses are designed to make sure that you have the + freedom to distribute copies of free software (and charge for this + service if you wish), that you receive source code or can get it if you + want it, that you can change the software or use pieces of it in new + free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid anyone + to deny you these rights or to ask you to surrender the rights. These + restrictions translate to certain responsibilities for you if you + distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether gratis + or for a fee, you must give the recipients all the rights that you have. + You must make sure that they, too, receive or can get the source code. + And you must show them these terms so they know their rights. + + We protect your rights with two steps: (1) copyright the software, and + (2) offer you this license which gives you legal permission to copy, + distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain + that everyone understands that there is no warranty for this free + software. If the software is modified by someone else and passed on, we + want its recipients to know that what they have is not the original, so + that any problems introduced by others will not reflect on the original + authors' reputations. + + Finally, any free program is threatened constantly by software patents. + We wish to avoid the danger that redistributors of a free program will + individually obtain patent licenses, in effect making the program + proprietary. To prevent this, we have made it clear that any patent must + be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and + modification follow. + + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains a + notice placed by the copyright holder saying it may be distributed under + the terms of this General Public License. The "Program", below, refers + to any such program or work, and a "work based on the Program" means + either the Program or any derivative work under copyright law: that is + to say, a work containing the Program or a portion of it, either + verbatim or with modifications and/or translated into another language. + (Hereinafter, translation is included without limitation in the term + "modification".) Each licensee is addressed as "you". + + Activities other than copying, distribution and modification are not + covered by this License; they are outside its scope. The act of running + the Program is not restricted, and the output from the Program is + covered only if its contents constitute a work based on the Program + (independent of having been made by running the Program). Whether that + is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's source + code as you receive it, in any medium, provided that you conspicuously + and appropriately publish on each copy an appropriate copyright notice + and disclaimer of warranty; keep intact all the notices that refer to + this License and to the absence of any warranty; and give any other + recipients of the Program a copy of this License along with the Program. + + You may charge a fee for the physical act of transferring a copy, and + you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion of + it, thus forming a work based on the Program, and copy and distribute + such modifications or work under the terms of Section 1 above, provided + that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any part + thereof, to be licensed as a whole at no charge to all third parties + under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a notice + that there is no warranty (or else, saying that you provide a + warranty) and that users may redistribute the program under these + conditions, and telling the user how to view a copy of this License. + (Exception: if the Program itself is interactive but does not + normally print such an announcement, your work based on the Program + is not required to print an announcement.) + + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Program, and + can be reasonably considered independent and separate works in + themselves, then this License, and its terms, do not apply to those + sections when you distribute them as separate works. But when you + distribute the same sections as part of a whole which is a work based on + the Program, the distribution of the whole must be on the terms of this + License, whose permissions for other licensees extend to the entire + whole, and thus to each and every part regardless of who wrote it. + + Thus, it is not the intent of this section to claim rights or contest + your rights to work written entirely by you; rather, the intent is to + exercise the right to control the distribution of derivative or + collective works based on the Program. + + In addition, mere aggregation of another work not based on the Program + with the Program (or with a work based on the Program) on a volume of a + storage or distribution medium does not bring the other work under the + scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, + under Section 2) in object code or executable form under the terms of + Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections 1 + and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your cost + of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer to + distribute corresponding source code. (This alternative is allowed + only for noncommercial distribution and only if you received the + program in object code or executable form with such an offer, in + accord with Subsection b above.) + + The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete source code + means all the source code for all modules it contains, plus any + associated interface definition files, plus the scripts used to control + compilation and installation of the executable. However, as a special + exception, the source code distributed need not include anything that is + normally distributed (in either source or binary form) with the major + components (compiler, kernel, and so on) of the operating system on + which the executable runs, unless that component itself accompanies the + executable. + + If distribution of executable or object code is made by offering access + to copy from a designated place, then offering equivalent access to copy + the source code from the same place counts as distribution of the source + code, even though third parties are not compelled to copy the source + along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt otherwise + to copy, modify, sublicense or distribute the Program is void, and will + automatically terminate your rights under this License. However, parties + who have received copies, or rights, from you under this License will + not have their licenses terminated so long as such parties remain in + full compliance. + + 5. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify or + distribute the Program or its derivative works. These actions are + prohibited by law if you do not accept this License. Therefore, by + modifying or distributing the Program (or any work based on the + Program), you indicate your acceptance of this License to do so, and all + its terms and conditions for copying, distributing or modifying the + Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program subject to + these terms and conditions. You may not impose any further restrictions + on the recipients' exercise of the rights granted herein. You are not + responsible for enforcing compliance by third parties to this License. + + 7. If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent issues), + conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot distribute + so as to satisfy simultaneously your obligations under this License and + any other pertinent obligations, then as a consequence you may not + distribute the Program at all. For example, if a patent license would + not permit royalty-free redistribution of the Program by all those who + receive copies directly or indirectly through you, then the only way you + could satisfy both it and this License would be to refrain entirely from + distribution of the Program. + + If any portion of this section is held invalid or unenforceable under + any particular circumstance, the balance of the section is intended to + apply and the section as a whole is intended to apply in other + circumstances. + + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of any + such claims; this section has the sole purpose of protecting the + integrity of the free software distribution system, which is implemented + by public license practices. Many people have made generous + contributions to the wide range of software distributed through that + system in reliance on consistent application of that system; it is up to + the author/donor to decide if he or she is willing to distribute + software through any other system and a licensee cannot impose that choice. + + This section is intended to make thoroughly clear what is believed to be + a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Program under this License may + add an explicit geographical distribution limitation excluding those + countries, so that distribution is permitted only in or among countries + not thus excluded. In such case, this License incorporates the + limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new + versions of the General Public License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the Program + specifies a version number of this License which applies to it and "any + later version", you have the option of following the terms and + conditions either of that version or of any later version published by + the Free Software Foundation. If the Program does not specify a version + number of this License, you may choose any version ever published by the + Free Software Foundation. + + 10. If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the + author to ask for permission. For software which is copyrighted by the + Free Software Foundation, write to the Free Software Foundation; we + sometimes make exceptions for this. Our decision will be guided by the + two goals of preserving the free status of all derivatives of our free + software and of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO + WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. + EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR + OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, + EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE + ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH + YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL + NECESSARY SERVICING, REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY + AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR + DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL + DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM + (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED + INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF + THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR + OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest to + attach them to the start of each source file to most effectively convey + the exclusion of warranty; and each file should have at least the + "copyright" line and a pointer to where the full notice is found. + + One line to give the program's name and a brief idea of what it does. + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA + + Also add information on how to contact you by electronic and paper mail. + + If the program is interactive, make it output a short notice like this + when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type + `show w'. This is free software, and you are welcome to redistribute + it under certain conditions; type `show c' for details. + + The hypothetical commands `show w' and `show c' should show the + appropriate parts of the General Public License. Of course, the commands + you use may be called something other than `show w' and `show c'; they + could even be mouse-clicks or menu items--whatever suits your program. + + You should also get your employer (if you work as a programmer) or your + school, if any, to sign a "copyright disclaimer" for the program, if + necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + program `Gnomovision' (which makes passes at compilers) written by + James Hacker. + + signature of Ty Coon, 1 April 1989 + Ty Coon, President of Vice + + This General Public License does not permit incorporating your program + into proprietary programs. If your program is a subroutine library, you + may consider it more useful to permit linking proprietary applications + with the library. If this is what you want to do, use the GNU Library + General Public License instead of this License. + +--- + +## CLASSPATH EXCEPTION + + Linking this library statically or dynamically with other modules is + making a combined work based on this library. Thus, the terms and + conditions of the GNU General Public License version 2 cover the whole + combination. + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent + modules, and to copy and distribute the resulting executable under + terms of your choice, provided that you also meet, for each linked + independent module, the terms and conditions of the license of that + module. An independent module is a module which is not derived from or + based on this library. If you modify this library, you may extend this + exception to your version of the library, but you are not obligated to + do so. If you do not wish to do so, delete this exception statement + from your version. diff --git a/glassfish-runner/el-tck/pom.xml b/glassfish-runner/el-tck/pom.xml index 7b49c644ab..9202f76288 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 - el-tck - 5.0.0 + 5.9.1 + jakarta-expression-language-tck + 6.0.0 @@ -45,7 +46,6 @@ - org.junit.jupiter @@ -54,8 +54,8 @@ jakartatck - el-tck - 10.0.0-SNAPSHOT + jakarta-expression-language-tck + 6.0.0-SNAPSHOT org.glassfish.main.common @@ -64,24 +64,6 @@ - - - full - - true - - - glassfish - - - - web - - web - - - - @@ -91,10 +73,10 @@ unpack - pre-integration-test unpack + pre-integration-test @@ -111,16 +93,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 +111,11 @@ - StartDomain1 - pre-integration-test + 2-StartDomain1 exec + pre-integration-test ${project.build.directory}/${glassfish.toplevel.dir}/glassfish/bin/asadmin @@ -142,11 +124,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 +138,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 +158,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 +176,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 +196,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 +214,11 @@ - list users - pre-integration-test + 8-list users exec + pre-integration-test ${project.build.directory}/${glassfish.toplevel.dir}/glassfish/bin/asadmin @@ -245,11 +227,11 @@ - StopDomain - pre-integration-test + 9-StopDomain exec + pre-integration-test ${project.build.directory}/${glassfish.toplevel.dir}/glassfish/bin/asadmin @@ -274,7 +256,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:jakarta-expression-language-tck ${project.build.directory}/${glassfish.toplevel.dir} localhost @@ -299,4 +281,22 @@ - \ No newline at end of file + + + + full + + true + + + glassfish + + + + web + + web + + + +