svn commit: r18427 - trunk/src/argouml-core-model-euml/src/org/argouml/model/euml

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: thn
Date: 2010-06-03 00:47:50-0700
New Revision: 18427

Modified:
   trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java
   trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java
   trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/DataTypesHelperEUMLImpl.java

Log:
handle methods of operations as Behavior objects (initially as OpaqueBehavior)

Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java?view=diff&pathrev=18427&r1=18426&r2=18427
==============================================================================
--- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java	(original)
+++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java	2010-06-03 00:47:50-0700
@@ -43,6 +43,7 @@
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.Node;
+import org.eclipse.uml2.uml.OpaqueBehavior;
 import org.eclipse.uml2.uml.Operation;
 import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.Parameter;
@@ -828,8 +829,10 @@
     }
 
     public Object buildMethod(String name) {
-        // TODO: Is this removed from UML2 ?
-        throw new NotImplementedException();
+        // in UML2, we model a method as a Behavior (initially OpaqueBehavior)
+        OpaqueBehavior method = UMLFactory.eINSTANCE.createOpaqueBehavior();
+        method.setName(name);
+        return method;
     }
 
     public Operation buildOperation(Object classifier, Object returnType) {

Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java?view=diff&pathrev=18427&r1=18426&r2=18427
==============================================================================
--- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java	(original)
+++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java	2010-06-03 00:47:50-0700
@@ -326,9 +326,8 @@
     }
 
     public void addMethod(final Object handle, final Object method) {
-        // In UML2.x there is no metaclass named Method, but we could use the
+        // In UML2.x there is no metaclass named Method, but we use the
         // 'method' association of BehavioralFeature
-        // TODO: It's OK like this?
         if (!(handle instanceof BehavioralFeature)) {
             throw new IllegalArgumentException(
                     "The handle must be instance of BehavioralFeature"); //$NON-NLS-1$
@@ -1315,7 +1314,10 @@
     }
 
     public void setBody(Object handle, Object expr) {
-	throw new NotYetImplementedException();
+        // must not be used in UML2; we model a method as a
+        // OpaqueBehavior object that already has a body, so there is no need
+        // to have an intermediate expression object
+        throw new NotImplementedException();
     }
 
     public void setBody(Object handle, String body) {

Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/DataTypesHelperEUMLImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/DataTypesHelperEUMLImpl.java?view=diff&pathrev=18427&r1=18426&r2=18427
==============================================================================
--- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/DataTypesHelperEUMLImpl.java	(original)
+++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/DataTypesHelperEUMLImpl.java	2010-06-03 00:47:50-0700
@@ -16,6 +16,7 @@
 import org.argouml.model.DataTypesHelper;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.uml2.uml.MultiplicityElement;
+import org.eclipse.uml2.uml.OpaqueBehavior;
 import org.eclipse.uml2.uml.OpaqueExpression;
 import org.eclipse.uml2.uml.PseudostateKind;
 
@@ -99,7 +100,15 @@
     }
     
     public Object setBody(Object handle, String body) {
-        List<String> bodies = ((OpaqueExpression) handle).getBodies();
+        List<String> bodies = null;
+        if (handle instanceof OpaqueExpression) {
+            bodies = ((OpaqueExpression) handle).getBodies();
+        } else if (handle instanceof OpaqueBehavior) {
+            bodies = ((OpaqueBehavior) handle).getBodies();
+        } else {
+            throw new IllegalArgumentException(
+                    "handle must be instance of OpaqueExpression or OpaqueBehavior"); //$NON-NLS-1$
+        }
         // TODO: Support more than one body/language
         if (bodies.size() > 1) {
             throw new IllegalStateException("Only one body/lang supported"); //$NON-NLS-1$
@@ -110,7 +119,15 @@
     }
 
     public Object setLanguage(Object handle, String language) {
-        List<String> langs = ((OpaqueExpression) handle).getLanguages();
+        List<String> langs = null;
+        if (handle instanceof OpaqueExpression) {
+            langs = ((OpaqueExpression) handle).getLanguages();
+        } else if (handle instanceof OpaqueBehavior) {
+            langs = ((OpaqueBehavior) handle).getLanguages();
+        } else {
+            throw new IllegalArgumentException(
+                    "handle must be instance of OpaqueExpression or OpaqueBehavior"); //$NON-NLS-1$
+        }
         // TODO: Support more than one body/language
         if (langs.size() > 1) {
             throw new IllegalStateException("Only one body/lang supported"); //$NON-NLS-1$

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2616302

To unsubscribe from this discussion, e-mail: [[email protected]].
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.