Author: bobtarling
Date: 2011-05-11 11:26:45-0700
New Revision: 19409
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/FacadeEUMLImpl.java
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java
trunk/src/argouml-core-model/src/org/argouml/model/Facade.java
trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java
Log:
Support for ComponentRealization
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=19409&r1=19408&r2=19409
==============================================================================
--- 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 2011-05-11 11:26:45-0700
@@ -31,6 +31,7 @@
import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.Comment;
import org.eclipse.uml2.uml.Component;
+import org.eclipse.uml2.uml.ComponentRealization;
import org.eclipse.uml2.uml.Constraint;
import org.eclipse.uml2.uml.DataType;
import org.eclipse.uml2.uml.Dependency;
@@ -716,6 +717,38 @@
return (Dependency) run.getParams().get(0);
}
+ public Dependency buildComponentRealization(final Object clientObj,
+ final Object supplierObj) {
+ if (!(clientObj instanceof NamedElement)
+ || !(supplierObj instanceof NamedElement)) {
+ throw new IllegalArgumentException(
+ "The client and the supplier must be" //$NON-NLS-1$
+ + " instances of NamedElement."); //$NON-NLS-1$
+ }
+ if (((NamedElement) clientObj).getNearestPackage() == null) {
+ throw new NullPointerException(
+ "The containing package of the client must be non-null."); //$NON-NLS-1$
+ }
+ RunnableClass run = new RunnableClass() {
+ public void run() {
+ ComponentRealization dependency =
+ UMLFactory.eINSTANCE.createComponentRealization();
+ dependency.getClients().add((NamedElement) clientObj);
+ dependency.getSuppliers().add((NamedElement) supplierObj);
+ ((NamedElement) clientObj).getNearestPackage()
+ .getPackagedElements().add(dependency);
+ getParams().add(dependency);
+ }
+ };
+ ChangeCommand cmd = new ChangeCommand(
+ modelImpl, run, "Create the component realization # between the"
+ + " client # and the supplier #");
+ editingDomain.getCommandStack().execute(cmd);
+ cmd.setObjects(run.getParams().get(0), clientObj, supplierObj);
+
+ return (ComponentRealization) run.getParams().get(0);
+ }
+
public Object buildElementResidence(Object me, Object component) {
// TODO: Is this removed from UML2 ?
throw new NotImplementedException();
Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java (original)
+++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java 2011-05-11 11:26:45-0700
@@ -1932,6 +1932,10 @@
return false;
}
+ public boolean isAComponentRealization(Object handle) {
+ return handle instanceof ComponentRealization;
+ }
+
public boolean isACompositeState(Object handle) {
return (handle instanceof State && ((State) handle).isComposite());
}
Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java (original)
+++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java 2011-05-11 11:26:45-0700
@@ -1,6 +1,6 @@
// $Id$
/*******************************************************************************
- * Copyright (c) 2007,2010 Tom Morris and other contributors
+ * Copyright (c) 2007-2011 Tom Morris and other contributors
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -8,7 +8,8 @@
*
* Contributors:
* Tom Morris - initial implementation
- * thn
+ * Thomas Neustupny
+ * Bob Tarling
*****************************************************************************/
package org.argouml.model.euml;
@@ -39,6 +40,7 @@
import org.eclipse.uml2.uml.Collaboration;
import org.eclipse.uml2.uml.Comment;
import org.eclipse.uml2.uml.Component;
+import org.eclipse.uml2.uml.ComponentRealization;
import org.eclipse.uml2.uml.Constraint;
import org.eclipse.uml2.uml.ControlFlow;
import org.eclipse.uml2.uml.CreateObjectAction;
@@ -70,7 +72,6 @@
import org.eclipse.uml2.uml.Namespace;
import org.eclipse.uml2.uml.Node;
import org.eclipse.uml2.uml.ObjectFlow;
-import org.eclipse.uml2.uml.ObjectNode;
import org.eclipse.uml2.uml.Operation;
import org.eclipse.uml2.uml.OutputPin;
import org.eclipse.uml2.uml.PackageImport;
@@ -251,14 +252,18 @@
}
public Object getComponentInstance() {
- // TODO: Gone in UML 2.x
- // return place holder for now
- return InstanceSpecification.class;
+ throw new NotImplementedException(
+ "This is not a UML2 element"); //$NON-NLS-1$
+ }
+
+ public Object getComponentRealization() {
+ return ComponentRealization.class;
}
public Object getCompositeState() {
- // TODO: no separate CompositeState in UML 2.1 - tfm
return State.class;
+// throw new NotImplementedException(
+// "This is not a UML2 element"); //$NON-NLS-1$
}
public Object getConstraint() {
@@ -270,7 +275,8 @@
}
public Object getCreateAction() {
- throw new NotImplementedException("This is not a UML2 element"); //$NON-NLS-1$
+ throw new NotImplementedException(
+ "This is not a UML2 element"); //$NON-NLS-1$
}
public Object getCreateObjectAction() {
Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java (original)
+++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java 2011-05-11 11:26:45-0700
@@ -42,6 +42,7 @@
import org.eclipse.uml2.uml.AssociationClass;
import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.Component;
+import org.eclipse.uml2.uml.ComponentRealization;
import org.eclipse.uml2.uml.ControlFlow;
import org.eclipse.uml2.uml.ControlNode;
import org.eclipse.uml2.uml.DataType;
@@ -142,6 +143,7 @@
// Update for UML 2.x metamodel if not replaced by reflection
private static final Class[][] VALID_CONNECTIONS = {
{Generalization.class, Classifier.class, },
+ {ComponentRealization.class, Element.class, Component.class},
{Dependency.class, Element.class, },
// Although Usage & Permission are Dependencies, they need to
// be include separately because of the way lookup works
@@ -191,14 +193,11 @@
Object unidirectional, Object namespace)
throws IllegalModelElementConnectionException {
- IllegalModelElementConnectionException exception =
- new IllegalModelElementConnectionException(
- "Cannot make a " + elementType.getClass().getName() //$NON-NLS-1$
- + " between a " + fromElement.getClass().getName() //$NON-NLS-1$
- + " and a " + toElement.getClass().getName()); //$NON-NLS-1$
-
if (!isConnectionValid(elementType, fromElement, toElement, true)) {
- throw exception;
+ throw new IllegalModelElementConnectionException(
+ "Cannot make a " + elementType.getClass().getName() //$NON-NLS-1$
+ + " between a " + fromElement.getClass().getName() //$NON-NLS-1$
+ + " and a " + toElement.getClass().getName()); //$NON-NLS-1$
}
Object connection = null;
@@ -233,6 +232,9 @@
} else if (elementType == metaTypes.getUsage()) {
connection = modelImpl.getCoreFactory().buildUsage(
fromElement, toElement);
+ } else if (elementType == metaTypes.getComponentRealization()) {
+ connection = modelImpl.getCoreFactory().buildComponentRealization(
+ fromElement, toElement);
} else if (elementType == metaTypes.getDependency()) {
connection = modelImpl.getCoreFactory().buildDependency(
fromElement, toElement);
@@ -272,7 +274,10 @@
}
if (connection == null) {
- throw exception;
+ throw new IllegalModelElementConnectionException(
+ "Cannot make a " + elementType.getClass().getName() //$NON-NLS-1$
+ + " between a " + fromElement.getClass().getName() //$NON-NLS-1$
+ + " and a " + toElement.getClass().getName()); //$NON-NLS-1$
}
return connection;
Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java (original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java 2011-05-11 11:26:45-0700
@@ -419,6 +419,10 @@
return handle instanceof ComponentInstance;
}
+ public boolean isAComponentRealization(Object handle) {
+ return false;
+ }
+
public boolean isAConstraint(Object handle) {
return handle instanceof Constraint;
}
Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java (original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java 2011-05-11 11:26:45-0700
@@ -328,6 +328,10 @@
return ComponentInstance.class;
}
+ public Object getComponentRealization() {
+ throw new NotImplementedException("This is not a UML1.4 class");
+ }
+
public Object getCompositeState() {
return CompositeState.class;
}
Modified: trunk/src/argouml-core-model/src/org/argouml/model/Facade.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/Facade.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- trunk/src/argouml-core-model/src/org/argouml/model/Facade.java (original)
+++ trunk/src/argouml-core-model/src/org/argouml/model/Facade.java 2011-05-11 11:26:45-0700
@@ -473,6 +473,14 @@
boolean isAComponentInstance(Object handle);
/**
+ * Recognizer for ComponentRealization.
+ *
+ * @param handle candidate
+ * @return true if handle is a ComponentRealization
+ */
+ boolean isAComponentRealization(Object handle);
+
+ /**
* Recognizer for Constraint.
*
* @param handle candidate
Modified: trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java (original)
+++ trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java 2011-05-11 11:26:45-0700
@@ -215,6 +215,11 @@
Object getComponent();
/**
+ * @return Returns the Component.
+ */
+ Object getComponentRealization();
+
+ /**
* @return Returns the ComponentInstance.
*/
Object getComponentInstance();
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2734460
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.