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.
- Since:
- 2.4
- Version:
- 2.5
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classprotected static final classNested 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.NullExpressionVisitorNested 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
ConstructorsConstructorDescriptionEclipseLinkGrammarValidator(JPQLGrammar jpqlGrammar) Creates a newEclipseLinkGrammarValidator. -
Method Summary
Modifier and TypeMethodDescriptionprotected LiteralVisitorCreates the visitor that can retrieve some information about various literal.protected AbstractValidator.OwningClauseVisitorCreates the visitor that traverses the parent hierarchy of anyExpressionand stops at the firstExpressionthat is a clause.Returns the visitor that traverses the parent hierarchy of anyExpressionand stops at the firstExpressionthat is a clause.protected final booleanDetermines whether the persistence provider is EclipseLink or not.protected booleanisInExpressionWithNestedArray(SimpleSelectClause expression) Determines whether the subquery is part of anINexpression where the left expression is a nested array.protected booleanisInputParameterInValidLocation(InputParameter expression) protected booleanDetermines whether aJOIN FETCHexpression can be identified by with an identification variable or not.protected booleanDetermines whether the given subquerySELECTclause can return more than one item or just a single.protected booleanisOwnedByInExpression(Expression expression) protected booleanisOwnedByUnionClause(Expression expression) Determines whether the givenExpressionis a child of the UNION clause.protected booleanDetermines whether a subquery can be used in any clause of the top-level query.protected voidvalidateAbstractSelectClause(AbstractSelectClause expression, boolean multipleSelectItemsAllowed) Validates the select expression of the givenSELECTclause.voidvisit(AsOfClause expression) Visits theAsOfClauseexpression.voidvisit(CastExpression expression) Visits theCastExpressionexpression.voidvisit(ConnectByClause expression) Visits theConnectByClauseexpression.voidvisit(DatabaseType expression) Visits theDatabaseTypeexpression.voidvisit(ExtractExpression expression) Visits theExtractExpressionexpression.voidvisit(HierarchicalQueryClause expression) Visits theHierarchicalQueryClauseexpression.voidvisit(OrderSiblingsByClause expression) Visits theOrderSiblingsByClauseexpression.voidvisit(RegexpExpression expression) Visits theRegexpExpressionexpression.voidvisit(StartWithClause expression) Visits theStartWithClauseexpression.voidvisit(TableExpression expression) Visits theTableExpressionexpression.voidvisit(TableVariableDeclaration expression) Visits theTableVariableDeclarationexpression.voidvisit(UnionClause expression) Visits theUnionClauseexpression.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, visitMethods 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, visitMethods inherited from class org.eclipse.persistence.jpa.jpql.parser.AnonymousExpressionVisitor
visit, visit, visit, visit, visit, visit, visit, visit, visitMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods 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, visit, visit, visit, visit, visit, visit, visit, visit, visit
-
Constructor Details
-
EclipseLinkGrammarValidator
Creates a newEclipseLinkGrammarValidator.- Parameters:
jpqlGrammar- TheJPQLGrammarthat defines how the JPQL query was parsed
-
-
Method Details
-
buildCastExpressionHelper
protected AbstractGrammarValidator.AbstractSingleEncapsulatedExpressionHelper<CastExpression> buildCastExpressionHelper() -
buildDatabaseTypeHelper
protected AbstractGrammarValidator.AbstractDoubleEncapsulatedExpressionHelper<DatabaseType> buildDatabaseTypeHelper() -
buildExtractExpressionHelper
protected AbstractGrammarValidator.AbstractSingleEncapsulatedExpressionHelper<ExtractExpression> buildExtractExpressionHelper() -
buildInExpressionVisitor
-
buildInExpressionWithNestedArrayVisitor
protected EclipseLinkGrammarValidator.InExpressionWithNestedArrayVisitor buildInExpressionWithNestedArrayVisitor() -
buildLiteralVisitor
Description copied from class:AbstractValidatorCreates the visitor that can retrieve some information about various literal.- Specified by:
buildLiteralVisitorin classAbstractValidator- Returns:
- A new
LiteralVisitor
-
buildOwningClauseVisitor
Description copied from class:AbstractValidatorCreates 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
-
getInExpressionWithNestedArray
protected EclipseLinkGrammarValidator.InExpressionWithNestedArrayVisitor getInExpressionWithNestedArray() -
getOwningClauseVisitor
protected AbstractEclipseLinkSemanticValidator.EclipseLinkOwningClauseVisitor getOwningClauseVisitor()Description copied from class:AbstractValidatorReturns 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
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
- Overrides:
isInputParameterInValidLocationin classAbstractGrammarValidator
-
isJoinFetchIdentifiable
protected boolean isJoinFetchIdentifiable()Description copied from class:AbstractGrammarValidatorDetermines 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
Description copied from class:AbstractGrammarValidatorDetermines 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
-
isOwnedByUnionClause
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()Description copied from class:AbstractGrammarValidatorDetermines 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) Description copied from class:AbstractGrammarValidatorValidates 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
Description copied from interface:EclipseLinkExpressionVisitorVisits theAsOfClauseexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
visit
Description copied from interface:EclipseLinkExpressionVisitorVisits theCastExpressionexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
visit
Description copied from interface:EclipseLinkExpressionVisitorVisits theConnectByClauseexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheConnectByClauseto visit
-
visit
Description copied from interface:EclipseLinkExpressionVisitorVisits theDatabaseTypeexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheDatabaseTypeto visit
-
visit
Description copied from interface:EclipseLinkExpressionVisitorVisits theExtractExpressionexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
visit
Description copied from interface:EclipseLinkExpressionVisitorVisits theHierarchicalQueryClauseexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheHierarchicalQueryClauseto visit
-
visit
Description copied from interface:EclipseLinkExpressionVisitorVisits theOrderSiblingsByClauseexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
visit
Description copied from interface:EclipseLinkExpressionVisitorVisits theRegexpExpressionexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
visit
Description copied from interface:EclipseLinkExpressionVisitorVisits theStartWithClauseexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheStartWithClauseto visit
-
visit
Description copied from interface:EclipseLinkExpressionVisitorVisits theTableExpressionexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
visit
Description copied from interface:EclipseLinkExpressionVisitorVisits theTableVariableDeclarationexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-
visit
Description copied from interface:EclipseLinkExpressionVisitorVisits theUnionClauseexpression.- Specified by:
visitin interfaceEclipseLinkExpressionVisitor- Parameters:
expression- TheExpressionto visit
-