/** * <copyright> * Copyright (c) 2008, 2009 Open Canarias S.L. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * A. Sanchez-Barbudo - initial API and implementation * </copyright> * * $Id: ImperativeOCLValidator.java,v 1.8 2009/12/09 12:45:12 radvorak Exp $ */ package org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.util; import java.util.Map; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.common.util.DiagnosticChain; import org.eclipse.emf.common.util.ResourceLocator; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EClassifier; import org.eclipse.emf.ecore.EEnumLiteral; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EOperation; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EParameter; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.util.EObjectValidator; import org.eclipse.emf.ecore.util.EcoreValidator; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.*; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.AltExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.AssertExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.AssignExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.BlockExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.BreakExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.CatchExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ComputeExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ContinueExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.DictLiteralExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.DictLiteralPart; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.DictionaryType; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ForExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ImperativeExpression; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ImperativeIterateExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ImperativeLoopExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ImperativeOCLPackage; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.InstantiationExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ListType; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.LogExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.OrderedTupleLiteralExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.OrderedTupleLiteralPart; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.OrderedTupleType; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.RaiseExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ReturnExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.SeverityKind; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.SwitchExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.TryExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.Typedef; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.UnlinkExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.UnpackExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.VariableInitExp; import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.WhileExp; import org.eclipse.ocl.Environment; import org.eclipse.ocl.ecore.CallOperationAction; import org.eclipse.ocl.ecore.CollectionType; import org.eclipse.ocl.ecore.Constraint; import org.eclipse.ocl.ecore.OCLExpression; import org.eclipse.ocl.ecore.PropertyCallExp; import org.eclipse.ocl.ecore.SendSignalAction; import org.eclipse.ocl.ecore.TypeExp; import org.eclipse.ocl.ecore.Variable; import org.eclipse.ocl.ecore.VariableExp; import org.eclipse.ocl.expressions.util.ExpressionsValidator; import org.eclipse.ocl.types.util.TypesValidator; import org.eclipse.ocl.util.OCLUtil; import org.eclipse.ocl.util.TypeUtil; /** * <!-- begin-user-doc --> * The <b>Validator</b> for the model. * <!-- end-user-doc --> * @see org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ImperativeOCLPackage * @generated */ public class ImperativeOCLValidator extends EObjectValidator { /** * The cached model package * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public static final ImperativeOCLValidator INSTANCE = new ImperativeOCLValidator(); /** * A constant for the {@link org.eclipse.emf.common.util.Diagnostic#getSource() source} of diagnostic {@link org.eclipse.emf.common.util.Diagnostic#getCode() codes} from this package. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see org.eclipse.emf.common.util.Diagnostic#getSource() * @see org.eclipse.emf.common.util.Diagnostic#getCode() * @generated */ public static final String DIAGNOSTIC_SOURCE = "org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL"; //$NON-NLS-1$ /** * A constant with a fixed name that can be used as the base value for additional hand written constants. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 0; /** * A constant with a fixed name that can be used as the base value for additional hand written constants in a derived class. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ protected static final int DIAGNOSTIC_CODE_COUNT = GENERATED_DIAGNOSTIC_CODE_COUNT; /** * The cached base package validator. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ protected EcoreValidator ecoreValidator; /** * The cached base package validator. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ protected org.eclipse.ocl.ecore.util.EcoreValidator ecore_1Validator; /** * The cached base package validator. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ protected TypesValidator typesValidator; /** * The cached base package validator. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ protected ExpressionsValidator expressionsValidator; /** * Creates an instance of the switch. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public ImperativeOCLValidator() { super(); ecoreValidator = EcoreValidator.INSTANCE; ecore_1Validator = org.eclipse.ocl.ecore.util.EcoreValidator.INSTANCE; typesValidator = TypesValidator.INSTANCE; expressionsValidator = ExpressionsValidator.INSTANCE; } /** * Returns the package of this validator switch. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override protected EPackage getEPackage() { return ImperativeOCLPackage.eINSTANCE; } /** * Calls <code>validateXXX</code> for the corresponding classifier of the model. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override protected boolean validate(int classifierID, Object value, DiagnosticChain diagnostics, Map<Object, Object> context) { switch (classifierID) { case ImperativeOCLPackage.ALT_EXP: return validateAltExp((AltExp)value, diagnostics, context); case ImperativeOCLPackage.ASSERT_EXP: return validateAssertExp((AssertExp)value, diagnostics, context); case ImperativeOCLPackage.ASSIGN_EXP: return validateAssignExp((AssignExp)value, diagnostics, context); case ImperativeOCLPackage.BLOCK_EXP: return validateBlockExp((BlockExp)value, diagnostics, context); case ImperativeOCLPackage.BREAK_EXP: return validateBreakExp((BreakExp)value, diagnostics, context); case ImperativeOCLPackage.CATCH_EXP: return validateCatchExp((CatchExp)value, diagnostics, context); case ImperativeOCLPackage.COMPUTE_EXP: return validateComputeExp((ComputeExp)value, diagnostics, context); case ImperativeOCLPackage.CONTINUE_EXP: return validateContinueExp((ContinueExp)value, diagnostics, context); case ImperativeOCLPackage.DICT_LITERAL_EXP: return validateDictLiteralExp((DictLiteralExp)value, diagnostics, context); case ImperativeOCLPackage.DICT_LITERAL_PART: return validateDictLiteralPart((DictLiteralPart)value, diagnostics, context); case ImperativeOCLPackage.DICTIONARY_TYPE: return validateDictionaryType((DictionaryType)value, diagnostics, context); case ImperativeOCLPackage.FOR_EXP: return validateForExp((ForExp)value, diagnostics, context); case ImperativeOCLPackage.IMPERATIVE_EXPRESSION: return validateImperativeExpression((ImperativeExpression)value, diagnostics, context); case ImperativeOCLPackage.IMPERATIVE_ITERATE_EXP: return validateImperativeIterateExp((ImperativeIterateExp)value, diagnostics, context); case ImperativeOCLPackage.IMPERATIVE_LOOP_EXP: return validateImperativeLoopExp((ImperativeLoopExp)value, diagnostics, context); case ImperativeOCLPackage.INSTANTIATION_EXP: return validateInstantiationExp((InstantiationExp)value, diagnostics, context); case ImperativeOCLPackage.LIST_LITERAL_EXP: return validateListLiteralExp((ListLiteralExp)value, diagnostics, context); case ImperativeOCLPackage.LIST_TYPE: return validateListType((ListType)value, diagnostics, context); case ImperativeOCLPackage.LOG_EXP: return validateLogExp((LogExp)value, diagnostics, context); case ImperativeOCLPackage.ORDERED_TUPLE_LITERAL_EXP: return validateOrderedTupleLiteralExp((OrderedTupleLiteralExp)value, diagnostics, context); case ImperativeOCLPackage.ORDERED_TUPLE_LITERAL_PART: return validateOrderedTupleLiteralPart((OrderedTupleLiteralPart)value, diagnostics, context); case ImperativeOCLPackage.ORDERED_TUPLE_TYPE: return validateOrderedTupleType((OrderedTupleType)value, diagnostics, context); case ImperativeOCLPackage.RAISE_EXP: return validateRaiseExp((RaiseExp)value, diagnostics, context); case ImperativeOCLPackage.RETURN_EXP: return validateReturnExp((ReturnExp)value, diagnostics, context); case ImperativeOCLPackage.SWITCH_EXP: return validateSwitchExp((SwitchExp)value, diagnostics, context); case ImperativeOCLPackage.TRY_EXP: return validateTryExp((TryExp)value, diagnostics, context); case ImperativeOCLPackage.TYPEDEF: return validateTypedef((Typedef)value, diagnostics, context); case ImperativeOCLPackage.UNLINK_EXP: return validateUnlinkExp((UnlinkExp)value, diagnostics, context); case ImperativeOCLPackage.UNPACK_EXP: return validateUnpackExp((UnpackExp)value, diagnostics, context); case ImperativeOCLPackage.VARIABLE_INIT_EXP: return validateVariableInitExp((VariableInitExp)value, diagnostics, context); case ImperativeOCLPackage.WHILE_EXP: return validateWhileExp((WhileExp)value, diagnostics, context); case ImperativeOCLPackage.SEVERITY_KIND: return validateSeverityKind((SeverityKind)value, diagnostics, context); default: return true; } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateAltExp(AltExp altExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(altExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(altExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(altExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(altExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(altExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(altExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(altExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(altExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(altExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(altExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(altExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(altExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateAssertExp(AssertExp assertExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(assertExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(assertExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(assertExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(assertExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(assertExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(assertExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(assertExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(assertExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(assertExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(assertExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(assertExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(assertExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateAssignExp(AssignExp assignExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(assignExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(assignExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(assignExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(assignExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(assignExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(assignExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(assignExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(assignExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(assignExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(assignExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(assignExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(assignExp, diagnostics, context); if (result || diagnostics != null) result &= validateAssignExp_WellFormedLeftExp(assignExp, diagnostics, context); if (result || diagnostics != null) result &= validateAssignExp_checkLeftAndValueExpConformance(assignExp, diagnostics, context); return result; } /** * Validates the WellFormedLeftExp constraint of '<em>Assign Exp</em>'. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public boolean validateAssignExp_WellFormedLeftExp(AssignExp assignExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = true; String message = null; OCLExpression left = assignExp.getLeft(); if (left != null) { if (!(left instanceof VariableExp) && !(left instanceof PropertyCallExp)) { result = false; message = "_UI_InvalidLeftExpression_diagnostic"; //$NON-NLS-1$ } else { // We check isReset EClassifier leftType = left.getType(); if (!(leftType instanceof CollectionType)) { // A monovalued property or variable cann't have additive semantics if (!assignExp.isIsReset()) { //must be isReset = true result = false; message = "_UI_InvalidIsReset_diagnostic"; //$NON-NLS-1$ } } } } if (!result) { if (diagnostics != null) { diagnostics.add (createDiagnostic (Diagnostic.ERROR, DIAGNOSTIC_SOURCE, 0, message, new Object[] { getObjectLabel(assignExp.getLeft(), context) }, new Object[] { assignExp }, context)); } return false; } return true; } /** * Validates the checkLeftAndValueExpConformance constraint of '<em>Assign Exp</em>'. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public boolean validateAssignExp_checkLeftAndValueExpConformance(AssignExp assignExp, DiagnosticChain diagnostics, Map<Object, Object> context) { Environment< EPackage, EClassifier, EOperation, EStructuralFeature, EEnumLiteral, EParameter, EObject, CallOperationAction, SendSignalAction, Constraint, EClass, EObject> env = OCLUtil.getValidationEnvironment(assignExp, context); boolean result = true; OCLExpression left = assignExp.getLeft(); if (left != null) { EClassifier leftType = left.getType(); if (leftType != null) { boolean multivaluedLeft = false; if (leftType instanceof CollectionType) { multivaluedLeft = true; leftType = ((CollectionType)leftType).getElementType(); } for (OCLExpression value : assignExp.getValue()) { EClassifier valueType = value.getType(); if (valueType != null) { boolean multivaluedValue = false; if (valueType instanceof CollectionType) { multivaluedValue = true; valueType = ((CollectionType)valueType).getElementType(); } if (multivaluedValue && !multivaluedLeft) { result = false; if (diagnostics != null) { diagnostics.add (createDiagnostic (Diagnostic.ERROR, DIAGNOSTIC_SOURCE, 0, "_UI_InvalidCollectionValue_diagnostic", //$NON-NLS-1$ new Object[] { getObjectLabel(left.getType(), context), getObjectLabel(value.getType(), context)}, new Object[] { assignExp }, context)); } } else { if(!TypeUtil.compatibleTypeMatch(env, valueType, leftType)) { result = false; if (diagnostics != null) { diagnostics.add (createDiagnostic (Diagnostic.ERROR, DIAGNOSTIC_SOURCE, 0, "_UI_NonConformanceLeftValueTypes_diagnostic", //$NON-NLS-1$ new Object[] { getObjectLabel(left.getType(), context), getObjectLabel(value.getType(), context) }, new Object[] { assignExp }, context)); } } } } } } } return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateBlockExp(BlockExp blockExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(blockExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(blockExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(blockExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(blockExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(blockExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(blockExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(blockExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(blockExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(blockExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(blockExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(blockExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(blockExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateBreakExp(BreakExp breakExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(breakExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(breakExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(breakExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(breakExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(breakExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(breakExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(breakExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(breakExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(breakExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(breakExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(breakExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(breakExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateCatchExp(CatchExp catchExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(catchExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(catchExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(catchExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(catchExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(catchExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(catchExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(catchExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(catchExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(catchExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(catchExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(catchExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(catchExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateComputeExp(ComputeExp computeExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(computeExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(computeExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(computeExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(computeExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(computeExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(computeExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(computeExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(computeExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(computeExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(computeExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(computeExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(computeExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateContinueExp(ContinueExp continueExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(continueExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(continueExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(continueExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(continueExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(continueExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(continueExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(continueExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(continueExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(continueExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(continueExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(continueExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(continueExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateDictLiteralExp(DictLiteralExp dictLiteralExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(dictLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(dictLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(dictLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(dictLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(dictLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(dictLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(dictLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(dictLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(dictLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(dictLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(dictLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(dictLiteralExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateDictLiteralPart(DictLiteralPart dictLiteralPart, DiagnosticChain diagnostics, Map<Object, Object> context) { return validate_EveryDefaultConstraint(dictLiteralPart, diagnostics, context); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateDictionaryType(DictionaryType dictionaryType, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(dictionaryType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(dictionaryType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(dictionaryType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(dictionaryType, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(dictionaryType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(dictionaryType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(dictionaryType, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateCollectionType_WellFormedName(dictionaryType, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateCollectionType_WellFormedInstanceTypeName(dictionaryType, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClassifier_UniqueTypeParameterNames(dictionaryType, diagnostics, context); if (result || diagnostics != null) result &= typesValidator.validateCollectionType_checkCollectionTypeName(dictionaryType, diagnostics, context); if (result || diagnostics != null) result &= typesValidator.validateCollectionType_checkNoInvalidValues(dictionaryType, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateForExp(ForExp forExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(forExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(forExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(forExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(forExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(forExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(forExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(forExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(forExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(forExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(forExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(forExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(forExp, diagnostics, context); if (result || diagnostics != null) result &= expressionsValidator.validateLoopExp_checkSourceCollection(forExp, diagnostics, context); if (result || diagnostics != null) result &= expressionsValidator.validateLoopExp_checkLoopVariableInit(forExp, diagnostics, context); if (result || diagnostics != null) result &= expressionsValidator.validateLoopExp_checkLoopVariableType(forExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateImperativeExpression(ImperativeExpression imperativeExpression, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(imperativeExpression, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(imperativeExpression, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(imperativeExpression, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(imperativeExpression, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(imperativeExpression, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(imperativeExpression, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(imperativeExpression, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(imperativeExpression, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(imperativeExpression, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(imperativeExpression, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(imperativeExpression, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(imperativeExpression, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateImperativeIterateExp(ImperativeIterateExp imperativeIterateExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= validateImperativeIterateExp_WellFormedName(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= expressionsValidator.validateLoopExp_checkSourceCollection(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= expressionsValidator.validateLoopExp_checkLoopVariableInit(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= expressionsValidator.validateLoopExp_checkLoopVariableType(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= validateImperativeIterateExp_WellFormedTargetVar(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= validateImperativeIterateExp_WellFormedBody(imperativeIterateExp, diagnostics, context); if (result || diagnostics != null) result &= validateImperativeIterateExp_WellFormedCondition(imperativeIterateExp, diagnostics, context); return result; } /** * Validates the WellFormedName constraint of '<em>Imperative Iterate Exp</em>'. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public boolean validateImperativeIterateExp_WellFormedName(ImperativeIterateExp imperativeIterateExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = true; String name = imperativeIterateExp.getName(); if (name == null || (!name.equals("xcollect") //$NON-NLS-1$ && !name.equals("xselect") //$NON-NLS-1$ && !name.equals("selectOne") //$NON-NLS-1$ && !name.equals("collectselect") //$NON-NLS-1$ && !name.equals("collectselectOne"))) //$NON-NLS-1$ result = false; if (!result) { if (diagnostics != null) { diagnostics.add (createDiagnostic (Diagnostic.ERROR, DIAGNOSTIC_SOURCE, 0, "_UI_UnrecognizedImperativeIterateExp_diagnostic", //$NON-NLS-1$ new Object[] { getObjectLabel(imperativeIterateExp, context) }, new Object[] { imperativeIterateExp }, context)); } return false; } return ecore_1Validator.validateOCLExpression_WellFormedName(imperativeIterateExp, diagnostics, context); } /** * Validates the WellFormedTargetVar constraint of '<em>Imperative Iterate Exp</em>'. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public boolean validateImperativeIterateExp_WellFormedTargetVar(ImperativeIterateExp imperativeIterateExp, DiagnosticChain diagnostics, Map<Object, Object> context) { Environment< EPackage, EClassifier, EOperation, EStructuralFeature, EEnumLiteral, EParameter, EObject, CallOperationAction, SendSignalAction, Constraint, EClass, EObject> env = OCLUtil.getValidationEnvironment(imperativeIterateExp, context); boolean result = true; String message = null; int severity=0; Variable target = imperativeIterateExp.getTarget(); String name = imperativeIterateExp.getName(); if (target != null) { if (name.equals("xcollect") //$NON-NLS-1$ || name.equals("select") //$NON-NLS-1$ || name.equals("selectOne")) { //$NON-NLS-1$ result = false; severity = Diagnostic.WARNING; message = "_UI_UnexpectedTargetVar_diagnostic"; //$NON-NLS-1$ } else { OCLExpression body = (OCLExpression) imperativeIterateExp.getBody(); if (body != null && target.getType()!= null && body.getType() != null && !TypeUtil.compatibleTypeMatch(env, body.getType(), target.getType())) { result = false; severity = Diagnostic.ERROR; message = "_UI_BodyTypeDoesNotConformTargetVarType_diagnostic"; //$NON-NLS-1$ } } } else { if (name.equals("collectselect") //$NON-NLS-1$ || name.equals("collectselectOne")) { //$NON-NLS-1$ result = false; severity = Diagnostic.ERROR; message = "_UI_MissedTargetVar_diagnostic"; //$NON-NLS-1$ } } if (!result) { if (diagnostics != null) { diagnostics.add (createDiagnostic (severity, DIAGNOSTIC_SOURCE, 0, message, new Object[] { getObjectLabel(imperativeIterateExp, context) }, new Object[] { imperativeIterateExp }, context)); } return false; } return true; } /** * Validates the WellFormedBody constraint of '<em>Imperative Iterate Exp</em>'. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public boolean validateImperativeIterateExp_WellFormedBody(ImperativeIterateExp imperativeIterateExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = true; OCLExpression body = (OCLExpression) imperativeIterateExp.getBody(); String name = imperativeIterateExp.getName(); String message = null; int severity=0; if (body != null) { if (name.equals("xselect") //$NON-NLS-1$ || name.equals("selectOne")) { //$NON-NLS-1$ result = false; severity = Diagnostic.WARNING; message = "_UI_UnexpectedBodyExpression_diagnostic"; //$NON-NLS-1$ } } else { if (name.equals("xcollect") //$NON-NLS-1$ || name.equals("collectselect") //$NON-NLS-1$ || name.equals("collectselectOne")) { //$NON-NLS-1$ result = false; severity = Diagnostic.ERROR; message = "_UI_MissedBodyExpression_diagnostic"; //$NON-NLS-1$ } } if (!result) { if (diagnostics != null) { diagnostics.add (createDiagnostic (severity, DIAGNOSTIC_SOURCE, 0, message, new Object[] { getObjectLabel(imperativeIterateExp, context) }, new Object[] { imperativeIterateExp }, context)); } return false; } return true; } /** * Validates the WellFormedCondition constraint of '<em>Imperative Iterate Exp</em>'. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public boolean validateImperativeIterateExp_WellFormedCondition(ImperativeIterateExp imperativeIterateExp, DiagnosticChain diagnostics, Map<Object, Object> context) { Environment< EPackage, EClassifier, EOperation, EStructuralFeature, EEnumLiteral, EParameter, EObject, CallOperationAction, SendSignalAction, Constraint, EClass, EObject> env = OCLUtil.getValidationEnvironment(imperativeIterateExp, context); boolean result = true; OCLExpression condition = imperativeIterateExp.getCondition(); String name = imperativeIterateExp.getName(); String message = null; Object[] objects = null; int severity=0; if (condition != null) { if (name.equals("xcollect")) { //$NON-NLS-1$ result = false; severity = Diagnostic.WARNING; message = "_UI_UnexpectedConditionExpression_diagnostic"; //$NON-NLS-1$ objects = new Object[] { getObjectLabel(imperativeIterateExp, context) }; } else { // Specification says that if condition is an typeExp // should be evaluated as oclIsKind(typeExp) which always // will return a boolean value if (!(condition instanceof TypeExp) && condition.getType() != null) { EClassifier type = env.getUMLReflection().asOCLType(condition.getType()); if (!TypeUtil.exactTypeMatch(env, type, env.getOCLStandardLibrary().getBoolean())) { result = false; severity = Diagnostic.ERROR; message = "_UI_NonBooleanCondition_diagnostic"; //$NON-NLS-1$ objects = new Object[] { getObjectLabel(type, context)}; } } else { // we will check that the referred type is compatible with the source element type OCLExpression source = (OCLExpression )imperativeIterateExp.getSource(); if (source != null) { EClassifier referredType = ((TypeExp)condition).getReferredType(); EClassifier sourceType = source.getType(); if (sourceType instanceof CollectionType) { sourceType = ((CollectionType)sourceType).getElementType(); } if (sourceType != null && referredType != null) { if (!TypeUtil.compatibleTypeMatch(env, referredType, sourceType)) { result = false; severity = Diagnostic.ERROR; message = "_UI_ReferredTypeDoesNotConformWithSourceElementType_diagnostic"; //$NON-NLS-1$ objects = new Object[] { getObjectLabel(referredType, context), getObjectLabel(sourceType, context)}; } } } } } } else { if (name.equals("xselect") //$NON-NLS-1$ || name.equals("selectOne") //$NON-NLS-1$ || name.equals("collectselect") //$NON-NLS-1$ || name.equals("collectselectOne")) { //$NON-NLS-1$ result = false; severity = Diagnostic.ERROR; message = "_UI_MissedConditionExpression_diagnostic"; //$NON-NLS-1$ objects = new Object[] { getObjectLabel(imperativeIterateExp, context) }; } } if (!result) { if (diagnostics != null) { diagnostics.add (createDiagnostic (severity, DIAGNOSTIC_SOURCE, 0, message, objects, new Object[] { imperativeIterateExp }, context)); } return false; } return true; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateImperativeLoopExp(ImperativeLoopExp imperativeLoopExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(imperativeLoopExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(imperativeLoopExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(imperativeLoopExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(imperativeLoopExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(imperativeLoopExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(imperativeLoopExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(imperativeLoopExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(imperativeLoopExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(imperativeLoopExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(imperativeLoopExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(imperativeLoopExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(imperativeLoopExp, diagnostics, context); if (result || diagnostics != null) result &= expressionsValidator.validateLoopExp_checkSourceCollection(imperativeLoopExp, diagnostics, context); if (result || diagnostics != null) result &= expressionsValidator.validateLoopExp_checkLoopVariableInit(imperativeLoopExp, diagnostics, context); if (result || diagnostics != null) result &= expressionsValidator.validateLoopExp_checkLoopVariableType(imperativeLoopExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateInstantiationExp(InstantiationExp instantiationExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(instantiationExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(instantiationExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(instantiationExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(instantiationExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(instantiationExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(instantiationExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(instantiationExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(instantiationExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(instantiationExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(instantiationExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(instantiationExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(instantiationExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @since 3.0 */ public boolean validateListLiteralExp(ListLiteralExp listLiteralExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(listLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(listLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(listLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(listLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(listLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(listLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(listLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(listLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(listLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(listLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(listLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(listLiteralExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateListType(ListType listType, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(listType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(listType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(listType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(listType, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(listType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(listType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(listType, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateCollectionType_WellFormedName(listType, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateCollectionType_WellFormedInstanceTypeName(listType, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClassifier_UniqueTypeParameterNames(listType, diagnostics, context); if (result || diagnostics != null) result &= typesValidator.validateCollectionType_checkCollectionTypeName(listType, diagnostics, context); if (result || diagnostics != null) result &= typesValidator.validateCollectionType_checkNoInvalidValues(listType, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateLogExp(LogExp logExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(logExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(logExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(logExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(logExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(logExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(logExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(logExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(logExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(logExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(logExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(logExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(logExp, diagnostics, context); if (result || diagnostics != null) result &= expressionsValidator.validateOperationCallExp_checkArgumentsConform(logExp, diagnostics, context); if (result || diagnostics != null) result &= expressionsValidator.validateOperationCallExp_checkArgumentCount(logExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateOrderedTupleLiteralExp(OrderedTupleLiteralExp orderedTupleLiteralExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(orderedTupleLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(orderedTupleLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(orderedTupleLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(orderedTupleLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(orderedTupleLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(orderedTupleLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(orderedTupleLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(orderedTupleLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(orderedTupleLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(orderedTupleLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(orderedTupleLiteralExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(orderedTupleLiteralExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateOrderedTupleLiteralPart(OrderedTupleLiteralPart orderedTupleLiteralPart, DiagnosticChain diagnostics, Map<Object, Object> context) { return validate_EveryDefaultConstraint(orderedTupleLiteralPart, diagnostics, context); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateOrderedTupleType(OrderedTupleType orderedTupleType, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= validateOrderedTupleType_WellFormedName(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClassifier_WellFormedInstanceTypeName(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClassifier_UniqueTypeParameterNames(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_InterfaceIsAbstract(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_AtMostOneID(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_UniqueFeatureNames(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_UniqueOperationSignatures(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_NoCircularSuperTypes(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_WellFormedMapEntryClass(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_ConsistentSuperTypes(orderedTupleType, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_DisjointFeatureAndOperationSignatures(orderedTupleType, diagnostics, context); return result; } /** * Validates the WellFormedName constraint of '<em>Ordered Tuple Type</em>'. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public boolean validateOrderedTupleType_WellFormedName(OrderedTupleType orderedTupleType, DiagnosticChain diagnostics, Map<Object, Object> context) { // The Ecore constraint is not applicable to OrderedTupleType return true; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateRaiseExp(RaiseExp raiseExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(raiseExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(raiseExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(raiseExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(raiseExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(raiseExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(raiseExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(raiseExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(raiseExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(raiseExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(raiseExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(raiseExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(raiseExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateReturnExp(ReturnExp returnExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(returnExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(returnExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(returnExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(returnExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(returnExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(returnExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(returnExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(returnExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(returnExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(returnExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(returnExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(returnExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateSwitchExp(SwitchExp switchExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(switchExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(switchExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(switchExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(switchExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(switchExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(switchExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(switchExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(switchExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(switchExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(switchExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(switchExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(switchExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateTryExp(TryExp tryExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(tryExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(tryExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(tryExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(tryExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(tryExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(tryExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(tryExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(tryExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(tryExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(tryExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(tryExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(tryExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateTypedef(Typedef typedef, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(typedef, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(typedef, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(typedef, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(typedef, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(typedef, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(typedef, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(typedef, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateENamedElement_WellFormedName(typedef, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClassifier_WellFormedInstanceTypeName(typedef, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClassifier_UniqueTypeParameterNames(typedef, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_InterfaceIsAbstract(typedef, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_AtMostOneID(typedef, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_UniqueFeatureNames(typedef, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_UniqueOperationSignatures(typedef, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_NoCircularSuperTypes(typedef, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_WellFormedMapEntryClass(typedef, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_ConsistentSuperTypes(typedef, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateEClass_DisjointFeatureAndOperationSignatures(typedef, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateUnlinkExp(UnlinkExp unlinkExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(unlinkExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(unlinkExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(unlinkExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(unlinkExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(unlinkExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(unlinkExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(unlinkExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(unlinkExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(unlinkExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(unlinkExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(unlinkExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(unlinkExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateUnpackExp(UnpackExp unpackExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(unpackExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(unpackExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(unpackExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(unpackExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(unpackExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(unpackExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(unpackExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(unpackExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(unpackExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(unpackExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(unpackExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(unpackExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateVariableInitExp(VariableInitExp variableInitExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(variableInitExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(variableInitExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(variableInitExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(variableInitExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(variableInitExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(variableInitExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(variableInitExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(variableInitExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(variableInitExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(variableInitExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(variableInitExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(variableInitExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateWhileExp(WhileExp whileExp, DiagnosticChain diagnostics, Map<Object, Object> context) { boolean result = validate_EveryMultiplicityConforms(whileExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryDataValueConforms(whileExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(whileExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryProxyResolves(whileExp, diagnostics, context); if (result || diagnostics != null) result &= validate_UniqueID(whileExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryKeyUnique(whileExp, diagnostics, context); if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(whileExp, diagnostics, context); if (result || diagnostics != null) result &= ecore_1Validator.validateOCLExpression_WellFormedName(whileExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidLowerBound(whileExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidUpperBound(whileExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ConsistentBounds(whileExp, diagnostics, context); if (result || diagnostics != null) result &= ecoreValidator.validateETypedElement_ValidType(whileExp, diagnostics, context); return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public boolean validateSeverityKind(SeverityKind severityKind, DiagnosticChain diagnostics, Map<Object, Object> context) { return true; } /** * Returns the resource locator that will be used to fetch messages for this validator's diagnostics. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ @Override public ResourceLocator getResourceLocator() { return ImperativeOCLPlugin.INSTANCE; } } //ImperativeOCLValidator