diff options
author | Ed Willink | 2015-07-03 04:53:20 +0000 |
---|---|---|
committer | Ed Willink | 2015-07-07 20:56:14 +0000 |
commit | 79fba8d355d004995c0df8b75aba94f6bfcf6c2d (patch) | |
tree | 2d7b8ea12cd2ab5a0c1bba412a6fde5e46548c2d | |
parent | 3e1525c89bf62d389972a679c847e3d894ce7050 (diff) | |
download | org.eclipse.ocl-79fba8d355d004995c0df8b75aba94f6bfcf6c2d.tar.gz org.eclipse.ocl-79fba8d355d004995c0df8b75aba94f6bfcf6c2d.tar.xz org.eclipse.ocl-79fba8d355d004995c0df8b75aba94f6bfcf6c2d.zip |
[ocl25] Introduce ElementUtil.isRequired()
3 files changed, 27 insertions, 17 deletions
diff --git a/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/cs2as/CS2ASConversion.java b/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/cs2as/CS2ASConversion.java index b2010ae1bf..3f3b7d53bd 100644 --- a/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/cs2as/CS2ASConversion.java +++ b/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/cs2as/CS2ASConversion.java @@ -1058,6 +1058,11 @@ public class CS2ASConversion extends AbstractBase2ASConversion return pivotType; } + public void refreshRequiredType(@NonNull TypedElement pivotElement, @NonNull TypedRefCS csTypeRef) { + org.eclipse.ocl.pivot.Class type = PivotUtil.getPivot(org.eclipse.ocl.pivot.Class.class, csTypeRef); + setType(pivotElement, type, ElementUtil.isRequired(csTypeRef)); + } + public void refreshTemplateSignature(@NonNull TemplateableElementCS csTemplateableElement, @NonNull TemplateableElement pivotTemplateableElement) { TemplateSignatureCS csTemplateSignature = csTemplateableElement.getOwnedSignature(); if (csTemplateSignature == null) { diff --git a/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/utilities/ElementUtil.java b/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/utilities/ElementUtil.java index f33fc5455b..15669bb7c1 100644 --- a/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/utilities/ElementUtil.java +++ b/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/utilities/ElementUtil.java @@ -467,10 +467,17 @@ public class ElementUtil || (instanceClass == int.class) || (instanceClass == long.class) || (instanceClass == short.class); } - public static boolean isUnique(@NonNull TypedElementCS csTypedElement) { - List<String> qualifiers = csTypedElement.getQualifiers(); - assert qualifiers != null; - return getQualifier(qualifiers, "unique", "!unique", true); + public static boolean isRequired(@Nullable TypedRefCS csTypeRef) { + if (csTypeRef != null) { + MultiplicityCS csMultiplicity = csTypeRef.getOwnedMultiplicity(); + if (csMultiplicity != null) { + int lower = csMultiplicity.getLower(); + if (lower > 0) { + return true; + } + } + } + return false; } public static boolean isSpecialization(@NonNull TemplateBindingCS csTemplateBinding) { @@ -495,6 +502,12 @@ public class ElementUtil return false; } + public static boolean isUnique(@NonNull TypedElementCS csTypedElement) { + List<String> qualifiers = csTypedElement.getQualifiers(); + assert qualifiers != null; + return getQualifier(qualifiers, "unique", "!unique", true); + } + public static void setLastPathElement(@NonNull PathNameCS ownedPathName,@NonNull Element asElement) { List<PathElementCS> ownedPathElements = ownedPathName.getOwnedPathElements(); int size = ownedPathElements.size(); diff --git a/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/cs2as/EssentialOCLCSLeft2RightVisitor.java b/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/cs2as/EssentialOCLCSLeft2RightVisitor.java index abb9e65333..0bb01a69ff 100644 --- a/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/cs2as/EssentialOCLCSLeft2RightVisitor.java +++ b/plugins/org.eclipse.ocl.xtext.essentialocl/src/org/eclipse/ocl/xtext/essentialocl/cs2as/EssentialOCLCSLeft2RightVisitor.java @@ -97,7 +97,6 @@ import org.eclipse.ocl.xtext.base.cs2as.CS2ASConversion; import org.eclipse.ocl.xtext.base.utilities.ElementUtil; import org.eclipse.ocl.xtext.basecs.ElementCS; import org.eclipse.ocl.xtext.basecs.ModelElementCS; -import org.eclipse.ocl.xtext.basecs.MultiplicityCS; import org.eclipse.ocl.xtext.basecs.PathElementCS; import org.eclipse.ocl.xtext.basecs.PathNameCS; import org.eclipse.ocl.xtext.basecs.TypedRefCS; @@ -504,17 +503,10 @@ public class EssentialOCLCSLeft2RightVisitor extends AbstractEssentialOCLCSLeft2 || ((type instanceof CollectionType) && (((CollectionType)type).getElementType() instanceof InvalidType)); } + /** @deprecated use ElementUtil */ + @Deprecated protected boolean isRequired(@Nullable TypedRefCS csTypeRef) { - if (csTypeRef != null) { - MultiplicityCS csMultiplicity = csTypeRef.getOwnedMultiplicity(); - if (csMultiplicity != null) { - int lower = csMultiplicity.getLower(); - if (lower > 0) { - return true; - } - } - } - return false; + return ElementUtil.isRequired(csTypeRef); } protected @NonNull OperationCallExp refreshOperationCallExp(@NonNull AbstractNameExpCS csNameExp, @Nullable OCLExpression sourceExp) { @@ -962,7 +954,7 @@ public class EssentialOCLCSLeft2RightVisitor extends AbstractEssentialOCLCSLeft2 iterator.setRepresentedParameter(formalIterator); Type varType = null; TypedRefCS csType = csArgument.getOwnedType(); - boolean iteratorIsRequired = isRequired(csType); + boolean iteratorIsRequired = ElementUtil.isRequired(csType); if (csType != null) { varType = PivotUtil.getPivot(Type.class, csType); } @@ -1721,7 +1713,7 @@ public class EssentialOCLCSLeft2RightVisitor extends AbstractEssentialOCLCSLeft2 if (csInitExpression != null) { TypedRefCS csVariableType = csLetVariable.getOwnedType(); Type variableType = csVariableType != null ? PivotUtil.getPivot(Type.class, csVariableType) : null; - boolean variableIsRequired = isRequired(csVariableType); + boolean variableIsRequired = ElementUtil.isRequired(csVariableType); boolean initIsRequired = false; OCLExpression initExpression = context.visitLeft2Right(OCLExpression.class, csInitExpression); Type initType = null; |