Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Willink2017-02-22 10:52:04 +0000
committerEd Willink2017-02-22 10:52:04 +0000
commit21ce6dc926a029d33da9f06f533d57be657de0e6 (patch)
tree429e932df77550c73b5b93bbabd1305835f96588
parent471eaa7975f0c62664bd4c9048e8040d38bb464e (diff)
downloadorg.eclipse.ocl-21ce6dc926a029d33da9f06f533d57be657de0e6.tar.gz
org.eclipse.ocl-21ce6dc926a029d33da9f06f533d57be657de0e6.tar.xz
org.eclipse.ocl-21ce6dc926a029d33da9f06f533d57be657de0e6.zip
[512553] Fix UML2AS2UML of isStatic Operations/Properties
-rw-r--r--plugins/org.eclipse.ocl.pivot.uml/src/org/eclipse/ocl/pivot/uml/internal/as2es/AS2UMLDeclarationVisitor.java2
-rw-r--r--plugins/org.eclipse.ocl.pivot.uml/src/org/eclipse/ocl/pivot/uml/internal/es2as/UML2ASDeclarationSwitch.java2
-rw-r--r--tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/UMLConsoleTests.java137
-rw-r--r--tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/models/Bug512553.uml22
4 files changed, 102 insertions, 61 deletions
diff --git a/plugins/org.eclipse.ocl.pivot.uml/src/org/eclipse/ocl/pivot/uml/internal/as2es/AS2UMLDeclarationVisitor.java b/plugins/org.eclipse.ocl.pivot.uml/src/org/eclipse/ocl/pivot/uml/internal/as2es/AS2UMLDeclarationVisitor.java
index ed7735950f..c6b52013d2 100644
--- a/plugins/org.eclipse.ocl.pivot.uml/src/org/eclipse/ocl/pivot/uml/internal/as2es/AS2UMLDeclarationVisitor.java
+++ b/plugins/org.eclipse.ocl.pivot.uml/src/org/eclipse/ocl/pivot/uml/internal/as2es/AS2UMLDeclarationVisitor.java
@@ -272,6 +272,7 @@ public class AS2UMLDeclarationVisitor
@SuppressWarnings("null")
org.eclipse.uml2.uml.@NonNull Operation umlOperation = UMLFactory.eINSTANCE.createOperation();
copyNamedElement(umlOperation, pivotOperation);
+ umlOperation.setIsStatic(pivotOperation.isIsStatic());
// safeVisitAll(umlOperation.getEAnnotations(), pivotOperation.getOwnedAnnotation());
context.defer(pivotOperation); // Defer type setting
TemplateSignature pivotTemplateSignature = pivotOperation.getOwnedSignature();
@@ -333,6 +334,7 @@ public class AS2UMLDeclarationVisitor
// umlProperty.setIsResolveProxies(pivotProperty.isResolveProxies());
umlProperty.setIsReadOnly(pivotProperty.isIsReadOnly());
umlProperty.setIsDerived(pivotProperty.isIsDerived());
+ umlProperty.setIsStatic(pivotProperty.isIsStatic());
// umlProperty.setIsTransient(pivotProperty.isTransient());
// umlProperty.setIsUnsettable(pivotProperty.isUnsettable());
// umlProperty.setIsVolatile(pivotProperty.isVolatile());
diff --git a/plugins/org.eclipse.ocl.pivot.uml/src/org/eclipse/ocl/pivot/uml/internal/es2as/UML2ASDeclarationSwitch.java b/plugins/org.eclipse.ocl.pivot.uml/src/org/eclipse/ocl/pivot/uml/internal/es2as/UML2ASDeclarationSwitch.java
index f223e5163d..3fda895254 100644
--- a/plugins/org.eclipse.ocl.pivot.uml/src/org/eclipse/ocl/pivot/uml/internal/es2as/UML2ASDeclarationSwitch.java
+++ b/plugins/org.eclipse.ocl.pivot.uml/src/org/eclipse/ocl/pivot/uml/internal/es2as/UML2ASDeclarationSwitch.java
@@ -342,6 +342,7 @@ public class UML2ASDeclarationSwitch extends UMLSwitch<Object>
assert umlOperation != null;
Operation pivotElement = converter.refreshNamedElement(Operation.class, PivotPackage.Literals.OPERATION, umlOperation);
copyNamedElement(pivotElement, umlOperation);
+ pivotElement.setIsStatic(umlOperation.isStatic());
for (org.eclipse.uml2.uml.Parameter umlParameter : umlOperation.getOwnedParameters()) {
org.eclipse.uml2.uml.ParameterDirectionKind direction = umlParameter.getDirection();
if (direction == org.eclipse.uml2.uml.ParameterDirectionKind.IN_LITERAL) {
@@ -488,6 +489,7 @@ public class UML2ASDeclarationSwitch extends UMLSwitch<Object>
pivotElement.setIsImplicit(!isComposer);
// pivotElement.setIsID(umlProperty.isID());
// pivotElement.setIsResolveProxies(umlProperty.isResolveProxies());
+ pivotElement.setIsStatic(umlProperty.isStatic());
// converter.addProperty(umlProperty);
converter.queueReference(umlProperty); // type
converter.queueUse(umlProperty); // Defer
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/UMLConsoleTests.java b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/UMLConsoleTests.java
index 1c1e02b9e5..0798c5e930 100644
--- a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/UMLConsoleTests.java
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/UMLConsoleTests.java
@@ -23,15 +23,15 @@ import org.eclipse.ocl.pivot.utilities.OCL;
* Tests that exercise the Xtext OCL Console using a UML model.
*/
public class UMLConsoleTests extends AbstractConsoleTests
-{
+{
public void testConsole_Bug400090() throws Exception {
ResourceSet resourceSet = new ResourceSetImpl(); // Emulate the separate UML Editor's AdapterFactoryEditingDomainResourceSet
URI testModelURI = getProjectFileURI("Bug400090.uml");
- Resource umlResource = resourceSet.getResource(testModelURI, true);
- org.eclipse.uml2.uml.Model model = (org.eclipse.uml2.uml.Model)umlResource.getContents().get(0);
- org.eclipse.uml2.uml.Class bookClass = (org.eclipse.uml2.uml.Class)model.getOwnedType("Book");
- org.eclipse.uml2.uml.InstanceSpecification bookInstance = (org.eclipse.uml2.uml.InstanceSpecification)model.getOwnedMember("TheBook");
+ Resource umlResource = resourceSet.getResource(testModelURI, true);
+ org.eclipse.uml2.uml.Model model = (org.eclipse.uml2.uml.Model)umlResource.getContents().get(0);
+ org.eclipse.uml2.uml.Class bookClass = (org.eclipse.uml2.uml.Class)model.getOwnedType("Book");
+ org.eclipse.uml2.uml.InstanceSpecification bookInstance = (org.eclipse.uml2.uml.InstanceSpecification)model.getOwnedMember("TheBook");
//
assertConsoleResult(consolePage, bookClass, "self", "Bug400090::Book\n");
assertFalse(consolePage.isPopUpModelTypesUsageInformation());
@@ -55,11 +55,11 @@ public class UMLConsoleTests extends AbstractConsoleTests
ResourceSet resourceSet = new ResourceSetImpl(); // Emulate the separate UML Editor's AdapterFactoryEditingDomainResourceSet
URI testModelURI = getProjectFileURI("Bug419556.uml");
- Resource umlResource = resourceSet.getResource(testModelURI, true);
- org.eclipse.uml2.uml.Model model = (org.eclipse.uml2.uml.Model)umlResource.getContents().get(0);
- org.eclipse.uml2.uml.Class class1 = (org.eclipse.uml2.uml.Class)model.getOwnedType("Class1");
- org.eclipse.uml2.uml.Property attribute1 = class1.getOwnedAttribute("Attribute1", null);
- //
+ Resource umlResource = resourceSet.getResource(testModelURI, true);
+ org.eclipse.uml2.uml.Model model = (org.eclipse.uml2.uml.Model)umlResource.getContents().get(0);
+ org.eclipse.uml2.uml.Class class1 = (org.eclipse.uml2.uml.Class)model.getOwnedType("Class1");
+ org.eclipse.uml2.uml.Property attribute1 = class1.getOwnedAttribute("Attribute1", null);
+ //
assertConsoleResult(consolePage, class1, "self.extension_Stereotype3", "Class1$Stereotype3\n");
//
assertConsoleResult(consolePage, attribute1, "self.extension_Stereotype1", "Attribute1$Stereotype1\n"); // Bug 419557
@@ -72,17 +72,17 @@ public class UMLConsoleTests extends AbstractConsoleTests
ResourceSet resourceSet = new ResourceSetImpl(); // Emulate the separate UML Editor's AdapterFactoryEditingDomainResourceSet
URI testModelURI = getProjectFileURI("Bug437715.uml");
- Resource umlResource = resourceSet.getResource(testModelURI, true);
- org.eclipse.uml2.uml.Model model = (org.eclipse.uml2.uml.Model)umlResource.getContents().get(0);
- org.eclipse.uml2.uml.Class class1 = (org.eclipse.uml2.uml.Class)model.getOwnedType("Class1");
- org.eclipse.uml2.uml.Class class2 = (org.eclipse.uml2.uml.Class)model.getOwnedType("Class2");
-// org.eclipse.uml2.uml.Property attribute1 = class1.getOwnedAttribute("Attribute1", null);
- //
+ Resource umlResource = resourceSet.getResource(testModelURI, true);
+ org.eclipse.uml2.uml.Model model = (org.eclipse.uml2.uml.Model)umlResource.getContents().get(0);
+ org.eclipse.uml2.uml.Class class1 = (org.eclipse.uml2.uml.Class)model.getOwnedType("Class1");
+ org.eclipse.uml2.uml.Class class2 = (org.eclipse.uml2.uml.Class)model.getOwnedType("Class2");
+ // org.eclipse.uml2.uml.Property attribute1 = class1.getOwnedAttribute("Attribute1", null);
+ //
assertConsoleResult(consolePage, class1, "self.extension_Stereotype1.stereotype2", "«Stereotype2»model::Class2\n");
assertConsoleResult(consolePage, class2, "self.extension_Stereotype2.stereotype1", "«Stereotype1»model::Class1\n");
//
-// assertConsoleResult(consolePage, attribute1, "self.extension_Stereotype1", "Attribute1$Stereotype1\n"); // Bug 419557
-// assertConsoleResult(consolePage, attribute1, "self.extension_Stereotype2", "<error>null\n</error>");
+ // assertConsoleResult(consolePage, attribute1, "self.extension_Stereotype1", "Attribute1$Stereotype1\n"); // Bug 419557
+ // assertConsoleResult(consolePage, attribute1, "self.extension_Stereotype2", "<error>null\n</error>");
//
consolePage.cancelValidation();
}
@@ -91,27 +91,27 @@ public class UMLConsoleTests extends AbstractConsoleTests
ResourceSet resourceSet = new ResourceSetImpl(); // Emulate the separate UML Editor's AdapterFactoryEditingDomainResourceSet
URI testModelURI = getProjectFileURI("Bug474085.uml");
- Resource umlResource = resourceSet.getResource(testModelURI, true);
- org.eclipse.uml2.uml.Model model = (org.eclipse.uml2.uml.Model)umlResource.getContents().get(0);
- org.eclipse.uml2.uml.StateMachine sm = (org.eclipse.uml2.uml.StateMachine)model.getOwnedType("StateMachine0");
- org.eclipse.uml2.uml.Region region0a = sm.getRegion("Region0");
- org.eclipse.uml2.uml.Transition transition0a = region0a.getTransition("Transition0");
- org.eclipse.uml2.uml.Transition transition1a = region0a.getTransition("Transition1");
- org.eclipse.uml2.uml.Transition transition2a = region0a.getTransition("Transition2");
- org.eclipse.uml2.uml.State state0 = (org.eclipse.uml2.uml.State)region0a.getSubvertex("State0");
- org.eclipse.uml2.uml.Region region0b = state0.getRegion("Region0");
- org.eclipse.uml2.uml.Transition transition3b = region0b.getTransition("Transition3");
-// org.eclipse.uml2.uml.Property attribute1 = class1.getOwnedAttribute("Attribute1", null);
- //
+ Resource umlResource = resourceSet.getResource(testModelURI, true);
+ org.eclipse.uml2.uml.Model model = (org.eclipse.uml2.uml.Model)umlResource.getContents().get(0);
+ org.eclipse.uml2.uml.StateMachine sm = (org.eclipse.uml2.uml.StateMachine)model.getOwnedType("StateMachine0");
+ org.eclipse.uml2.uml.Region region0a = sm.getRegion("Region0");
+ org.eclipse.uml2.uml.Transition transition0a = region0a.getTransition("Transition0");
+ org.eclipse.uml2.uml.Transition transition1a = region0a.getTransition("Transition1");
+ org.eclipse.uml2.uml.Transition transition2a = region0a.getTransition("Transition2");
+ org.eclipse.uml2.uml.State state0 = (org.eclipse.uml2.uml.State)region0a.getSubvertex("State0");
+ org.eclipse.uml2.uml.Region region0b = state0.getRegion("Region0");
+ org.eclipse.uml2.uml.Transition transition3b = region0b.getTransition("Transition3");
+ // org.eclipse.uml2.uml.Property attribute1 = class1.getOwnedAttribute("Attribute1", null);
+ //
assertConsoleResult(consolePage, transition3b, "self.extension_EnsureRole", "Transition3$EnsureRole\n");
assertConsoleResult(consolePage, transition3b, "self.extension_EnsureRole.role", "'user=bob'\n'role=admin'\n");
assertConsoleResult(consolePage, transition2a, "self.extension_EnsureRole.role", "'One'\n'Two'\n");
assertConsoleResult(consolePage, transition1a, "self.extension_EnsureRole.role", "'One'\n");
assertConsoleResult(consolePage, transition0a, "self.extension_EnsureRole.role", "");
-// assertConsoleResult(consolePage, class2, "self.extension_Stereotype2.stereotype1", "«Stereotype1»model::Class1\n");
+ // assertConsoleResult(consolePage, class2, "self.extension_Stereotype2.stereotype1", "«Stereotype1»model::Class1\n");
//
-// assertConsoleResult(consolePage, attribute1, "self.extension_Stereotype1", "Attribute1$Stereotype1\n"); // Bug 419557
-// assertConsoleResult(consolePage, attribute1, "self.extension_Stereotype2", "<error>null\n</error>");
+ // assertConsoleResult(consolePage, attribute1, "self.extension_Stereotype1", "Attribute1$Stereotype1\n"); // Bug 419557
+ // assertConsoleResult(consolePage, attribute1, "self.extension_Stereotype2", "<error>null\n</error>");
//
consolePage.cancelValidation();
}
@@ -120,11 +120,11 @@ public class UMLConsoleTests extends AbstractConsoleTests
ResourceSet resourceSet = new ResourceSetImpl(); // Emulate the separate UML Editor's AdapterFactoryEditingDomainResourceSet
URI testModelURI = getProjectFileURI("Bug507406.uml");
- Resource umlResource = resourceSet.getResource(testModelURI, true);
- org.eclipse.uml2.uml.Model model = (org.eclipse.uml2.uml.Model)umlResource.getContents().get(0);
- org.eclipse.uml2.uml.Interaction interaction1 = (org.eclipse.uml2.uml.Interaction)model.getOwnedType("Interaction1");
- org.eclipse.uml2.uml.Message message = interaction1.getMessage("Message");
- //
+ Resource umlResource = resourceSet.getResource(testModelURI, true);
+ org.eclipse.uml2.uml.Model model = (org.eclipse.uml2.uml.Model)umlResource.getContents().get(0);
+ org.eclipse.uml2.uml.Interaction interaction1 = (org.eclipse.uml2.uml.Interaction)model.getOwnedType("Interaction1");
+ org.eclipse.uml2.uml.Message message = interaction1.getMessage("Message");
+ //
assertConsoleResult(consolePage, message, "self", "RootElement::Interaction1::Message\n");
assertConsoleResult(consolePage, message, "self.receiveEvent", "RootElement::Interaction1::MessageRecv\n");
assertConsoleResult(consolePage, message, "self.receiveEvent.oclAsType(MessageOccurrenceSpecification).covered", "RootElement::Interaction1::Lifeline0\n");
@@ -133,6 +133,21 @@ public class UMLConsoleTests extends AbstractConsoleTests
consolePage.cancelValidation();
}
+ public void testConsole_Bug512553() throws Exception {
+ ResourceSet resourceSet = new ResourceSetImpl(); // Emulate the separate UML Editor's AdapterFactoryEditingDomainResourceSet
+
+ URI testModelURI = getProjectFileURI("Bug512553.uml");
+ Resource umlResource = resourceSet.getResource(testModelURI, true);
+ org.eclipse.uml2.uml.Model model = (org.eclipse.uml2.uml.Model)umlResource.getContents().get(0);
+ org.eclipse.uml2.uml.Class person = (org.eclipse.uml2.uml.Class)model.getOwnedType("Person");
+ //
+ assertConsoleResult(consolePage, person, "test::Person.isLower('John')", "false\n");
+ assertConsoleResult(consolePage, person, "test::Person.isLower('john')", "true\n");
+ assertConsoleResult(consolePage, person, "test::Person::isLower('john')", "<b><error>Parsing failure\n</error></b><error>\n1: Unresolved Operation '::isLower('john')'\n</error>");
+ //
+ consolePage.cancelValidation();
+ }
+
@SuppressWarnings({"unused"})
public void testConsole_UML() throws Exception {
doDelete(PLUGIN_ID);
@@ -140,28 +155,28 @@ public class UMLConsoleTests extends AbstractConsoleTests
MetamodelManager metamodelManager = ocl.getMetamodelManager();
ResourceSet resourceSet = ocl.getResourceSet();
- Resource umlResource = resourceSet.getResource(getTestModelURI("model/InternationalizedClasses.uml"), true);
- Resource umlProfileResource = resourceSet.getResource(getTestModelURI("model/Internationalized.profile.uml"), true);
-// ASResource asResource = ocl.uml2as(umlResource);
-// Root root = (Root) asResource.getContents().get(0);
-// org.eclipse.ocl.pivot.Package modelPackage = ClassUtil.getNamedElement(root.getNestedPackage(), "Model");
- org.eclipse.uml2.uml.Package umlPackage = (org.eclipse.uml2.uml.Package) umlResource.getContents().get(0);
- org.eclipse.uml2.uml.Type umlEnglishClass = umlPackage.getOwnedType("EnglishClass");
- org.eclipse.uml2.uml.Profile umlProfile = (org.eclipse.uml2.uml.Profile) umlProfileResource.getContents().get(0);
- org.eclipse.uml2.uml.Stereotype umlInEnglishStereotype = umlProfile.getOwnedStereotype("InEnglish");
- org.eclipse.uml2.uml.Stereotype umlInFrenchStereotype = umlProfile.getOwnedStereotype("InFrench");
- org.eclipse.uml2.uml.Stereotype umlInGermanStereotype = umlProfile.getOwnedStereotype("InGerman");
- Type asEnglishClass = metamodelManager.getASOf(Type.class, umlEnglishClass);
-// Type englishClass = ClassUtil.getNamedElement(modelPackage.getOwnedType(), "EnglishClass");
-// Type frenchClass = ClassUtil.getNamedElement(modelPackage.getOwnedType(), "FrenchClass");
-// Type germanClass = ClassUtil.getNamedElement(modelPackage.getOwnedType(), "GermanClass");
-// Type plainClass = ClassUtil.getNamedElement(modelPackage.getOwnedType(), "PlainClass");
-// PackageServer profile = metamodelManager.getPackageManager().getPackageByURI("http://www.eclipse.org/ocl/examples/Internationalized");
-// Type inEnglishStereotype = profile.getMemberType("InEnglish");
-// Type inFrenchStereotype = profile.getMemberType("InFrench");
-// Type inGermanStereotype = profile.getMemberType("InGerman");
-// ElementExtension englishClassInEnglish = ClassUtil.getNamedElement(englishClass.getExtension(), "EnglishClass$InEnglish");
- //
+ Resource umlResource = resourceSet.getResource(getTestModelURI("model/InternationalizedClasses.uml"), true);
+ Resource umlProfileResource = resourceSet.getResource(getTestModelURI("model/Internationalized.profile.uml"), true);
+ // ASResource asResource = ocl.uml2as(umlResource);
+ // Root root = (Root) asResource.getContents().get(0);
+ // org.eclipse.ocl.pivot.Package modelPackage = ClassUtil.getNamedElement(root.getNestedPackage(), "Model");
+ org.eclipse.uml2.uml.Package umlPackage = (org.eclipse.uml2.uml.Package) umlResource.getContents().get(0);
+ org.eclipse.uml2.uml.Type umlEnglishClass = umlPackage.getOwnedType("EnglishClass");
+ org.eclipse.uml2.uml.Profile umlProfile = (org.eclipse.uml2.uml.Profile) umlProfileResource.getContents().get(0);
+ org.eclipse.uml2.uml.Stereotype umlInEnglishStereotype = umlProfile.getOwnedStereotype("InEnglish");
+ org.eclipse.uml2.uml.Stereotype umlInFrenchStereotype = umlProfile.getOwnedStereotype("InFrench");
+ org.eclipse.uml2.uml.Stereotype umlInGermanStereotype = umlProfile.getOwnedStereotype("InGerman");
+ Type asEnglishClass = metamodelManager.getASOf(Type.class, umlEnglishClass);
+ // Type englishClass = ClassUtil.getNamedElement(modelPackage.getOwnedType(), "EnglishClass");
+ // Type frenchClass = ClassUtil.getNamedElement(modelPackage.getOwnedType(), "FrenchClass");
+ // Type germanClass = ClassUtil.getNamedElement(modelPackage.getOwnedType(), "GermanClass");
+ // Type plainClass = ClassUtil.getNamedElement(modelPackage.getOwnedType(), "PlainClass");
+ // PackageServer profile = metamodelManager.getPackageManager().getPackageByURI("http://www.eclipse.org/ocl/examples/Internationalized");
+ // Type inEnglishStereotype = profile.getMemberType("InEnglish");
+ // Type inFrenchStereotype = profile.getMemberType("InFrench");
+ // Type inGermanStereotype = profile.getMemberType("InGerman");
+ // ElementExtension englishClassInEnglish = ClassUtil.getNamedElement(englishClass.getExtension(), "EnglishClass$InEnglish");
+ //
assertConsoleResult(consolePage, umlEnglishClass, "self.name", "'EnglishClass'\n");
// allInstances
assertConsoleResult(consolePage, umlEnglishClass, "Stereotype.allInstances()->sortedBy(name)", ""); // Tests Bug 382981
@@ -170,6 +185,6 @@ public class UMLConsoleTests extends AbstractConsoleTests
assertConsoleResult(consolePage, asEnglishClass, "ocl::Class.allInstances()->sortedBy(name)", "Model::EnglishClass\nEnglishClass$InEnglish\nModel::FrenchClass\nFrenchClass$InFrench\nModel::GermanClass\nGermanClass$InGerman\nModel::LanguageClass\nModel::PlainClass\nString\n");
//
consolePage.cancelValidation();
-// ocl.dispose();
+ // ocl.dispose();
}
}
diff --git a/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/models/Bug512553.uml b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/models/Bug512553.uml
new file mode 100644
index 0000000000..d16dcde0a5
--- /dev/null
+++ b/tests/org.eclipse.ocl.examples.xtext.tests/src/org/eclipse/ocl/examples/test/xtext/models/Bug512553.uml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_yBv74N48EeaBrOB63Eenfw" name="test">
+ <packageImport xmi:id="_yBv74t48EeaBrOB63Eenfw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Class" xmi:id="_0BeX8N48EeaBrOB63Eenfw" name="Person">
+ <ownedOperation xmi:id="_6vP3gN48EeaBrOB63Eenfw" name="isLower" isStatic="true" bodyCondition="_WBXNYPjiEeaWXNG-AhVBXQ" isQuery="true">
+ <ownedRule xmi:id="_WBXNYPjiEeaWXNG-AhVBXQ">
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="_ZHROYPjiEeaWXNG-AhVBXQ">
+ <language>OCL</language>
+ <body>name.toLowerCase() = name</body>
+ </specification>
+ </ownedRule>
+ <ownedParameter xmi:id="_EJpVYN49EeaBrOB63Eenfw" name="name">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_EMM6IN49EeaBrOB63Eenfw" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+</uml:Model>

Back to the top