Package org.eclipse.viatra.query.patternlanguage.emf.validation

## Class EMFPatternLanguageValidator

- java.lang.Object
- - org.eclipse.xtext.validation.AbstractInjectableValidator
  - - org.eclipse.xtext.validation.AbstractDeclarativeValidator
    - - org.eclipse.xtext.xbase.validation.AbstractXbaseValidator
      - - org.eclipse.xtext.xbase.validation.XbaseValidator
        - - org.eclipse.viatra.query.patternlanguage.emf.validation.AbstractEMFPatternLanguageValidator
          - - org.eclipse.viatra.query.patternlanguage.emf.validation.EMFPatternLanguageValidator

- All Implemented Interfaces:
    `org.eclipse.emf.ecore.EValidator`, `IIssueCallback`, `org.eclipse.xtext.validation.ValidationMessageAcceptor`

      public class EMFPatternLanguageValidator
      extends AbstractEMFPatternLanguageValidator
      implements IIssueCallback

  Validators for EMFPattern Language:
  - Duplicate import of EPackages
  - Enum types
  - Unused variables
  - Type checking for parameters and body variables
  - Type checking for literal and computational values in pattern calls, path expressions and compare constraints
  - Pattern body searching for isolated constraints (cartesian products)
  - Non-EDataTypes in check expression
  No Reference:

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.eclipse.xtext.validation.AbstractDeclarativeValidator

      `org.eclipse.xtext.validation.AbstractDeclarativeValidator.MethodWrapper, org.eclipse.xtext.validation.AbstractDeclarativeValidator.State, org.eclipse.xtext.validation.AbstractDeclarativeValidator.StateAccess`

    - ### Nested classes/interfaces inherited from interface org.eclipse.emf.ecore.EValidator

      `org.eclipse.emf.ecore.EValidator.Descriptor, org.eclipse.emf.ecore.EValidator.PatternMatcher, org.eclipse.emf.ecore.EValidator.Registry, org.eclipse.emf.ecore.EValidator.SubstitutionLabelProvider, org.eclipse.emf.ecore.EValidator.ValidationDelegate`

  - ### Field Summary

    - ### Fields inherited from class org.eclipse.xtext.validation.AbstractInjectableValidator

      `CURRENT_LANGUAGE_NAME, ISSUE_SEVERITIES`

    - ### Fields inherited from interface org.eclipse.emf.ecore.EValidator

      `MARKER, RELATED_URIS_ATTRIBUTE, URI_ATTRIBUTE`

    - ### Fields inherited from interface org.eclipse.xtext.validation.ValidationMessageAcceptor

      `INSIGNIFICANT_INDEX`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `EMFPatternLanguageValidator()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `checkDuplicatePackageImports​(PatternModel patternModel)` |
    `void` | `checkEnumValues​(EnumValue value)` |
    `void` | `checkFeatures​(PathExpressionConstraint constraint)` |
    `void` | `checkForCartesianProduct​(PatternBody patternBody)` | A validator for cartesian products (isolated constraints) in pattern bodies.
    `void` | `checkForNotWellbehavingDerivedFeatureInPathExpressions​(PathExpressionConstraint pathExpressionConstraint)` | This validator looks up all `EStructuralFeature` used in a `PathExpressionConstraint` and reports a warning on each that is not representable by VIATRA Query.
    `void` | `checkForWrongLiteralAndComputationValuesInCompareConstraints​(CompareConstraint compareConstraint)` | This validator checks if the literal or computational values match the other side's type in a compare constraint (equality/inequality).
    `void` | `checkForWrongLiteralAndComputationValuesInPathExpressionConstraints​(PathExpressionConstraint pathExpressionConstraint)` | This validator checks if the literal or computational values match the path expression's type.
    `void` | `checkForWrongLiteralAndComputationValuesInPatternCalls​(PatternCall patternCall)` | This validator checks if the literal or computational values match the pattern call's type.
    `void` | `checkForWrongVariablesInXExpressions​(CheckConstraint checkConstraint)` | This validator looks up all variables in the `CheckConstraint` and reports an error if one them is not an `EDataType` instance.
    `void` | `checkForWrongVariablesInXExpressions​(FunctionEvaluationValue eval)` | This validator looks up all variables in the `FunctionEvaluationValue` and reports an error if one them is not an `EDataType` instance.
    `void` | `checkParametersNamed​(Pattern pattern)` |
    `void` | `checkPatternImports​(VQLImportSection section)` |
    `void` | `checkPatternName​(Pattern pattern)` |
    `void` | `checkPrivatePatternUsage​(Pattern pattern)` |
    `void` | `checkReferredPackages​(ReferenceType type)` |
    `void` | `checkVariableType​(Variable variable)` |
    `protected org.eclipse.xtext.validation.AbstractDeclarativeValidator.MethodWrapper` | `createMethodWrapper​(org.eclipse.xtext.validation.AbstractDeclarativeValidator instanceToUse, java.lang.reflect.Method method)` |
    `void` | `error​(java.lang.String message, org.eclipse.emf.ecore.EObject source, org.eclipse.emf.ecore.EStructuralFeature feature, java.lang.String code, java.lang.String... issueData)` |
    `void` | `info​(java.lang.String message, org.eclipse.emf.ecore.EObject source, org.eclipse.emf.ecore.EStructuralFeature feature, java.lang.String code, java.lang.String... issueData)` |
    `void` | `warning​(java.lang.String message, org.eclipse.emf.ecore.EObject source, org.eclipse.emf.ecore.EStructuralFeature feature, java.lang.String code, java.lang.String... issueData)` |

    - ### Methods inherited from class org.eclipse.viatra.query.patternlanguage.emf.validation.AbstractEMFPatternLanguageValidator

      `getEPackages`

    - ### Methods inherited from class org.eclipse.xtext.xbase.validation.XbaseValidator

      `addImportUnusedIssues, canonicalName, checkAssignment, checkAssignment, checkAssignment, checkAssignment, checkAssignment, checkCast, checkCasts, checkCatchClausesOrder, checkClosureParameterTypes, checkClosureParams, checkConflicts, checkConstructorArgumentsAreValid, checkDelegateConstructorIsFirst, checkDeprecated, checkDeprecated, checkDeprecated, checkDeprecated, checkDeprecated, checkDeprecated, checkDuplicatedCases, checkExplicitOperationCall, checkExplicitOperationCall, checkExplicitOperationCall, checkFinalFieldInitialization, checkImports, checkIncompleteCasesOnEnum, checkInitializationRec, checkInnerExpressions, checkInstanceOf, checkInstanceOfOrder, checkIsValidConstructorArgument, checkLocalUsageOfDeclared, checkLocalUsageOfSwitchParameter, checkNoCircularConstructorCall, checkNoForwardReferences, checkNoJavaStyleTypeCasting, checkNoJavaStyleTypeCasting, checkNumberFormat, checkOperandTypesForTripleEquals, checkPrimitiveComparedToNull, checkRedundantCase, checkReferInvalidTypes, checkReferInvalidTypes, checkReferInvalidTypes, checkReturn, checkTypeArguments, checkTypeArguments, checkTypeGuards, checkTypeGuardsOrder, checkTypeGuardsOrderWithGenerics, checkTypeLiteral, checkTypeParameterConstraintIsValid, checkTypeParameterNotUsedInStaticContext, checkTypeReferenceIsNotVoid, checkTypeReferenceIsNotVoid, checkTypes, checkVariableDeclaration, checkVariableIsNotInferredAsVoid, containsTypeArgs, doCheckTypeParameterForwardReference, ensureNotPrimitiveNorWildcard, getActualType, getActualType, getActualType, getExpectedType, getExpressionHelper, getFirstLeafNode, getLogicalContainerProvider, getNameOfTypes, getNode, getReferInvalidTypeMessage, getServices, hasConstructorCallWithThis, isFinal, isHandled, isHidden, isInitialized, isInterface, isLocalClassSemantics, isLocallyUsed, isLocalType, isPrimitiveVoid, isSemicolon, isStaticContext, isTripleEqualsOperation, isValueExpectedRecursive, isXExpressionInsideBlock, memberOfTypeHierarchy, mustBeJavaStatementExpression, populateMaps, reportFieldAlreadyInitialized, reportUninitializedField, reportUninitializedField, toLightweightTypeReference, toLightweightTypeReference`

    - ### Methods inherited from class org.eclipse.xtext.validation.AbstractDeclarativeValidator

      `acceptError, acceptError, acceptInfo, acceptInfo, acceptWarning, acceptWarning, addIssue, addIssue, addIssue, addIssue, addIssue, addIssueToState, checkDone, checkIsFromCurrentlyCheckedResource, createDiagnostic, createDiagnostic, error, error, error, error, error, error, error, getCancelIndicator, getChain, getCheckMode, getContext, getCurrentMethod, getCurrentObject, getIssueSeverities, getMessageAcceptor, guard, handleExceptionDuringValidation, info, info, info, info, info, info, info, internalValidate, isIgnored, newInstance, setInjector, setMessageAcceptor, toDiagnosticSeverity, warning, warning, warning, warning, warning, warning, warning`

    - ### Methods inherited from class org.eclipse.xtext.validation.AbstractInjectableValidator

      `getCurrentLanguage, isLanguageSpecific, isResponsible, register, validate, validate, validate`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### EMFPatternLanguageValidator

          public EMFPatternLanguageValidator()

  - ### Method Detail

    - #### createMethodWrapper

          protected org.eclipse.xtext.validation.AbstractDeclarativeValidator.MethodWrapper createMethodWrapper​(org.eclipse.xtext.validation.AbstractDeclarativeValidator instanceToUse,
                                                                                                                java.lang.reflect.Method method)

      Overrides:
        `createMethodWrapper` in class `org.eclipse.xtext.validation.AbstractDeclarativeValidator`

    - #### checkDuplicatePackageImports

          public void checkDuplicatePackageImports​(PatternModel patternModel)

    - #### checkParametersNamed

          public void checkParametersNamed​(Pattern pattern)

    - #### checkEnumValues

          public void checkEnumValues​(EnumValue value)

    - #### checkVariableType

          public void checkVariableType​(Variable variable)

    - #### checkForCartesianProduct

          public void checkForCartesianProduct​(PatternBody patternBody)

      A validator for cartesian products (isolated constraints) in pattern bodies. There are two types of warnings: strict and soft. Strict warning means that there are constraints in the body which has no connection at all, in soft cases they connected at least with a count find. The validator's result always just a warning, however a strict warning usually a modeling design flaw which should be corrected.
      Parameters:
        `patternBody` -

    - #### checkForWrongLiteralAndComputationValuesInCompareConstraints

          public void checkForWrongLiteralAndComputationValuesInCompareConstraints​(CompareConstraint compareConstraint)

      This validator checks if the literal or computational values match the other side's type in a compare constraint (equality/inequality). Both sides can be literal, we will do the check if at least on side is that.
      Parameters:
        `compareConstraint` -

    - #### checkForWrongLiteralAndComputationValuesInPathExpressionConstraints

          public void checkForWrongLiteralAndComputationValuesInPathExpressionConstraints​(PathExpressionConstraint pathExpressionConstraint)

      This validator checks if the literal or computational values match the path expression's type.
      Parameters:
        `pathExpressionConstraint` -

    - #### checkForWrongLiteralAndComputationValuesInPatternCalls

          public void checkForWrongLiteralAndComputationValuesInPatternCalls​(PatternCall patternCall)

      This validator checks if the literal or computational values match the pattern call's type.
      Parameters:
        `patternCall` -

    - #### checkForWrongVariablesInXExpressions

          public void checkForWrongVariablesInXExpressions​(CheckConstraint checkConstraint)

      This validator looks up all variables in the `CheckConstraint` and reports an error if one them is not an `EDataType` instance. We do not allow arbitrary EMF elements in, so the checks are less likely to have side-effects.

    - #### checkForWrongVariablesInXExpressions

          public void checkForWrongVariablesInXExpressions​(FunctionEvaluationValue eval)

      This validator looks up all variables in the `FunctionEvaluationValue` and reports an error if one them is not an `EDataType` instance. We do not allow arbitrary EMF elements in, so the checks are less likely to have side-effects.

    - #### checkForNotWellbehavingDerivedFeatureInPathExpressions

          public void checkForNotWellbehavingDerivedFeatureInPathExpressions​(PathExpressionConstraint pathExpressionConstraint)

      This validator looks up all `EStructuralFeature` used in a `PathExpressionConstraint` and reports a warning on each that is not representable by VIATRA Query. This is a warning, since we only see well-behaving extensions in the host.
      Parameters:
        `pathExpressionConstraint` -

    - #### checkPatternName

          public void checkPatternName​(Pattern pattern)

    - #### checkReferredPackages

          public void checkReferredPackages​(ReferenceType type)

    - #### checkPatternImports

          public void checkPatternImports​(VQLImportSection section)

    - #### checkPrivatePatternUsage

          public void checkPrivatePatternUsage​(Pattern pattern)

    - #### checkFeatures

          public void checkFeatures​(PathExpressionConstraint constraint)

    - #### info

          public void info​(java.lang.String message,
                           org.eclipse.emf.ecore.EObject source,
                           org.eclipse.emf.ecore.EStructuralFeature feature,
                           java.lang.String code,
                           java.lang.String... issueData)

      Specified by:
        `info` in interface `IIssueCallback`
      Overrides:
        `info` in class `org.eclipse.xtext.validation.AbstractDeclarativeValidator`

    - #### warning

          public void warning​(java.lang.String message,
                              org.eclipse.emf.ecore.EObject source,
                              org.eclipse.emf.ecore.EStructuralFeature feature,
                              java.lang.String code,
                              java.lang.String... issueData)

      Specified by:
        `warning` in interface `IIssueCallback`
      Overrides:
        `warning` in class `org.eclipse.xtext.validation.AbstractDeclarativeValidator`

    - #### error

          public void error​(java.lang.String message,
                            org.eclipse.emf.ecore.EObject source,
                            org.eclipse.emf.ecore.EStructuralFeature feature,
                            java.lang.String code,
                            java.lang.String... issueData)

      Specified by:
        `error` in interface `IIssueCallback`
      Overrides:
        `error` in class `org.eclipse.xtext.validation.AbstractDeclarativeValidator`