public class EclipseLinkSemanticValidator extends AbstractSemanticValidator implements EclipseLinkExpressionVisitor
For instance, the function AVG accepts a state field path. The property it represents has
to be of numeric type. AVG(e.name) is parsable but is not semantically valid because the
type of name is a string (the property signature is: "private String name").
Note: EclipseLink does not validate types, but leaves it to the database. This is because
some databases such as Oracle allow different types to different functions and perform implicit
type conversion. i.e. CONCAT('test', 2) returns 'test2'. Also the
FUNC function has an unknown type, so should be allowed with any function.
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.
EclipseLinkGrammarValidator| Modifier and Type | Class and Description |
|---|---|
protected class |
EclipseLinkSemanticValidator.TopLevelFirstDeclarationVisitor |
AbstractSemanticValidator.ComparingEntityTypeLiteralVisitor, AbstractSemanticValidator.ComparisonExpressionVisitor, AbstractSemanticValidator.FirstDeclarationVisitor, AbstractSemanticValidator.InItemsVisitor, AbstractSemanticValidator.PathType, AbstractSemanticValidator.SubqueryFirstDeclarationVisitorAbstractValidator.BypassChildCollectionExpressionVisitor, AbstractValidator.BypassParentSubExpressionVisitor, AbstractValidator.ChildrenCollectorVisitor, AbstractValidator.JPQLQueryBNFValidator, AbstractValidator.OwningClauseVisitor, AbstractValidator.OwningStatementVisitor, AbstractValidator.SubqueryVisitorcollectionValuedPathExpressionVisitor, helper, registerIdentificationVariable, stateFieldPathExpressionVisitor, usedIdentificationVariables, virtualIdentificationVariableFinder| Constructor and Description |
|---|
EclipseLinkSemanticValidator(JPQLQueryContext queryContext)
Creates a new
EclipseLinkSemanticValidator. |
EclipseLinkSemanticValidator(SemanticValidatorHelper helper)
Creates a new
EclipseLinkSemanticValidator. |
| Modifier and Type | Method and Description |
|---|---|
protected LiteralVisitor |
buildLiteralVisitor()
Creates the visitor that can retrieve some information about various literal.
|
protected AbstractValidator.OwningClauseVisitor |
buildOwningClauseVisitor()
Creates the visitor that traverses the parent hierarchy of any
Expression and stops at
the first Expression that is a clause. |
protected EclipseLinkSemanticValidator.TopLevelFirstDeclarationVisitor |
buildTopLevelFirstDeclarationVisitor() |
protected boolean |
isEclipseLink2_4OrLater() |
protected AbstractSemanticValidator.PathType |
selectClausePathExpressionPathType()
Returns the type of path expression that is allowed in the
SELECT clause. |
protected void |
validateRangeVariableDeclarationRootObject(RangeVariableDeclaration expression)
Validates the "root" object of the given
RangeVariableDeclaration. |
protected AbstractSemanticValidator.PathType |
validPathExpressionTypeForCountFunction()
Returns the type of path expression that is valid for a count function; which is the left
expression in a
COUNT expression. |
protected AbstractSemanticValidator.PathType |
validPathExpressionTypeForInExpression()
Returns the type of path expression that is valid for the expression being tested by an
IN expression; which is the left expression. |
protected AbstractSemanticValidator.PathType |
validPathExpressionTypeForInItem()
Returns the type of path expression that is valid for an
IN items; which is the
left expression in a IN expression. |
protected AbstractSemanticValidator.PathType |
validPathExpressionTypeForStringExpression()
Returns the type of path expression that is valid for a string expression; which is the left
expression in a
LIKE expression. |
void |
visit(CastExpression expression)
Visits the
CastExpression expression. |
void |
visit(DatabaseType expression)
Visits the
DatabaseType expression. |
void |
visit(ExtractExpression expression)
Visits the
ExtractExpression expression. |
void |
visit(RegexpExpression expression) |
void |
visit(TableExpression expression)
Visits the
TableExpression expression. |
void |
visit(TableVariableDeclaration expression)
Visits the
TableVariableDeclaration expression. |
void |
visit(UnionClause expression)
Visits the
UnionClause expression. |
buildComparingEntityTypeLiteralVisitor, buildInItemsVisitor, buildSubqueryFirstDeclarationVisitor, dispose, findVirtualIdentificationVariable, getCollectionValuedPathExpression, getCollectionValuedPathExpressionVisitor, getComparingEntityTypeLiteralVisitor, getComparisonExpressionVisitor, getGrammar, getInItemsVisitor, getStateFieldPathExpression, getStateFieldPathExpressionVisitor, getVirtualIdentificationVariableFinder, initialize, isComparingEntityTypeLiteral, isIdentificationVariableDeclaredAfter, isIdentificationVariableValidInComparison, isOrderComparison, isValid, subqueryFirstDeclarationVisitor, topLevelFirstDeclarationVisitor, updateStatus, validateAbsExpression, validateAbstractFromClause, validateAbstractSchemaName, validateAdditionExpression, validateAllOrAnyExpression, validateAndExpression, validateArithmeticExpression, validateArithmeticExpression, validateAvgFunction, validateBetweenExpression, validateCaseExpression, validateCoalesceExpression, validateCollectionMemberDeclaration, validateCollectionMemberExpression, validateCollectionValuedPathExpression, validateComparisonExpression, validateConcatExpression, validateConstructorExpression, validateCountFunction, validateDateTime, validateDeleteClause, validateDeleteStatement, validateDivisionExpression, validateEntityTypeLiteral, validateEntryExpression, validateExistsExpression, validateFirstDeclaration, validateFromClause, validateFunctionPathExpression, validateFunctionPathExpression, validateGroupByClause, validateHavingClause, validateIdentificationVariable, validateIdentificationVariable, validateIdentificationVariableDeclaration, validateIdentificationVariables, validateIndexExpression, validateInExpression, validateJoin, validateJoinsIdentificationVariable, validateKeyExpression, validateLengthExpression, validateLikeExpression, validateLocateExpression, validateLowerExpression, validateMaxFunction, validateMinFunction, validateModExpression, validateMultiplicationExpression, validateNotExpression, validateNullComparisonExpression, validateNullIfExpression, validateObjectExpression, validateOnClause, validateOrderByClause, validateOrderByItem, validateOrExpression, validateRangeVariableDeclaration, validateResultVariable, validateSelectClause, validateSelectStatement, validateSimpleFromClause, validateSimpleSelectClause, validateSimpleSelectStatement, validateSizeExpression, validateSqrtExpression, validateStateFieldPathExpression, validateSubstringExpression, validateSubtractionExpression, validateSumFunction, validateTreatExpression, validateTrimExpression, validateTypeExpression, validateUpdateClause, validateUpdateItem, validateUpdateStatement, validateUpperExpression, validateValueExpression, validateWhenClause, validateWhereClause, 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, visitaddProblem, addProblem, addProblem, addProblem, buildChildrenCollector, buildOwningStatementVisitor, buildProblem, buildSubqueryVisitor, getBypassChildCollectionExpressionVisitor, getBypassParentSubExpressionVisitor, getChildren, getChildrenCollectorVisitor, getExpressionRegistry, getExpressionValidator, getJPAVersion, getJPQLQueryBNFValidator, getJPQLQueryBNFValidator, getLiteralVisitor, getOwningClauseVisitor, getOwningStatementVisitor, getProviderVersion, getQueryBNF, getSubqueryVisitor, isSubquery, isValid, isValid, isValid, isValidWithChildCollectionBypass, isWithinSubquery, isWithinTopLevelQuery, length, literal, position, problemsSize, setProblems, visitvisitclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitvisit, 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, visitpublic EclipseLinkSemanticValidator(JPQLQueryContext queryContext)
EclipseLinkSemanticValidator.queryContext - The context used to query information about the JPQL queryjava.lang.NullPointerException - The given JPQLQueryContext cannot be nullpublic EclipseLinkSemanticValidator(SemanticValidatorHelper helper)
EclipseLinkSemanticValidator.helper - The given helper allows this validator to access the JPA artifacts without using
Hermes SPIjava.lang.NullPointerException - The given SemanticValidatorHelper cannot be nullprotected LiteralVisitor buildLiteralVisitor()
buildLiteralVisitor in class AbstractValidatorLiteralVisitorprotected AbstractValidator.OwningClauseVisitor buildOwningClauseVisitor()
Expression and stops at
the first Expression that is a clause.buildOwningClauseVisitor in class AbstractValidatorAbstractValidator.OwningClauseVisitorprotected EclipseLinkSemanticValidator.TopLevelFirstDeclarationVisitor buildTopLevelFirstDeclarationVisitor()
buildTopLevelFirstDeclarationVisitor in class AbstractSemanticValidatorprotected boolean isEclipseLink2_4OrLater()
protected AbstractSemanticValidator.PathType selectClausePathExpressionPathType()
SELECT clause.selectClausePathExpressionPathType in class AbstractSemanticValidatorprotected void validateRangeVariableDeclarationRootObject(RangeVariableDeclaration expression)
RangeVariableDeclaration.validateRangeVariableDeclarationRootObject in class AbstractSemanticValidatorexpression - The RangeVariableDeclaration that needs its "root" object
to be validatedprotected AbstractSemanticValidator.PathType validPathExpressionTypeForCountFunction()
COUNT expression.validPathExpressionTypeForCountFunction in class AbstractSemanticValidatorprotected AbstractSemanticValidator.PathType validPathExpressionTypeForInExpression()
IN expression; which is the left expression.validPathExpressionTypeForInExpression in class AbstractSemanticValidatorprotected AbstractSemanticValidator.PathType validPathExpressionTypeForInItem()
IN items; which is the
left expression in a IN expression.validPathExpressionTypeForInItem in class AbstractSemanticValidatorprotected AbstractSemanticValidator.PathType validPathExpressionTypeForStringExpression()
LIKE expression.validPathExpressionTypeForStringExpression in class AbstractSemanticValidatorpublic void visit(CastExpression expression)
CastExpression expression.visit in interface EclipseLinkExpressionVisitorexpression - The Expression to visitpublic void visit(DatabaseType expression)
DatabaseType expression.visit in interface EclipseLinkExpressionVisitorexpression - The DatabaseType to visitpublic void visit(ExtractExpression expression)
ExtractExpression expression.visit in interface EclipseLinkExpressionVisitorexpression - The Expression to visitpublic void visit(RegexpExpression expression)
visit in interface EclipseLinkExpressionVisitorpublic void visit(TableExpression expression)
TableExpression expression.visit in interface EclipseLinkExpressionVisitorexpression - The Expression to visitpublic void visit(TableVariableDeclaration expression)
TableVariableDeclaration expression.visit in interface EclipseLinkExpressionVisitorexpression - The Expression to visitpublic void visit(UnionClause expression)
UnionClause expression.visit in interface EclipseLinkExpressionVisitorexpression - The Expression to visit