diff options
Diffstat (limited to 'plugins/org.eclipse.qvtd.umlx/emf-gen/org/eclipse/qvtd/umlx/impl/RelPatternEdgeImpl.java')
-rw-r--r-- | plugins/org.eclipse.qvtd.umlx/emf-gen/org/eclipse/qvtd/umlx/impl/RelPatternEdgeImpl.java | 1066 |
1 files changed, 476 insertions, 590 deletions
diff --git a/plugins/org.eclipse.qvtd.umlx/emf-gen/org/eclipse/qvtd/umlx/impl/RelPatternEdgeImpl.java b/plugins/org.eclipse.qvtd.umlx/emf-gen/org/eclipse/qvtd/umlx/impl/RelPatternEdgeImpl.java index 475018b33..eb4c15841 100644 --- a/plugins/org.eclipse.qvtd.umlx/emf-gen/org/eclipse/qvtd/umlx/impl/RelPatternEdgeImpl.java +++ b/plugins/org.eclipse.qvtd.umlx/emf-gen/org/eclipse/qvtd/umlx/impl/RelPatternEdgeImpl.java @@ -31,6 +31,7 @@ import org.eclipse.ocl.pivot.library.LibraryIteration; import org.eclipse.ocl.pivot.library.collection.CollectionIncludesOperation; import org.eclipse.ocl.pivot.library.logical.BooleanAndOperation; import org.eclipse.ocl.pivot.library.logical.BooleanImpliesOperation; +import org.eclipse.ocl.pivot.library.logical.BooleanNotOperation; import org.eclipse.ocl.pivot.library.logical.BooleanOrOperation; import org.eclipse.ocl.pivot.library.oclany.OclAnyOclAsSetOperation; import org.eclipse.ocl.pivot.library.oclany.OclAnyOclAsTypeOperation; @@ -46,12 +47,10 @@ import org.eclipse.ocl.pivot.utilities.ValueUtil; import org.eclipse.ocl.pivot.values.InvalidValueException; import org.eclipse.ocl.pivot.values.SetValue; import org.eclipse.qvtd.umlx.RelDomainNode; -import org.eclipse.qvtd.umlx.RelPatternClassNode; import org.eclipse.qvtd.umlx.RelPatternEdge; import org.eclipse.qvtd.umlx.RelPatternNode; import org.eclipse.qvtd.umlx.UMLXPackage; import org.eclipse.qvtd.umlx.UMLXTables; -import org.eclipse.qvtd.umlx.UMLXTypedElement; import org.eclipse.qvtd.umlx.util.UMLXVisitor; /** @@ -90,7 +89,7 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { * @generated * @ordered */ - protected RelPatternClassNode source; + protected RelPatternNode source; /** * The default value of the '{@link #getSourceIndex() <em>Source Index</em>}' attribute. @@ -147,10 +146,10 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { * @generated */ @Override - public RelPatternClassNode getSource() { + public RelPatternNode getSource() { if (source != null && source.eIsProxy()) { InternalEObject oldSource = (InternalEObject)source; - source = (RelPatternClassNode)eResolveProxy(oldSource); + source = (RelPatternNode)eResolveProxy(oldSource); if (source != oldSource) { if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, UMLXPackage.REL_PATTERN_EDGE__SOURCE, oldSource, source)); @@ -164,7 +163,7 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { * <!-- end-user-doc --> * @generated */ - public RelPatternClassNode basicGetSource() { + public RelPatternNode basicGetSource() { return source; } @@ -173,8 +172,8 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { * <!-- end-user-doc --> * @generated */ - public NotificationChain basicSetSource(RelPatternClassNode newSource, NotificationChain msgs) { - RelPatternClassNode oldSource = source; + public NotificationChain basicSetSource(RelPatternNode newSource, NotificationChain msgs) { + RelPatternNode oldSource = source; source = newSource; if (eNotificationRequired()) { ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, UMLXPackage.REL_PATTERN_EDGE__SOURCE, oldSource, newSource); @@ -189,13 +188,13 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { * @generated */ @Override - public void setSource(RelPatternClassNode newSource) { + public void setSource(RelPatternNode newSource) { if (newSource != source) { NotificationChain msgs = null; if (source != null) - msgs = ((InternalEObject)source).eInverseRemove(this, UMLXPackage.REL_PATTERN_CLASS_NODE__OUTGOING, RelPatternClassNode.class, msgs); + msgs = ((InternalEObject)source).eInverseRemove(this, UMLXPackage.REL_PATTERN_NODE__OUTGOING, RelPatternNode.class, msgs); if (newSource != null) - msgs = ((InternalEObject)newSource).eInverseAdd(this, UMLXPackage.REL_PATTERN_CLASS_NODE__OUTGOING, RelPatternClassNode.class, msgs); + msgs = ((InternalEObject)newSource).eInverseAdd(this, UMLXPackage.REL_PATTERN_NODE__OUTGOING, RelPatternNode.class, msgs); msgs = basicSetSource(newSource, msgs); if (msgs != null) msgs.dispatch(); } @@ -377,194 +376,57 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { * @generated */ @Override - public boolean validateCompatibleMemberPropertyTarget(final DiagnosticChain diagnostics, final Map<Object, Object> context) { + public boolean validateSourceIsEClass(final DiagnosticChain diagnostics, final Map<Object, Object> context) { /** * - * inv CompatibleMemberPropertyTarget: - * let - * severity : Integer[1] = 'RelPatternEdge::CompatibleMemberPropertyTarget'.getSeverity() + * inv SourceIsEClass: + * let severity : Integer[1] = 'RelPatternEdge::SourceIsEClass'.getSeverity() * in * if severity <= 0 * then true * else - * let result : Boolean[?] = referredEStructuralFeature = null and sourceIndex > 0 and - * target.oclIsKindOf(RelPatternClassNode) implies - * let - * sourceEClass : ecore::EClass[1] = source.oclAsType(RelPatternClassNode) - * .referredEClassifier.oclAsType(ecore::EClass) - * in - * let - * targetEClass : ecore::EClass[1] = target.oclAsType(RelPatternClassNode) - * .referredEClassifier.oclAsType(ecore::EClass) - * in - * sourceEClass->closure(eSuperTypes) - * ->includes(targetEClass) or - * targetEClass->closure(eSuperTypes) - * ->includes(sourceEClass) + * let + * result : Boolean[?] = not source.isExpression() implies + * source.referredEClassifier.oclIsKindOf(ecore::EClassifier) * in - * 'RelPatternEdge::CompatibleMemberPropertyTarget'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) + * 'RelPatternEdge::SourceIsEClass'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) * endif */ final /*@NonInvalid*/ org.eclipse.ocl.pivot.evaluation.@NonNull Executor executor = PivotUtilInternal.getExecutor(this); final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@NonNull IdResolver idResolver = executor.getIdResolver(); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull StandardLibrary standardLibrary = idResolver.getStandardLibrary(); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_CompatibleMemberPropertyTarget); + final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_SourceIsEClass); final /*@NonInvalid*/ boolean le = OclComparableLessThanEqualOperation.INSTANCE.evaluate(executor, severity_0, UMLXTables.INT_0).booleanValue(); - /*@NonInvalid*/ boolean symbol_2; + /*@NonInvalid*/ boolean symbol_0; if (le) { - symbol_2 = ValueUtil.TRUE_VALUE; + symbol_0 = ValueUtil.TRUE_VALUE; } else { /*@Caught*/ @Nullable Object CAUGHT_result; try { - final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EStructuralFeature referredEStructuralFeature = this.getReferredEStructuralFeature(); - final /*@NonInvalid*/ boolean eq = referredEStructuralFeature == null; - /*@NonInvalid*/ boolean and; - if (eq) { - final /*@NonInvalid*/ int sourceIndex = this.getSourceIndex(); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue BOXED_sourceIndex = ValueUtil.integerValueOf(sourceIndex); - final /*@NonInvalid*/ boolean gt = OclComparableGreaterThanOperation.INSTANCE.evaluate(executor, BOXED_sourceIndex, UMLXTables.INT_0).booleanValue(); - and = gt; - } - else { - and = ValueUtil.FALSE_VALUE; - } - /*@NonInvalid*/ boolean and_0; - if (and) { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_umlx_c_c_RelPatternClassNode_0 = idResolver.getClass(UMLXTables.CLSSid_RelPatternClassNode, null); - @SuppressWarnings("null") - final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target = this.getTarget(); - final /*@NonInvalid*/ boolean oclIsKindOf = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, target, TYP_umlx_c_c_RelPatternClassNode_0).booleanValue(); - and_0 = oclIsKindOf; - } - else { - and_0 = ValueUtil.FALSE_VALUE; - } - /*@Thrown*/ java.lang.@Nullable Boolean result; - if (and_0) { - /*@Caught*/ @NonNull Object CAUGHT_sourceEClass; - try { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EClass_0 = idResolver.getClass(UMLXTables.CLSSid_EClass, null); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_umlx_c_c_RelPatternClassNode_1 = idResolver.getClass(UMLXTables.CLSSid_RelPatternClassNode, null); - @SuppressWarnings("null") - final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode source = this.getSource(); - final /*@Thrown*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode oclAsType = ClassUtil.nonNullState((RelPatternClassNode)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, source, TYP_umlx_c_c_RelPatternClassNode_1)); - @SuppressWarnings("null") - final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClassifier referredEClassifier = oclAsType.getReferredEClassifier(); - final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClass sourceEClass = ClassUtil.nonNullState((EClass)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, referredEClassifier, TYP_ecore_c_c_EClass_0)); - CAUGHT_sourceEClass = sourceEClass; - } - catch (Exception e) { - CAUGHT_sourceEClass = ValueUtil.createInvalidValue(e); - } - /*@Caught*/ @NonNull Object CAUGHT_targetEClass; - try { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EClass_1 = idResolver.getClass(UMLXTables.CLSSid_EClass, null); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_umlx_c_c_RelPatternClassNode_2 = idResolver.getClass(UMLXTables.CLSSid_RelPatternClassNode, null); - @SuppressWarnings("null") - final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target_0 = this.getTarget(); - final /*@Thrown*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode oclAsType_0 = ClassUtil.nonNullState((RelPatternClassNode)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, target_0, TYP_umlx_c_c_RelPatternClassNode_2)); - @SuppressWarnings("null") - final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClassifier referredEClassifier_0 = oclAsType_0.getReferredEClassifier(); - final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClass targetEClass = ClassUtil.nonNullState((EClass)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, referredEClassifier_0, TYP_ecore_c_c_EClass_1)); - CAUGHT_targetEClass = targetEClass; - } - catch (Exception e) { - CAUGHT_targetEClass = ValueUtil.createInvalidValue(e); - } - /*@Caught*/ @NonNull Object CAUGHT_includes; - try { - if (CAUGHT_sourceEClass instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_sourceEClass; - } - final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull SetValue oclAsSet = OclAnyOclAsSetOperation.INSTANCE.evaluate(executor, UMLXTables.SET_CLSSid_EClass, CAUGHT_sourceEClass); - final org.eclipse.ocl.pivot.@NonNull Class TYPE_closure_1 = executor.getStaticTypeOf(oclAsSet); - final LibraryIteration.@org.eclipse.jdt.annotation.NonNull LibraryIterationExtension IMPL_closure_1 = (LibraryIteration.LibraryIterationExtension)TYPE_closure_1.lookupImplementation(standardLibrary, OCLstdlibTables.Operations._Set__closure); - final @NonNull Object ACC_closure_1 = IMPL_closure_1.createAccumulatorValue(executor, UMLXTables.SET_CLSSid_EClass, UMLXTables.ORD_CLSSid_EClass); - /** - * Implementation of the iterator body. - */ - final @NonNull AbstractBinaryOperation BODY_closure_1 = new AbstractBinaryOperation() { - /** - * eSuperTypes - */ - @Override - public @Nullable Object evaluate(final @NonNull Executor executor, final @NonNull TypeId typeId, final @Nullable Object oclAsSet, final /*@NonInvalid*/ java.lang.@Nullable Object _1) { - final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EClass symbol_0 = (EClass)_1; - if (symbol_0 == null) { - throw new InvalidValueException("Null source for \'\'http://www.eclipse.org/emf/2002/Ecore\'::EClass::eSuperTypes\'"); - } - @SuppressWarnings("null") - final /*@Thrown*/ java.util.@NonNull List<EClass> eSuperTypes = symbol_0.getESuperTypes(); - final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull OrderedSetValue BOXED_eSuperTypes = idResolver.createOrderedSetOfAll(UMLXTables.ORD_CLSSid_EClass, eSuperTypes); - return BOXED_eSuperTypes; - } - }; - final @NonNull ExecutorSingleIterationManager MGR_closure_1 = new ExecutorSingleIterationManager(executor, UMLXTables.SET_CLSSid_EClass, BODY_closure_1, oclAsSet, ACC_closure_1); - final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull SetValue closure = ClassUtil.nonNullState((SetValue)IMPL_closure_1.evaluateIteration(MGR_closure_1)); - if (CAUGHT_targetEClass instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_targetEClass; - } - final /*@Thrown*/ boolean includes = CollectionIncludesOperation.INSTANCE.evaluate(closure, CAUGHT_targetEClass).booleanValue(); - CAUGHT_includes = includes; - } - catch (Exception e) { - CAUGHT_includes = ValueUtil.createInvalidValue(e); - } - /*@Caught*/ @NonNull Object CAUGHT_includes_0; - try { - if (CAUGHT_targetEClass instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_targetEClass; - } - final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull SetValue oclAsSet_0 = OclAnyOclAsSetOperation.INSTANCE.evaluate(executor, UMLXTables.SET_CLSSid_EClass, CAUGHT_targetEClass); - final org.eclipse.ocl.pivot.@NonNull Class TYPE_closure_0_0 = executor.getStaticTypeOf(oclAsSet_0); - final LibraryIteration.@org.eclipse.jdt.annotation.NonNull LibraryIterationExtension IMPL_closure_0_0 = (LibraryIteration.LibraryIterationExtension)TYPE_closure_0_0.lookupImplementation(standardLibrary, OCLstdlibTables.Operations._Set__closure); - final @NonNull Object ACC_closure_0_0 = IMPL_closure_0_0.createAccumulatorValue(executor, UMLXTables.SET_CLSSid_EClass, UMLXTables.ORD_CLSSid_EClass); - /** - * Implementation of the iterator body. - */ - final @NonNull AbstractBinaryOperation BODY_closure_0_0 = new AbstractBinaryOperation() { - /** - * eSuperTypes - */ - @Override - public @Nullable Object evaluate(final @NonNull Executor executor, final @NonNull TypeId typeId, final @Nullable Object oclAsSet_0, final /*@NonInvalid*/ java.lang.@Nullable Object _1_0) { - final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EClass symbol_1 = (EClass)_1_0; - if (symbol_1 == null) { - throw new InvalidValueException("Null source for \'\'http://www.eclipse.org/emf/2002/Ecore\'::EClass::eSuperTypes\'"); - } - @SuppressWarnings("null") - final /*@Thrown*/ java.util.@NonNull List<EClass> eSuperTypes_0 = symbol_1.getESuperTypes(); - final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull OrderedSetValue BOXED_eSuperTypes_0 = idResolver.createOrderedSetOfAll(UMLXTables.ORD_CLSSid_EClass, eSuperTypes_0); - return BOXED_eSuperTypes_0; - } - }; - final @NonNull ExecutorSingleIterationManager MGR_closure_0_0 = new ExecutorSingleIterationManager(executor, UMLXTables.SET_CLSSid_EClass, BODY_closure_0_0, oclAsSet_0, ACC_closure_0_0); - final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull SetValue closure_0 = ClassUtil.nonNullState((SetValue)IMPL_closure_0_0.evaluateIteration(MGR_closure_0_0)); - if (CAUGHT_sourceEClass instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_sourceEClass; - } - final /*@Thrown*/ boolean includes_0 = CollectionIncludesOperation.INSTANCE.evaluate(closure_0, CAUGHT_sourceEClass).booleanValue(); - CAUGHT_includes_0 = includes_0; - } - catch (Exception e) { - CAUGHT_includes_0 = ValueUtil.createInvalidValue(e); - } - final /*@Thrown*/ java.lang.@Nullable Boolean or = BooleanOrOperation.INSTANCE.evaluate(CAUGHT_includes, CAUGHT_includes_0); - result = or; + @SuppressWarnings("null") + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode source = this.getSource(); + final /*@NonInvalid*/ boolean isExpression = source.isExpression(); + final /*@NonInvalid*/ java.lang.@Nullable Boolean not = BooleanNotOperation.INSTANCE.evaluate(isExpression); + /*@Caught*/ @NonNull Object CAUGHT_oclIsKindOf; + try { + final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EClassifier = idResolver.getClass(UMLXTables.CLSSid_EClassifier, null); + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EClassifier referredEClassifier = source.getReferredEClassifier(); + final /*@Thrown*/ boolean oclIsKindOf = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, referredEClassifier, TYP_ecore_c_c_EClassifier).booleanValue(); + CAUGHT_oclIsKindOf = oclIsKindOf; } - else { - result = ValueUtil.TRUE_VALUE; + catch (Exception e) { + CAUGHT_oclIsKindOf = ValueUtil.createInvalidValue(e); } + final /*@Thrown*/ java.lang.@Nullable Boolean result = BooleanImpliesOperation.INSTANCE.evaluate(not, CAUGHT_oclIsKindOf); CAUGHT_result = result; } catch (Exception e) { CAUGHT_result = ValueUtil.createInvalidValue(e); } - final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_CompatibleMemberPropertyTarget, this, (Object)null, diagnostics, context, (Object)null, severity_0, CAUGHT_result, UMLXTables.INT_0).booleanValue(); - symbol_2 = logDiagnostic; + final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_SourceIsEClass, this, (Object)null, diagnostics, context, (Object)null, severity_0, CAUGHT_result, UMLXTables.INT_0).booleanValue(); + symbol_0 = logDiagnostic; } - return Boolean.TRUE == symbol_2; + return Boolean.TRUE == symbol_0; } /** @@ -583,14 +445,12 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { * if severity <= 0 * then true * else - * let - * result : Boolean[1] = source.oclIsKindOf(RelPatternClassNode) + * let result : Boolean[?] = not source.isExpression() * in * 'RelPatternEdge::SourceIsClassNode'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) * endif */ final /*@NonInvalid*/ org.eclipse.ocl.pivot.evaluation.@NonNull Executor executor = PivotUtilInternal.getExecutor(this); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@NonNull IdResolver idResolver = executor.getIdResolver(); final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_SourceIsClassNode); final /*@NonInvalid*/ boolean le = OclComparableLessThanEqualOperation.INSTANCE.evaluate(executor, severity_0, UMLXTables.INT_0).booleanValue(); /*@NonInvalid*/ boolean symbol_0; @@ -598,10 +458,10 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { symbol_0 = ValueUtil.TRUE_VALUE; } else { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_umlx_c_c_RelPatternClassNode_0 = idResolver.getClass(UMLXTables.CLSSid_RelPatternClassNode, null); @SuppressWarnings("null") - final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode source = this.getSource(); - final /*@NonInvalid*/ boolean result = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, source, TYP_umlx_c_c_RelPatternClassNode_0).booleanValue(); + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode source = this.getSource(); + final /*@NonInvalid*/ boolean isExpression = source.isExpression(); + final /*@NonInvalid*/ java.lang.@Nullable Boolean result = BooleanNotOperation.INSTANCE.evaluate(isExpression); final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_SourceIsClassNode, this, (Object)null, diagnostics, context, (Object)null, severity_0, result, UMLXTables.INT_0).booleanValue(); symbol_0 = logDiagnostic; } @@ -614,56 +474,87 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { * @generated */ @Override - public boolean validateSourceIsEClass(final DiagnosticChain diagnostics, final Map<Object, Object> context) { + public boolean validateCompatibleEAttributePropertyTarget(final DiagnosticChain diagnostics, final Map<Object, Object> context) { /** * - * inv SourceIsEClass: - * let severity : Integer[1] = 'RelPatternEdge::SourceIsEClass'.getSeverity() + * inv CompatibleEAttributePropertyTarget: + * let + * severity : Integer[1] = 'RelPatternEdge::CompatibleEAttributePropertyTarget'.getSeverity() * in * if severity <= 0 * then true * else - * let - * result : Boolean[?] = source.oclIsKindOf(RelPatternClassNode) implies - * source.oclAsType(RelPatternClassNode) - * .referredEClassifier.oclIsKindOf(ecore::EClassifier) + * let result : Boolean[?] = referredEStructuralFeature <> null and + * referredEStructuralFeature.oclIsKindOf(ecore::EAttribute) and + * not target.isExpression() implies referredEStructuralFeature.eType = target.referredEClassifier * in - * 'RelPatternEdge::SourceIsEClass'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) + * 'RelPatternEdge::CompatibleEAttributePropertyTarget'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) * endif */ final /*@NonInvalid*/ org.eclipse.ocl.pivot.evaluation.@NonNull Executor executor = PivotUtilInternal.getExecutor(this); final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@NonNull IdResolver idResolver = executor.getIdResolver(); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_SourceIsEClass); + final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_CompatibleEAttributePropertyTarget); final /*@NonInvalid*/ boolean le = OclComparableLessThanEqualOperation.INSTANCE.evaluate(executor, severity_0, UMLXTables.INT_0).booleanValue(); /*@NonInvalid*/ boolean symbol_0; if (le) { symbol_0 = ValueUtil.TRUE_VALUE; } else { - /*@Caught*/ @NonNull Object CAUGHT_result; + /*@Caught*/ @Nullable Object CAUGHT_result; try { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_umlx_c_c_RelPatternClassNode_0 = idResolver.getClass(UMLXTables.CLSSid_RelPatternClassNode, null); - @SuppressWarnings("null") - final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode source = this.getSource(); - final /*@NonInvalid*/ boolean oclIsKindOf = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, source, TYP_umlx_c_c_RelPatternClassNode_0).booleanValue(); - /*@Thrown*/ boolean result; - if (oclIsKindOf) { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EClassifier = idResolver.getClass(UMLXTables.CLSSid_EClassifier, null); - final /*@Thrown*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode oclAsType = ClassUtil.nonNullState((RelPatternClassNode)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, source, TYP_umlx_c_c_RelPatternClassNode_0)); + /*@Caught*/ @Nullable Object CAUGHT_and_0; + try { + /*@Caught*/ @NonNull Object CAUGHT_and; + try { + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EStructuralFeature referredEStructuralFeature_0 = this.getReferredEStructuralFeature(); + final /*@NonInvalid*/ boolean ne = referredEStructuralFeature_0 != null; + /*@Thrown*/ boolean and; + if (ne) { + final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EAttribute = idResolver.getClass(UMLXTables.CLSSid_EAttribute, null); + final /*@Thrown*/ boolean oclIsKindOf = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, referredEStructuralFeature_0, TYP_ecore_c_c_EAttribute).booleanValue(); + and = oclIsKindOf; + } + else { + and = ValueUtil.FALSE_VALUE; + } + CAUGHT_and = and; + } + catch (Exception e) { + CAUGHT_and = ValueUtil.createInvalidValue(e); + } + @SuppressWarnings("null") + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target = this.getTarget(); + final /*@NonInvalid*/ boolean isExpression = target.isExpression(); + final /*@NonInvalid*/ java.lang.@Nullable Boolean not = BooleanNotOperation.INSTANCE.evaluate(isExpression); + final /*@Thrown*/ java.lang.@Nullable Boolean and_0 = BooleanAndOperation.INSTANCE.evaluate(CAUGHT_and, not); + CAUGHT_and_0 = and_0; + } + catch (Exception e) { + CAUGHT_and_0 = ValueUtil.createInvalidValue(e); + } + /*@Caught*/ @NonNull Object CAUGHT_eq; + try { + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EStructuralFeature referredEStructuralFeature_1 = this.getReferredEStructuralFeature(); + if (referredEStructuralFeature_1 == null) { + throw new InvalidValueException("Null source for \'\'http://www.eclipse.org/emf/2002/Ecore\'::ETypedElement::eType\'"); + } + final /*@Thrown*/ org.eclipse.emf.ecore.@Nullable EClassifier eType = referredEStructuralFeature_1.getEType(); @SuppressWarnings("null") - final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClassifier referredEClassifier = oclAsType.getReferredEClassifier(); - final /*@Thrown*/ boolean oclIsKindOf_0 = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, referredEClassifier, TYP_ecore_c_c_EClassifier).booleanValue(); - result = oclIsKindOf_0; + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target_0 = this.getTarget(); + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EClassifier referredEClassifier = target_0.getReferredEClassifier(); + final /*@Thrown*/ boolean eq = (eType != null) ? eType.equals(referredEClassifier) : (referredEClassifier == null); + CAUGHT_eq = eq; } - else { - result = ValueUtil.TRUE_VALUE; + catch (Exception e) { + CAUGHT_eq = ValueUtil.createInvalidValue(e); } + final /*@Thrown*/ java.lang.@Nullable Boolean result = BooleanImpliesOperation.INSTANCE.evaluate(CAUGHT_and_0, CAUGHT_eq); CAUGHT_result = result; } catch (Exception e) { CAUGHT_result = ValueUtil.createInvalidValue(e); } - final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_SourceIsEClass, this, (Object)null, diagnostics, context, (Object)null, severity_0, CAUGHT_result, UMLXTables.INT_0).booleanValue(); + final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_CompatibleEAttributePropertyTarget, this, (Object)null, diagnostics, context, (Object)null, severity_0, CAUGHT_result, UMLXTables.INT_0).booleanValue(); symbol_0 = logDiagnostic; } return Boolean.TRUE == symbol_0; @@ -675,23 +566,23 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { * @generated */ @Override - public boolean validateCompatibleSourceIndex(final DiagnosticChain diagnostics, final Map<Object, Object> context) { + public boolean validateCompatibleSourceMultiplicity(final DiagnosticChain diagnostics, final Map<Object, Object> context) { /** * - * inv CompatibleSourceIndex: + * inv CompatibleSourceMultiplicity: * let - * severity : Integer[1] = 'RelPatternEdge::CompatibleSourceIndex'.getSeverity() + * severity : Integer[1] = 'RelPatternEdge::CompatibleSourceMultiplicity'.getSeverity() * in * if severity <= 0 * then true * else - * let result : Boolean[1] = referredEStructuralFeature <> null = sourceIndex = 0 + * let result : Boolean[1] = referredEStructuralFeature = null = source.isMany * in - * 'RelPatternEdge::CompatibleSourceIndex'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) + * 'RelPatternEdge::CompatibleSourceMultiplicity'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) * endif */ final /*@NonInvalid*/ org.eclipse.ocl.pivot.evaluation.@NonNull Executor executor = PivotUtilInternal.getExecutor(this); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_CompatibleSourceIndex); + final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_CompatibleSourceMultiplicity); final /*@NonInvalid*/ boolean le = OclComparableLessThanEqualOperation.INSTANCE.evaluate(executor, severity_0, UMLXTables.INT_0).booleanValue(); /*@NonInvalid*/ boolean symbol_0; if (le) { @@ -699,12 +590,12 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { } else { final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EStructuralFeature referredEStructuralFeature = this.getReferredEStructuralFeature(); - final /*@NonInvalid*/ boolean ne = referredEStructuralFeature != null; - final /*@NonInvalid*/ int sourceIndex = this.getSourceIndex(); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue BOXED_sourceIndex = ValueUtil.integerValueOf(sourceIndex); - final /*@NonInvalid*/ boolean eq = BOXED_sourceIndex.equals(UMLXTables.INT_0); - final /*@NonInvalid*/ boolean result = ne == eq; - final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_CompatibleSourceIndex, this, (Object)null, diagnostics, context, (Object)null, severity_0, result, UMLXTables.INT_0).booleanValue(); + final /*@NonInvalid*/ boolean eq = referredEStructuralFeature == null; + @SuppressWarnings("null") + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode source = this.getSource(); + final /*@NonInvalid*/ boolean isMany = source.isIsMany(); + final /*@NonInvalid*/ boolean result = eq == isMany; + final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_CompatibleSourceMultiplicity, this, (Object)null, diagnostics, context, (Object)null, severity_0, result, UMLXTables.INT_0).booleanValue(); symbol_0 = logDiagnostic; } return Boolean.TRUE == symbol_0; @@ -716,285 +607,50 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { * @generated */ @Override - public boolean validateCompatibleRestPropertyTarget(final DiagnosticChain diagnostics, final Map<Object, Object> context) { + public boolean validateCompatibleEReferencePropertyTarget(final DiagnosticChain diagnostics, final Map<Object, Object> context) { /** * - * inv CompatibleRestPropertyTarget: + * inv CompatibleEReferencePropertyTarget: * let - * severity : Integer[1] = 'RelPatternEdge::CompatibleRestPropertyTarget'.getSeverity() + * severity : Integer[1] = 'RelPatternEdge::CompatibleEReferencePropertyTarget'.getSeverity() * in * if severity <= 0 * then true * else - * let result : Boolean[?] = referredEStructuralFeature = null and sourceIndex < 0 and - * target.oclIsKindOf(RelPatternClassNode) implies + * let result : Boolean[?] = referredEStructuralFeature <> null and + * referredEStructuralFeature.oclIsKindOf(ecore::EReference) and + * not target.isExpression() implies * let - * sourceClassNode : RelPatternClassNode[1] = source.oclAsType(RelPatternClassNode) + * sourceEClass : ecore::EClass[1] = target.referredEClassifier.oclAsType(ecore::EClass) * in - * let - * targetClassNode : RelPatternClassNode[1] = target.oclAsType(RelPatternClassNode) - * in - * let - * sourceEClass : ecore::EClass[1] = sourceClassNode.referredEClassifier.oclAsType(ecore::EClass) - * in - * let - * targetEClass : ecore::EClass[1] = targetClassNode.referredEClassifier.oclAsType(ecore::EClass) - * in sourceEClass = targetEClass and sourceClassNode.isMany = targetClassNode.isMany and sourceClassNode.isNullFree = targetClassNode.isNullFree and sourceClassNode.isOrdered = targetClassNode.isOrdered and sourceClassNode.isUnique = targetClassNode.isUnique - * in - * 'RelPatternEdge::CompatibleRestPropertyTarget'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) - * endif - */ - final /*@NonInvalid*/ org.eclipse.ocl.pivot.evaluation.@NonNull Executor executor = PivotUtilInternal.getExecutor(this); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@NonNull IdResolver idResolver = executor.getIdResolver(); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_CompatibleRestPropertyTarget); - final /*@NonInvalid*/ boolean le = OclComparableLessThanEqualOperation.INSTANCE.evaluate(executor, severity_0, UMLXTables.INT_0).booleanValue(); - /*@NonInvalid*/ boolean symbol_0; - if (le) { - symbol_0 = ValueUtil.TRUE_VALUE; - } - else { - /*@Caught*/ @Nullable Object CAUGHT_result; - try { - final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EStructuralFeature referredEStructuralFeature = this.getReferredEStructuralFeature(); - final /*@NonInvalid*/ boolean eq = referredEStructuralFeature == null; - /*@NonInvalid*/ boolean and; - if (eq) { - final /*@NonInvalid*/ int sourceIndex = this.getSourceIndex(); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue BOXED_sourceIndex = ValueUtil.integerValueOf(sourceIndex); - final /*@NonInvalid*/ boolean lt = OclComparableLessThanOperation.INSTANCE.evaluate(executor, BOXED_sourceIndex, UMLXTables.INT_0).booleanValue(); - and = lt; - } - else { - and = ValueUtil.FALSE_VALUE; - } - /*@NonInvalid*/ boolean and_0; - if (and) { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_umlx_c_c_RelPatternClassNode_0 = idResolver.getClass(UMLXTables.CLSSid_RelPatternClassNode, null); - @SuppressWarnings("null") - final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target = this.getTarget(); - final /*@NonInvalid*/ boolean oclIsKindOf = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, target, TYP_umlx_c_c_RelPatternClassNode_0).booleanValue(); - and_0 = oclIsKindOf; - } - else { - and_0 = ValueUtil.FALSE_VALUE; - } - /*@Thrown*/ java.lang.@Nullable Boolean result; - if (and_0) { - /*@Caught*/ @NonNull Object CAUGHT_sourceClassNode; - try { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_umlx_c_c_RelPatternClassNode_1 = idResolver.getClass(UMLXTables.CLSSid_RelPatternClassNode, null); - @SuppressWarnings("null") - final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode source = this.getSource(); - final /*@Thrown*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode sourceClassNode = ClassUtil.nonNullState((RelPatternClassNode)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, source, TYP_umlx_c_c_RelPatternClassNode_1)); - CAUGHT_sourceClassNode = sourceClassNode; - } - catch (Exception e) { - CAUGHT_sourceClassNode = ValueUtil.createInvalidValue(e); - } - /*@Caught*/ @NonNull Object CAUGHT_targetClassNode; - try { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_umlx_c_c_RelPatternClassNode_2 = idResolver.getClass(UMLXTables.CLSSid_RelPatternClassNode, null); - @SuppressWarnings("null") - final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target_0 = this.getTarget(); - final /*@Thrown*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode targetClassNode = ClassUtil.nonNullState((RelPatternClassNode)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, target_0, TYP_umlx_c_c_RelPatternClassNode_2)); - CAUGHT_targetClassNode = targetClassNode; - } - catch (Exception e) { - CAUGHT_targetClassNode = ValueUtil.createInvalidValue(e); - } - /*@Caught*/ @NonNull Object CAUGHT_sourceEClass; - try { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EClass_0 = idResolver.getClass(UMLXTables.CLSSid_EClass, null); - if (CAUGHT_sourceClassNode instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_sourceClassNode; - } - @SuppressWarnings("null") - final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClassifier referredEClassifier = ((UMLXTypedElement)CAUGHT_sourceClassNode).getReferredEClassifier(); - final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClass sourceEClass = ClassUtil.nonNullState((EClass)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, referredEClassifier, TYP_ecore_c_c_EClass_0)); - CAUGHT_sourceEClass = sourceEClass; - } - catch (Exception e) { - CAUGHT_sourceEClass = ValueUtil.createInvalidValue(e); - } - /*@Caught*/ @NonNull Object CAUGHT_targetEClass; - try { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EClass_1 = idResolver.getClass(UMLXTables.CLSSid_EClass, null); - if (CAUGHT_targetClassNode instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_targetClassNode; - } - @SuppressWarnings("null") - final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClassifier referredEClassifier_0 = ((UMLXTypedElement)CAUGHT_targetClassNode).getReferredEClassifier(); - final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClass targetEClass = ClassUtil.nonNullState((EClass)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, referredEClassifier_0, TYP_ecore_c_c_EClass_1)); - CAUGHT_targetEClass = targetEClass; - } - catch (Exception e) { - CAUGHT_targetEClass = ValueUtil.createInvalidValue(e); - } - /*@Caught*/ @Nullable Object CAUGHT_and_3; - try { - /*@Caught*/ @Nullable Object CAUGHT_and_2; - try { - /*@Caught*/ @Nullable Object CAUGHT_and_1; - try { - /*@Caught*/ @NonNull Object CAUGHT_eq_0; - try { - if (CAUGHT_sourceEClass instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_sourceEClass; - } - if (CAUGHT_targetEClass instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_targetEClass; - } - final /*@Thrown*/ boolean eq_0 = CAUGHT_sourceEClass.equals(CAUGHT_targetEClass); - CAUGHT_eq_0 = eq_0; - } - catch (Exception e) { - CAUGHT_eq_0 = ValueUtil.createInvalidValue(e); - } - /*@Caught*/ @NonNull Object CAUGHT_eq_1; - try { - if (CAUGHT_sourceClassNode instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_sourceClassNode; - } - final /*@Thrown*/ boolean isMany = ((UMLXTypedElement)CAUGHT_sourceClassNode).isIsMany(); - if (CAUGHT_targetClassNode instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_targetClassNode; - } - final /*@Thrown*/ boolean isMany_0 = ((UMLXTypedElement)CAUGHT_targetClassNode).isIsMany(); - final /*@Thrown*/ boolean eq_1 = isMany == isMany_0; - CAUGHT_eq_1 = eq_1; - } - catch (Exception e) { - CAUGHT_eq_1 = ValueUtil.createInvalidValue(e); - } - final /*@Thrown*/ java.lang.@Nullable Boolean and_1 = BooleanAndOperation.INSTANCE.evaluate(CAUGHT_eq_0, CAUGHT_eq_1); - CAUGHT_and_1 = and_1; - } - catch (Exception e) { - CAUGHT_and_1 = ValueUtil.createInvalidValue(e); - } - /*@Caught*/ @NonNull Object CAUGHT_eq_2; - try { - if (CAUGHT_sourceClassNode instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_sourceClassNode; - } - final /*@Thrown*/ boolean isNullFree = ((UMLXTypedElement)CAUGHT_sourceClassNode).isIsNullFree(); - if (CAUGHT_targetClassNode instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_targetClassNode; - } - final /*@Thrown*/ boolean isNullFree_0 = ((UMLXTypedElement)CAUGHT_targetClassNode).isIsNullFree(); - final /*@Thrown*/ boolean eq_2 = isNullFree == isNullFree_0; - CAUGHT_eq_2 = eq_2; - } - catch (Exception e) { - CAUGHT_eq_2 = ValueUtil.createInvalidValue(e); - } - final /*@Thrown*/ java.lang.@Nullable Boolean and_2 = BooleanAndOperation.INSTANCE.evaluate(CAUGHT_and_1, CAUGHT_eq_2); - CAUGHT_and_2 = and_2; - } - catch (Exception e) { - CAUGHT_and_2 = ValueUtil.createInvalidValue(e); - } - /*@Caught*/ @NonNull Object CAUGHT_eq_3; - try { - if (CAUGHT_sourceClassNode instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_sourceClassNode; - } - final /*@Thrown*/ boolean isOrdered = ((UMLXTypedElement)CAUGHT_sourceClassNode).isIsOrdered(); - if (CAUGHT_targetClassNode instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_targetClassNode; - } - final /*@Thrown*/ boolean isOrdered_0 = ((UMLXTypedElement)CAUGHT_targetClassNode).isIsOrdered(); - final /*@Thrown*/ boolean eq_3 = isOrdered == isOrdered_0; - CAUGHT_eq_3 = eq_3; - } - catch (Exception e) { - CAUGHT_eq_3 = ValueUtil.createInvalidValue(e); - } - final /*@Thrown*/ java.lang.@Nullable Boolean and_3 = BooleanAndOperation.INSTANCE.evaluate(CAUGHT_and_2, CAUGHT_eq_3); - CAUGHT_and_3 = and_3; - } - catch (Exception e) { - CAUGHT_and_3 = ValueUtil.createInvalidValue(e); - } - /*@Caught*/ @NonNull Object CAUGHT_eq_4; - try { - if (CAUGHT_sourceClassNode instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_sourceClassNode; - } - final /*@Thrown*/ boolean isUnique = ((UMLXTypedElement)CAUGHT_sourceClassNode).isIsUnique(); - if (CAUGHT_targetClassNode instanceof InvalidValueException) { - throw (InvalidValueException)CAUGHT_targetClassNode; - } - final /*@Thrown*/ boolean isUnique_0 = ((UMLXTypedElement)CAUGHT_targetClassNode).isIsUnique(); - final /*@Thrown*/ boolean eq_4 = isUnique == isUnique_0; - CAUGHT_eq_4 = eq_4; - } - catch (Exception e) { - CAUGHT_eq_4 = ValueUtil.createInvalidValue(e); - } - final /*@Thrown*/ java.lang.@Nullable Boolean and_4 = BooleanAndOperation.INSTANCE.evaluate(CAUGHT_and_3, CAUGHT_eq_4); - result = and_4; - } - else { - result = ValueUtil.TRUE_VALUE; - } - CAUGHT_result = result; - } - catch (Exception e) { - CAUGHT_result = ValueUtil.createInvalidValue(e); - } - final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_CompatibleRestPropertyTarget, this, (Object)null, diagnostics, context, (Object)null, severity_0, CAUGHT_result, UMLXTables.INT_0).booleanValue(); - symbol_0 = logDiagnostic; - } - return Boolean.TRUE == symbol_0; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public boolean validateCompatibleEAttributePropertyTarget(final DiagnosticChain diagnostics, final Map<Object, Object> context) { - /** - * - * inv CompatibleEAttributePropertyTarget: - * let - * severity : Integer[1] = 'RelPatternEdge::CompatibleEAttributePropertyTarget'.getSeverity() - * in - * if severity <= 0 - * then true - * else - * let result : Boolean[?] = referredEStructuralFeature <> null and - * referredEStructuralFeature.oclIsKindOf(ecore::EAttribute) and - * target.oclIsKindOf(RelPatternClassNode) implies referredEStructuralFeature.eType = - * target.oclAsType(RelPatternClassNode).referredEClassifier + * sourceEClass->closure(eSuperTypes) + * ->includes(referredEStructuralFeature.eType) * in - * 'RelPatternEdge::CompatibleEAttributePropertyTarget'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) + * 'RelPatternEdge::CompatibleEReferencePropertyTarget'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) * endif */ final /*@NonInvalid*/ org.eclipse.ocl.pivot.evaluation.@NonNull Executor executor = PivotUtilInternal.getExecutor(this); final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@NonNull IdResolver idResolver = executor.getIdResolver(); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_CompatibleEAttributePropertyTarget); + final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull StandardLibrary standardLibrary = idResolver.getStandardLibrary(); + final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_CompatibleEReferencePropertyTarget); final /*@NonInvalid*/ boolean le = OclComparableLessThanEqualOperation.INSTANCE.evaluate(executor, severity_0, UMLXTables.INT_0).booleanValue(); - /*@NonInvalid*/ boolean symbol_0; + /*@NonInvalid*/ boolean symbol_1; if (le) { - symbol_0 = ValueUtil.TRUE_VALUE; + symbol_1 = ValueUtil.TRUE_VALUE; } else { /*@Caught*/ @Nullable Object CAUGHT_result; try { /*@Caught*/ @Nullable Object CAUGHT_and_0; try { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_umlx_c_c_RelPatternClassNode_0 = idResolver.getClass(UMLXTables.CLSSid_RelPatternClassNode, null); /*@Caught*/ @NonNull Object CAUGHT_and; try { final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EStructuralFeature referredEStructuralFeature_0 = this.getReferredEStructuralFeature(); final /*@NonInvalid*/ boolean ne = referredEStructuralFeature_0 != null; /*@Thrown*/ boolean and; if (ne) { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EAttribute = idResolver.getClass(UMLXTables.CLSSid_EAttribute, null); - final /*@Thrown*/ boolean oclIsKindOf = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, referredEStructuralFeature_0, TYP_ecore_c_c_EAttribute).booleanValue(); + final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EReference = idResolver.getClass(UMLXTables.CLSSid_EReference, null); + final /*@Thrown*/ boolean oclIsKindOf = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, referredEStructuralFeature_0, TYP_ecore_c_c_EReference).booleanValue(); and = oclIsKindOf; } else { @@ -1007,42 +663,67 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { } @SuppressWarnings("null") final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target = this.getTarget(); - final /*@NonInvalid*/ boolean oclIsKindOf_0 = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, target, TYP_umlx_c_c_RelPatternClassNode_0).booleanValue(); - final /*@Thrown*/ java.lang.@Nullable Boolean and_0 = BooleanAndOperation.INSTANCE.evaluate(CAUGHT_and, oclIsKindOf_0); + final /*@NonInvalid*/ boolean isExpression = target.isExpression(); + final /*@NonInvalid*/ java.lang.@Nullable Boolean not = BooleanNotOperation.INSTANCE.evaluate(isExpression); + final /*@Thrown*/ java.lang.@Nullable Boolean and_0 = BooleanAndOperation.INSTANCE.evaluate(CAUGHT_and, not); CAUGHT_and_0 = and_0; } catch (Exception e) { CAUGHT_and_0 = ValueUtil.createInvalidValue(e); } - /*@Caught*/ @NonNull Object CAUGHT_eq; + /*@Caught*/ @NonNull Object CAUGHT_includes; try { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_umlx_c_c_RelPatternClassNode_1 = idResolver.getClass(UMLXTables.CLSSid_RelPatternClassNode, null); + final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EClass_0 = idResolver.getClass(UMLXTables.CLSSid_EClass, null); + @SuppressWarnings("null") + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target_0 = this.getTarget(); + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EClassifier referredEClassifier = target_0.getReferredEClassifier(); + final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClass sourceEClass = ClassUtil.nonNullState((EClass)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, referredEClassifier, TYP_ecore_c_c_EClass_0)); + final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull SetValue oclAsSet = OclAnyOclAsSetOperation.INSTANCE.evaluate(executor, UMLXTables.SET_CLSSid_EClass, sourceEClass); + final org.eclipse.ocl.pivot.@NonNull Class TYPE_closure_0 = executor.getStaticTypeOf(oclAsSet); + final LibraryIteration.@org.eclipse.jdt.annotation.NonNull LibraryIterationExtension IMPL_closure_0 = (LibraryIteration.LibraryIterationExtension)TYPE_closure_0.lookupImplementation(standardLibrary, OCLstdlibTables.Operations._Set__closure); + final @NonNull Object ACC_closure_0 = IMPL_closure_0.createAccumulatorValue(executor, UMLXTables.SET_CLSSid_EClass, UMLXTables.ORD_CLSSid_EClass); + /** + * Implementation of the iterator body. + */ + final @NonNull AbstractBinaryOperation BODY_closure_0 = new AbstractBinaryOperation() { + /** + * eSuperTypes + */ + @Override + public @Nullable Object evaluate(final @NonNull Executor executor, final @NonNull TypeId typeId, final @Nullable Object oclAsSet, final /*@NonInvalid*/ java.lang.@Nullable Object _1) { + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EClass symbol_0 = (EClass)_1; + if (symbol_0 == null) { + throw new InvalidValueException("Null source for \'\'http://www.eclipse.org/emf/2002/Ecore\'::EClass::eSuperTypes\'"); + } + @SuppressWarnings("null") + final /*@Thrown*/ java.util.@NonNull List<EClass> eSuperTypes = symbol_0.getESuperTypes(); + final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull OrderedSetValue BOXED_eSuperTypes = idResolver.createOrderedSetOfAll(UMLXTables.ORD_CLSSid_EClass, eSuperTypes); + return BOXED_eSuperTypes; + } + }; + final @NonNull ExecutorSingleIterationManager MGR_closure_0 = new ExecutorSingleIterationManager(executor, UMLXTables.SET_CLSSid_EClass, BODY_closure_0, oclAsSet, ACC_closure_0); + final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull SetValue closure = ClassUtil.nonNullState((SetValue)IMPL_closure_0.evaluateIteration(MGR_closure_0)); final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EStructuralFeature referredEStructuralFeature_1 = this.getReferredEStructuralFeature(); if (referredEStructuralFeature_1 == null) { throw new InvalidValueException("Null source for \'\'http://www.eclipse.org/emf/2002/Ecore\'::ETypedElement::eType\'"); } final /*@Thrown*/ org.eclipse.emf.ecore.@Nullable EClassifier eType = referredEStructuralFeature_1.getEType(); - @SuppressWarnings("null") - final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target_0 = this.getTarget(); - final /*@Thrown*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode oclAsType = ClassUtil.nonNullState((RelPatternClassNode)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, target_0, TYP_umlx_c_c_RelPatternClassNode_1)); - @SuppressWarnings("null") - final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClassifier referredEClassifier = oclAsType.getReferredEClassifier(); - final /*@Thrown*/ boolean eq = referredEClassifier.equals(eType); - CAUGHT_eq = eq; + final /*@Thrown*/ boolean includes = CollectionIncludesOperation.INSTANCE.evaluate(closure, eType).booleanValue(); + CAUGHT_includes = includes; } catch (Exception e) { - CAUGHT_eq = ValueUtil.createInvalidValue(e); + CAUGHT_includes = ValueUtil.createInvalidValue(e); } - final /*@Thrown*/ java.lang.@Nullable Boolean result = BooleanImpliesOperation.INSTANCE.evaluate(CAUGHT_and_0, CAUGHT_eq); + final /*@Thrown*/ java.lang.@Nullable Boolean result = BooleanImpliesOperation.INSTANCE.evaluate(CAUGHT_and_0, CAUGHT_includes); CAUGHT_result = result; } catch (Exception e) { CAUGHT_result = ValueUtil.createInvalidValue(e); } - final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_CompatibleEAttributePropertyTarget, this, (Object)null, diagnostics, context, (Object)null, severity_0, CAUGHT_result, UMLXTables.INT_0).booleanValue(); - symbol_0 = logDiagnostic; + final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_CompatibleEReferencePropertyTarget, this, (Object)null, diagnostics, context, (Object)null, severity_0, CAUGHT_result, UMLXTables.INT_0).booleanValue(); + symbol_1 = logDiagnostic; } - return Boolean.TRUE == symbol_0; + return Boolean.TRUE == symbol_1; } /** @@ -1062,8 +743,7 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { * then true * else * let result : Boolean[?] = referredEStructuralFeature <> null implies - * source.oclAsType(RelPatternClassNode) - * .referredEClassifier.oclAsType(ecore::EClass) + * source.referredEClassifier.oclAsType(ecore::EClass) * ->closure(eSuperTypes) * ->includes(referredEStructuralFeature.eContainingClass) * in @@ -1087,14 +767,11 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { /*@Thrown*/ boolean result; if (ne) { final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EClass = idResolver.getClass(UMLXTables.CLSSid_EClass, null); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_umlx_c_c_RelPatternClassNode_0 = idResolver.getClass(UMLXTables.CLSSid_RelPatternClassNode, null); - @SuppressWarnings("null") - final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode source = this.getSource(); - final /*@Thrown*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode oclAsType = ClassUtil.nonNullState((RelPatternClassNode)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, source, TYP_umlx_c_c_RelPatternClassNode_0)); @SuppressWarnings("null") - final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClassifier referredEClassifier = oclAsType.getReferredEClassifier(); - final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClass oclAsType_0 = ClassUtil.nonNullState((EClass)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, referredEClassifier, TYP_ecore_c_c_EClass)); - final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull SetValue oclAsSet = OclAnyOclAsSetOperation.INSTANCE.evaluate(executor, UMLXTables.SET_CLSSid_EClass, oclAsType_0); + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode source = this.getSource(); + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EClassifier referredEClassifier = source.getReferredEClassifier(); + final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClass oclAsType = ClassUtil.nonNullState((EClass)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, referredEClassifier, TYP_ecore_c_c_EClass)); + final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull SetValue oclAsSet = OclAnyOclAsSetOperation.INSTANCE.evaluate(executor, UMLXTables.SET_CLSSid_EClass, oclAsType); final org.eclipse.ocl.pivot.@NonNull Class TYPE_closure_0 = executor.getStaticTypeOf(oclAsSet); final LibraryIteration.@org.eclipse.jdt.annotation.NonNull LibraryIterationExtension IMPL_closure_0 = (LibraryIteration.LibraryIterationExtension)TYPE_closure_0.lookupImplementation(standardLibrary, OCLstdlibTables.Operations._Set__closure); final @NonNull Object ACC_closure_0 = IMPL_closure_0.createAccumulatorValue(executor, UMLXTables.SET_CLSSid_EClass, UMLXTables.ORD_CLSSid_EClass); @@ -1146,47 +823,196 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { * @generated */ @Override - public boolean validateCompatibleSourceMultiplicity(final DiagnosticChain diagnostics, final Map<Object, Object> context) { + public boolean validateCompatibleSourceIndex(final DiagnosticChain diagnostics, final Map<Object, Object> context) { /** * - * inv CompatibleSourceMultiplicity: + * inv CompatibleSourceIndex: * let - * severity : Integer[1] = 'RelPatternEdge::CompatibleSourceMultiplicity'.getSeverity() + * severity : Integer[1] = 'RelPatternEdge::CompatibleSourceIndex'.getSeverity() * in * if severity <= 0 * then true * else - * let result : Boolean[1] = referredEStructuralFeature = null = - * source.oclAsType(RelPatternClassNode).isMany + * let result : Boolean[1] = referredEStructuralFeature <> null = sourceIndex = 0 * in - * 'RelPatternEdge::CompatibleSourceMultiplicity'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) + * 'RelPatternEdge::CompatibleSourceIndex'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) + * endif + */ + final /*@NonInvalid*/ org.eclipse.ocl.pivot.evaluation.@NonNull Executor executor = PivotUtilInternal.getExecutor(this); + final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_CompatibleSourceIndex); + final /*@NonInvalid*/ boolean le = OclComparableLessThanEqualOperation.INSTANCE.evaluate(executor, severity_0, UMLXTables.INT_0).booleanValue(); + /*@NonInvalid*/ boolean symbol_0; + if (le) { + symbol_0 = ValueUtil.TRUE_VALUE; + } + else { + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EStructuralFeature referredEStructuralFeature = this.getReferredEStructuralFeature(); + final /*@NonInvalid*/ boolean ne = referredEStructuralFeature != null; + final /*@NonInvalid*/ int sourceIndex = this.getSourceIndex(); + final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue BOXED_sourceIndex = ValueUtil.integerValueOf(sourceIndex); + final /*@NonInvalid*/ boolean eq = BOXED_sourceIndex.equals(UMLXTables.INT_0); + final /*@NonInvalid*/ boolean result = ne == eq; + final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_CompatibleSourceIndex, this, (Object)null, diagnostics, context, (Object)null, severity_0, result, UMLXTables.INT_0).booleanValue(); + symbol_0 = logDiagnostic; + } + return Boolean.TRUE == symbol_0; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean validateCompatibleRestPropertyTarget(final DiagnosticChain diagnostics, final Map<Object, Object> context) { + /** + * + * inv CompatibleRestPropertyTarget: + * let + * severity : Integer[1] = 'RelPatternEdge::CompatibleRestPropertyTarget'.getSeverity() + * in + * if severity <= 0 + * then true + * else + * let result : Boolean[?] = referredEStructuralFeature = null and sourceIndex < 0 and + * not target.isExpression() implies + * let + * sourceEClass : ecore::EClass[1] = source.referredEClassifier.oclAsType(ecore::EClass) + * in + * let + * targetEClass : ecore::EClass[1] = target.referredEClassifier.oclAsType(ecore::EClass) + * in sourceEClass = targetEClass and source.isMany = target.isMany and source.isNullFree = target.isNullFree and source.isOrdered = target.isOrdered and source.isUnique = target.isUnique + * in + * 'RelPatternEdge::CompatibleRestPropertyTarget'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) * endif */ final /*@NonInvalid*/ org.eclipse.ocl.pivot.evaluation.@NonNull Executor executor = PivotUtilInternal.getExecutor(this); final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@NonNull IdResolver idResolver = executor.getIdResolver(); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_CompatibleSourceMultiplicity); + final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_CompatibleRestPropertyTarget); final /*@NonInvalid*/ boolean le = OclComparableLessThanEqualOperation.INSTANCE.evaluate(executor, severity_0, UMLXTables.INT_0).booleanValue(); /*@NonInvalid*/ boolean symbol_0; if (le) { symbol_0 = ValueUtil.TRUE_VALUE; } else { - /*@Caught*/ @NonNull Object CAUGHT_result; + /*@Caught*/ @Nullable Object CAUGHT_result; try { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_umlx_c_c_RelPatternClassNode_0 = idResolver.getClass(UMLXTables.CLSSid_RelPatternClassNode, null); final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EStructuralFeature referredEStructuralFeature = this.getReferredEStructuralFeature(); final /*@NonInvalid*/ boolean eq = referredEStructuralFeature == null; - @SuppressWarnings("null") - final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode source = this.getSource(); - final /*@Thrown*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode oclAsType = ClassUtil.nonNullState((RelPatternClassNode)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, source, TYP_umlx_c_c_RelPatternClassNode_0)); - final /*@Thrown*/ boolean isMany = oclAsType.isIsMany(); - final /*@Thrown*/ boolean result = eq == isMany; + /*@NonInvalid*/ boolean and; + if (eq) { + final /*@NonInvalid*/ int sourceIndex = this.getSourceIndex(); + final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue BOXED_sourceIndex = ValueUtil.integerValueOf(sourceIndex); + final /*@NonInvalid*/ boolean lt = OclComparableLessThanOperation.INSTANCE.evaluate(executor, BOXED_sourceIndex, UMLXTables.INT_0).booleanValue(); + and = lt; + } + else { + and = ValueUtil.FALSE_VALUE; + } + /*@NonInvalid*/ java.lang.@Nullable Boolean and_0; + if (and) { + @SuppressWarnings("null") + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target = this.getTarget(); + final /*@NonInvalid*/ boolean isExpression = target.isExpression(); + final /*@NonInvalid*/ java.lang.@Nullable Boolean not = BooleanNotOperation.INSTANCE.evaluate(isExpression); + and_0 = not; + } + else { + and_0 = ValueUtil.FALSE_VALUE; + } + /*@Caught*/ @Nullable Object CAUGHT_and_4; + try { + /*@Caught*/ @NonNull Object CAUGHT_sourceEClass; + try { + final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EClass_0 = idResolver.getClass(UMLXTables.CLSSid_EClass, null); + @SuppressWarnings("null") + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode source = this.getSource(); + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EClassifier referredEClassifier = source.getReferredEClassifier(); + final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClass sourceEClass = ClassUtil.nonNullState((EClass)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, referredEClassifier, TYP_ecore_c_c_EClass_0)); + CAUGHT_sourceEClass = sourceEClass; + } + catch (Exception e) { + CAUGHT_sourceEClass = ValueUtil.createInvalidValue(e); + } + /*@Caught*/ @NonNull Object CAUGHT_targetEClass; + try { + final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EClass_1 = idResolver.getClass(UMLXTables.CLSSid_EClass, null); + @SuppressWarnings("null") + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target_0 = this.getTarget(); + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EClassifier referredEClassifier_0 = target_0.getReferredEClassifier(); + final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClass targetEClass = ClassUtil.nonNullState((EClass)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, referredEClassifier_0, TYP_ecore_c_c_EClass_1)); + CAUGHT_targetEClass = targetEClass; + } + catch (Exception e) { + CAUGHT_targetEClass = ValueUtil.createInvalidValue(e); + } + @SuppressWarnings("null") + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode source_3 = this.getSource(); + @SuppressWarnings("null") + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target_4 = this.getTarget(); + /*@Caught*/ @Nullable Object CAUGHT_and_3; + try { + /*@Caught*/ @Nullable Object CAUGHT_and_2; + try { + /*@Caught*/ @Nullable Object CAUGHT_and_1; + try { + /*@Caught*/ @NonNull Object CAUGHT_eq_0; + try { + if (CAUGHT_sourceEClass instanceof InvalidValueException) { + throw (InvalidValueException)CAUGHT_sourceEClass; + } + if (CAUGHT_targetEClass instanceof InvalidValueException) { + throw (InvalidValueException)CAUGHT_targetEClass; + } + final /*@Thrown*/ boolean eq_0 = CAUGHT_sourceEClass.equals(CAUGHT_targetEClass); + CAUGHT_eq_0 = eq_0; + } + catch (Exception e) { + CAUGHT_eq_0 = ValueUtil.createInvalidValue(e); + } + final /*@NonInvalid*/ boolean isMany = source_3.isIsMany(); + final /*@NonInvalid*/ boolean isMany_0 = target_4.isIsMany(); + final /*@NonInvalid*/ boolean eq_1 = isMany == isMany_0; + final /*@Thrown*/ java.lang.@Nullable Boolean and_1 = BooleanAndOperation.INSTANCE.evaluate(CAUGHT_eq_0, eq_1); + CAUGHT_and_1 = and_1; + } + catch (Exception e) { + CAUGHT_and_1 = ValueUtil.createInvalidValue(e); + } + final /*@NonInvalid*/ boolean isNullFree = source_3.isIsNullFree(); + final /*@NonInvalid*/ boolean isNullFree_0 = target_4.isIsNullFree(); + final /*@NonInvalid*/ boolean eq_2 = isNullFree == isNullFree_0; + final /*@Thrown*/ java.lang.@Nullable Boolean and_2 = BooleanAndOperation.INSTANCE.evaluate(CAUGHT_and_1, eq_2); + CAUGHT_and_2 = and_2; + } + catch (Exception e) { + CAUGHT_and_2 = ValueUtil.createInvalidValue(e); + } + final /*@NonInvalid*/ boolean isOrdered = source_3.isIsOrdered(); + final /*@NonInvalid*/ boolean isOrdered_0 = target_4.isIsOrdered(); + final /*@NonInvalid*/ boolean eq_3 = isOrdered == isOrdered_0; + final /*@Thrown*/ java.lang.@Nullable Boolean and_3 = BooleanAndOperation.INSTANCE.evaluate(CAUGHT_and_2, eq_3); + CAUGHT_and_3 = and_3; + } + catch (Exception e) { + CAUGHT_and_3 = ValueUtil.createInvalidValue(e); + } + final /*@NonInvalid*/ boolean isUnique = source_3.isIsUnique(); + final /*@NonInvalid*/ boolean isUnique_0 = target_4.isIsUnique(); + final /*@NonInvalid*/ boolean eq_4 = isUnique == isUnique_0; + final /*@Thrown*/ java.lang.@Nullable Boolean and_4 = BooleanAndOperation.INSTANCE.evaluate(CAUGHT_and_3, eq_4); + CAUGHT_and_4 = and_4; + } + catch (Exception e) { + CAUGHT_and_4 = ValueUtil.createInvalidValue(e); + } + final /*@Thrown*/ java.lang.@Nullable Boolean result = BooleanImpliesOperation.INSTANCE.evaluate(and_0, CAUGHT_and_4); CAUGHT_result = result; } catch (Exception e) { CAUGHT_result = ValueUtil.createInvalidValue(e); } - final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_CompatibleSourceMultiplicity, this, (Object)null, diagnostics, context, (Object)null, severity_0, CAUGHT_result, UMLXTables.INT_0).booleanValue(); + final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_CompatibleRestPropertyTarget, this, (Object)null, diagnostics, context, (Object)null, severity_0, CAUGHT_result, UMLXTables.INT_0).booleanValue(); symbol_0 = logDiagnostic; } return Boolean.TRUE == symbol_0; @@ -1198,127 +1024,187 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { * @generated */ @Override - public boolean validateCompatibleEReferencePropertyTarget(final DiagnosticChain diagnostics, final Map<Object, Object> context) { + public boolean validateCompatibleMemberPropertyTarget(final DiagnosticChain diagnostics, final Map<Object, Object> context) { /** * - * inv CompatibleEReferencePropertyTarget: + * inv CompatibleMemberPropertyTarget: * let - * severity : Integer[1] = 'RelPatternEdge::CompatibleEReferencePropertyTarget'.getSeverity() + * severity : Integer[1] = 'RelPatternEdge::CompatibleMemberPropertyTarget'.getSeverity() * in * if severity <= 0 * then true * else - * let result : Boolean[?] = referredEStructuralFeature <> null and - * referredEStructuralFeature.oclIsKindOf(ecore::EReference) and - * target.oclIsKindOf(RelPatternClassNode) implies + * let result : Boolean[?] = referredEStructuralFeature = null and sourceIndex > 0 and + * not target.isExpression() implies * let - * sourceEClass : ecore::EClass[1] = target.oclAsType(RelPatternClassNode) - * .referredEClassifier.oclAsType(ecore::EClass) + * sourceEClass : ecore::EClass[1] = source.referredEClassifier.oclAsType(ecore::EClass) * in - * sourceEClass->closure(eSuperTypes) - * ->includes(referredEStructuralFeature.eType) + * let + * targetEClass : ecore::EClass[1] = target.referredEClassifier.oclAsType(ecore::EClass) + * in + * sourceEClass->closure(eSuperTypes) + * ->includes(targetEClass) or + * targetEClass->closure(eSuperTypes) + * ->includes(sourceEClass) * in - * 'RelPatternEdge::CompatibleEReferencePropertyTarget'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) + * 'RelPatternEdge::CompatibleMemberPropertyTarget'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) * endif */ final /*@NonInvalid*/ org.eclipse.ocl.pivot.evaluation.@NonNull Executor executor = PivotUtilInternal.getExecutor(this); final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.@NonNull IdResolver idResolver = executor.getIdResolver(); final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull StandardLibrary standardLibrary = idResolver.getStandardLibrary(); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_CompatibleEReferencePropertyTarget); + final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, UMLXTables.STR_RelPatternEdge_c_c_CompatibleMemberPropertyTarget); final /*@NonInvalid*/ boolean le = OclComparableLessThanEqualOperation.INSTANCE.evaluate(executor, severity_0, UMLXTables.INT_0).booleanValue(); - /*@NonInvalid*/ boolean symbol_1; + /*@NonInvalid*/ boolean symbol_2; if (le) { - symbol_1 = ValueUtil.TRUE_VALUE; + symbol_2 = ValueUtil.TRUE_VALUE; } else { /*@Caught*/ @Nullable Object CAUGHT_result; try { - /*@Caught*/ @Nullable Object CAUGHT_and_0; + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EStructuralFeature referredEStructuralFeature = this.getReferredEStructuralFeature(); + final /*@NonInvalid*/ boolean eq = referredEStructuralFeature == null; + /*@NonInvalid*/ boolean and; + if (eq) { + final /*@NonInvalid*/ int sourceIndex = this.getSourceIndex(); + final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.@NonNull IntegerValue BOXED_sourceIndex = ValueUtil.integerValueOf(sourceIndex); + final /*@NonInvalid*/ boolean gt = OclComparableGreaterThanOperation.INSTANCE.evaluate(executor, BOXED_sourceIndex, UMLXTables.INT_0).booleanValue(); + and = gt; + } + else { + and = ValueUtil.FALSE_VALUE; + } + /*@NonInvalid*/ java.lang.@Nullable Boolean and_0; + if (and) { + @SuppressWarnings("null") + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target = this.getTarget(); + final /*@NonInvalid*/ boolean isExpression = target.isExpression(); + final /*@NonInvalid*/ java.lang.@Nullable Boolean not = BooleanNotOperation.INSTANCE.evaluate(isExpression); + and_0 = not; + } + else { + and_0 = ValueUtil.FALSE_VALUE; + } + /*@Caught*/ @Nullable Object CAUGHT_or; try { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_umlx_c_c_RelPatternClassNode_0 = idResolver.getClass(UMLXTables.CLSSid_RelPatternClassNode, null); - /*@Caught*/ @NonNull Object CAUGHT_and; + /*@Caught*/ @NonNull Object CAUGHT_sourceEClass; try { - final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EStructuralFeature referredEStructuralFeature_0 = this.getReferredEStructuralFeature(); - final /*@NonInvalid*/ boolean ne = referredEStructuralFeature_0 != null; - /*@Thrown*/ boolean and; - if (ne) { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EReference = idResolver.getClass(UMLXTables.CLSSid_EReference, null); - final /*@Thrown*/ boolean oclIsKindOf = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, referredEStructuralFeature_0, TYP_ecore_c_c_EReference).booleanValue(); - and = oclIsKindOf; + final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EClass_0 = idResolver.getClass(UMLXTables.CLSSid_EClass, null); + @SuppressWarnings("null") + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode source = this.getSource(); + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EClassifier referredEClassifier = source.getReferredEClassifier(); + final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClass sourceEClass = ClassUtil.nonNullState((EClass)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, referredEClassifier, TYP_ecore_c_c_EClass_0)); + CAUGHT_sourceEClass = sourceEClass; + } + catch (Exception e) { + CAUGHT_sourceEClass = ValueUtil.createInvalidValue(e); + } + /*@Caught*/ @NonNull Object CAUGHT_targetEClass; + try { + final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EClass_1 = idResolver.getClass(UMLXTables.CLSSid_EClass, null); + @SuppressWarnings("null") + final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target_0 = this.getTarget(); + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EClassifier referredEClassifier_0 = target_0.getReferredEClassifier(); + final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClass targetEClass = ClassUtil.nonNullState((EClass)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, referredEClassifier_0, TYP_ecore_c_c_EClass_1)); + CAUGHT_targetEClass = targetEClass; + } + catch (Exception e) { + CAUGHT_targetEClass = ValueUtil.createInvalidValue(e); + } + /*@Caught*/ @NonNull Object CAUGHT_includes; + try { + if (CAUGHT_sourceEClass instanceof InvalidValueException) { + throw (InvalidValueException)CAUGHT_sourceEClass; } - else { - and = ValueUtil.FALSE_VALUE; + final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull SetValue oclAsSet = OclAnyOclAsSetOperation.INSTANCE.evaluate(executor, UMLXTables.SET_CLSSid_EClass, CAUGHT_sourceEClass); + final org.eclipse.ocl.pivot.@NonNull Class TYPE_closure_1 = executor.getStaticTypeOf(oclAsSet); + final LibraryIteration.@org.eclipse.jdt.annotation.NonNull LibraryIterationExtension IMPL_closure_1 = (LibraryIteration.LibraryIterationExtension)TYPE_closure_1.lookupImplementation(standardLibrary, OCLstdlibTables.Operations._Set__closure); + final @NonNull Object ACC_closure_1 = IMPL_closure_1.createAccumulatorValue(executor, UMLXTables.SET_CLSSid_EClass, UMLXTables.ORD_CLSSid_EClass); + /** + * Implementation of the iterator body. + */ + final @NonNull AbstractBinaryOperation BODY_closure_1 = new AbstractBinaryOperation() { + /** + * eSuperTypes + */ + @Override + public @Nullable Object evaluate(final @NonNull Executor executor, final @NonNull TypeId typeId, final @Nullable Object oclAsSet, final /*@NonInvalid*/ java.lang.@Nullable Object _1) { + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EClass symbol_0 = (EClass)_1; + if (symbol_0 == null) { + throw new InvalidValueException("Null source for \'\'http://www.eclipse.org/emf/2002/Ecore\'::EClass::eSuperTypes\'"); + } + @SuppressWarnings("null") + final /*@Thrown*/ java.util.@NonNull List<EClass> eSuperTypes = symbol_0.getESuperTypes(); + final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull OrderedSetValue BOXED_eSuperTypes = idResolver.createOrderedSetOfAll(UMLXTables.ORD_CLSSid_EClass, eSuperTypes); + return BOXED_eSuperTypes; + } + }; + final @NonNull ExecutorSingleIterationManager MGR_closure_1 = new ExecutorSingleIterationManager(executor, UMLXTables.SET_CLSSid_EClass, BODY_closure_1, oclAsSet, ACC_closure_1); + final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull SetValue closure = ClassUtil.nonNullState((SetValue)IMPL_closure_1.evaluateIteration(MGR_closure_1)); + if (CAUGHT_targetEClass instanceof InvalidValueException) { + throw (InvalidValueException)CAUGHT_targetEClass; } - CAUGHT_and = and; + final /*@Thrown*/ boolean includes = CollectionIncludesOperation.INSTANCE.evaluate(closure, CAUGHT_targetEClass).booleanValue(); + CAUGHT_includes = includes; } catch (Exception e) { - CAUGHT_and = ValueUtil.createInvalidValue(e); + CAUGHT_includes = ValueUtil.createInvalidValue(e); } - @SuppressWarnings("null") - final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target = this.getTarget(); - final /*@NonInvalid*/ boolean oclIsKindOf_0 = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, target, TYP_umlx_c_c_RelPatternClassNode_0).booleanValue(); - final /*@Thrown*/ java.lang.@Nullable Boolean and_0 = BooleanAndOperation.INSTANCE.evaluate(CAUGHT_and, oclIsKindOf_0); - CAUGHT_and_0 = and_0; - } - catch (Exception e) { - CAUGHT_and_0 = ValueUtil.createInvalidValue(e); - } - /*@Caught*/ @NonNull Object CAUGHT_includes; - try { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_ecore_c_c_EClass_0 = idResolver.getClass(UMLXTables.CLSSid_EClass, null); - final /*@NonInvalid*/ org.eclipse.ocl.pivot.@NonNull Class TYP_umlx_c_c_RelPatternClassNode_1 = idResolver.getClass(UMLXTables.CLSSid_RelPatternClassNode, null); - @SuppressWarnings("null") - final /*@NonInvalid*/ org.eclipse.qvtd.umlx.@NonNull RelPatternNode target_0 = this.getTarget(); - final /*@Thrown*/ org.eclipse.qvtd.umlx.@NonNull RelPatternClassNode oclAsType = ClassUtil.nonNullState((RelPatternClassNode)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, target_0, TYP_umlx_c_c_RelPatternClassNode_1)); - @SuppressWarnings("null") - final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClassifier referredEClassifier = oclAsType.getReferredEClassifier(); - final /*@Thrown*/ org.eclipse.emf.ecore.@NonNull EClass sourceEClass = ClassUtil.nonNullState((EClass)OclAnyOclAsTypeOperation.INSTANCE.evaluate(executor, referredEClassifier, TYP_ecore_c_c_EClass_0)); - final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull SetValue oclAsSet = OclAnyOclAsSetOperation.INSTANCE.evaluate(executor, UMLXTables.SET_CLSSid_EClass, sourceEClass); - final org.eclipse.ocl.pivot.@NonNull Class TYPE_closure_0 = executor.getStaticTypeOf(oclAsSet); - final LibraryIteration.@org.eclipse.jdt.annotation.NonNull LibraryIterationExtension IMPL_closure_0 = (LibraryIteration.LibraryIterationExtension)TYPE_closure_0.lookupImplementation(standardLibrary, OCLstdlibTables.Operations._Set__closure); - final @NonNull Object ACC_closure_0 = IMPL_closure_0.createAccumulatorValue(executor, UMLXTables.SET_CLSSid_EClass, UMLXTables.ORD_CLSSid_EClass); - /** - * Implementation of the iterator body. - */ - final @NonNull AbstractBinaryOperation BODY_closure_0 = new AbstractBinaryOperation() { + /*@Caught*/ @NonNull Object CAUGHT_includes_0; + try { + if (CAUGHT_targetEClass instanceof InvalidValueException) { + throw (InvalidValueException)CAUGHT_targetEClass; + } + final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull SetValue oclAsSet_0 = OclAnyOclAsSetOperation.INSTANCE.evaluate(executor, UMLXTables.SET_CLSSid_EClass, CAUGHT_targetEClass); + final org.eclipse.ocl.pivot.@NonNull Class TYPE_closure_0_0 = executor.getStaticTypeOf(oclAsSet_0); + final LibraryIteration.@org.eclipse.jdt.annotation.NonNull LibraryIterationExtension IMPL_closure_0_0 = (LibraryIteration.LibraryIterationExtension)TYPE_closure_0_0.lookupImplementation(standardLibrary, OCLstdlibTables.Operations._Set__closure); + final @NonNull Object ACC_closure_0_0 = IMPL_closure_0_0.createAccumulatorValue(executor, UMLXTables.SET_CLSSid_EClass, UMLXTables.ORD_CLSSid_EClass); /** - * eSuperTypes + * Implementation of the iterator body. */ - @Override - public @Nullable Object evaluate(final @NonNull Executor executor, final @NonNull TypeId typeId, final @Nullable Object oclAsSet, final /*@NonInvalid*/ java.lang.@Nullable Object _1) { - final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EClass symbol_0 = (EClass)_1; - if (symbol_0 == null) { - throw new InvalidValueException("Null source for \'\'http://www.eclipse.org/emf/2002/Ecore\'::EClass::eSuperTypes\'"); + final @NonNull AbstractBinaryOperation BODY_closure_0_0 = new AbstractBinaryOperation() { + /** + * eSuperTypes + */ + @Override + public @Nullable Object evaluate(final @NonNull Executor executor, final @NonNull TypeId typeId, final @Nullable Object oclAsSet_0, final /*@NonInvalid*/ java.lang.@Nullable Object _1_0) { + final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EClass symbol_1 = (EClass)_1_0; + if (symbol_1 == null) { + throw new InvalidValueException("Null source for \'\'http://www.eclipse.org/emf/2002/Ecore\'::EClass::eSuperTypes\'"); + } + @SuppressWarnings("null") + final /*@Thrown*/ java.util.@NonNull List<EClass> eSuperTypes_0 = symbol_1.getESuperTypes(); + final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull OrderedSetValue BOXED_eSuperTypes_0 = idResolver.createOrderedSetOfAll(UMLXTables.ORD_CLSSid_EClass, eSuperTypes_0); + return BOXED_eSuperTypes_0; } - @SuppressWarnings("null") - final /*@Thrown*/ java.util.@NonNull List<EClass> eSuperTypes = symbol_0.getESuperTypes(); - final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull OrderedSetValue BOXED_eSuperTypes = idResolver.createOrderedSetOfAll(UMLXTables.ORD_CLSSid_EClass, eSuperTypes); - return BOXED_eSuperTypes; + }; + final @NonNull ExecutorSingleIterationManager MGR_closure_0_0 = new ExecutorSingleIterationManager(executor, UMLXTables.SET_CLSSid_EClass, BODY_closure_0_0, oclAsSet_0, ACC_closure_0_0); + final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull SetValue closure_0 = ClassUtil.nonNullState((SetValue)IMPL_closure_0_0.evaluateIteration(MGR_closure_0_0)); + if (CAUGHT_sourceEClass instanceof InvalidValueException) { + throw (InvalidValueException)CAUGHT_sourceEClass; } - }; - final @NonNull ExecutorSingleIterationManager MGR_closure_0 = new ExecutorSingleIterationManager(executor, UMLXTables.SET_CLSSid_EClass, BODY_closure_0, oclAsSet, ACC_closure_0); - final /*@Thrown*/ org.eclipse.ocl.pivot.values.@NonNull SetValue closure = ClassUtil.nonNullState((SetValue)IMPL_closure_0.evaluateIteration(MGR_closure_0)); - final /*@NonInvalid*/ org.eclipse.emf.ecore.@Nullable EStructuralFeature referredEStructuralFeature_1 = this.getReferredEStructuralFeature(); - if (referredEStructuralFeature_1 == null) { - throw new InvalidValueException("Null source for \'\'http://www.eclipse.org/emf/2002/Ecore\'::ETypedElement::eType\'"); + final /*@Thrown*/ boolean includes_0 = CollectionIncludesOperation.INSTANCE.evaluate(closure_0, CAUGHT_sourceEClass).booleanValue(); + CAUGHT_includes_0 = includes_0; } - final /*@Thrown*/ org.eclipse.emf.ecore.@Nullable EClassifier eType = referredEStructuralFeature_1.getEType(); - final /*@Thrown*/ boolean includes = CollectionIncludesOperation.INSTANCE.evaluate(closure, eType).booleanValue(); - CAUGHT_includes = includes; + catch (Exception e) { + CAUGHT_includes_0 = ValueUtil.createInvalidValue(e); + } + final /*@Thrown*/ java.lang.@Nullable Boolean or = BooleanOrOperation.INSTANCE.evaluate(CAUGHT_includes, CAUGHT_includes_0); + CAUGHT_or = or; } catch (Exception e) { - CAUGHT_includes = ValueUtil.createInvalidValue(e); + CAUGHT_or = ValueUtil.createInvalidValue(e); } - final /*@Thrown*/ java.lang.@Nullable Boolean result = BooleanImpliesOperation.INSTANCE.evaluate(CAUGHT_and_0, CAUGHT_includes); + final /*@Thrown*/ java.lang.@Nullable Boolean result = BooleanImpliesOperation.INSTANCE.evaluate(and_0, CAUGHT_or); CAUGHT_result = result; } catch (Exception e) { CAUGHT_result = ValueUtil.createInvalidValue(e); } - final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_CompatibleEReferencePropertyTarget, this, (Object)null, diagnostics, context, (Object)null, severity_0, CAUGHT_result, UMLXTables.INT_0).booleanValue(); - symbol_1 = logDiagnostic; + final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, UMLXTables.STR_RelPatternEdge_c_c_CompatibleMemberPropertyTarget, this, (Object)null, diagnostics, context, (Object)null, severity_0, CAUGHT_result, UMLXTables.INT_0).booleanValue(); + symbol_2 = logDiagnostic; } - return Boolean.TRUE == symbol_1; + return Boolean.TRUE == symbol_2; } /** @@ -1371,7 +1257,7 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { setReferredEStructuralFeature((EStructuralFeature)newValue); return; case UMLXPackage.REL_PATTERN_EDGE__SOURCE: - setSource((RelPatternClassNode)newValue); + setSource((RelPatternNode)newValue); return; case UMLXPackage.REL_PATTERN_EDGE__SOURCE_INDEX: setSourceIndex((Integer)newValue); @@ -1398,7 +1284,7 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { setReferredEStructuralFeature((EStructuralFeature)null); return; case UMLXPackage.REL_PATTERN_EDGE__SOURCE: - setSource((RelPatternClassNode)null); + setSource((RelPatternNode)null); return; case UMLXPackage.REL_PATTERN_EDGE__SOURCE_INDEX: setSourceIndex(SOURCE_INDEX_EDEFAULT); @@ -1455,8 +1341,8 @@ public class RelPatternEdgeImpl extends RelEdgeImpl implements RelPatternEdge { return basicSetOwningRelDomainNode((RelDomainNode)otherEnd, msgs); case UMLXPackage.REL_PATTERN_EDGE__SOURCE: if (source != null) - msgs = ((InternalEObject)source).eInverseRemove(this, UMLXPackage.REL_PATTERN_CLASS_NODE__OUTGOING, RelPatternClassNode.class, msgs); - return basicSetSource((RelPatternClassNode)otherEnd, msgs); + msgs = ((InternalEObject)source).eInverseRemove(this, UMLXPackage.REL_PATTERN_NODE__OUTGOING, RelPatternNode.class, msgs); + return basicSetSource((RelPatternNode)otherEnd, msgs); case UMLXPackage.REL_PATTERN_EDGE__TARGET: if (target != null) msgs = ((InternalEObject)target).eInverseRemove(this, UMLXPackage.REL_PATTERN_NODE__INCOMING, RelPatternNode.class, msgs); |