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 Detail

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