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
  • Field Details

    • POJO

      A resolver types list tailored for POJOs, favors '.' over '[]'.
    • 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 Details

    • getResolvers

      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
    • getClassByName

      default Class<?> getClassByName(String className)
      Seeks a class by name using this uberspect class-loader.
      Parameters:
      className - the class name
      Returns:
      the class instance or null if the class cannot be located by this uberspect class loader or if permissions deny access to the class
    • 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