Class BeanELResolver

java.lang.Object
org.flowable.common.engine.impl.javax.el.ELResolver
org.flowable.common.engine.impl.javax.el.BeanELResolver

public class BeanELResolver extends ELResolver
Defines property resolution behavior on objects using the JavaBeans component architecture.

If the java.beans.* package is available (part of the java.desktop module) the JavaBeans implementation provided by the JRE is used. If the java.beans.* package is not available, a built-in stand-alone implementation is used that just provides getter/setter support (as everything else requires classes from java.beans.*).

This resolver handles base objects of any type, as long as the base is not null. It accepts any object as a property or method, and coerces it to a string.

For property resolution, the property string is used to find a JavaBeans compliant property on the base object. The value is accessed using JavaBeans getters and setters.

For method resolution, the method string is the name of the method in the bean. The parameter types can be optionally specified to identify the method. If the parameter types are not specified, the parameter objects are used in the method resolution.

The JavaBeans specification predates the introduction of default method implementations defined on an interface. In addition to the JavaBeans specification requirements for looking up property getters, property setters and methods, this resolver also considers default methods and includes them in the results.

The JavaBeans specification predates the introduction of Modules. In addition to the JavaBeans specification requirements for looking up property getters, property setters and methods, this resolver also considers module visibility.

This resolver can be constructed in read-only mode, which means that isReadOnly(ELContext, Object, Object) will always return true and setValue(ELContext, Object, Object, Object) will always throw PropertyNotWritableException.

ELResolvers are combined together using CompositeELResolvers, to define rich semantics for evaluating an expression. See the javadocs for ELResolver for details.

Because this resolver handles base objects of any type, it should be placed near the end of a composite resolver. Otherwise, it will claim to have resolved a property before any resolvers that come after it get a chance to test if they can do so as well.

Since:
2.1
See Also:
  • Constructor Details

    • BeanELResolver

      public BeanELResolver()
      Creates a writable instance of the standard JavaBean resolver.
    • BeanELResolver

      public BeanELResolver(boolean readOnly)
      Creates an instance of the standard JavaBean resolver.
      Parameters:
      readOnly - true if the created instance should be read-only otherwise false.
  • Method Details

    • getType

      public Class<?> getType(ELContext context, Object base, Object property)
      Description copied from class: ELResolver
      Obtain the most generally acceptable type that may be used to set the given property on the given object using the given context.
      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.
    • 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
    • setValue

      public void setValue(ELContext context, Object base, Object property, Object value)
      Description copied from class: ELResolver
      Set the value of the given property on the given object using the given context.
      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
    • invoke

      public Object invoke(ELContext context, Object base, Object method, Class<?>[] paramTypes, Object[] params)
      Description copied from class: ELResolver
      Invokes a method on the given object.
      Overrides:
      invoke in class ELResolver
      Parameters:
      context - The EL context for this evaluation
      base - The base object on which the method is to be found
      method - The method to invoke
      paramTypes - The types of the parameters of the method to invoke
      params - The parameters with which to invoke the method
      Returns:
      This default implementation always returns null
    • invoke

    • isReadOnly

      public boolean isReadOnly(ELContext context, Object base, Object property)
      Description copied from class: ELResolver
      Determine if the given property on the given object is read-only using the given context.
      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)
      Description copied from class: ELResolver
      Obtain the most common type that is acceptable for the given base object.
      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 determined, otherwise the most common type