|
Oracle Fusion Middleware Java API Reference for Oracle TopLink 11g Release 1 (11.1.1) E28847-01 |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object
org.eclipse.persistence.jpa.internal.jpql.Resolver
org.eclipse.persistence.jpa.internal.jpql.DeclarationResolver
public final class DeclarationResolver
This Resolver
is responsible to visit the current query (which is either the top-level query or a subquery) and gathers the information from the declaration clause. For a SELECT or DELETE clause, the information will be retrieved from the FROM clause. For an UDPATE
clause, it will be retrieved from the unique identification range variable declaration.
Nested Class Summary | |
---|---|
static class |
DeclarationResolver.Declaration A Declaration represents either an identification variable declaration or a collection member declaration. |
private class |
DeclarationResolver.DeclarationVisitor |
private class |
DeclarationResolver.QualifyRangeDeclarationVisitor |
Field Summary | |
---|---|
private java.util.List<DeclarationResolver.Declaration> |
declarations The Declarations of the current query that was parsed. |
private DeclarationResolver.DeclarationVisitor |
declarationVisitor This visitor is responsible to visit the current query's declaration and populate this resolver with the list of declarations. |
private DeclarationResolver.QualifyRangeDeclarationVisitor |
qualifyRangeDeclarationVisitor This visitor is responsible to convert the abstract schema name into a path expression. |
private JPQLQueryContext |
queryContext The context used to query information about the query. |
private java.util.Map<java.lang.String,Resolver> |
resolvers The identification variable names mapped to their resolvers. |
private java.util.Map<IdentificationVariable,java.lang.String> |
resultVariables The variables identifying the select expressions, if any was defined or an empty set if none were defined. |
Constructor Summary | |
---|---|
DeclarationResolver(DeclarationResolver parent, JPQLQueryContext queryContext) Creates a new DeclarationResolver . |
Method Summary | |
---|---|
void |
accept(ResolverVisitor visitor) Visits this Resolver by the given visitor . |
(package private) IType |
buildType() Resolves the IType of the property handled by this Resolver . |
(package private) ITypeDeclaration |
buildTypeDeclaration() Resolves the ITypeDeclaration of the property handled by this Resolver . |
(package private) void |
checkParent(Resolver parent) |
(package private) void |
convertUnqualifiedDeclaration(DeclarationResolver.Declaration declaration, java.lang.String outerVariableName) Converts the given DeclarationResolver.Declaration from being set as a range variable declaration to a path expression declaration. |
private DeclarationResolver.DeclarationVisitor |
declarationVisitor() |
(package private) void |
dispose() Disposes the internal data. |
(package private) java.util.List<DeclarationResolver.Declaration> |
getDeclarations() Returns the ordered list of Declarations . |
(package private) java.util.Collection<JoinFetch> |
getJoinFetches(java.lang.String variableName) Returns the parsed representation of a JOIN FETCH that were defined in the same declaration than the given range identification variable name. |
private java.util.Collection<JoinFetch> |
getJoinFetchesImp(java.lang.String variableName) |
DeclarationResolver |
getParent() Returns the parent of this Resolver . |
(package private) IQuery |
getQuery() Returns the external form representing the JPQL query. |
(package private) Resolver |
getResolver(java.lang.String variableName) Retrieves the Resolver mapped with the given identification variable. |
private Resolver |
getResolverImp(java.lang.String variableName) |
(package private) java.util.Set<java.lang.String> |
getResultVariables() Returns the variables that got defined in the select expression. |
(package private) boolean |
hasJoins() Determines whether the JPQL expression has JOIN expressions. |
private void |
initialize(JPQLQueryContext queryContext) Initializes this DeclarationResolver . |
(package private) boolean |
isCollectionIdentificationVariable(java.lang.String variableName) Determines whether the given identification variable is defining a JOIN or IN expressions for a collection-valued field. |
private boolean |
isCollectionIdentificationVariableImp(java.lang.String variableName) |
(package private) boolean |
isRangeIdentificationVariable(java.lang.String variableName) Determines whether the given variable name is an identification variable name used to define an abstract schema name. |
private boolean |
isRangeIdentificationVariableImp(java.lang.String variableName) |
(package private) void |
populate(Expression expression) Visits the current query (which is either the top-level query or a subquery) and gathers the information from the declaration clause. |
private DeclarationResolver.QualifyRangeDeclarationVisitor |
qualifyRangeDeclarationVisitor() |
private java.lang.String |
visitDeclaration(Expression expression, Expression identificationVariable) |
Methods inherited from class org.eclipse.persistence.jpa.internal.jpql.Resolver |
---|
addChild, getChild, getManagedType, getMapping, getParentManagedType, getParentMapping, getParentType, getParentTypeDeclaration, getProvider, getType, getType, getType, getTypeDeclaration, getTypeHelper, getTypeRepository, isNullAllowed, setNullAllowed |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private java.util.List<DeclarationResolver.Declaration> declarations
Declarations
of the current query that was parsed.private DeclarationResolver.DeclarationVisitor declarationVisitor
private DeclarationResolver.QualifyRangeDeclarationVisitor qualifyRangeDeclarationVisitor
private JPQLQueryContext queryContext
private java.util.Map<java.lang.String,Resolver> resolvers
private java.util.Map<IdentificationVariable,java.lang.String> resultVariables
Constructor Detail |
---|
DeclarationResolver(DeclarationResolver parent, JPQLQueryContext queryContext)
DeclarationResolver
.
parent
- The parent resolver if this is used for a subquery or null if it's used for the top-level queryqueryContext
- The context used to query information about the queryMethod Detail |
---|
public void accept(ResolverVisitor visitor)
Resolver
by the given visitor
.accept
in class Resolver
visitor
- The visitor
to visit this objectIType buildType()
IType
of the property handled by this Resolver
.buildType
in class Resolver
IType
that was resolved by this Resolver
or the IType
for IType.UNRESOLVABLE_TYPE
if it could not be resolvedITypeDeclaration buildTypeDeclaration()
ITypeDeclaration
of the property handled by this Resolver
.buildTypeDeclaration
in class Resolver
ITypeDeclaration
that was resolved by this Resolver
or the ITypeDeclaration
for IType.UNRESOLVABLE_TYPE
if it could not be resolvedvoid checkParent(Resolver parent)
checkParent
in class Resolver
void convertUnqualifiedDeclaration(DeclarationResolver.Declaration declaration, java.lang.String outerVariableName)
DeclarationResolver.Declaration
from being set as a range variable declaration to a path expression declaration.
In this query "UPDATE Employee SET firstName = 'MODIFIED' WHERE (SELECT COUNT(m) FROM managedEmployees m) > 0
" managedEmployees is an unqualified collection-valued path expression (employee.managedEmployees
).
declaration
- The DeclarationResolver.Declaration
that was parsed to range over an abstract schema name but is actually ranging over a path expressionouterVariableName
- The identification variable coming from the parent identification variable declarationprivate DeclarationResolver.DeclarationVisitor declarationVisitor()
void dispose()
java.util.List<DeclarationResolver.Declaration> getDeclarations()
Declarations
.Declarations
of the current query that was parsedjava.util.Collection<JoinFetch> getJoinFetches(java.lang.String variableName)
variableName
- The name of the identification variable that should be used to define an abstract schema nameprivate java.util.Collection<JoinFetch> getJoinFetchesImp(java.lang.String variableName)
public DeclarationResolver getParent()
Resolver
.getParent
in class Resolver
Resolver
IQuery getQuery()
getQuery
in class Resolver
Resolver getResolver(java.lang.String variableName)
Resolver
mapped with the given identification variable. If the identification is not defined in the declaration traversed by this resolver, than the search will traverse the parent hierarchy.variableName
- The identification variable that maps a Resolver
Resolver
mapped with the given identification variableprivate Resolver getResolverImp(java.lang.String variableName)
java.util.Set<java.lang.String> getResultVariables()
boolean hasJoins()
true
if the query or subquery being traversed contains JOIN expressions; false
otherwiseprivate void initialize(JPQLQueryContext queryContext)
DeclarationResolver
.queryContext
- The context used to query information about the queryboolean isCollectionIdentificationVariable(java.lang.String variableName)
IN
expressions for a collection-valued field.variableName
- The identification variable to check for what it mapstrue
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 nameprivate boolean isCollectionIdentificationVariableImp(java.lang.String variableName)
boolean isRangeIdentificationVariable(java.lang.String variableName)
variableName
- The name of the variable to verify if it's defined in a range variable declaration in the current query or any parent querytrue
if the variable name is mapping an abstract schema name; false
if it's defined in a collection member declarationprivate boolean isRangeIdentificationVariableImp(java.lang.String variableName)
void populate(Expression expression)
expression
- The Expression
to visit in order to retrieve the information contained in the given query's declarationprivate DeclarationResolver.QualifyRangeDeclarationVisitor qualifyRangeDeclarationVisitor()
private java.lang.String visitDeclaration(Expression expression, Expression identificationVariable)
|
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |