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.