Package org.eclipse.persistence.jpa.jpql
Class EclipseLinkGrammarValidator
- java.lang.Object
-
- org.eclipse.persistence.jpa.jpql.parser.AnonymousExpressionVisitor
-
- org.eclipse.persistence.jpa.jpql.AbstractValidator
-
- org.eclipse.persistence.jpa.jpql.AbstractGrammarValidator
-
- org.eclipse.persistence.jpa.jpql.EclipseLinkGrammarValidator
-
- All Implemented Interfaces:
EclipseLinkExpressionVisitor,ExpressionVisitor
public class EclipseLinkGrammarValidator extends AbstractGrammarValidator implements EclipseLinkExpressionVisitor
This validator adds EclipseLink extension over what the JPA functional specification had defined.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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classEclipseLinkGrammarValidator.InExpressionVisitorprotected static classEclipseLinkGrammarValidator.InExpressionWithNestedArrayVisitor-
Nested classes/interfaces inherited from class org.eclipse.persistence.jpa.jpql.AbstractGrammarValidator
AbstractGrammarValidator.AbstractCollectionValidator, AbstractGrammarValidator.AbstractDoubleEncapsulatedExpressionHelper<T extends AbstractDoubleEncapsulatedExpression>, AbstractGrammarValidator.AbstractEncapsulatedExpressionHelper<T extends AbstractEncapsulatedExpression>, AbstractGrammarValidator.AbstractSingleEncapsulatedExpressionHelper<T extends AbstractSingleEncapsulatedExpression>, AbstractGrammarValidator.AbstractTripleEncapsulatedExpressionHelper<T extends AbstractTripleEncapsulatedExpression>, AbstractGrammarValidator.CollectionExpressionVisitor, AbstractGrammarValidator.CollectionSeparatedByCommaValidator, AbstractGrammarValidator.CollectionSeparatedBySpaceValidator, AbstractGrammarValidator.ComparisonExpressionVisitor, AbstractGrammarValidator.DateTimeVisitor, AbstractGrammarValidator.NullExpressionVisitor
-
Nested classes/interfaces inherited from class org.eclipse.persistence.jpa.jpql.AbstractValidator
AbstractValidator.BypassChildCollectionExpressionVisitor, AbstractValidator.BypassParentSubExpressionVisitor, AbstractValidator.ChildrenCollectorVisitor, AbstractValidator.JPQLQueryBNFValidator, AbstractValidator.NestedArrayVisitor, AbstractValidator.OwningClauseVisitor, AbstractValidator.OwningStatementVisitor, AbstractValidator.SubqueryVisitor
-
-
Constructor Summary
Constructors Constructor Description EclipseLinkGrammarValidator(JPQLGrammar jpqlGrammar)Creates a newEclipseLinkGrammarValidator.
-
Method Summary
-
Methods inherited from class org.eclipse.persistence.jpa.jpql.AbstractGrammarValidator
absExpressionHelper, allOrAnyExpressionHelper, avgFunctionHelper, buildAbsExpressionHelper, buildAllOrAnyExpressionHelper, buildAvgFunctionHelper, buildCoalesceExpressionHelper, buildCollectionExpressionVisitor, buildConcatExpressionHelper, buildCountFunctionHelper, buildDateTimeVisitor, buildEntryExpressionHelper, buildExistsExpressionHelper, buildFunctionExpressionHelper, buildIndexExpressionHelper, buildKeyExpressionHelper, buildLengthExpressionHelper, buildLocateExpressionHelper, buildLowerExpressionHelper, buildMaxFunctionHelper, buildMinFunctionHelper, buildModExpressionHelper, buildNullExpressionVisitor, buildNullIfExpressionHelper, buildObjectExpressionHelper, buildSizeExpressionHelper, buildSqrtExpressionHelper, buildSubstringExpressionHelper, buildSumFunctionHelper, buildTrimExpressionHelper, buildTypeExpressionHelper, buildUpperExpressionHelper, buildValueExpressionHelper, coalesceExpressionHelper, collectionSeparatedByCommaValidator, collectionSeparatedBySpaceValidator, comparisonExpressionVisitor, concatExpressionHelper, countFunctionHelper, dispose, entryExpressionHelper, existsExpressionHelper, functionExpressionHelper, getCollectionExpression, getCollectionExpressionVisitor, getDateTimeVisitor, getGrammar, getHelper, indexExpressionHelper, initialize, isChildOfComparisonExpession, isCollectionExpression, isDateTimeConstant, isJPA1_0, isJPA2_0, isJPA2_1, isNewerThan, isNewerThanOrEqual, isNumericLiteral, isOlderThan, isOlderThanOrEqual, isOwnedByConditionalClause, isOwnedByFromClause, isOwnedBySubFromClause, isValidJavaIdentifier, keyExpressionHelper, lengthExpressionHelper, locateExpressionHelper, lowerExpressionHelper, maxFunctionHelper, minFunctionHelper, modExpressionHelper, nullIfExpressionHelper, objectExpressionHelper, position, registerHelper, sizeExpressionHelper, sqrtExpressionHelper, substringExpressionHelper, sumFunctionHelper, trimExpressionHelper, typeExpressionHelper, upperExpressionHelper, validateAbstractConditionalClause, validateAbstractDoubleEncapsulatedExpression, validateAbstractFromClause, validateAbstractSelectStatement, validateAbstractSingleEncapsulatedExpression, validateAbstractTripleEncapsulatedExpression, validateAggregateFunctionLocation, validateArithmeticExpression, validateCollectionSeparatedByComma, validateCollectionSeparatedBySpace, validateCompoundExpression, validateIdentificationVariableDeclaration, validateIdentifier, validateInputParameters, validateJoins, validateLikeExpressionEscapeCharacter, validateLogicalExpression, validateOwningClause, validatePathExpression, validateSimpleSelectStatement, valueExpressionHelper, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
-
Methods inherited from class org.eclipse.persistence.jpa.jpql.AbstractValidator
addProblem, addProblem, addProblem, addProblem, buildChildrenCollector, buildNestedArrayVisitor, buildOwningStatementVisitor, buildProblem, buildSubqueryVisitor, getBypassChildCollectionExpressionVisitor, getBypassParentSubExpressionVisitor, getChildren, getChildrenCollectorVisitor, getExpressionRegistry, getExpressionValidator, getJPAVersion, getJPQLQueryBNFValidator, getJPQLQueryBNFValidator, getLiteralVisitor, getNestedArrayVisitor, getOwningStatementVisitor, getProvider, getProviderVersion, getQueryBNF, getSubqueryVisitor, isNestedArray, isSubquery, isValid, isValid, isValid, isValidWithChildCollectionBypass, isWithinSubquery, isWithinTopLevelQuery, length, literal, nestedArraySize, position, problemsSize, setProblems, visit
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.eclipse.persistence.jpa.jpql.parser.ExpressionVisitor
visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
-
-
-
-
Constructor Detail
-
EclipseLinkGrammarValidator
public EclipseLinkGrammarValidator(JPQLGrammar jpqlGrammar)
Creates a newEclipseLinkGrammarValidator.- Parameters:
jpqlGrammar- TheJPQLGrammarthat defines how the JPQL query was parsed
-
-
Method Detail
-
buildCastExpressionHelper
protected AbstractGrammarValidator.AbstractSingleEncapsulatedExpressionHelper<CastExpression> buildCastExpressionHelper()
-
buildDatabaseTypeHelper
protected AbstractGrammarValidator.AbstractDoubleEncapsulatedExpressionHelper<DatabaseType> buildDatabaseTypeHelper()
-
buildExtractExpressionHelper
protected AbstractGrammarValidator.AbstractSingleEncapsulatedExpressionHelper<ExtractExpression> buildExtractExpressionHelper()
-
buildInExpressionVisitor
protected EclipseLinkGrammarValidator.InExpressionVisitor buildInExpressionVisitor()
-
buildInExpressionWithNestedArrayVisitor
protected EclipseLinkGrammarValidator.InExpressionWithNestedArrayVisitor buildInExpressionWithNestedArrayVisitor()
-
buildLiteralVisitor
protected LiteralVisitor buildLiteralVisitor()
Creates the visitor that can retrieve some information about various literal.- Specified by:
buildLiteralVisitorin classAbstractValidator- Returns:
- A new
LiteralVisitor
-
buildOwningClauseVisitor
protected AbstractValidator.OwningClauseVisitor buildOwningClauseVisitor()
Creates the visitor that traverses the parent hierarchy of anyExpressionand stops at the firstExpressionthat is a clause.- Specified by:
buildOwningClauseVisitorin classAbstractValidator- Returns:
- A new
AbstractValidator.OwningClauseVisitor
-
buildTableExpressionHelper
protected AbstractGrammarValidator.AbstractSingleEncapsulatedExpressionHelper<TableExpression> buildTableExpressionHelper()
-
castExpressionHelper
protected AbstractGrammarValidator.AbstractSingleEncapsulatedExpressionHelper<CastExpression> castExpressionHelper()
-
databaseTypeHelper
protected AbstractGrammarValidator.AbstractDoubleEncapsulatedExpressionHelper<DatabaseType> databaseTypeHelper()
-
extractExpressionHelper
protected AbstractGrammarValidator.AbstractSingleEncapsulatedExpressionHelper<ExtractExpression> extractExpressionHelper()
-
getInExpressionVisitor
protected EclipseLinkGrammarValidator.InExpressionVisitor getInExpressionVisitor()
-
getInExpressionWithNestedArray
protected EclipseLinkGrammarValidator.InExpressionWithNestedArrayVisitor getInExpressionWithNestedArray()
-
getOwningClauseVisitor
protected AbstractEclipseLinkSemanticValidator.EclipseLinkOwningClauseVisitor getOwningClauseVisitor()
Returns the visitor that traverses the parent hierarchy of anyExpressionand stops at the firstExpressionthat is a clause.- Overrides:
getOwningClauseVisitorin classAbstractValidator- Returns:
AbstractValidator.OwningClauseVisitor
-
isEclipseLink
protected final boolean isEclipseLink()
Determines whether the persistence provider is EclipseLink or not.- Returns:
trueif the persistence provider is EclipseLink;falseotherwise
-
isInExpressionWithNestedArray
protected boolean isInExpressionWithNestedArray(SimpleSelectClause expression)
Determines whether the subquery is part of anINexpression where the left expression is a nested array.- Parameters:
expression- TheSimpleSelectClauseof the subquery- Returns:
trueif the subquery is in anINexpression and its left expression is a nested array
-
isInputParameterInValidLocation
protected boolean isInputParameterInValidLocation(InputParameter expression)
- Overrides:
isInputParameterInValidLocationin classAbstractGrammarValidator
-
isJoinFetchIdentifiable
protected boolean isJoinFetchIdentifiable()
Determines whether aJOIN FETCHexpression can be identified by with an identification variable or not.- Specified by:
isJoinFetchIdentifiablein classAbstractGrammarValidator- Returns:
trueif the expression can have an identification variable;falseotherwise
-
isMultipleSubquerySelectItemsAllowed
protected boolean isMultipleSubquerySelectItemsAllowed(SimpleSelectClause expression)
Determines whether the given subquerySELECTclause can return more than one item or just a single. By default, only one item can be returned.- Overrides:
isMultipleSubquerySelectItemsAllowedin classAbstractGrammarValidator- Parameters:
expression- The subquerySELECTclause- Returns:
trueif it can return more than one item;falseif it needs to return only one item
-
isOwnedByInExpression
protected boolean isOwnedByInExpression(Expression expression)
-
isOwnedByUnionClause
protected boolean isOwnedByUnionClause(Expression expression)
Determines whether the givenExpressionis a child of the UNION clause.- Parameters:
expression- TheExpressionto visit its parent hierarchy up to the clause- Returns:
trueif the first parent being a clause is the UNION clause;falseotherwise
-
isSubqueryAllowedAnywhere
protected boolean isSubqueryAllowedAnywhere()
Determines whether a subquery can be used in any clause of the top-level query.- Specified by:
isSubqueryAllowedAnywherein classAbstractGrammarValidator- Returns:
trueif a subquery can be defined in any clause;falseif it can only be used within theWHEREandHAVINGdefined by the JPA 1.0 and 2.0 specification document
-
tableExpressionHelper
protected AbstractGrammarValidator.AbstractSingleEncapsulatedExpressionHelper<TableExpression> tableExpressionHelper()
-
validateAbstractSelectClause
protected void validateAbstractSelectClause(AbstractSelectClause expression, boolean multipleSelectItemsAllowed)
Validates the select expression of the givenSELECTclause. The select expression will only be visited if its JPQL query BNF is part of the select item BNF.- Overrides:
validateAbstractSelectClausein classAbstractGrammarValidator- Parameters:
expression- TheAbstractSelectClauseto validatemultipleSelectItemsAllowed- Determines whether theSELECTcan have one or more select expression or not
-
visit
public void visit(AsOfClause expression)
Visits theAsOfClauseexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
visit
public void visit(CastExpression expression)
Visits theCastExpressionexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
visit
public void visit(ConnectByClause expression)
Visits theConnectByClauseexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheConnectByClauseto visit
-
visit
public void visit(DatabaseType expression)
Visits theDatabaseTypeexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheDatabaseTypeto visit
-
visit
public void visit(ExtractExpression expression)
Visits theExtractExpressionexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
visit
public void visit(HierarchicalQueryClause expression)
Visits theHierarchicalQueryClauseexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheHierarchicalQueryClauseto visit
-
visit
public void visit(OrderSiblingsByClause expression)
Visits theOrderSiblingsByClauseexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
visit
public void visit(RegexpExpression expression)
Visits theRegexpExpressionexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
visit
public void visit(StartWithClause expression)
Visits theStartWithClauseexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheStartWithClauseto visit
-
visit
public void visit(TableExpression expression)
Visits theTableExpressionexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
visit
public void visit(TableVariableDeclaration expression)
Visits theTableVariableDeclarationexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
visit
public void visit(UnionClause expression)
Visits theUnionClauseexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
-