Package jakarta.el

Class OptionalELResolver

java.lang.Object
jakarta.el.ELResolver
jakarta.el.OptionalELResolver

public class OptionalELResolver extends ELResolver
Defines property resolution behaviour on Optionals.

This resolver handles base objects that are instances of Optional.

If the Optional.isEmpty() is true for the base object and the property is null then the resulting value is null.

If the Optional.isEmpty() is true for the base object and the property is not null then the resulting value is the base object (an empty Optional).

If the Optional.isPresent() is true for the base object and the property is null then the resulting value is the result of calling Optional.get() on the base object.

If the Optional.isPresent() is true for the base object and the property is not null then the resulting value is the result of calling ELResolver.getValue(ELContext, Object, Object) using the ELResolver obtained from ELContext.getELResolver() with the following parameters:

  • The ELContext is the current context
  • The base object is the result of calling Optional.get() on the current base object
  • The property object is the current property object

This resolver is always a read-only resolver.

  • Constructor Details

    • OptionalELResolver

      public OptionalELResolver()
  • Method Details

    • getValue

      public Object getValue(ELContext context, Object base, Object property)
      Description copied from class: ELResolver
      Obtain the value of the given property on the given object using the given context.
      Specified by:
      getValue in class ELResolver
      Parameters:
      context - The EL context for this evaluation
      base - The base object on which the property is to be found
      property - The property whose value is to be returned
      Returns:
      the value of the provided property
    • getType

      public Class<?> getType(ELContext context, Object base, Object property)
      Obtain the most generally acceptable type that may be used to set the given property on the given object using the given context.

      If the base object is an Optional this method always returns null since instances of this resolver are always read-only.

      Specified by:
      getType in class ELResolver
      Parameters:
      context - The EL context for this evaluation
      base - The base object on which the property is to be found
      property - The property whose type is to be returned
      Returns:
      the most general type that maybe used to set the provided property or null if the resolver is read-only.
    • setValue

      public void setValue(ELContext context, Object base, Object property, Object value)
      Set the value of the given property on the given object using the given context.

      If the base object is an Optional this method always throws a PropertyNotWritableException since instances of this resolver are always read-only.

      Specified by:
      setValue in class ELResolver
      Parameters:
      context - The EL context for this evaluation
      base - The base object on which the property is to be found
      property - The property whose value is to be set
      value - The value to set the property to
    • isReadOnly

      public boolean isReadOnly(ELContext context, Object base, Object property)
      Determine if the given property on the given object is read-only using the given context.

      If the base object is an Optional this method always returns true since instances of this resolver are always read-only.

      Specified by:
      isReadOnly in class ELResolver
      Parameters:
      context - The EL context for this evaluation
      base - The base object on which the property is to be found
      property - The property to be checked for read only status
      Returns:
      true if the identified property is read only, otherwise false
    • getCommonPropertyType

      public Class<?> getCommonPropertyType(ELContext context, Object base)
      Obtain the most common type that is acceptable for the given base object.

      If the base object is an Optional this method always returns Object.class.

      Specified by:
      getCommonPropertyType in class ELResolver
      Parameters:
      context - The context in which the examination takes place
      base - The object to examine
      Returns:
      {code null} if the most common type cannot be determine, otherwise the most common type
    • convertToType

      public <T> T convertToType(ELContext context, Object obj, Class<T> type)
      Description copied from class: ELResolver
      Converts the given object to the given type. This default implementation always returns null.
      Overrides:
      convertToType in class ELResolver
      Type Parameters:
      T - The type to which the object should be converted
      Parameters:
      context - The EL context for this evaluation
      obj - The object to convert
      type - The type to which the object should be converted
      Returns:
      Always null