Top Description Methods
org.eclipse.persistence.jpa.jpql

public Interface SemanticValidatorHelper

Known Direct Implementers
org.eclipse.persistence.jpa.jpql.tools.GenericSemanticValidatorHelper
Imports
java.util.List, .Map, org.eclipse.persistence.jpa.jpql.parser.Expression, .IdentificationVariable, .JPQLGrammar, .SimpleSelectStatement

This helper is used by AbstractSemanticValidator 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.

Author
Pascal Filion
Since
2.4
Version
2.5

Method Summary

Modifier and TypeMethod and Description
public void
collectAllDeclarationIdentificationVariables(Map<String, List<IdentificationVariable>>
The Map used to store the variables
identificationVariables
)

Collects the identification variables that are defined in the FROM clause of the current query and from the parent queries.

public void
collectLocalDeclarationIdentificationVariables(Map<String, List<IdentificationVariable>>
The Map used to store the variables
identificationVariables
)

Collects the identification variables that are defined in the FROM clause of the current query.

public void
disposeSubqueryContext()

Disposes this context, which is the current context being used by a subquery.

public String[]

Returns:

The list of entity names
entityNames
()

Returns the name of the all entities that are present in the context of a persistence unit.

public List<JPQLQueryDeclaration>

Returns:

The list of JPQLQueryDeclaration of the current query that was parsed and from the parent queries
getAllDeclarations
()

Returns the ordered list of JPQLQueryDeclaration, which contain the information contained in the query's FROM clause.

public Object[]

Returns:

The declared constructors
getConstructors
(Object type)

Returns the constructors for the given type.

public List<? extends JPQLQueryDeclaration>

Returns:

The list of JPQLQueryDeclaration of the current query that was parsed
getDeclarations
()

Returns the ordered list of JPQLQueryDeclaration, which contain the information contained in the query's FROM clause.

public Object

Returns:

The embeddable for the given type if it's representing an embeddable; null otherwise
getEmbeddable
(Object
The Java type of the embeddable to retrieve
type
)

Retrieves the embeddable with the given type.

public Object

Returns:

The entity with the given name; null otherwise
getEntityNamed
(String
The abstract schema name of the entity to retrieve
entityName
)

Retrieves the entity with the given entity name.

public String[]

Returns:

The list of constant names
getEnumConstants
(Object
The Enum type
type
)

Returns the constant names for the given Enum type.

public JPQLGrammar

Returns:

The JPQLGrammar that was used to parse the JPQL query
getGrammar
()

Returns the JPQLGrammar that defines how the JPQL query was parsed.

public Object
getManagedType(Expression expression)

Returns the managed type by resolving the given Expression.

public Object

Returns:

Either the mapping or null if it could not be found
getMappingNamed
(Object
The managed type that has a mapping with the given name
managedType
,
String
The name of the mapping to retrieve
name
)

Returns the mapping with the given name.

public Object

Returns:

The type of the given mapping
getMappingType
(Object
The mapping object
mapping
)

Returns the type of the given mapping object.

public Object[]

Returns:

The list of parameter types or an empty list
getMethodParameterTypeDeclarations
(Object
The constructor to return its parameter types
constructor
)

Returns the list of type declarations representing the given constructor's parameter types.

public Object

Returns:

The managed type referenced by the given relationship mapping
getReferenceManagedType
(Object
The relationship mapping
relationshipMapping
)

Returns the reference managed type from the given relationship mapping.

public Object

Returns:

The type of the given Expression or null if it could not be validated
getType
(Expression
The Expression to resolve
expression
)

Returns the type by resolving the given Expression.

public Object

Returns:

The type defined for the Java member
getType
(Object typeDeclaration)

Returns the type defined for the Java member.

public Object

Returns:

The class to retrieve
getType
(String
The fully qualified name of the class to retrieve
typeName
)

Retrieves the class with the given fully qualified name.

public Object

Returns:

Either the type declaration that was resolved for the given Expression
getTypeDeclaration
(Expression
The Expression to resolve
expression
)

Returns the type declaration for the given Expression's type.

public ITypeHelper

Returns:

A helper containing a collection of methods related to class metadata
getTypeHelper
()

Returns the helper that gives access to the most common class metadata.

public String

Returns:

The name of the class represented by this one
getTypeName
(Object
The type to retrieve its name
type
)

Returns the fully qualified class name of the given type.

public boolean

Returns:

true if type 1 is an instance of the type 2; false otherwise
isAssignableTo
(Object
The type to check if it is an instance of type 2
type1
,
Object
The type used to determine if the class represented by type 1 is an instance of with one
type2
)

Determines whether type 1 is an instance of type 2.

public boolean

Returns:

true if the given identification variable maps a collection-valued field defined in a JOIN or IN expression; false if it's not defined or it's mapping an abstract schema name
isCollectionIdentificationVariable
(String
The identification variable to check for what it maps
variableName
)

Determines whether the given identification variable is defining a join or a collection member declaration expressions.

public boolean

Returns:

true if the given mapping is a collection mapping; false otherwise
isCollectionMapping
(Object
The mapping object to verify if it represents a collection mapping
mapping
)

Determines whether the given mapping is a collection type mapping.

public boolean

Returns:

true if the given mapping is an embeddable mapping; false otherwise
isEmbeddableMapping
(Object
The mapping object to verify if it represents an embeddable mapping
mapping
)

Determines whether the given mapping is an embeddable type mapping.

public boolean

Returns:

true if the given type is an Enum; false otherwise
isEnumType
(Object type)

Determines whether the given type represents an Enum.

public boolean

Returns:

true if it can be used in a ordering comparison expression; false if it can't
isIdentificationVariableValidInComparison
(IdentificationVariable
The IdentificationVariable that is mapped to either an entity, a singled-object value field, a collection-valued object field
expression
)

Determines whether an identification variable can be used in a comparison expression when the operator is either '<', '<=', '>', '>='.

public boolean

Returns:

true if the given managed type can be located; false if it could not be found
isManagedTypeResolvable
(Object managedType)

Determines whether the given managed type actually exists.

public boolean

Returns:

true if the given mapping is a property mapping; false otherwise
isPropertyMapping
(Object
The mapping object to verify if it represents a property mapping
mapping
)

Determines whether the given mapping is a property type mapping.

public boolean

Returns:

true if the given mapping is a relationship mapping; false otherwise
isRelationshipMapping
(Object
The mapping object to verify if it represents a relationship mapping
mapping
)

Determines whether the given mapping is a relationship type mapping.

public boolean

Returns:

true if the given variable is defined as a result variable; false otherwise
isResultVariable
(String
The variable to check if it's a result variable
variableName
)

Determines if the given variable is a result variable.

public boolean

Returns:

true if the given attribute is a transient mapping; false otherwise
isTransient
(Object
The mapping object to verify if it represents a transient attribute
mapping
)

Determines whether the given mapping is a transient attribute.

public boolean

Returns:

true if type declaration 1 is an instance of the type declaration 2; false otherwise
isTypeDeclarationAssignableTo
(Object
The type declaration to check if it is an instance of type declaration 2
typeDeclaration1
,
Object
The type used to determine if the class represented by type declaration 1 is an instance of with one
typeDeclaration2
)

Determines whether type declaration 1 is an instance of type declaration 2.

public boolean

Returns:

true if the actual class exists; false otherwise
isTypeResolvable
(Object type)

Determines whether the given type actually exists.

public void
newSubqueryContext(SimpleSelectStatement
The parsed tree representation of the subquery that will become the current query
expression
)

Changes the state of this helper to use the given subquery.

public Object

Returns:

Either the mapping or null if none exists
resolveMapping
(Expression
The Expression representing a state field path expression or a collection-valued path expression
expression
)

Returns the mapping for the field represented by the given Expression.

public Object

Returns:

The persistence field with the given name or null if it could not be found
resolveMapping
(String
The identification variable that is defined in the FROM clause of the query (which can be in the current subquery) or in one of the parent queries.
identificationVariable
,
String
The name of the persistent field to retrieve
name
)

Returns the mapping that should be a persistence field from the entity defined by the given identification variable.

Method Detail

collectAllDeclarationIdentificationVariablesback to summary
public void collectAllDeclarationIdentificationVariables(Map<String, List<IdentificationVariable>> identificationVariables)

Collects the identification variables that are defined in the FROM clause of the current query and from the parent queries.

Parameters
identificationVariables:Map<String, List<IdentificationVariable>>

The Map used to store the variables

collectLocalDeclarationIdentificationVariablesback to summary
public void collectLocalDeclarationIdentificationVariables(Map<String, List<IdentificationVariable>> identificationVariables)

Collects the identification variables that are defined in the FROM clause of the current query.

Parameters
identificationVariables:Map<String, List<IdentificationVariable>>

The Map used to store the variables

disposeSubqueryContextback to summary
public 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.

entityNamesback to summary
public String[] entityNames()

Returns the name of the all entities that are present in the context of a persistence unit.

Returns:String[]

The list of entity names

getAllDeclarationsback to summary
public List<JPQLQueryDeclaration> getAllDeclarations()

Returns the ordered list of JPQLQueryDeclaration, which contain the information contained in the query's FROM clause.

Returns:List<JPQLQueryDeclaration>

The list of JPQLQueryDeclaration of the current query that was parsed and from the parent queries

getConstructorsback to summary
public Object[] getConstructors(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 be IConstructor.

Returns:Object[]

The declared constructors

getDeclarationsback to summary
public List<? extends JPQLQueryDeclaration> getDeclarations()

Returns the ordered list of JPQLQueryDeclaration, which contain the information contained in the query's FROM clause.

Returns:List<? extends JPQLQueryDeclaration>

The list of JPQLQueryDeclaration of the current query that was parsed

getEmbeddableback to summary
public Object getEmbeddable(Object type)

Retrieves the embeddable with the given type.

Parameters
type:Object

The Java type of the embeddable to retrieve

Returns:Object

The embeddable for the given type if it's representing an embeddable; null otherwise

getEntityNamedback to summary
public Object getEntityNamed(String entityName)

Retrieves the entity with the given entity name.

Parameters
entityName:String

The abstract schema name of the entity to retrieve

Returns:Object

The entity with the given name; null otherwise

getEnumConstantsback to summary
public String[] getEnumConstants(Object type)

Returns the constant names for the given Enum type.

If it was going through Hermes SPI, the type of the argument would be IType.

Parameters
type:Object

The Enum type

Returns:String[]

The list of constant names

getGrammarback to summary
public JPQLGrammar getGrammar()

Returns the JPQLGrammar that defines how the JPQL query was parsed.

Returns:JPQLGrammar

The JPQLGrammar that was used to parse the JPQL query

getManagedTypeback to summary
public Object getManagedType(Expression expression)

Returns the managed type by resolving the given Expression.

If it was going through Hermes SPI, the return type would be IManagedType.

getMappingNamedback to summary
public Object getMappingNamed(Object managedType, 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 be IMapping.

Parameters
managedType:Object

The managed type that has a mapping with the given name

name:String

The name of the mapping to retrieve

Returns:Object

Either the mapping or null if it could not be found

getMappingTypeback to summary
public Object getMappingType(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 be IType.

Parameters
mapping:Object

The mapping object

Returns:Object

The type of the given mapping

getMethodParameterTypeDeclarationsback to summary
public Object[] getMethodParameterTypeDeclarations(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 be ITypeDeclaration.

Parameters
constructor:Object

The constructor to return its parameter types

Returns:Object[]

The list of parameter types or an empty list

getReferenceManagedTypeback to summary
public Object getReferenceManagedType(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 be IManagedType.

Parameters
relationshipMapping:Object

The relationship mapping

Returns:Object

The managed type referenced by the given relationship mapping

getTypeback to summary
public Object getType(Expression expression)

Returns the type by resolving the given Expression.

If it was going through Hermes SPI, the return type would be IType.

Parameters
expression:Expression

The Expression to resolve

Returns:Object

The type of the given Expression or null if it could not be validated

getTypeback to summary
public Object getType(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 be IType.

Returns:Object

The type defined for the Java member

getTypeback to summary
public Object getType(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:String

The fully qualified name of the class to retrieve

Returns:Object

The class to retrieve

getTypeDeclarationback to summary
public Object getTypeDeclaration(Expression expression)

Returns the type declaration for the given Expression's type.

If it was going through Hermes SPI, the type of the argument would be ITypeDeclaration.

Parameters
expression:Expression

The Expression to resolve

Returns:Object

Either the type declaration that was resolved for the given Expression

getTypeHelperback to summary
public ITypeHelper getTypeHelper()

Returns the helper that gives access to the most common class metadata.

Returns:ITypeHelper

A helper containing a collection of methods related to class metadata

getTypeNameback to summary
public String getTypeName(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:Object

The type to retrieve its name

Returns:String

The name of the class represented by this one

isAssignableToback to summary
public boolean isAssignableTo(Object type1, 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:Object

The type to check if it is an instance of type 2

type2:Object

The type used to determine if the class represented by type 1 is an instance of with one

Returns:boolean

true if type 1 is an instance of the type 2; false otherwise

isCollectionIdentificationVariableback to summary
public boolean isCollectionIdentificationVariable(String variableName)

Determines whether the given identification variable is defining a join or a collection member declaration expressions.

Parameters
variableName:String

The identification variable to check for what it maps

Returns:boolean

true if the given identification variable maps a collection-valued field defined in a JOIN or IN expression; false if it's not defined or it's mapping an abstract schema name

isCollectionMappingback to summary
public boolean isCollectionMapping(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:Object

The mapping object to verify if it represents a collection mapping

Returns:boolean

true if the given mapping is a collection mapping; false otherwise

isEmbeddableMappingback to summary
public boolean isEmbeddableMapping(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:Object

The mapping object to verify if it represents an embeddable mapping

Returns:boolean

true if the given mapping is an embeddable mapping; false otherwise

isEnumTypeback to summary
public boolean isEnumType(Object type)

Determines whether the given type represents an Enum.

If it was going through Hermes SPI, the type of the argument would be IType.

Returns:boolean

true if the given type is an Enum; false otherwise

isIdentificationVariableValidInComparisonback to summary
public boolean isIdentificationVariableValidInComparison(IdentificationVariable expression)

Determines whether an identification variable can be used in a comparison expression when the operator is either '<', '<=', '>', '>='.

Parameters
expression:IdentificationVariable

The IdentificationVariable that is mapped to either an entity, a singled-object value field, a collection-valued object field

Returns:boolean

true if it can be used in a ordering comparison expression; false if it can't

isManagedTypeResolvableback to summary
public boolean isManagedTypeResolvable(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:boolean

true if the given managed type can be located; false if it could not be found

isPropertyMappingback to summary
public boolean isPropertyMapping(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:Object

The mapping object to verify if it represents a property mapping

Returns:boolean

true if the given mapping is a property mapping; false otherwise

isRelationshipMappingback to summary
public boolean isRelationshipMapping(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:Object

The mapping object to verify if it represents a relationship mapping

Returns:boolean

true if the given mapping is a relationship mapping; false otherwise

isResultVariableback to summary
public boolean isResultVariable(String variableName)

Determines if the given variable is a result variable.

Parameters
variableName:String

The variable to check if it's a result variable

Returns:boolean

true if the given variable is defined as a result variable; false otherwise

isTransientback to summary
public boolean isTransient(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:Object

The mapping object to verify if it represents a transient attribute

Returns:boolean

true if the given attribute is a transient mapping; false otherwise

isTypeDeclarationAssignableToback to summary
public boolean isTypeDeclarationAssignableTo(Object typeDeclaration1, 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:Object

The type declaration to check if it is an instance of type declaration 2

typeDeclaration2:Object

The type used to determine if the class represented by type declaration 1 is an instance of with one

Returns:boolean

true if type declaration 1 is an instance of the type declaration 2; false otherwise

isTypeResolvableback to summary
public boolean isTypeResolvable(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:boolean

true if the actual class exists; false otherwise

newSubqueryContextback to summary
public void newSubqueryContext(SimpleSelectStatement expression)

Changes the state of this helper to use the given subquery.

Parameters
expression:SimpleSelectStatement

The parsed tree representation of the subquery that will become the current query

See Also
disposeSubqueryContext()
resolveMappingback to summary
public Object resolveMapping(Expression expression)

Returns the mapping for the field represented by the given Expression.

If it was going through Hermes SPI, the return type would be IMapping.

Parameters
expression:Expression

The Expression representing a state field path expression or a collection-valued path expression

Returns:Object

Either the mapping or null if none exists

resolveMappingback to summary
public Object resolveMapping(String identificationVariable, 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:String

The identification variable that is defined in the FROM clause of the query (which can be in the current subquery) or in one of the parent queries.

name:String

The name of the persistent field to retrieve

Returns:Object

The persistence field with the given name or null if it could not be found