Interface PojoTypeModel<T>

Type Parameters:
T - The pojo type
All Known Subinterfaces:
PojoRawTypeModel<T>
All Known Implementing Classes:
AbstractPojoGenericTypeModel, AbstractPojoHCAnnRawTypeModel, AbstractPojoRawTypeModel, GenericContextAwarePojoGenericTypeModel, PojoSimpleHCAnnRawTypeModel, SyntheticPojoGenericTypeModel

public interface PojoTypeModel<T>
A model representing a POJO type: its structure (properties and their type), its name, ...

Most of the time, type models represent a Java class, either raw or parameterized. However, it is also possible that a given type model represents a subset of all instances of a given Java class, which all follow a common convention regarding their structure.

For example, a type model could represent a Map-based type where properties are defined by the map entries and where all instances are required to have a value of type Integer for the key "age".

  • Method Details

    • name

      String name()
      Returns:
      A human-readable name for this type.
    • rawType

      PojoRawTypeModel<? super T> rawType()
      Returns:
      A representation of the closest parent Java Class for this type.
    • property

      PojoPropertyModel<?> property(String propertyName)
      Parameters:
      propertyName - The name of a property in this type.
      Returns:
      A representation of the property with the given name.
      Throws:
      SearchException - If there is no property with the given name in this type.
    • castTo

      <U> Optional<PojoTypeModel<? extends U>> castTo(Class<U> target)
      Type Parameters:
      U - The type to cast to.
      Parameters:
      target - The type to cast to.
      Returns:
      A new type model, representing the current type cast to the given type, or Optional.empty() if casting is not supported. The type model will retain as much contextual type information as possible (type arguments, ...), so casting List<Integer> to Collection for example would return Collection<Integer>.
    • typeArgument

      Optional<? extends PojoTypeModel<?>> typeArgument(Class<?> rawSuperType, int typeParameterIndex)
      Parameters:
      rawSuperType - The supertype to resolve type parameters for
      typeParameterIndex - The index of the type parameter to resolve
      Returns:
      The model for the type argument for the type parameter defined in rawSuperType at index typeParameterIndex, or an empty optional if the current type does not extend rawSuperType. Implementations may decide to return a model of the raw type argument, or to retain generics information.
    • arrayElementType

      Optional<? extends PojoTypeModel<?>> arrayElementType()
      Returns:
      The model for the array element type, or an empty optional if the current type is not an array type. Implementations may decide to return a model of the raw array element type, or to retain generics information.
    • toString

      String toString()
      Overrides:
      toString in class Object
      Returns:
      A human-readable description of this type.
    • equals

      boolean equals(Object obj)
      Overrides:
      equals in class Object
      Returns:
      true if obj is a PojoTypeModel referencing the exact same type with the exact same exposed metadata.
    • hashCode

      int hashCode()
      Overrides:
      hashCode in class Object