Interface TypeResolver

All Superinterfaces:
Copyable<TypeResolver>
All Known Implementing Classes:
TypeResolverWrapper

public interface TypeResolver extends Copyable<TypeResolver>

TypeResolver provides dynamic mapping of Java types to engine's internal Type. It is particularly useful when developers have to deal with XML or JSON objects.

  • Method Details

    • getType

      <T> Type<T> getType(String name)
      Type Parameters:
      T - type parameter
      Parameters:
      name - type's declared name
      Returns:
      existing Type or null if not found
    • getType

      <T> Type<T> getType(int typeId)
      Type Parameters:
      T - type parameter
      Parameters:
      typeId - type id
      Returns:
      existing Type
      Throws:
      NoSuchElementException - if not found
    • getKnownTypes

      Collection<Type<?>> getKnownTypes()
    • wrapType

      void wrapType(TypeWrapper<?> typeWrapper)
    • declare

      default <T> Type<T> declare(Class<T> type)

      Declares and registers new Type with the given Java class name. The name of the resulting type will be Class.getName()

      Type Parameters:
      T - java class type parameter
      Parameters:
      type - Java class
      Returns:
      new internal type
      Throws:
      IllegalStateException - if such type name has been already declared
    • declare

      <T> Type<T> declare(String typeName, Class<T> javaType)

      Declares and registers new Type with the given type name and Java class

      Type Parameters:
      T - java class type parameter
      Parameters:
      typeName - name of the type
      javaType - Java class
      Returns:
      new internal type
      Throws:
      IllegalStateException - if such type name has been already declared
    • declare

      <T> Type<T> declare(String typeName, String javaType)

      Declares and registers new Type with the given type name and Java class name. The existence of the corresponding Java class will be checked lazily, when the engine requires access to the class's properties.

      Type Parameters:
      T - java class type parameter
      Parameters:
      typeName - name of the type
      javaType - Java class
      Returns:
      new internal type
      Throws:
      IllegalStateException - if such type name has been already declared
    • getOrDeclare

      default <T> Type<T> getOrDeclare(String typeName, Class<T> javaType)
    • getOrDeclare

      default <T> Type<T> getOrDeclare(String typeName, String javaType)
    • getOrDeclare

      default <T> Type<T> getOrDeclare(String typeName)
    • getOrDeclare

      default <T> Type<T> getOrDeclare(Class<T> cl)
    • resolve

      <T> Type<T> resolve(Object o)
      Type Parameters:
      T - type parameter
      Parameters:
      o - object to resolve
      Returns:
      Type of the argument or null if object's type is unknown