diff options
author | Ed Willink | 2017-02-22 10:52:04 +0000 |
---|---|---|
committer | Ed Willink | 2017-02-22 10:52:04 +0000 |
commit | 21ce6dc926a029d33da9f06f533d57be657de0e6 (patch) | |
tree | 429e932df77550c73b5b93bbabd1305835f96588 | |
parent | 471eaa7975f0c62664bd4c9048e8040d38bb464e (diff) | |
download | org.eclipse.ocl-21ce6dc926a029d33da9f06f533d57be657de0e6.tar.gz org.eclipse.ocl-21ce6dc926a029d33da9f06f533d57be657de0e6.tar.xz org.eclipse.ocl-21ce6dc926a029d33da9f06f533d57be657de0e6.zip |
[512553] Fix UML2AS2UML of isStatic Operations/Properties
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>
|