org.apache.commons.jexl3.introspection

## Interface JexlUberspect

- All Known Implementing Classes:
    SandboxUberspect, Uberspect

      public interface JexlUberspect

  'Federated' introspection/reflection interface to allow JEXL introspection behavior to be customized.
  Since:
    1.0

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static class` | `JexlUberspect.JexlResolver` The various builtin property resolvers.
    `static interface` | `JexlUberspect.PropertyResolver` Abstracts getting property setter and getter.
    `static interface` | `JexlUberspect.ResolverStrategy` Determines property resolution strategy.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static JexlUberspect.ResolverStrategy` | `JEXL_STRATEGY` The default strategy.
    `static List<JexlUberspect.PropertyResolver>` | `MAP` A resolver types list tailored for Maps, favors '[]' over '.'.
    `static JexlUberspect.ResolverStrategy` | `MAP_STRATEGY` The map strategy.
    `static List<JexlUberspect.PropertyResolver>` | `POJO` A resolver types list tailored for POJOs, favors '.' over '[]'.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `JexlArithmetic.Uberspect` | `getArithmetic(JexlArithmetic arithmetic)` Gets an arithmetic operator resolver for a given arithmetic instance.
    `ClassLoader` | `getClassLoader()` Gets the current class loader.
    `JexlMethod` | `getConstructor(Object ctorHandle, Object... args)` Returns a class constructor.
    `Iterator<?>` | `getIterator(Object obj)` Gets an iterator from an object.
    `JexlMethod` | `getMethod(Object obj, String method, Object... args)` Returns a JexlMethod.
    `JexlPropertyGet` | `getPropertyGet(List<JexlUberspect.PropertyResolver> resolvers, Object obj, Object identifier)` Property getter.
    `JexlPropertyGet` | `getPropertyGet(Object obj, Object identifier)` Property getter.
    `JexlPropertySet` | `getPropertySet(List<JexlUberspect.PropertyResolver> resolvers, Object obj, Object identifier, Object arg)` Property setter.
    `JexlPropertySet` | `getPropertySet(Object obj, Object identifier, Object arg)` Property setter.
    `List<JexlUberspect.PropertyResolver>` | `getResolvers(JexlOperator op, Object obj)` Applies this uberspect property resolver strategy.
    `int` | `getVersion()` Gets this uberspect version.
    `void` | `setClassLoader(ClassLoader loader)` Sets the class loader to use.

- - ### Field Detail

    - #### POJO

          static final List<JexlUberspect.PropertyResolver> POJO

      A resolver types list tailored for POJOs, favors '.' over '[]'.

    - #### MAP

          static final List<JexlUberspect.PropertyResolver> MAP

      A resolver types list tailored for Maps, favors '[]' over '.'.

    - #### JEXL_STRATEGY

          static final JexlUberspect.ResolverStrategy JEXL_STRATEGY

      The default strategy.

      If the operator is '[]' or if the operator is null and the object is a map, use the MAP list of resolvers; Other cases use the POJO list of resolvers.

    - #### MAP_STRATEGY

          static final JexlUberspect.ResolverStrategy MAP_STRATEGY

      The map strategy.

      If the operator is '[]' or if the object is a map, use the MAP list of resolvers. Otherwise, use the POJO list of resolvers.

  - ### Method Detail

    - #### getResolvers

          List<JexlUberspect.PropertyResolver> getResolvers(JexlOperator op,
                                                            Object obj)

      Applies this uberspect property resolver strategy.
      Parameters:
        `op` - the operator
        `obj` - the object
      Returns:
        the applied strategy resolver list

    - #### setClassLoader

          void setClassLoader(ClassLoader loader)

      Sets the class loader to use.

      This increments the version.

      Parameters:
        `loader` - the class loader

    - #### getClassLoader

          ClassLoader getClassLoader()

      Gets the current class loader.
      Returns:
        the class loader

    - #### getVersion

          int getVersion()

      Gets this uberspect version.
      Returns:
        the class loader modification count

    - #### getConstructor

          JexlMethod getConstructor(Object ctorHandle,
                                    Object... args)

      Returns a class constructor.
      Parameters:
        `ctorHandle` - a class or class name
        `args` - constructor arguments
      Returns:
        a `JexlMethod`
      Since:
        3.0

    - #### getMethod

          JexlMethod getMethod(Object obj,
                               String method,
                               Object... args)

      Returns a JexlMethod.
      Parameters:
        `obj` - the object
        `method` - the method name
        `args` - method arguments
      Returns:
        a `JexlMethod`

    - #### getPropertyGet

          JexlPropertyGet getPropertyGet(Object obj,
                                         Object identifier)

      Property getter.

      returns a JelPropertySet apropos to an expression like `bar.woogie`.

      Parameters:
        `obj` - the object to get the property from
        `identifier` - property name
      Returns:
        a `JexlPropertyGet` or null

    - #### getPropertyGet

          JexlPropertyGet getPropertyGet(List<JexlUberspect.PropertyResolver> resolvers,
                                         Object obj,
                                         Object identifier)

      Property getter.

      Seeks a JexlPropertyGet apropos to an expression like `bar.woogie`.

      See `JexlUberspect.ResolverStrategy.apply(JexlOperator, java.lang.Object)`
      Parameters:
        `resolvers` - the list of property resolvers to try
        `obj` - the object to get the property from
        `identifier` - property name
      Returns:
        a `JexlPropertyGet` or null
      Since:
        3.0

    - #### getPropertySet

          JexlPropertySet getPropertySet(Object obj,
                                         Object identifier,
                                         Object arg)

      Property setter.

      Seeks a JelPropertySet apropos to an expression like `foo.bar = "geir"`.

      Parameters:
        `obj` - the object to get the property from.
        `identifier` - property name
        `arg` - value to set
      Returns:
        a `JexlPropertySet` or null

    - #### getPropertySet

          JexlPropertySet getPropertySet(List<JexlUberspect.PropertyResolver> resolvers,
                                         Object obj,
                                         Object identifier,
                                         Object arg)

      Property setter.

      Seeks a JelPropertySet apropos to an expression like `foo.bar = "geir"`.

      See `JexlUberspect.ResolverStrategy.apply(JexlOperator, java.lang.Object)`
      Parameters:
        `resolvers` - the list of property resolvers to try,
        `obj` - the object to get the property from
        `identifier` - property name
        `arg` - value to set
      Returns:
        a `JexlPropertySet` or null
      Since:
        3.0

    - #### getIterator

          Iterator<?> getIterator(Object obj)

      Gets an iterator from an object.
      Parameters:
        `obj` - to get the iterator from
      Returns:
        an iterator over obj or null

    - #### getArithmetic

          JexlArithmetic.Uberspect getArithmetic(JexlArithmetic arithmetic)

      Gets an arithmetic operator resolver for a given arithmetic instance.
      Parameters:
        `arithmetic` - the arithmetic instance
      Returns:
        the arithmetic uberspect or null if no operator method were overridden
      Since:
        3.0

Copyright © 2001–2021 The Apache Software Foundation. All rights reserved.