Interface SemanticValidatorHelper
-
- All Known Implementing Classes:
GenericSemanticValidatorHelper
public interface SemanticValidatorHelper
This helper is used byAbstractSemanticValidator
in order to retrieve JPA information. This helper allows third party adopter to write an instance of this helper that directly access the JPA information without having to implement Hermes SPI, which can improve performance.GenericSemanticValidatorHelper
is a default implementation that uses Hermes SPI.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.
- Version:
- 2.5
- Author:
- Pascal Filion
- Since:
- 2.4
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
collectAllDeclarationIdentificationVariables(java.util.Map<java.lang.String,java.util.List<IdentificationVariable>> identificationVariables)
Collects the identification variables that are defined in theFROM
clause of the current query and from the parent queries.void
collectLocalDeclarationIdentificationVariables(java.util.Map<java.lang.String,java.util.List<IdentificationVariable>> identificationVariables)
Collects the identification variables that are defined in theFROM
clause of the current query.void
disposeSubqueryContext()
Disposes this context, which is the current context being used by a subquery.java.lang.String[]
entityNames()
Returns the name of the all entities that are present in the context of a persistence unit.java.util.List<JPQLQueryDeclaration>
getAllDeclarations()
Returns the ordered list ofJPQLQueryDeclaration
, which contain the information contained in the query'sFROM
clause.java.lang.Object[]
getConstructors(java.lang.Object type)
Returns the constructors for the given type.java.util.List<JPQLQueryDeclaration>
getDeclarations()
Returns the ordered list ofJPQLQueryDeclaration
, which contain the information contained in the query'sFROM
clause.java.lang.Object
getEmbeddable(java.lang.Object type)
Retrieves the embeddable with the given type.java.lang.Object
getEntityNamed(java.lang.String entityName)
Retrieves the entity with the given entity name.java.lang.String[]
getEnumConstants(java.lang.Object type)
Returns the constant names for the givenEnum
type.JPQLGrammar
getGrammar()
Returns theJPQLGrammar
that defines how the JPQL query was parsed.java.lang.Object
getManagedType(Expression expression)
Returns the managed type by resolving the givenExpression
.java.lang.Object
getMappingNamed(java.lang.Object managedType, java.lang.String name)
Returns the mapping with the given name.java.lang.Object
getMappingType(java.lang.Object mapping)
Returns the type of the given mapping object.java.lang.Object[]
getMethodParameterTypeDeclarations(java.lang.Object constructor)
Returns the list of type declarations representing the given constructor's parameter types.java.lang.Object
getReferenceManagedType(java.lang.Object relationshipMapping)
Returns the reference managed type from the given relationship mapping.java.lang.Object
getType(java.lang.Object typeDeclaration)
Returns the type defined for the Java member.java.lang.Object
getType(java.lang.String typeName)
Retrieves the class with the given fully qualified name.java.lang.Object
getType(Expression expression)
Returns the type by resolving the givenExpression
.java.lang.Object
getTypeDeclaration(Expression expression)
Returns the type declaration for the givenExpression
's type.ITypeHelper
getTypeHelper()
Returns the helper that gives access to the most common class metadata.java.lang.String
getTypeName(java.lang.Object type)
Returns the fully qualified class name of the given type.boolean
isAssignableTo(java.lang.Object type1, java.lang.Object type2)
Determines whether type 1 is an instance of type 2.boolean
isCollectionIdentificationVariable(java.lang.String variableName)
Determines whether the given identification variable is defining a join or a collection member declaration expressions.boolean
isCollectionMapping(java.lang.Object mapping)
Determines whether the given mapping is a collection type mapping.boolean
isEmbeddableMapping(java.lang.Object mapping)
Determines whether the given mapping is an embeddable type mapping.boolean
isEnumType(java.lang.Object type)
Determines whether the given type represents anEnum
.boolean
isIdentificationVariableValidInComparison(IdentificationVariable expression)
Determines whether an identification variable can be used in a comparison expression when the operator is either '<', '<=', '>', '>='.boolean
isManagedTypeResolvable(java.lang.Object managedType)
Determines whether the given managed type actually exists.boolean
isPropertyMapping(java.lang.Object mapping)
Determines whether the given mapping is a property type mapping.boolean
isRelationshipMapping(java.lang.Object mapping)
Determines whether the given mapping is a relationship type mapping.boolean
isResultVariable(java.lang.String variableName)
Determines if the given variable is a result variable.boolean
isTransient(java.lang.Object mapping)
Determines whether the given mapping is a transient attribute.boolean
isTypeDeclarationAssignableTo(java.lang.Object typeDeclaration1, java.lang.Object typeDeclaration2)
Determines whether type declaration 1 is an instance of type declaration 2.boolean
isTypeResolvable(java.lang.Object type)
Determines whether the given type actually exists.void
newSubqueryContext(SimpleSelectStatement expression)
Changes the state of this helper to use the given subquery.java.lang.Object
resolveMapping(java.lang.String identificationVariable, java.lang.String name)
Returns the mapping that should be a persistence field from the entity defined by the given identification variable.java.lang.Object
resolveMapping(Expression expression)
Returns the mapping for the field represented by the givenExpression
.
-
-
-
Method Detail
-
collectAllDeclarationIdentificationVariables
void collectAllDeclarationIdentificationVariables(java.util.Map<java.lang.String,java.util.List<IdentificationVariable>> identificationVariables)
Collects the identification variables that are defined in theFROM
clause of the current query and from the parent queries.- Parameters:
identificationVariables
- TheMap
used to store the variables
-
collectLocalDeclarationIdentificationVariables
void collectLocalDeclarationIdentificationVariables(java.util.Map<java.lang.String,java.util.List<IdentificationVariable>> identificationVariables)
Collects the identification variables that are defined in theFROM
clause of the current query.- Parameters:
identificationVariables
- TheMap
used to store the variables
-
disposeSubqueryContext
void disposeSubqueryContext()
Disposes this context, which is the current context being used by a subquery. Once it is disposed, any information retrieved will be for the subquery's parent query.
-
entityNames
java.lang.String[] entityNames()
Returns the name of the all entities that are present in the context of a persistence unit.- Returns:
- The list of entity names
-
getAllDeclarations
java.util.List<JPQLQueryDeclaration> getAllDeclarations()
Returns the ordered list ofJPQLQueryDeclaration
, which contain the information contained in the query'sFROM
clause.- Returns:
- The list of
JPQLQueryDeclaration
of the current query that was parsed and from the parent queries
-
getConstructors
java.lang.Object[] getConstructors(java.lang.Object type)
Returns the constructors for the given type. All public, protected, default (package) access, and private constructors should be included.If it was going through Hermes SPI, the type of the argument would be
IType
and the return type would beIConstructor
.- Returns:
- The declared constructors
-
getDeclarations
java.util.List<JPQLQueryDeclaration> getDeclarations()
Returns the ordered list ofJPQLQueryDeclaration
, which contain the information contained in the query'sFROM
clause.- Returns:
- The list of
JPQLQueryDeclaration
of the current query that was parsed
-
getEmbeddable
java.lang.Object getEmbeddable(java.lang.Object type)
Retrieves the embeddable with the given type.- Parameters:
type
- The Java type of the embeddable to retrieve- Returns:
- The embeddable for the given type if it's representing an embeddable;
null
otherwise
-
getEntityNamed
java.lang.Object getEntityNamed(java.lang.String entityName)
Retrieves the entity with the given entity name.- Parameters:
entityName
- The abstract schema name of the entity to retrieve- Returns:
- The entity with the given name;
null
otherwise
-
getEnumConstants
java.lang.String[] getEnumConstants(java.lang.Object type)
Returns the constant names for the givenEnum
type.If it was going through Hermes SPI, the type of the argument would be
IType
.- Parameters:
type
- TheEnum
type- Returns:
- The list of constant names
-
getGrammar
JPQLGrammar getGrammar()
Returns theJPQLGrammar
that defines how the JPQL query was parsed.- Returns:
- The
JPQLGrammar
that was used to parse the JPQL query
-
getManagedType
java.lang.Object getManagedType(Expression expression)
Returns the managed type by resolving the givenExpression
.If it was going through Hermes SPI, the return type would be
IManagedType
.
-
getMappingNamed
java.lang.Object getMappingNamed(java.lang.Object managedType, java.lang.String name)
Returns the mapping with the given name.If it was going through Hermes SPI, the type of the argument would be
IManagedType
and the return type would beIMapping
.- Parameters:
managedType
- The managed type that has a mapping with the given namename
- The name of the mapping to retrieve- Returns:
- Either the mapping or
null
if it could not be found
-
getMappingType
java.lang.Object getMappingType(java.lang.Object mapping)
Returns the type of the given mapping object.If it was going through Hermes SPI, the type of the argument would be
IMapping
and the return type would beIType
.- Parameters:
mapping
- The mapping object- Returns:
- The type of the given mapping
-
getMethodParameterTypeDeclarations
java.lang.Object[] getMethodParameterTypeDeclarations(java.lang.Object constructor)
Returns the list of type declarations representing the given constructor's parameter types. If this is the default constructor, then an empty array should be returned.If it was going through Hermes SPI, the type of the argument would be
IConstructor
and the return type would beITypeDeclaration
.- Parameters:
constructor
- The constructor to return its parameter types- Returns:
- The list of parameter types or an empty list
-
getReferenceManagedType
java.lang.Object getReferenceManagedType(java.lang.Object relationshipMapping)
Returns the reference managed type from the given relationship mapping.If it was going through Hermes SPI, the type of the argument would be
IMapping
and the return type would beIManagedType
.- Parameters:
relationshipMapping
- The relationship mapping- Returns:
- The managed type referenced by the given relationship mapping
-
getType
java.lang.Object getType(Expression expression)
Returns the type by resolving the givenExpression
.If it was going through Hermes SPI, the return type would be
IType
.- Parameters:
expression
- TheExpression
to resolve- Returns:
- The type of the given
Expression
ornull
if it could not be validated
-
getType
java.lang.Object getType(java.lang.Object typeDeclaration)
Returns the type defined for the Java member.If it was going through Hermes SPI, the type of the argument would be
ITypeDeclaration
and the return type would beIType
.- Returns:
- The type defined for the Java member
-
getType
java.lang.Object getType(java.lang.String typeName)
Retrieves the class with the given fully qualified name.If it was going through Hermes SPI, an
IType
would be returned.- Parameters:
typeName
- The fully qualified name of the class to retrieve- Returns:
- The class to retrieve
-
getTypeDeclaration
java.lang.Object getTypeDeclaration(Expression expression)
Returns the type declaration for the givenExpression
's type.If it was going through Hermes SPI, the type of the argument would be
ITypeDeclaration
.- Parameters:
expression
- TheExpression
to resolve- Returns:
- Either the type declaration that was resolved for the given
Expression
-
getTypeHelper
ITypeHelper getTypeHelper()
Returns the helper that gives access to the most common class metadata.- Returns:
- A helper containing a collection of methods related to class metadata
-
getTypeName
java.lang.String getTypeName(java.lang.Object type)
Returns the fully qualified class name of the given type.If it was going through Hermes SPI, the type of the argument would be
IType
.- Parameters:
type
- The type to retrieve its name- Returns:
- The name of the class represented by this one
-
isAssignableTo
boolean isAssignableTo(java.lang.Object type1, java.lang.Object type2)
Determines whether type 1 is an instance of type 2.If it was going through Hermes SPI, the type of the arguments would be
IType
.- Parameters:
type1
- The type to check if it is an instance of type 2type2
- The type used to determine if the class represented by type 1 is an instance of with one- Returns:
true
if type 1 is an instance of the type 2;false
otherwise
-
isCollectionIdentificationVariable
boolean isCollectionIdentificationVariable(java.lang.String variableName)
Determines whether the given identification variable is defining a join or a collection member declaration expressions.- Parameters:
variableName
- The identification variable to check for what it maps- Returns:
true
if the given identification variable maps a collection-valued field defined in aJOIN
orIN
expression;false
if it's not defined or it's mapping an abstract schema name
-
isCollectionMapping
boolean isCollectionMapping(java.lang.Object mapping)
Determines whether the given mapping is a collection type mapping.If it was going through Hermes SPI, the type of the arguments would be
IMapping
.- Parameters:
mapping
- The mapping object to verify if it represents a collection mapping- Returns:
true
if the given mapping is a collection mapping;false
otherwise
-
isEmbeddableMapping
boolean isEmbeddableMapping(java.lang.Object mapping)
Determines whether the given mapping is an embeddable type mapping.If it was going through Hermes SPI, the type of the arguments would be
IMapping
.- Parameters:
mapping
- The mapping object to verify if it represents an embeddable mapping- Returns:
true
if the given mapping is an embeddable mapping;false
otherwise
-
isEnumType
boolean isEnumType(java.lang.Object type)
Determines whether the given type represents anEnum
.If it was going through Hermes SPI, the type of the argument would be
IType
.- Returns:
true
if the given type is anEnum
;false
otherwise
-
isIdentificationVariableValidInComparison
boolean isIdentificationVariableValidInComparison(IdentificationVariable expression)
Determines whether an identification variable can be used in a comparison expression when the operator is either '<', '<=', '>', '>='.- Parameters:
expression
- TheIdentificationVariable
that is mapped to either an entity, a singled-object value field, a collection-valued object field- Returns:
true
if it can be used in a ordering comparison expression;false
if it can't
-
isManagedTypeResolvable
boolean isManagedTypeResolvable(java.lang.Object managedType)
Determines whether the given managed type actually exists.If it was going through Hermes SPI, the type of the argument would be
IManagedType
.- Returns:
true
if the given managed type can be located;false
if it could not be found
-
isPropertyMapping
boolean isPropertyMapping(java.lang.Object mapping)
Determines whether the given mapping is a property type mapping.If it was going through Hermes SPI, the type of the arguments would be
IMapping
.- Parameters:
mapping
- The mapping object to verify if it represents a property mapping- Returns:
true
if the given mapping is a property mapping;false
otherwise
-
isRelationshipMapping
boolean isRelationshipMapping(java.lang.Object mapping)
Determines whether the given mapping is a relationship type mapping.If it was going through Hermes SPI, the type of the arguments would be
IMapping
.- Parameters:
mapping
- The mapping object to verify if it represents a relationship mapping- Returns:
true
if the given mapping is a relationship mapping;false
otherwise
-
isResultVariable
boolean isResultVariable(java.lang.String variableName)
Determines if the given variable is a result variable.- Parameters:
variableName
- The variable to check if it's a result variable- Returns:
true
if the given variable is defined as a result variable;false
otherwise
-
isTransient
boolean isTransient(java.lang.Object mapping)
Determines whether the given mapping is a transient attribute.If it was going through Hermes SPI, the type of the arguments would be
IMapping
.- Parameters:
mapping
- The mapping object to verify if it represents a transient attribute- Returns:
true
if the given attribute is a transient mapping;false
otherwise
-
isTypeDeclarationAssignableTo
boolean isTypeDeclarationAssignableTo(java.lang.Object typeDeclaration1, java.lang.Object typeDeclaration2)
Determines whether type declaration 1 is an instance of type declaration 2.If it was going through Hermes SPI, the type of the arguments would be
ITypeDeclaration
.- Parameters:
typeDeclaration1
- The type declaration to check if it is an instance of type declaration 2typeDeclaration2
- The type used to determine if the class represented by type declaration 1 is an instance of with one- Returns:
true
if type declaration 1 is an instance of the type declaration 2;false
otherwise
-
isTypeResolvable
boolean isTypeResolvable(java.lang.Object type)
Determines whether the given type actually exists.If it was going through Hermes SPI, the type of the argument would be
IType
.- Returns:
true
if the actual class exists;false
otherwise
-
newSubqueryContext
void newSubqueryContext(SimpleSelectStatement expression)
Changes the state of this helper to use the given subquery.- Parameters:
expression
- The parsed tree representation of the subquery that will become the current query- See Also:
disposeSubqueryContext()
-
resolveMapping
java.lang.Object resolveMapping(Expression expression)
Returns the mapping for the field represented by the givenExpression
.If it was going through Hermes SPI, the return type would be
IMapping
.- Parameters:
expression
- TheExpression
representing a state field path expression or a collection-valued path expression- Returns:
- Either the mapping or
null
if none exists
-
resolveMapping
java.lang.Object resolveMapping(java.lang.String identificationVariable, java.lang.String name)
Returns the mapping that should be a persistence field from the entity defined by the given identification variable.If it was going through Hermes SPI, the return type would be
IMapping
.- Parameters:
identificationVariable
- The identification variable that is defined in theFROM
clause of the query (which can be in the current subquery) or in one of the parent queries.name
- The name of the persistent field to retrieve- Returns:
- The persistence field with the given name or
null
if it could not be found
-
-