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]].

Reply via email to