Class DuckGetExecutor

  • All Implemented Interfaces:
    JexlPropertyGet

    public final class DuckGetExecutor
    extends AbstractExecutor.Get
    Specialized executor to get a property from an object.

    Duck as in duck-typing for an interface like: interface Get { Object get(Object key); }

    Since:
    2.0
    • Constructor Detail

      • DuckGetExecutor

        public DuckGetExecutor​(Introspector is,
                               java.lang.Class<?> clazz,
                               java.lang.Object identifier)
        Creates an instance by attempting discovery of the get method.
        Parameters:
        is - the introspector
        clazz - the class to introspect
        identifier - the property to get
    • Method Detail

      • getTargetProperty

        public java.lang.Object getTargetProperty()
        Gets the property targeted by this executor.
        Overrides:
        getTargetProperty in class AbstractExecutor
        Returns:
        the target property
      • execute

        public java.lang.Object execute​(java.lang.Object obj)
                                 throws java.lang.IllegalAccessException,
                                        java.lang.reflect.InvocationTargetException
        Get the property from the object.
        Specified by:
        execute in class AbstractExecutor.Get
        Parameters:
        obj - the object.
        Returns:
        object.get(property)
        Throws:
        java.lang.IllegalAccessException - Method is inaccessible.
        java.lang.reflect.InvocationTargetException - Method body throws an exception.
      • tryExecute

        public java.lang.Object tryExecute​(java.lang.Object obj,
                                           java.lang.Object key)
        Tries to reuse this executor, checking that it is compatible with the actual set of arguments.

        Compatibility means that: o must be of the same class as this executor's target class and property must be of the same class as this executor's target property (for list and map based executors) and have the same value (for other types).

        Overrides:
        tryExecute in class AbstractExecutor.Get
        Parameters:
        obj - The object to get the property from.
        key - The property to get from the object.
        Returns:
        The property value or TRY_FAILED if checking failed.