Class ELResolverChain

java.lang.Object
jakarta.el.ELResolver
jakarta.el.CompositeELResolver
io.micronaut.el.resolver.ELResolverChain

public final class ELResolverChain extends jakarta.el.CompositeELResolver
A CompositeELResolver that only consults, for an operation a resolver does not have to implement, the resolvers that implement it.

ELResolver.convertToType(ELContext, Object, Class) and ELResolver.invoke(ELContext, Object, Object, Class[], Object[]) have a default implementation that resolves nothing, and none of the resolvers of the specification overrides the former. The composite of the specification still asks every resolver on every coercion, which is the single largest cost of evaluating a compiled expression: the result of every value expression is coerced to its expected type. This composite records, when a resolver is added, whether its class overrides each of the two methods, and iterates only the resolvers that do. The semantics are the ones of CompositeELResolver: the resolvers are consulted in order until one sets propertyResolved.

Since:
1.0
Author:
Denis Stepanov
  • Constructor Summary

    Constructors
    Constructor
    Description
    ELResolverChain(jakarta.el.ELResolver... resolvers)
    Creates a chain of the given resolvers, in order.
    ELResolverChain(List<? extends jakarta.el.ELResolver> resolvers)
    Creates a chain of the given resolvers, in order.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    add(jakarta.el.ELResolver elResolver)
     
    boolean
     
    <T> @Nullable T
    convertToType(jakarta.el.ELContext context, @Nullable Object obj, @Nullable Class<T> targetType)
     
    @Nullable Object
    getValue(jakarta.el.ELContext context, @Nullable Object base, @Nullable Object property)
     
    @Nullable Object
    invoke(jakarta.el.ELContext context, @Nullable Object base, @Nullable Object method, Class<?> @Nullable [] paramTypes, @Nullable Object[] params)
     

    Methods inherited from class jakarta.el.CompositeELResolver

    getCommonPropertyType, getType, isReadOnly, setValue

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ELResolverChain

      public ELResolverChain(jakarta.el.ELResolver... resolvers)
      Creates a chain of the given resolvers, in order.
      Parameters:
      resolvers - The resolvers
    • ELResolverChain

      public ELResolverChain(List<? extends jakarta.el.ELResolver> resolvers)
      Creates a chain of the given resolvers, in order.
      Parameters:
      resolvers - The resolvers
  • Method Details

    • add

      public void add(jakarta.el.ELResolver elResolver)
      Overrides:
      add in class jakarta.el.CompositeELResolver
    • converts

      public boolean converts()
      Returns:
      Whether any of the resolvers implements ELResolver.convertToType(ELContext, Object, Class)
    • getValue

      public @Nullable Object getValue(jakarta.el.ELContext context, @Nullable Object base, @Nullable Object property)
      Overrides:
      getValue in class jakarta.el.CompositeELResolver
    • convertToType

      public <T> @Nullable T convertToType(jakarta.el.ELContext context, @Nullable Object obj, @Nullable Class<T> targetType)
      Overrides:
      convertToType in class jakarta.el.CompositeELResolver
    • invoke

      public @Nullable Object invoke(jakarta.el.ELContext context, @Nullable Object base, @Nullable Object method, Class<?> @Nullable [] paramTypes, @Nullable Object[] params)
      Overrides:
      invoke in class jakarta.el.CompositeELResolver