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