java.lang.Object
org.eclipse.persistence.jpa.jpql.tools.resolver.Resolver
Direct Known Subclasses:
AbsFunctionResolver, AbstractPathResolver, ClassNameResolver, ClassResolver, CollectionEquivalentResolver, DeclarationResolver, EntityResolver, EnumLiteralResolver, FromSubqueryResolver, IdentificationVariableResolver, KeyResolver, MathFunctionResolver, NullResolver, NumericResolver, SubqueryEntityResolver, SumFunctionResolver, TreatResolver, ValueResolver

public abstract class Resolver extends Object
A Resolver is responsible to resolve a property by retrieving either the managed type, the mapping, the type and the type declaration depending on the type of resolver.

Provisional API: This interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.

Since:
2.3
Version:
2.5
  • Constructor Details

    • Resolver

      protected Resolver(Resolver parent)
      Creates a new Resolver.
      Parameters:
      parent - The parent of this resolver, which is never null
      Throws:
      NullPointerException - If the parent is null
  • Method Details

    • addChild

      public final void addChild(String variableName, Resolver resolver)
      Caches the given Resolver.
      Parameters:
      variableName - The key used to cache the given Resolver
      resolver - The Resolver to cache
    • buildType

      protected IType buildType()
      Resolves the IType of the property handled by this Resolver.
      Returns:
      Either the IType that was resolved by this Resolver or the IType for IType.UNRESOLVABLE_TYPE if it could not be resolved
    • buildTypeDeclaration

      protected abstract ITypeDeclaration buildTypeDeclaration()
      Resolves the ITypeDeclaration of the property handled by this Resolver.
      Returns:
      Either the ITypeDeclaration that was resolved by this Resolver or the ITypeDeclaration for IType.UNRESOLVABLE_TYPE if it could not be resolved
    • checkParent

      protected void checkParent(Resolver parent)
    • getChild

      public final Resolver getChild(String variableName)
      Retrieves the child of this Resolver that has the given variable name.
      Parameters:
      variableName - The name of the property that was cached
      Returns:
      The cached Resolver mapped with the given property name; otherwise null
    • getManagedType

      public IManagedType getManagedType()
      Returns the IManagedType associated with the field handled by this Resolver. If this Resolver does not handle a field that has a IManagedType, then null should be returned.

      For example: "SELECT e FROM Employee e", the Resolver for e would be returning the IManagedType for Employee.

      Returns:
      Either the IManagedType, if it could be resolved; null otherwise
    • getMapping

      public IMapping getMapping()
      Returns the IMapping for the wrapped field.
      Returns:
      Either the IMapping or null if none exists
    • getParent

      public Resolver getParent()
      Returns the parent of this Resolver.
      Returns:
      The parent of this Resolver
    • getParentManagedType

      public final IManagedType getParentManagedType()
      Returns the managed type of the parent resolver.
      Returns:
      The managed type of the parent resolver
    • getParentMapping

      public final IMapping getParentMapping()
      Returns the IMapping of the parent resolver.
      Returns:
      The IMapping of the parent resolver
    • getParentType

      public final IType getParentType()
      Returns the type of the parent resolver.
      Returns:
      The type of the parent resolver
    • getParentTypeDeclaration

      public final ITypeDeclaration getParentTypeDeclaration()
      Returns the type declaration of the parent resolver.
      Returns:
      The type declaration of the parent resolver
    • getProvider

      public final IManagedTypeProvider getProvider()
      Returns the provider of managed types.
      Returns:
      The container holding the managed types
    • getQuery

      public IQuery getQuery()
      Returns the external form representing the JPQL query.
      Returns:
      The external form of the JPQL query
    • getType

      public final IType getType()
      Returns the IType of the field handled by this Resolver.
      Returns:
      Either the IType that was resolved by this Resolver or the IType for IType.UNRESOLVABLE_TYPE if it could not be resolved
    • getType

      public final IType getType(Class<?> type)
      Returns the IType of the given Java type.
      Parameters:
      type - The Java type for which its external form will be returned
      Returns:
      The IType representing the given Java type
    • getType

      public final IType getType(String typeName)
      Retrieves the external class for the given fully qualified class name.
      Parameters:
      typeName - The fully qualified class name of the class to retrieve
      Returns:
      The external form of the class to retrieve
    • getTypeDeclaration

      public final ITypeDeclaration getTypeDeclaration()
      Returns the ITypeDeclaration of the field handled by this Resolver.
      Returns:
      Either the ITypeDeclaration that was resolved by this Resolver or the ITypeDeclaration for IType.UNRESOLVABLE_TYPE if it could not be resolved
    • getTypeHelper

      public final TypeHelper getTypeHelper()
      Returns a helper that gives access to the most common types.
      Returns:
      A helper containing a collection of methods related to IType
    • getTypeRepository

      public final ITypeRepository getTypeRepository()
      Returns the type repository for the application.
      Returns:
      The repository of ITypes
    • isNullAllowed

      public boolean isNullAllowed()
      Determines whether the Expression to be created, which wraps the attribute or query key name allows the target of the 1:1 relationship to be null if there is no corresponding relationship in the database.
      Returns:
      true to allow null if the corresponding relationship in the database does not exists; false otherwise
    • setNullAllowed

      public void setNullAllowed(boolean nullAllowed)
      Sets whether the Expression to be created, which wraps the attribute or query key name allows the target of the 1:1 relationship to be null if there is no corresponding relationship in the database.
      Parameters:
      nullAllowed - true to allow null if the corresponding relationship in the database does not exists; false otherwise