diff options
author | Ansgar Radermacher | 2013-09-11 16:52:39 +0000 |
---|---|---|
committer | Ansgar Radermacher | 2013-09-11 16:52:39 +0000 |
commit | 379f22556e2d58fa2ef0eeca92d326ca7d7b4518 (patch) | |
tree | df299a0b0a251fde963fd4c68e6f1da6e3c4748c /extraplugins | |
parent | 7014ef8105b6c7d743494c15c89b49d7e3916749 (diff) | |
download | org.eclipse.papyrus-379f22556e2d58fa2ef0eeca92d326ca7d7b4518.tar.gz org.eclipse.papyrus-379f22556e2d58fa2ef0eeca92d326ca7d7b4518.tar.xz org.eclipse.papyrus-379f22556e2d58fa2ef0eeca92d326ca7d7b4518.zip |
Various fixes
Added $NON-NLS-1$ where applicable
Diffstat (limited to 'extraplugins')
34 files changed, 340 insertions, 252 deletions
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/build.acceleo b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/build.acceleo index 677f9370be5..6fe298832a7 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/build.acceleo +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/build.acceleo @@ -18,7 +18,7 @@ <acceleoCompiler sourceFolder="${target.folder}" outputFolder="${target.folder}" - dependencies="${target.folder}/../../org.eclipse.papyrus.fcm.profile;${target.folder}/../../org.eclipse.papyrus.infra.core;${target.folder}/../../org.eclipse.papyrus.infra.core.sasheditor;${target.folder}/../../org.eclipse.papyrus.uml.diagram.common;${target.folder}/../../org.eclipse.papyrus.uml.tools;${target.folder}/../../org.eclipse.papyrus.infra.emf;${target.folder}/../../org.eclipse.papyrus.infra.services.labelprovider;${target.folder}/../../org.eclipse.papyrus.qompass.designer.vsl;${target.folder}/../../org.eclipse.papyrus.uml.modelexplorer;${target.folder}/../../org.eclipse.papyrus.views.modelexplorer;${target.folder}/../../org.eclipse.papyrus.cpp.profile;${target.folder}/../../org.eclipse.papyrus.acceleo;" + dependencies="${target.folder}/../../org.eclipse.papyrus.fcm.profile;${target.folder}/../../org.eclipse.papyrus.infra.core;${target.folder}/../../org.eclipse.papyrus.infra.core.sasheditor;${target.folder}/../../org.eclipse.papyrus.uml.diagram.common;${target.folder}/../../org.eclipse.papyrus.uml.tools.utils;${target.folder}/../../org.eclipse.papyrus.infra.emf;${target.folder}/../../org.eclipse.papyrus.infra.services.labelprovider;${target.folder}/../../org.eclipse.papyrus.uml.tools;${target.folder}/../../org.eclipse.papyrus.infra.services.validation;${target.folder}/../../org.eclipse.papyrus.qompass.designer.vsl;${target.folder}/../../org.eclipse.papyrus.uml.modelexplorer;${target.folder}/../../org.eclipse.papyrus.cpp.profile;${target.folder}/../../org.eclipse.papyrus.acceleo;" binaryResource="false" packagesToRegister=""> </acceleoCompiler> diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ConnectorUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ConnectorUtils.java index 1651a2eb7f6..10c88411a9f 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ConnectorUtils.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ConnectorUtils.java @@ -169,15 +169,26 @@ public class ConnectorUtils { * @param composite A composite class * @param partA A part within the composite * @param partB Another part within the composite - * @return true, if a connector between the parts A and B could be - * found within the passed composite + * @return a connector, if it connects the parts A and B could within the passed composite, or null if no + * such connector exists */ - public static boolean existsConnector(Class composite, Property partA, Property partB) { + public static Connector getConnector(Class composite, Property partA, Property partB) { for (Connector connector : composite.getOwnedConnectors()) { if (ConnectorUtils.connectsPart(connector, partA) && ConnectorUtils.connectsPart(connector, partB)) { - return true; + return connector; } } - return false; + return null; + } + + /** + * @param composite A composite class + * @param partA A part within the composite + * @param partB Another part within the composite + * @return true, if a connector between the parts A and B could be + * found within the passed composite + */ + public static boolean existsConnector(Class composite, Property partA, Property partB) { + return getConnector(composite, partA, partB) != null; } } diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/PortUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/PortUtils.java index c488c01eda0..70d0440d3de 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/PortUtils.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/PortUtils.java @@ -24,6 +24,7 @@ import org.eclipse.uml2.uml.EncapsulatedClassifier; import org.eclipse.uml2.uml.Interface; import org.eclipse.uml2.uml.Port; import org.eclipse.uml2.uml.Property; +import org.eclipse.uml2.uml.util.UMLUtil; public class PortUtils { @@ -72,7 +73,7 @@ public class PortUtils { * @return */ public static org.eclipse.papyrus.FCM.Port getFCMport(Port port) { - return StUtils.getApplication(port, org.eclipse.papyrus.FCM.Port.class); + return UMLUtil.getStereotypeApplication(port, org.eclipse.papyrus.FCM.Port.class); } /** @@ -92,7 +93,7 @@ public class PortUtils { // TODO: for the moment, don't add aggregated ports to list. /* - * ComponentType compType = = StUtils.getApplication (ec, ComponentType.class); + * ComponentType compType = = UMLUtil.getStereotypeApplication (ec, ComponentType.class); * for (ContainerRule rule : compType.getContainerRule ()) * { * if ((rule.getExtensionKind () == ContainerExtKind.AGGREGATION) && @@ -155,7 +156,7 @@ public class PortUtils { org.eclipse.papyrus.FCM.Port fcmPort = getFCMport(port); org.eclipse.uml2.uml.Class cl; if (isTemplatePort(port)) { - TemplatePort tp = StUtils.getApplication(port, TemplatePort.class); + TemplatePort tp = UMLUtil.getStereotypeApplication(port, TemplatePort.class); if (tp.getBoundType() == null) { System.err.println("Problems, problems"); //$NON-NLS-1$ cl = fcmPort.getKind().getBase_Class(); diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/StUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/StUtils.java index db25df04ea0..de27a49d5f6 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/StUtils.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/StUtils.java @@ -145,26 +145,6 @@ public class StUtils { } /** - * Return the stereotype application by passing an element of the static profile - * - * @param element - * the UML model element - * @param clazz - * the class of an element of a static profile. Compatible sub-types will be returned as well - * @return the stereotype application (first compatible with passed clazz) or null - */ - @SuppressWarnings("unchecked") - public static <T extends EObject> T getApplication(Element element, java.lang.Class<T> clazz) { - for(EObject stereoApplication : element.getStereotypeApplications()) { - // check whether the stereotype is an instance of the passed parameter clazz - if(clazz.isInstance(stereoApplication)) { - return (T)stereoApplication; - } - } - return null; - } - - /** * Apply a stereotype. The stereotype is not applied, if already a sub-stereotype is applied. * If you want to apply the new stereotype also in this case, use applyExact instead. * @@ -220,7 +200,7 @@ public class StUtils { */ public static <T extends EObject> T applyApp(Element element, java.lang.Class<T> clazz) { if(apply(element, clazz) != null) { - return getApplication(element, clazz); + return UMLUtil.getStereotypeApplication(element, clazz); } return null; } @@ -446,7 +426,7 @@ public class StUtils { } public static org.eclipse.papyrus.FCM.Connector getConnector(Connector connector) { - return getApplication(connector, org.eclipse.papyrus.FCM.Connector.class); + return UMLUtil.getStereotypeApplication(connector, org.eclipse.papyrus.FCM.Connector.class); } public static boolean isConnector(Connector candidate) { diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Utils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Utils.java index 99e53bce0d8..09c9ffb5dec 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Utils.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Utils.java @@ -45,6 +45,7 @@ import org.eclipse.uml2.uml.Package; import org.eclipse.uml2.uml.Port; import org.eclipse.uml2.uml.Property; import org.eclipse.uml2.uml.Type; +import org.eclipse.uml2.uml.util.UMLUtil; public class Utils { @@ -443,7 +444,7 @@ public class Utils { * @return */ public static EList<ContainerRule> getRules(Class component) { - RuleApplication ruleApplication = StUtils.getApplication(component, RuleApplication.class); + RuleApplication ruleApplication = UMLUtil.getStereotypeApplication(component, RuleApplication.class); if(ruleApplication != null) { return ruleApplication.getContainerRule(); } @@ -486,7 +487,7 @@ public class Utils { } else if(el instanceof Class) { if(StUtils.isApplied(el, ContainerRule.class)) { - ContainerRule rule = StUtils.getApplication((Class)el, ContainerRule.class); + ContainerRule rule = UMLUtil.getStereotypeApplication((Class)el, ContainerRule.class); contRuleList.add(rule); } } diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/UMLTool.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/UMLTool.java index f4dcd120a9d..71611792eac 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/UMLTool.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/UMLTool.java @@ -27,25 +27,22 @@ import org.eclipse.papyrus.C_Cpp.Typedef; import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.uml2.uml.Class; import org.eclipse.uml2.uml.Classifier; -import org.eclipse.uml2.uml.DataType; import org.eclipse.uml2.uml.Dependency; import org.eclipse.uml2.uml.Element; -import org.eclipse.uml2.uml.Enumeration; import org.eclipse.uml2.uml.Interface; import org.eclipse.uml2.uml.InterfaceRealization; import org.eclipse.uml2.uml.Model; import org.eclipse.uml2.uml.NamedElement; import org.eclipse.uml2.uml.Namespace; import org.eclipse.uml2.uml.Operation; -import org.eclipse.uml2.uml.Package; import org.eclipse.uml2.uml.Parameter; import org.eclipse.uml2.uml.ParameterDirectionKind; import org.eclipse.uml2.uml.PrimitiveType; import org.eclipse.uml2.uml.Property; import org.eclipse.uml2.uml.Relationship; import org.eclipse.uml2.uml.Type; -import org.eclipse.uml2.uml.UMLFactory; import org.eclipse.uml2.uml.UMLPackage; +import org.eclipse.uml2.uml.util.UMLUtil; /** @@ -187,48 +184,6 @@ public class UMLTool { } /** - * This method returns all parameters of an operation in a flat way, - * i.e. for parameters typed by a data-type, multiple parameters are - * returned. - * TODO: support arbitrary nesting (recursive function) - */ - public EList<Parameter> flatParameters(Operation operation) { - EList<Parameter> parameters = new BasicEList<Parameter>(); - - for(Parameter parameter : operation.getOwnedParameters()) { - Type type = parameter.getType(); - if(parameter.getUpper() == -1) { - // multiplicity = "*" - Parameter containedParam = UMLFactory.eINSTANCE.createParameter(); - containedParam.setName(parameter.getName() + "_length"); - NamedElement basicTypes = type.getModel().getMember("CORBA"); - if(basicTypes instanceof Package) { - NamedElement ulong = ((Package)basicTypes).getMember("ULong"); - if(ulong instanceof Type) { - containedParam.setType((Type)ulong); - } - } - parameters.add(containedParam); - } - if((type instanceof PrimitiveType) || (type instanceof Enumeration)) { - // these two are sub-types of DataType and are therefore checked before - parameters.add(parameter); - } - if(type instanceof DataType) { - for(Property property : ((DataType)type).getAttributes()) { - Parameter containedParam = UMLFactory.eINSTANCE.createParameter(); - containedParam.setName(parameter.getName() + "_" + property.getName()); - containedParam.setType(property.getType()); - parameters.add(containedParam); - } - } else { - parameters.add(parameter); - } - } - return parameters; - } - - /** * This method returns all types that are referenced by a classifier. This includes * attribute types, types within operations as well as inherited types. * This is useful to generate the #includes @@ -290,7 +245,7 @@ public class UMLTool { */ public static String paramName(Parameter parameter) { if(parameter.getDirection().getValue() == ParameterDirectionKind.RETURN) { - return "retValue"; + return "retValue"; //$NON-NLS-1$ } else { return parameter.getName(); } @@ -409,7 +364,7 @@ public class UMLTool { */ public static String dereferenceTypedef(Type type) { if(type instanceof PrimitiveType) { - Typedef cppType = StUtils.getApplication(type, Typedef.class); + Typedef cppType = UMLUtil.getStereotypeApplication(type, Typedef.class); if(cppType != null) { return cppType.getDefinition(); } @@ -420,11 +375,13 @@ public class UMLTool { public static String encodeID(String uri) { // _ becomes escape character. original _ is __, '-' becomes _M - return uri.replace("_", "__").replace("-", "_M"); + return uri. + replace("_", "__"). //$NON-NLS-1$ //$NON-NLS-2$ + replace("-", "_M"); //$NON-NLS-1$ //$NON-NLS-2$ } public static String decodeID(String encodedURI) { - String result = ""; + String result = ""; //$NON-NLS-1$ for(int i = 0; i < encodedURI.length(); i++) { char c = encodedURI.charAt(i); if(c == '_') { diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/AllocUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/AllocUtils.java index cb28e000661..d70c8c7f8ee 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/AllocUtils.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/AllocUtils.java @@ -25,6 +25,7 @@ import org.eclipse.papyrus.MARTE.MARTE_Foundations.Alloc.Allocate; import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils; import org.eclipse.papyrus.qompass.designer.core.Log; import org.eclipse.papyrus.qompass.designer.core.StUtils; +import org.eclipse.papyrus.qompass.designer.core.Utils; import org.eclipse.uml2.uml.Abstraction; import org.eclipse.uml2.uml.Class; import org.eclipse.uml2.uml.Classifier; @@ -40,9 +41,14 @@ import org.eclipse.uml2.uml.Port; import org.eclipse.uml2.uml.Property; import org.eclipse.uml2.uml.Slot; import org.eclipse.uml2.uml.UMLPackage; +import org.eclipse.uml2.uml.util.UMLUtil; public class AllocUtils { + public static final String startPortName = "start"; //$NON-NLS-1$ + + public static final String startPortType = "IStart"; //$NON-NLS-1$ + /** * Retrieve a list of nodes to which the instance is allocated to *or* * to which one of the contained instances is allocated to (recursively) @@ -57,6 +63,30 @@ public class AllocUtils { } return nodeList; } + + /** + * Retrieve a list of nodes to which the instance is allocated to *or* + * to which one of the contained instances is allocated to (recursively) + * + * @param instanceAttribute an attribute within a composite that represents a component instance + * or a set thereof, if the composite itself is instantiated multiple times) + * @return a list of nodes + */ + public static Property getThreadAlloc(Property instanceAttribute) { + for (DirectedRelationship relation : instanceAttribute.getSourceDirectedRelationships()) { + if (StUtils.isApplied(relation, Allocate.class)) { + if (relation.getTargets().size() != 1) continue; + Element targetElem = relation.getTargets().get(0); + if (!(targetElem instanceof Property)) continue; + Property target = (Property) targetElem; + if (StUtils.isApplied(target.getType(), SwSchedulableResource.class)) { + return target; + } + } + } + return null; + } + /** * Retrieve a list of nodes to which the instance is allocated to *or* @@ -264,7 +294,7 @@ public class AllocUtils { for(Slot slot : slots) { Property containedProperty = (Property)slot.getDefiningFeature(); - Fragment fragment = StUtils.getApplication(containedProperty, Fragment.class); + Fragment fragment = UMLUtil.getStereotypeApplication(containedProperty, Fragment.class); if(fragment != null) { // TODO /* @@ -294,4 +324,22 @@ public class AllocUtils { } } } + + /** + * Return the start Port of a component, i.e. a port that corresponds to the "magic" port name + * start and is typed with the interface IStart + * + * @param component a component implementation + * @return The start port or null + */ + public static Port getStartPort(Class component) { + Element startPortElem = Utils.getNamedElementFromList(component.getAllAttributes(), startPortName); + if (startPortElem instanceof Port) { + Port startPort = (Port) startPortElem; + if(startPort.getType().getName().equals(startPortType)) { + return startPort; + } + } + return null; + } } diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/BootLoaderGen.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/BootLoaderGen.java index f62a99a1d76..be8f2ff9bce 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/BootLoaderGen.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/BootLoaderGen.java @@ -46,16 +46,26 @@ import org.eclipse.uml2.uml.Slot; import org.eclipse.uml2.uml.StructuralFeature; import org.eclipse.uml2.uml.UMLPackage; import org.eclipse.uml2.uml.ValueSpecification; +import org.eclipse.uml2.uml.util.UMLUtil; /** * The task of the boot-loader is twofold: create the instances of all * implementations (non-recursive). * - create Connections: what should be done? + * * TODO: factor out common code (TemplateInstantiation mechanism & createConnections below) - * make non-static class (representing the bootLoader) + * Split between C++ specific and C++ independent aspects */ public class BootLoaderGen { + final public static String initOpName = "init"; //$NON-NLS-1$ + + final public static String NL = "\n"; //$NON-NLS-1$ + + final public static String EOL = ";\n"; //$NON-NLS-1$ + + final public static String bootloaderName = "BootLoader"; //$NON-NLS-1$ + /** * Create a new boot-loader in a specific package * (which represents a node of the system). @@ -69,7 +79,7 @@ public class BootLoaderGen { // place in root (getModel()) to avoid the problem that the declaration of the bootLoader // instance is within a namespace (a static attribute on the model level would not solve the // problem as it must be accessed by function main). - m_bootLoader = copy.target.createOwnedClass("BootLoader", false); + m_bootLoader = copy.target.createOwnedClass(bootloaderName, false); outputSizeof = false; m_copy = copy; Class template = (Class)Utils.getQualifiedElement(copy.source, bootloaderQNAME); @@ -98,61 +108,34 @@ public class BootLoaderGen { */ Include cppInclude = StUtils.applyApp(m_bootLoader, Include.class); Object existingBody = cppInclude.getBody(); - String existingBodyStr = ""; + String existingBodyStr = ""; //$NON-NLS-1$ if(existingBody instanceof String) { - existingBodyStr = (String)existingBody + "\n"; + existingBodyStr = (String)existingBody + NL; } String bodyStr = - "#include <unistd.h> // for sleep\n" + - "\n" + - "int nodeIndex = " + nodeIndex + ";\n" + - "int numberOfNodes = " + numberOfNodes + ";\n"; + "#include <unistd.h> // for sleep\n" + //$NON-NLS-1$ + "\n" + //$NON-NLS-1$ + "int nodeIndex = " + nodeIndex + ";" + NL + //$NON-NLS-1$//$NON-NLS-2$ + "int numberOfNodes = " + numberOfNodes + ";" + NL; //$NON-NLS-1$ //$NON-NLS-2$ + if(outputSizeof) { bodyStr += - "#include <iostream>\n" + - "using namespace std;\n"; + "#include <iostream>" + NL + //$NON-NLS-1$ + "using namespace std;" + NL; //$NON-NLS-1$ } cppInclude.setBody(existingBodyStr + bodyStr); // bootLoader.createOwnedAttribute (mainInstance.getName (), composite); - // factor with template instantiations, actual is composite?? - /* - * Operation operation = template.getOwnedOperation ("createInstances", null, null); - * Operation newOperation = - * ModelTransformations.copyOperation (operation, bootLoader); - * // operation.getMethod (); - * // Method method = x; - * // AcceleoDriver.bind (method.toString (), mainInstance); - * Behavior behavior = operation.getMethods ().get (0); - * if (behavior instanceof OpaqueBehavior) { - * OpaqueBehavior newBehavior = (OpaqueBehavior) - * bootLoader.createOwnedBehavior ("b:" + operation.getName (), - * UMLPackage.eINSTANCE.getOpaqueBehavior ()); - * newOperation.getMethods ().add (newBehavior); - * OpaqueBehavior opaqueBehavior = (OpaqueBehavior) behavior; - * Iterator<String> bodies = opaqueBehavior.getBodies ().iterator (); - * Iterator<String> languages = opaqueBehavior.getLanguages ().iterator (); - * while (bodies.hasNext ()) - * { - * String body = bodies.next (); - * String language = languages.next (); - * String newBody = AcceleoDriver.bind (body, mainInstance); - * newBehavior.getBodies ().add (newBody); - * newBehavior.getLanguages().add (language); - * } - * } - */ - m_initCode = ""; - m_initCodeRun = ""; + m_initCode = ""; //$NON-NLS-1$ + m_initCodeRun = ""; //$NON-NLS-1$ m_activation = new HashMap<Class, EList<String>>(); - m_initCodeCConnections = ""; - m_initCodeCConfig = ""; + m_initCodeCConnections = ""; //$NON-NLS-1$ + m_initCodeCConfig = ""; //$NON-NLS-1$ if(outputSizeof) { - m_initCode += "cout << \"sizeof bootloader: \" << sizeof (bootloader) << endl;\n"; - // m_initCode += "cout << \"sizeof bootloader: \" << sizeof (bootloader) << endl;\n"; + m_initCode += "cout << \"sizeof bootloader: \" << sizeof (bootloader) << endl;" + EOL; //$NON-NLS-1$ } } @@ -184,7 +167,7 @@ public class BootLoaderGen { // - the variable name, if done by the bootloader path = UMLTool.varName(path); // use variable name instead. } - path += "." + pathElement.getDefiningFeature().getName(); + path += "." + pathElement.getDefiningFeature().getName(); //$NON-NLS-1$ previousInstantiatedByBL = CompImplTrafos.instantiateViaBootloader(pathElement.getDefiningFeature()); } } @@ -220,7 +203,7 @@ public class BootLoaderGen { String referenceVarName = getPath(referencePath, instance, false); // add code for initialization - m_initCode += accessName + " = &" + referenceVarName + ";\n"; + m_initCode += accessName + " = &" + referenceVarName + EOL; //$NON-NLS-1$ // is a reference which should not be called via activation & start // return now and skip code below return implemPart; @@ -229,7 +212,7 @@ public class BootLoaderGen { // let bootloader instantiate implemPart = m_bootLoader.createOwnedAttribute(/* "i_" + */varName, implementation); // add code for initialization - m_initCode += accessName + " = &" + varName + ";\n"; + m_initCode += accessName + " = &" + varName + EOL; //$NON-NLS-1$ implemPart.setIsComposite(true); } } @@ -239,7 +222,7 @@ public class BootLoaderGen { implemPart.setIsComposite(true); } if(outputSizeof) { - m_initCode += "cout << \"sizeof " + implementation.getName() + ": \" << sizeof (" + varName + ") << endl;\n"; + m_initCode += "cout << \"sizeof " + implementation.getName() + ": \" << sizeof (" + varName + ") << endl;" + EOL; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ } // if start thread => existing thread activation interceptor? Connection? @@ -250,17 +233,17 @@ public class BootLoaderGen { // implementation contains get_start operation => has start port // which is called automatically - String get_start = PrefixConstants.getP_Prefix + "start"; + String get_start = PrefixConstants.getP_Prefix + "start"; //$NON-NLS-1$ // Need to check whether implementation is an executor which is encapsulated in a container. In this case, only // the method of the container and not the method of the executor (which owns the same port) maybe called. // Currently, this check is based on the use of "executor" as reserved part name (validation checks that the // user does not use this name for application components) if(hasUnconnectedStartRoutine(m_copy, implementation, containerSlot)) { - if(m_initCodeRun.equals("")) { + if(m_initCodeRun.equals("")) { //$NON-NLS-1$ // call start's run method // TODO: Need path that uses the right dereference operator ("->" or ".") - m_initCodeRun = varName + "." + get_start + "()->run ();\n"; + m_initCodeRun = varName + "." + get_start + "()->run()" + EOL; //$NON-NLS-1$ //$NON-NLS-2$ } else { throw new TransformationException("There must be at most one blocking \"run\" operation per node. " + "refuse to add \"run\" call for component instance \"" + varName + "\". Existing invocations: " + m_initCodeRun); @@ -273,7 +256,7 @@ public class BootLoaderGen { if(varNameList == null) { varNameList = new BasicEList<String>(); } - varNameList.add(varName + "."); + varNameList.add(varName + "."); //$NON-NLS-1$ m_activation.put(implementation, varNameList); } @@ -287,7 +270,7 @@ public class BootLoaderGen { } if(bCreateConn) { - m_initCodeCConnections += varName + ".createConnections ();\n"; + m_initCodeCConnections += varName + ".createConnections();\n"; //$NON-NLS-1$ } return implemPart; } @@ -304,13 +287,9 @@ public class BootLoaderGen { */ public static boolean hasUnconnectedStartRoutine(Copy copy, Class implementation, Slot containerSlot) { if(implementation != null) { - Element startPortElem = Utils.getNamedElementFromList(implementation.getAllAttributes(), "start"); - if(startPortElem instanceof Port) { - Port startPort = (Port)startPortElem; - if(startPort.getType().getName().equals("IStart")) { - return !isConnected(copy, containerSlot, startPort); - } - + Port startPort = AllocUtils.getStartPort(implementation); + if (startPort != null) { + return !isConnected(copy, containerSlot, startPort); } } return false; @@ -328,11 +307,11 @@ public class BootLoaderGen { */ public static boolean hasUnconnectedLifeCycle(Copy copy, Class implementation, Slot containerSlot) { if(implementation != null) { - Element lcPortElem = Utils.getNamedElementFromList(implementation.getAllAttributes(), "lc"); + Element lcPortElem = Utils.getNamedElementFromList(implementation.getAllAttributes(), "lc"); //$NON-NLS-1$ if(lcPortElem instanceof Port) { Port lcPort = (Port)lcPortElem; // check, if port typed with ILifeCycle interface - if(lcPort.getType().getName().equals("ILifeCycle")) { + if(lcPort.getType().getName().equals("ILifeCycle")) { //$NON-NLS-1$ return !isConnected(copy, containerSlot, lcPort); } } @@ -376,15 +355,15 @@ public class BootLoaderGen { String varName = getPath(slotPath, instance, false); StructuralFeature sf = slot.getDefiningFeature(); if(sf == null) { - throw new TransformationException("A slot for instance " + varName + - " has no defining feature"); + throw new TransformationException("A slot for instance " + varName + //$NON-NLS-1$ + " has no defining feature"); //$NON-NLS-1$ } for(ValueSpecification value : slot.getValues()) { // only set value, if not null if(value.stringValue() != null) { - m_initCodeCConfig += varName + " = " + value.stringValue() + ";\n"; + m_initCodeCConfig += varName + " = " + value.stringValue() + EOL; //$NON-NLS-1$ } } } @@ -397,28 +376,28 @@ public class BootLoaderGen { public void addInit() { // TODO: use template - Operation init = m_bootLoader.createOwnedOperation("init", null, null); + Operation init = m_bootLoader.createOwnedOperation(initOpName, null, null); OpaqueBehavior initBehavior = (OpaqueBehavior) - m_bootLoader.createOwnedBehavior("init", UMLPackage.eINSTANCE.getOpaqueBehavior()); + m_bootLoader.createOwnedBehavior(initOpName, UMLPackage.eINSTANCE.getOpaqueBehavior()); init.getMethods().add(initBehavior); - initBehavior.getLanguages().add("C/C++"); - String code = m_initCode + "\n"; + initBehavior.getLanguages().add(CompImplTrafos.progLang); + String code = m_initCode + "\n"; //$NON-NLS-1$ if(m_initCodeCConfig.length() > 0) { - code += "\n// instance configuration\n" + - m_initCodeCConfig + "\n"; + code += "\n// instance configuration\n" + //$NON-NLS-1$ + m_initCodeCConfig + "\n"; //$NON-NLS-1$ } if(m_initCodeCConnections.length() > 0) { - code += "\n// create connections between instances\n" + - m_initCodeCConnections + "\n"; + code += "\n// create connections between instances\n" + //$NON-NLS-1$ + m_initCodeCConnections + "\n"; //$NON-NLS-1$ } Comparator<Class> comparator = new Comparator<Class>() { public int compare(Class clazz1, Class clazz2) { - InitPrecedence precedenceC1 = StUtils.getApplication(clazz1, InitPrecedence.class); - InitPrecedence precedenceC2 = StUtils.getApplication(clazz2, InitPrecedence.class); + InitPrecedence precedenceC1 = UMLUtil.getStereotypeApplication(clazz1, InitPrecedence.class); + InitPrecedence precedenceC2 = UMLUtil.getStereotypeApplication(clazz2, InitPrecedence.class); if(precedenceC1 != null) { // need to use named comparison instead of precedenceC1.getInvokeAfter ().contains (clazz2) // since class referenced by stereotype attribute still points to element in source model @@ -453,36 +432,34 @@ public class BootLoaderGen { } }; Class[] activationKeys = m_activation.keySet().toArray(new Class[0]); - String get_lc = PrefixConstants.getP_Prefix + "lc"; + String get_lc = PrefixConstants.getP_Prefix + "lc"; //$NON-NLS-1$ if(activationKeys.length > 0) { Arrays.sort(activationKeys, comparator); - code += "// activation code\n"; + code += "// activation code\n"; //$NON-NLS-1$ for(Class implementation : activationKeys) { EList<String> varNameList = m_activation.get(implementation); for(String varName : varNameList) { - code += varName + get_lc + " ()->activate ();\n"; + code += varName + get_lc + "()->activate();\n"; //$NON-NLS-1$ } } } - if(!m_initCodeRun.equals("")) { - code += "// initial user start\n" + - m_initCodeRun; + if(m_initCodeRun.length() > 0) { + code += "// initial user start\n" + m_initCodeRun; //$NON-NLS-1$ } else { - // no run code - assume that application should not return immediately - // enter an endless sleep - // TODO: issue user warning - code += "// sleep forever (since there is no user \"start\" call)\n" + - "for (;;) { sleep (1000); }\n"; + // this change broke client-server example! + code += "// sleep forever\n"; + code += "for (;;) { sleep(100); }\n"; + // throw new TransformationRTException("no component implements the initial start. Assure that one component inherits from the CStart component"); } if(activationKeys.length > 0) { - code += "// deactivation code (reverse order)\n"; + code += "// deactivation code (reverse order)\n"; //$NON-NLS-1$ // traverse in reverse order for(int i = activationKeys.length - 1; i >= 0; i--) { Class implementation = activationKeys[i]; EList<String> varNameList = m_activation.get(implementation); for(String varName : varNameList) { - code += varName + get_lc + " ()->deactivate ();\n"; + code += varName + get_lc + "()->deactivate();\n"; //$NON-NLS-1$ } } } @@ -496,7 +473,7 @@ public class BootLoaderGen { private Class m_bootLoader; - private final static String bootloaderQNAME = "core::composites::BootLoader"; + private final static String bootloaderQNAME = "core::composites::BootLoader"; //$NON-NLS-1$ /** * Initialization code, in particular assignment of part properties within composites diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepCreation.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepCreation.java index e1c679a33d2..0135427f016 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepCreation.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepCreation.java @@ -37,6 +37,7 @@ import org.eclipse.uml2.uml.StructuralFeature; import org.eclipse.uml2.uml.Type; import org.eclipse.uml2.uml.UMLPackage; import org.eclipse.uml2.uml.ValueSpecification; +import org.eclipse.uml2.uml.util.UMLUtil; public class DepCreation { @@ -217,7 +218,7 @@ public class DepCreation { is.getClassifiers().add(implementation); // add connector and container implementations - RuleApplication ruleApplication = StUtils.getApplication(implementation, RuleApplication.class); + RuleApplication ruleApplication = UMLUtil.getStereotypeApplication(implementation, RuleApplication.class); if((ruleApplication != null) && (createSlotsForConfigValues)) { for(ContainerRule rule : ruleApplication.getContainerRule()) { addConfigurationOfContainer(rule, is); @@ -225,7 +226,7 @@ public class DepCreation { } for(Connector connector : implementation.getOwnedConnectors()) { - org.eclipse.papyrus.FCM.Connector fcmConn = StUtils.getApplication(connector, org.eclipse.papyrus.FCM.Connector.class); + org.eclipse.papyrus.FCM.Connector fcmConn = UMLUtil.getStereotypeApplication(connector, org.eclipse.papyrus.FCM.Connector.class); if(fcmConn != null) { String partName = name + "." + connector.getName(); InteractionComponent connectorComp = fcmConn.getIc(); @@ -512,7 +513,7 @@ public class DepCreation { throw new TransformationRTException(is.getName() + " has a slot without defining feature"); //$NON-NLS-1$ } if(StUtils.isApplied(sf, CopyAttributeValue.class)) { - CopyAttributeValue cav = StUtils.getApplication(sf, + CopyAttributeValue cav = UMLUtil.getStereotypeApplication(sf, CopyAttributeValue.class); Property source = cav.getSource(); ValueSpecification vs = getNearestValue(isStack, source); diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepUtils.java index b2361ce8b99..cef60aca9c0 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepUtils.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepUtils.java @@ -37,6 +37,7 @@ import org.eclipse.uml2.uml.Slot; import org.eclipse.uml2.uml.StructuralFeature; import org.eclipse.uml2.uml.Type; import org.eclipse.uml2.uml.ValueSpecification; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Utilities around instances (within deployment plan) @@ -67,7 +68,7 @@ public class DepUtils { // now check properties if(nodes.size() > 1) { // indicates distribution - InteractionComponent connImpl = StUtils.getApplication(implemCandidate, InteractionComponent.class); + InteractionComponent connImpl = UMLUtil.getStereotypeApplication(implemCandidate, InteractionComponent.class); // if a connector implementation, it must support distribution (in case of multiple nodes) // TODO: criteria is not optimal, since a composite may be deployed on multiple nodes, // but a contained connector might still only connect local parts. @@ -79,14 +80,14 @@ public class DepUtils { } // must fit requirements of all nodes for(InstanceSpecification nodeInstance : nodes) { - Target target = StUtils.getApplication(nodeInstance, Target.class); + Target target = UMLUtil.getStereotypeApplication(nodeInstance, Target.class); if(target == null) { // no target information on instance => try to get this // information from the node referenced by the instance - target = StUtils.getApplication(DepUtils.getClassifier(nodeInstance), Target.class); + target = UMLUtil.getStereotypeApplication(DepUtils.getClassifier(nodeInstance), Target.class); } if(target != null) { - ImplementationProperties implProps = StUtils.getApplication(implemCandidate, ImplementationProperties.class); + ImplementationProperties implProps = UMLUtil.getStereotypeApplication(implemCandidate, ImplementationProperties.class); if(implProps != null) { if(!implProps.getArch().contains(target.getTargetArch())) { return false; @@ -145,7 +146,7 @@ public class DepUtils { for(Property groupAttribute : componentType.getAttributes()) { Type implClass = groupAttribute.getType(); if((implClass instanceof Class) && isImplEligible((Class)implClass, nodes)) { - InteractionComponent connImpl = StUtils.getApplication(implClass, InteractionComponent.class); + InteractionComponent connImpl = UMLUtil.getStereotypeApplication(implClass, InteractionComponent.class); if((connImpl != null) && connImpl.isForDistribution()) { // only add distributed connector, if distributed // don't put check into @@ -215,7 +216,7 @@ public class DepUtils { * the deployment plan */ public static InstanceSpecification getMainInstance(Package cdp) { - DeploymentPlan dp = StUtils.getApplication(cdp, DeploymentPlan.class); + DeploymentPlan dp = UMLUtil.getStereotypeApplication(cdp, DeploymentPlan.class); return dp.getMainInstance(); } @@ -229,7 +230,7 @@ public class DepUtils { */ public static void setMainInstance(Package cdp, InstanceSpecification mainInstance) { StUtils.apply(cdp, DeploymentPlan.class); - DeploymentPlan dp = StUtils.getApplication(cdp, DeploymentPlan.class); + DeploymentPlan dp = UMLUtil.getStereotypeApplication(cdp, DeploymentPlan.class); dp.setMainInstance(mainInstance); } @@ -466,7 +467,7 @@ public class DepUtils { * @return the programming language */ public static String getLanguageFromClassifier(Classifier cl) { - CodeGenOptions codeGenOpt = StUtils.getApplication(cl, CodeGenOptions.class); + CodeGenOptions codeGenOpt = UMLUtil.getStereotypeApplication(cl, CodeGenOptions.class); if ((codeGenOpt != null) && (codeGenOpt.getProgLanguage() != null)) { return codeGenOpt.getProgLanguage().getBase_Class().getName(); } diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/AllocationDialog.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/AllocationDialog.java index 20157f053ef..0047384008e 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/AllocationDialog.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/AllocationDialog.java @@ -43,6 +43,7 @@ import org.eclipse.uml2.uml.Classifier; import org.eclipse.uml2.uml.Element; import org.eclipse.uml2.uml.InstanceSpecification; import org.eclipse.uml2.uml.Package; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Select a connector type and implementation (group) @@ -79,7 +80,7 @@ public class AllocationDialog extends SelectionStatusDialog { public AllocationDialog(Shell parent, Package cdp) { super(parent); // m_cdp = cdp; - m_cdp = StUtils.getApplication(cdp, DeploymentPlan.class); + m_cdp = UMLUtil.getStereotypeApplication(cdp, DeploymentPlan.class); visitedPackages = new BasicEList<Package>(); nodeOrThreadList = new BasicEList<InstanceSpecification>(); nodeOrThreadList.add(null); // dummy entry for no allocation diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigureInstanceDialog.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigureInstanceDialog.java index 961ad29f437..0f3a67cbe7b 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigureInstanceDialog.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigureInstanceDialog.java @@ -29,7 +29,6 @@ import org.eclipse.jface.viewers.Viewer; import org.eclipse.papyrus.FCM.ContainerRule; import org.eclipse.papyrus.qompass.designer.core.ConfigUtils; import org.eclipse.papyrus.qompass.designer.core.Description; -import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.papyrus.qompass.designer.core.Utils; import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation; import org.eclipse.papyrus.qompass.designer.core.deployment.DepPlanUtils; @@ -65,6 +64,7 @@ import org.eclipse.uml2.uml.Property; import org.eclipse.uml2.uml.Slot; import org.eclipse.uml2.uml.Type; import org.eclipse.uml2.uml.ValueSpecification; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Select container rules, either from a list of globally defined rules or from @@ -140,7 +140,7 @@ public class ConfigureInstanceDialog extends SelectionStatusDialog { m_model = Utils.getUserModel(); m_instance = null; if(feature instanceof Connector) { - org.eclipse.papyrus.FCM.Connector fcmConn = StUtils.getApplication(feature, + org.eclipse.papyrus.FCM.Connector fcmConn = UMLUtil.getStereotypeApplication(feature, org.eclipse.papyrus.FCM.Connector.class); if((fcmConn != null) && (fcmConn.getIc() != null)) { m_component = fcmConn.getIc().getBase_Class(); diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigurePortDialog.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigurePortDialog.java index 2722d271423..4e75c9928f8 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigurePortDialog.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigurePortDialog.java @@ -57,6 +57,7 @@ import org.eclipse.uml2.uml.Package; import org.eclipse.uml2.uml.Port; import org.eclipse.uml2.uml.Type; import org.eclipse.uml2.uml.UMLPackage; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Select container rules, either from a list of globally defined rules or from @@ -313,7 +314,7 @@ public class ConfigurePortDialog extends SelectionStatusDialog { return; } setEnabled(true); - org.eclipse.papyrus.FCM.Port fcmPort = StUtils.getApplication(port, org.eclipse.papyrus.FCM.Port.class); + org.eclipse.papyrus.FCM.Port fcmPort = UMLUtil.getStereotypeApplication(port, org.eclipse.papyrus.FCM.Port.class); if(port.getType() != null) { fType.setText(port.getType().getQualifiedName()); } @@ -362,7 +363,7 @@ public class ConfigurePortDialog extends SelectionStatusDialog { getAvailableKinds((Package)el, portKindList, visitedPackages); } } else if(el instanceof Class) { - PortKind portKind = StUtils.getApplication((Class)el, PortKind.class); + PortKind portKind = UMLUtil.getStereotypeApplication((Class)el, PortKind.class); if(portKind != null) { portKindList.add(portKind); } diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConnectorSelectionDialog.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConnectorSelectionDialog.java index 81b2e585d46..49e815c94d6 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConnectorSelectionDialog.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConnectorSelectionDialog.java @@ -50,6 +50,7 @@ import org.eclipse.uml2.uml.Element; import org.eclipse.uml2.uml.Feature; import org.eclipse.uml2.uml.NamedElement; import org.eclipse.uml2.uml.Package; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Select a connector type and implementation (group) @@ -112,7 +113,7 @@ public class ConnectorSelectionDialog extends AbstractElementListSelectionDialog // createLabel(contents, lowerLabel); fLower = createFilteredList(fLowerGroup); fFilteredList = fUpper; - org.eclipse.papyrus.FCM.Connector fcmConnector = StUtils.getApplication(m_selectedConnector, org.eclipse.papyrus.FCM.Connector.class); + org.eclipse.papyrus.FCM.Connector fcmConnector = UMLUtil.getStereotypeApplication(m_selectedConnector, org.eclipse.papyrus.FCM.Connector.class); if(fcmConnector != null) { // getInitialElementSelections(); initialSelection = fcmConnector.getIc(); @@ -152,7 +153,7 @@ public class ConnectorSelectionDialog extends AbstractElementListSelectionDialog if(!componentCompBase.isAbstract()) { // get first superclass that is a component type Class componentTypeBase = Utils.componentType(componentCompBase); - componentComp = StUtils.getApplication(componentTypeBase, InteractionComponent.class); + componentComp = UMLUtil.getStereotypeApplication(componentTypeBase, InteractionComponent.class); } else { // fLower.setEnabled (false); // fLowerGroup.setEnabled(false); diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ContainerDialog.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ContainerDialog.java index c214e323d4c..91ffdd1c84a 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ContainerDialog.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ContainerDialog.java @@ -41,6 +41,7 @@ import org.eclipse.uml2.uml.Class; import org.eclipse.uml2.uml.Classifier; import org.eclipse.uml2.uml.Package; import org.eclipse.uml2.uml.UMLPackage; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Select container rules, either from a list of globally defined rules @@ -82,7 +83,7 @@ public class ContainerDialog extends SelectionStatusDialog { // visitedPackages = new BasicEList<Package> (); m_rulePropertiesOnly = StUtils.isApplied(componentOrRule, ContainerRule.class); if(m_rulePropertiesOnly) { - // m_currentRule = StUtils.getApplication(componentOrRule, ContainerRule.class); + // m_currentRule = UMLUtil.getStereotypeApplication(componentOrRule, ContainerRule.class); } else { m_component = componentOrRule; } @@ -243,7 +244,7 @@ public class ContainerDialog extends SelectionStatusDialog { Class ruleCl = (Class) m_component.createNestedClassifier(name, UMLPackage.eINSTANCE.getClass_()); StUtils.apply(ruleCl, ContainerRule.class); - return StUtils.getApplication(ruleCl, ContainerRule.class); + return UMLUtil.getStereotypeApplication(ruleCl, ContainerRule.class); } /** @@ -268,7 +269,7 @@ public class ContainerDialog extends SelectionStatusDialog { StUtils.apply(m_component, RuleApplication.class); } RuleApplication containerConfig = - StUtils.getApplication(m_component, RuleApplication.class); + UMLUtil.getStereotypeApplication(m_component, RuleApplication.class); containerConfig.getContainerRule().add(rule); } @@ -279,7 +280,7 @@ public class ContainerDialog extends SelectionStatusDialog { */ void unapplyRule(ContainerRule rule) { RuleApplication containerConfig = - StUtils.getApplication(m_component, RuleApplication.class); + UMLUtil.getStereotypeApplication(m_component, RuleApplication.class); int index = containerConfig.getContainerRule().indexOf(rule); if((index >= 0) && (index < containerConfig.getContainerRule().size())) { containerConfig.getContainerRule().remove(index); @@ -294,7 +295,7 @@ public class ContainerDialog extends SelectionStatusDialog { */ boolean isRuleApplied(ContainerRule rule) { RuleApplication containerConfig = - StUtils.getApplication(m_component, RuleApplication.class); + UMLUtil.getStereotypeApplication(m_component, RuleApplication.class); if(containerConfig != null) { return containerConfig.getContainerRule().contains(rule); } diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/InstanceConfigurator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/InstanceConfigurator.java index d51dbb39714..2f111e1617f 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/InstanceConfigurator.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/InstanceConfigurator.java @@ -15,15 +15,15 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtensionRegistry; import org.eclipse.core.runtime.Platform; -import org.eclipse.uml2.uml.Classifier; -import org.eclipse.uml2.uml.InstanceSpecification; -import org.eclipse.uml2.uml.Property; import org.eclipse.papyrus.FCM.ContainerRule; import org.eclipse.papyrus.FCM.UseInstanceConfigurator; import org.eclipse.papyrus.qompass.designer.core.Activator; -import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils; import org.eclipse.papyrus.qompass.designer.core.transformations.ContainerContext; +import org.eclipse.uml2.uml.Classifier; +import org.eclipse.uml2.uml.InstanceSpecification; +import org.eclipse.uml2.uml.Property; +import org.eclipse.uml2.uml.util.UMLUtil; /** @@ -48,7 +48,7 @@ public class InstanceConfigurator { */ public static void configureInstance(InstanceSpecification instance, Property componentPart, ContainerContext containerContext) { Classifier component = DepUtils.getClassifier(instance); - UseInstanceConfigurator useInstanceConfigurator = StUtils.getApplication(component, UseInstanceConfigurator.class); + UseInstanceConfigurator useInstanceConfigurator = UMLUtil.getStereotypeApplication(component, UseInstanceConfigurator.class); configureInstance(useInstanceConfigurator, instance, componentPart, containerContext); } @@ -66,7 +66,7 @@ public class InstanceConfigurator { * a port within the context of container */ public static void configureInstance(ContainerRule rule, InstanceSpecification instance, Property componentPart, ContainerContext containerContext) { - UseInstanceConfigurator useInstanceConfigurator = StUtils.getApplication(rule.getBase_Class(), UseInstanceConfigurator.class); + UseInstanceConfigurator useInstanceConfigurator = UMLUtil.getStereotypeApplication(rule.getBase_Class(), UseInstanceConfigurator.class); configureInstance(useInstanceConfigurator, instance, componentPart, containerContext); } diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenCollaborationUseHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenCollaborationUseHandler.java index bd6500b3098..b1f87b28be1 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenCollaborationUseHandler.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenCollaborationUseHandler.java @@ -1,10 +1,10 @@ package org.eclipse.papyrus.qompass.designer.core.handlers; import org.eclipse.jface.action.IAction; -import org.eclipse.ui.IViewPart; import org.eclipse.papyrus.FCM.Connector; import org.eclipse.papyrus.FCM.util.FCMUtil; -import org.eclipse.papyrus.qompass.designer.core.StUtils; +import org.eclipse.ui.IViewPart; +import org.eclipse.uml2.uml.util.UMLUtil; /** * currently unused @@ -30,7 +30,7 @@ public class GenCollaborationUseHandler extends CmdHandler { updateSelectedEObject(); org.eclipse.uml2.uml.Connector selectedConnector = (org.eclipse.uml2.uml.Connector)getSelectedEObject(); - Connector fcmConn = StUtils.getApplication(selectedConnector, Connector.class); + Connector fcmConn = UMLUtil.getStereotypeApplication(selectedConnector, Connector.class); FCMUtil.generateCollaborationUse(fcmConn); } } diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenConnectionPatternHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenConnectionPatternHandler.java index 816f7cae4ab..8919eec8eb8 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenConnectionPatternHandler.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenConnectionPatternHandler.java @@ -5,9 +5,9 @@ import org.eclipse.jface.action.IAction; import org.eclipse.papyrus.FCM.InteractionComponent; import org.eclipse.papyrus.FCM.util.FCMUtil; import org.eclipse.papyrus.qompass.designer.core.Log; -import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.ui.IViewPart; import org.eclipse.uml2.uml.Class; +import org.eclipse.uml2.uml.util.UMLUtil; public class GenConnectionPatternHandler extends CmdHandler { @@ -28,7 +28,7 @@ public class GenConnectionPatternHandler extends CmdHandler { //only one model is selected Class selectedClass = (Class)getSelectedEObject(); Log.log(Status.INFO, Log.DIALOGS, "GenConnectionPattern.run: " + selectedClass.getName()); - InteractionComponent connType = StUtils.getApplication(selectedClass, InteractionComponent.class); + InteractionComponent connType = UMLUtil.getStereotypeApplication(selectedClass, InteractionComponent.class); FCMUtil.generateDefaultConnectionPattern(connType); } } diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SelectConnectorHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SelectConnectorHandler.java index 8d21bc92f0b..aab85e600d0 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SelectConnectorHandler.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SelectConnectorHandler.java @@ -23,6 +23,7 @@ import org.eclipse.uml2.uml.Connector; import org.eclipse.uml2.uml.Feature; import org.eclipse.uml2.uml.Model; import org.eclipse.uml2.uml.Property; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Implementation class for ClassAction action @@ -74,7 +75,7 @@ public class SelectConnectorHandler extends CmdHandler { public void run() { org.eclipse.papyrus.FCM.Connector fcmSelectedConnector = StUtils.applyApp(selectedConnector, org.eclipse.papyrus.FCM.Connector.class); - InteractionComponent newConnType = StUtils.getApplication((Class)result[0], InteractionComponent.class); + InteractionComponent newConnType = UMLUtil.getStereotypeApplication((Class)result[0], InteractionComponent.class); fcmSelectedConnector.setIc(newConnType); } }); diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/DepPlanListener.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/DepPlanListener.java index 14da0452c24..b178405d924 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/DepPlanListener.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/DepPlanListener.java @@ -17,9 +17,9 @@ package org.eclipse.papyrus.qompass.designer.core.listeners; import org.eclipse.emf.common.notify.Notification; import org.eclipse.papyrus.FCM.DeploymentPlan; import org.eclipse.papyrus.infra.core.listenerservice.IPapyrusListener; -import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.uml2.uml.InstanceSpecification; import org.eclipse.uml2.uml.Package; +import org.eclipse.uml2.uml.util.UMLUtil; /** * A model listener that updates a deployment plan, e.g. add, remove or @@ -44,7 +44,7 @@ public class DepPlanListener implements IPapyrusListener { if(evtType == Notification.SET) { // Object oldValue = notification.getOldValue (); if(notifier instanceof Package) { - DeploymentPlan de = StUtils.getApplication((Package) notifier, DeploymentPlan.class); + DeploymentPlan de = UMLUtil.getStereotypeApplication((Package) notifier, DeploymentPlan.class); Object mainInstance = (de != null) ? de.getMainInstance() : null; if(mainInstance instanceof InstanceSpecification) { // TODO user wants to declare the system component, the instance specification should be created diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompImplSync.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompImplSync.java index fdd1698fe0b..014ed211b30 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompImplSync.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompImplSync.java @@ -27,7 +27,6 @@ import org.eclipse.papyrus.qompass.designer.core.Log; import org.eclipse.papyrus.qompass.designer.core.OperationUtils; import org.eclipse.papyrus.qompass.designer.core.PortInfo; import org.eclipse.papyrus.qompass.designer.core.PortUtils; -import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.papyrus.qompass.designer.core.Utils; import org.eclipse.papyrus.qompass.designer.core.transformations.PrefixConstants; import org.eclipse.papyrus.qompass.designer.core.transformations.UpdateUtils; @@ -43,6 +42,7 @@ import org.eclipse.uml2.uml.InterfaceRealization; import org.eclipse.uml2.uml.Operation; import org.eclipse.uml2.uml.Port; import org.eclipse.uml2.uml.UMLPackage; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Synchronize component implementation classes. @@ -157,7 +157,7 @@ public class CompImplSync { */ public static void updatePorts(Class implementation) { for (Port port : PortUtils.getAllPorts(implementation)) { - org.eclipse.papyrus.FCM.Port fcmPort = StUtils.getApplication(port, org.eclipse.papyrus.FCM.Port.class); + org.eclipse.papyrus.FCM.Port fcmPort = UMLUtil.getStereotypeApplication(port, org.eclipse.papyrus.FCM.Port.class); if (fcmPort != null) { fcmPort.update(); } @@ -391,7 +391,7 @@ public class CompImplSync { while(ownedOpsIter.hasNext()) { Operation ownedOp = ownedOpsIter.next(); - DerivedElement de = StUtils.getApplication(ownedOp, DerivedElement.class); + DerivedElement de = UMLUtil.getStereotypeApplication(ownedOp, DerivedElement.class); if(de != null) { if(de.getSource() instanceof Operation) { diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/DepPlanSync.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/DepPlanSync.java index 6d91d5e748a..694b393579d 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/DepPlanSync.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/DepPlanSync.java @@ -19,7 +19,6 @@ import java.util.Iterator; import org.eclipse.core.runtime.Status; import org.eclipse.papyrus.FCM.DeploymentPlan; import org.eclipse.papyrus.qompass.designer.core.Log; -import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.papyrus.qompass.designer.core.Utils; import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation; import org.eclipse.papyrus.qompass.designer.core.deployment.DepPlanUtils; @@ -36,6 +35,7 @@ import org.eclipse.uml2.uml.Property; import org.eclipse.uml2.uml.Slot; import org.eclipse.uml2.uml.Type; import org.eclipse.uml2.uml.ValueSpecification; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Currently unused synchronization for deployment plans. @@ -71,7 +71,7 @@ public class DepPlanSync { public static void syncDepPlan(Package depPlan) { removeUnusedSlots(depPlan); // EList<InstanceSpecification> list = new BasicEList<InstanceSpecification>(); - DeploymentPlan cdp = StUtils.getApplication(depPlan, DeploymentPlan.class); + DeploymentPlan cdp = UMLUtil.getStereotypeApplication(depPlan, DeploymentPlan.class); if(cdp == null) { return; } diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppInclude.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppInclude.java index 0accb34a182..9c276782ae7 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppInclude.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppInclude.java @@ -16,7 +16,6 @@ package org.eclipse.papyrus.qompass.designer.core.templates; import org.eclipse.emf.ecore.EObject; import org.eclipse.papyrus.C_Cpp.Include; -import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.papyrus.qompass.designer.core.acceleo.AcceleoDriverWrapper; import org.eclipse.papyrus.qompass.designer.core.listeners.CopyListener; import org.eclipse.papyrus.qompass.designer.core.transformations.Copy; @@ -24,6 +23,7 @@ import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationC import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException; import org.eclipse.uml2.uml.Classifier; import org.eclipse.uml2.uml.TemplateBinding; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Instantiate the text within a C++Include tag. @@ -52,7 +52,7 @@ public class InstantiateCppInclude implements CopyListener { try { Classifier actual = TemplateInstantiationListener.getFirstActualFromBinding(binding, targetCl); if(actual != null) { - Include cppInclude = StUtils.getApplication(targetCl, Include.class); + Include cppInclude = UMLUtil.getStereotypeApplication(targetCl, Include.class); TransformationContext.classifier = targetCl; String newBody = AcceleoDriverWrapper.evaluate(cppInclude.getBody(), actual, null); String newPreBody = AcceleoDriverWrapper.evaluate(cppInclude.getPreBody(), actual, null); diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppIncludeWOB.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppIncludeWOB.java index d30ab158ab3..9841e7d8555 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppIncludeWOB.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppIncludeWOB.java @@ -18,13 +18,13 @@ import org.eclipse.emf.ecore.EObject; import org.eclipse.papyrus.C_Cpp.Include; import org.eclipse.papyrus.FCM.Template; import org.eclipse.papyrus.FCM.TemplateKind; -import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.papyrus.qompass.designer.core.acceleo.AcceleoDriverWrapper; import org.eclipse.papyrus.qompass.designer.core.listeners.CopyListener; import org.eclipse.papyrus.qompass.designer.core.transformations.Copy; import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext; import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException; import org.eclipse.uml2.uml.Classifier; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Instantiate the text within a C++Include tag. @@ -48,11 +48,11 @@ public class InstantiateCppIncludeWOB implements CopyListener { if(targetEObj instanceof Classifier) { // TODO: C++ specific code! Classifier targetCl = (Classifier)targetEObj; - Template template = StUtils.getApplication(targetCl, Template.class); + Template template = UMLUtil.getStereotypeApplication(targetCl, Template.class); // apply, in case of pass-classifier if((template != null) && (template.getKind() == TemplateKind.PASS_CLASSIFIER)) { try { - Include cppInclude = StUtils.getApplication(targetCl, Include.class); + Include cppInclude = UMLUtil.getStereotypeApplication(targetCl, Include.class); TransformationContext.classifier = targetCl; String newBody = AcceleoDriverWrapper.evaluate(cppInclude.getBody(), targetCl, null); String newPreBody = AcceleoDriverWrapper.evaluate(cppInclude.getPreBody(), targetCl, null); diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiation.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiation.java index 3c5315029be..4c0ff062dc4 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiation.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiation.java @@ -17,7 +17,6 @@ package org.eclipse.papyrus.qompass.designer.core.templates; import org.eclipse.emf.common.util.EList; import org.eclipse.papyrus.FCM.Template; import org.eclipse.papyrus.FCM.TemplateKind; -import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.papyrus.qompass.designer.core.transformations.Copy; import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext; import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException; @@ -35,6 +34,7 @@ import org.eclipse.uml2.uml.TemplateParameter; import org.eclipse.uml2.uml.TemplateParameterSubstitution; import org.eclipse.uml2.uml.TemplateSignature; import org.eclipse.uml2.uml.TemplateableElement; +import org.eclipse.uml2.uml.util.UMLUtil; /** * This class encapsulated functions around template instantiation. @@ -194,7 +194,7 @@ public class TemplateInstantiation { Package boundPackage = (Package)binding.getBoundElement(); EList<Namespace> path = TemplateUtils.relativePathWithMerge(namedElement, packageTemplate); - Template template = StUtils.getApplication(namedElement, Template.class); + Template template = UMLUtil.getStereotypeApplication(namedElement, Template.class); TemplateKind templateKind = (template != null) ? templateKind = template.getKind() : TemplateKind.PASS_FORMAL; diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiationListener.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiationListener.java index 25201daf0dc..36bd05bd8e7 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiationListener.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiationListener.java @@ -23,7 +23,6 @@ import org.eclipse.papyrus.FCM.ActualChoice; import org.eclipse.papyrus.FCM.Template; import org.eclipse.papyrus.FCM.TemplateKind; import org.eclipse.papyrus.qompass.designer.core.PortUtils; -import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.papyrus.qompass.designer.core.acceleo.AcceleoDriverWrapper; import org.eclipse.papyrus.qompass.designer.core.listeners.CopyListener; import org.eclipse.papyrus.qompass.designer.core.transformations.Copy; @@ -44,6 +43,7 @@ import org.eclipse.uml2.uml.Port; import org.eclipse.uml2.uml.TemplateBinding; import org.eclipse.uml2.uml.TemplateParameterSubstitution; import org.eclipse.uml2.uml.Type; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Template instantiation is implemented by means of an CopyListener that @@ -95,14 +95,14 @@ public class TemplateInstantiationListener implements CopyListener { // in case of a behavior, examine stereotype on associated operation BehavioralFeature bf = behavior.getSpecification(); if(bf != null) { - Template template = StUtils.getApplication(bf, Template.class); + Template template = UMLUtil.getStereotypeApplication(bf, Template.class); if(template != null) { return null; } } } else { - Template template = StUtils.getApplication((Element)sourceEObj, Template.class); + Template template = UMLUtil.getStereotypeApplication((Element)sourceEObj, Template.class); if((template != null)) { // && (!treatTemplateElement.containsKey(sourceEObj))) { // treatTemplateElement.put(sourceEObj, true); if(sourceEObj instanceof Operation) { @@ -247,7 +247,7 @@ public class TemplateInstantiationListener implements CopyListener { * @throws TransformationException */ public static EList<Classifier> getActuals(TemplateBinding binding, Element element) throws TransformationException { - Template template = StUtils.getApplication(element, Template.class); + Template template = UMLUtil.getStereotypeApplication(element, Template.class); if(template != null) { EList<Classifier> templateParams = template.getTemplateParams(); EList<Classifier> actuals = new BasicEList<Classifier>(); @@ -290,7 +290,7 @@ public class TemplateInstantiationListener implements CopyListener { */ public void bindOperation(Operation operation, Classifier actual) throws TransformationException { // perform binding in case of C++ initializer - ConstInit cppConstInit = StUtils.getApplication(operation, ConstInit.class); + ConstInit cppConstInit = UMLUtil.getStereotypeApplication(operation, ConstInit.class); if(cppConstInit != null) { // TODO: specific to C++ String init = cppConstInit.getInitialisation(); diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/AllocTransfo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/AllocTransfo.java new file mode 100644 index 00000000000..e68cb8e2e54 --- /dev/null +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/AllocTransfo.java @@ -0,0 +1,91 @@ +package org.eclipse.papyrus.qompass.designer.core.transformations; + +import org.eclipse.emf.common.util.BasicEList; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EStructuralFeature.Setting; +import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils; +import org.eclipse.papyrus.qompass.designer.core.Utils; +import org.eclipse.papyrus.qompass.designer.core.deployment.AllocUtils; +import org.eclipse.uml2.uml.Class; +import org.eclipse.uml2.uml.Connector; +import org.eclipse.uml2.uml.ConnectorEnd; +import org.eclipse.uml2.uml.Element; +import org.eclipse.uml2.uml.NamedElement; +import org.eclipse.uml2.uml.Port; +import org.eclipse.uml2.uml.Property; +import org.eclipse.uml2.uml.Slot; +import org.eclipse.uml2.uml.Type; +import org.eclipse.uml2.uml.util.UMLUtil; + +/** + * Transform the allocations towards an execution resource (thread) into a suitable connection + * Current restriction: a thread needs to be defined the same composite as the component which + * is allocated to this thread. + */ +public class AllocTransfo { + public static final String MAIN = "main"; //$NON-NLS-1$ + + /** + * + * @param copy The copy class. Currently unused + * @param composite A composite. We analyze the allocations of the properties within this + * Composite. The composite must be an element of the target model that can be modified. + */ + public void transformAllocs(Copy copy, Class composite) { + EList<Property> attributeList = new BasicEList<Property>(); + attributeList.addAll(composite.getOwnedAttributes()); // use a copy, since the loop eventually destroys an element of the list. + for (Property attribute : attributeList) { + Type type = attribute.getType(); + if (!(type instanceof Class)) { + continue; + } + Property thread = AllocUtils.getThreadAlloc(attribute); + if (thread != null) { + // this attribute represents a thread. + if (thread.getName().equals(MAIN)) { + // TODO: currently, no support for setting up the priority of the main thread. + // we need to get a cleaner solution for the main thread. + // destroy eventual connector and associated thread => thread as component with unconnected start thread + Connector conn = ConnectorUtils.getConnector(composite, attribute, thread); + // Connector targetConn = copy.getCopy(conn); + // Property targetThread = copy.getCopy(thread); + if (conn != null) { + conn.destroy(); + } + // destroy not only the thread, but also the slot within the composites instance specification + // (that references the thread via its defining feature). + for (Setting setting : UMLUtil.getInverseReferences(thread)) { + if (setting.getEObject() instanceof Slot) { + ((Element) setting.getEObject()).destroy(); + } + } + thread.destroy(); + } + // check, if there is already a connector between the attribute and the thread + else if (!ConnectorUtils.existsConnector(composite, attribute, thread)) { + // no connector => create; + Class component = (Class) type; + Connector c = composite.createOwnedConnector("alloc to " + thread.getName()); //$NON-NLS-1$ + ConnectorEnd ce1 = c.createEnd(); + ce1.setPartWithPort(attribute); + // TODO: should really use start port instead... + // ce1.setRole(AllocUtils.getStartPort(component)); + NamedElement ne = Utils.getNamedElementFromList(component.getAllAttributes(), "lc"); //$NON-NLS-1$ + if (ne instanceof Property) { + ce1.setRole((Property) ne); + } + ConnectorEnd ce2 = c.createEnd(); + ce2.setPartWithPort(thread); + Type threadT = thread.getType(); + if (threadT instanceof Class) { + // TODO: nicer way to obtain port ... + Property rLC = ((Class) threadT).getAttribute("rLC", null); //$NON-NLS-1$ + if (rLC instanceof Port) { + ce2.setRole(rLC); + } + } + } + } + } + } +} diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompImplTrafos.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompImplTrafos.java index 2eae92c7759..1836942c2d4 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompImplTrafos.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompImplTrafos.java @@ -61,13 +61,15 @@ import org.eclipse.uml2.uml.UMLPackage; * the call to getProvided/getRequired interface might trigger its creation resulting in * the corruption of list iterators (ConcurrentAccess exception) * - * @author ansgar - * */ public class CompImplTrafos { public static Class bootloader; + public static final String retParamName = "ret"; //$NON-NLS-1$ + + public static final String progLang = "C/C++"; //$NON-NLS-1$ + public static void addPortOperations(Copy copy, Package pkg) throws TransformationException { EList<PackageableElement> peList = new BasicEList<PackageableElement>(); peList.addAll(pkg.getPackagedElements()); @@ -103,13 +105,17 @@ public class CompImplTrafos { // port provides an interface, add "get_p" operation & implementation String opName = PrefixConstants.getP_Prefix + portInfo.getName(); - if (implementation.getOwnedOperation(opName, null, null) != null) { + Operation op = implementation.getOwnedOperation(opName, null, null); + if (op != null) { // operation already exists. Assume that user wants to override standard delegation + if (op.getType() != providedIntf) { + op.createOwnedParameter(retParamName, providedIntf); + } continue; } - Operation op = implementation.createOwnedOperation(opName, null, null, providedIntf); + op = implementation.createOwnedOperation(opName, null, null, providedIntf); Parameter retParam = op.getOwnedParameters().get(0); - retParam.setName("ret"); + retParam.setName(retParamName); StUtils.apply(retParam, Ptr.class); OpaqueBehavior behavior = (OpaqueBehavior) @@ -132,8 +138,11 @@ public class CompImplTrafos { // due to partially copied composites). // Check is based on names, since the connector points to elements within another // model (copyClassifier does not make a proper connector copy) - body += part.getName() + refOp(part) + opName + "();"; //$NON-NLS-1$ - } else { + // body += part.getName() + refOp(part) + opName + "();"; //$NON-NLS-1$ + // TODO: this will NOT work for extended ports! + body += part.getName() + refOp(part) + PrefixConstants.getP_Prefix + role.getName() + "();"; //$NON-NLS-1$ + } + else { // role is not a port: connector connects directly to a structural feature // without passing via a port // TODO: check whether structural feature exists @@ -158,7 +167,7 @@ public class CompImplTrafos { } } // todo: defined by template - behavior.getLanguages().add("C/C++"); //$NON-NLS-1$ + behavior.getLanguages().add(progLang); behavior.getBodies().add(body); } } @@ -263,7 +272,7 @@ public class CompImplTrafos { body = attributeName + (multiPort ? "[index]" : "") + " = ref;"; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ } // TODO: defined by template - behavior.getLanguages().add("C/C++"); //$NON-NLS-1$ + behavior.getLanguages().add(progLang); behavior.getBodies().add(body); // ------------------------- @@ -279,7 +288,7 @@ public class CompImplTrafos { if(op == null) { op = implementation.createOwnedOperation(opName, null, null, requiredIntf); Parameter retParam = op.getOwnedParameters().get(0); - retParam.setName("ret"); //$NON-NLS-1$ + retParam.setName(retParamName); StUtils.apply(retParam, Ptr.class); } behavior = (OpaqueBehavior) @@ -290,7 +299,7 @@ public class CompImplTrafos { // no delegation String name = PrefixConstants.attributePrefix + portInfo.getName(); body = "return " + name + ";"; //$NON-NLS-1$ //$NON-NLS-2$ - behavior.getLanguages().add("C/C++"); //$NON-NLS-1$ + behavior.getLanguages().add(progLang); //$NON-NLS-1$ behavior.getBodies().add(body); } } @@ -337,12 +346,12 @@ public class CompImplTrafos { } // TODO: use template, as in bootloader if(createConnBody.length() > 0) { - Operation operation = implementation.createOwnedOperation("createConnections", null, null); + Operation operation = implementation.createOwnedOperation("createConnections", null, null); //$NON-NLS-1$ OpaqueBehavior behavior = (OpaqueBehavior) - implementation.createOwnedBehavior("b:" + operation.getName(), + implementation.createOwnedBehavior("b:" + operation.getName(), //$NON-NLS-1$ UMLPackage.eINSTANCE.getOpaqueBehavior()); - behavior.getLanguages().add("C/C++"); + behavior.getLanguages().add(progLang); behavior.getBodies().add(createConnBody); behavior.setSpecification(operation); } @@ -528,6 +537,6 @@ public class CompImplTrafos { */ protected static String refOp(Property part) { return instantiateViaBootloader(part) ? - "->" : "."; + "->" : "."; //$NON-NLS-1$ //$NON-NLS-2$ } } diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ConnectorReification.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ConnectorReification.java index 055dac84363..aa01548d8fa 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ConnectorReification.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ConnectorReification.java @@ -29,7 +29,6 @@ import org.eclipse.papyrus.FCM.InteractionComponent; import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils; import org.eclipse.papyrus.qompass.designer.core.Log; import org.eclipse.papyrus.qompass.designer.core.PortUtils; -import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.papyrus.qompass.designer.core.Utils; import org.eclipse.papyrus.qompass.designer.core.deployment.AllocUtils; import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils; @@ -46,6 +45,7 @@ import org.eclipse.uml2.uml.Port; import org.eclipse.uml2.uml.Property; import org.eclipse.uml2.uml.Slot; import org.eclipse.uml2.uml.TemplateBinding; +import org.eclipse.uml2.uml.util.UMLUtil; /** * This class enables the reification of connectors, i.e. the replacement of @@ -192,7 +192,7 @@ public class ConnectorReification { String name, Connector smConnector, InstanceSpecification tmIS, Object[] args) throws TransformationException { - org.eclipse.papyrus.FCM.Connector fcmConn = StUtils.getApplication(smConnector, org.eclipse.papyrus.FCM.Connector.class); + org.eclipse.papyrus.FCM.Connector fcmConn = UMLUtil.getStereotypeApplication(smConnector, org.eclipse.papyrus.FCM.Connector.class); InteractionComponent connType = fcmConn.getIc(); if(connType == null) { diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerTrafo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerTrafo.java index 213f2bd044a..6591a5313bb 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerTrafo.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerTrafo.java @@ -52,6 +52,7 @@ import org.eclipse.uml2.uml.TemplateBinding; import org.eclipse.uml2.uml.TemplateSignature; import org.eclipse.uml2.uml.Type; import org.eclipse.uml2.uml.UMLPackage; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Make the container transformation, i.e. add elements into a container @@ -259,7 +260,7 @@ public class ContainerTrafo extends AbstractContainerTrafo { if(StUtils.isApplied(extOrInterceptor, InteractionComponent.class)) { - InterceptionRule interceptionRule = StUtils.getApplication(part, InterceptionRule.class); + InterceptionRule interceptionRule = UMLUtil.getStereotypeApplication(part, InterceptionRule.class); InterceptionKind interceptionKind = InterceptionKind.INTERCEPT_ALL; // default: intercept all ports EList<Feature> interceptFeatures = null; if(interceptionRule != null) { @@ -440,7 +441,7 @@ public class ContainerTrafo extends AbstractContainerTrafo { interceptionConnector.setName(interceptorName + port.getName() + counter); org.eclipse.papyrus.FCM.Connector fcmConn = StUtils.applyApp(interceptionConnector, org.eclipse.papyrus.FCM.Connector.class); - InteractionComponent fcmConnType = StUtils.getApplication(smContainerConnImpl, InteractionComponent.class); + InteractionComponent fcmConnType = UMLUtil.getStereotypeApplication(smContainerConnImpl, InteractionComponent.class); fcmConn.setIc(fcmConnType); // pass target component and port to interceptor (not clean, define diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/FlattenInteractionComponents.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/FlattenInteractionComponents.java index 826f4915687..536eefd7bd1 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/FlattenInteractionComponents.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/FlattenInteractionComponents.java @@ -20,7 +20,6 @@ import java.util.Map; import org.eclipse.emf.common.util.BasicEList; import org.eclipse.emf.common.util.EList; import org.eclipse.papyrus.FCM.InteractionComponent; -import org.eclipse.papyrus.cpp.profile.StUtils; import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils; import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils; import org.eclipse.uml2.uml.Class; @@ -32,6 +31,7 @@ import org.eclipse.uml2.uml.Port; import org.eclipse.uml2.uml.Property; import org.eclipse.uml2.uml.Slot; import org.eclipse.uml2.uml.StructuralFeature; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Deploy instances in a flat way, i.e. only deploy leaves. "Normal" composites @@ -82,7 +82,7 @@ public class FlattenInteractionComponents { { Classifier cl = DepUtils.getClassifier(instance); if ((cl instanceof Class) && (slot != null)) { - InteractionComponent ic = StUtils.getApplication((Class) cl, InteractionComponent.class); + InteractionComponent ic = UMLUtil.getStereotypeApplication((Class) cl, InteractionComponent.class); if ((ic != null) && ic.isForDistribution()) { Slot containingSlot = DepUtils.getParentSlot(instance); InstanceSpecification containingInstance = containingSlot.getOwningInstance(); diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/InstantiateDepPlan.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/InstantiateDepPlan.java index 4bf597c7e30..00e97ba0795 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/InstantiateDepPlan.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/InstantiateDepPlan.java @@ -57,6 +57,7 @@ import org.eclipse.uml2.uml.Model; import org.eclipse.uml2.uml.NamedElement; import org.eclipse.uml2.uml.Package; import org.eclipse.uml2.uml.Profile; +import org.eclipse.uml2.uml.util.UMLUtil; /** * This class executes all transformations during the instantiation of a @@ -97,7 +98,7 @@ public class InstantiateDepPlan { cdp = (Package)cdpOrConfig; MainModelTrafo.setConfiguration(null); } else if(StUtils.isApplied(cdpOrConfig, Configuration.class)) { - configuration = StUtils.getApplication(cdpOrConfig, Configuration.class); + configuration = UMLUtil.getStereotypeApplication(cdpOrConfig, Configuration.class); DeploymentPlan fcmCDP = configuration.getDeploymentPlan(); if(fcmCDP == null) { final NamedElement config = (NamedElement)cdpOrConfig; diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/MainModelTrafo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/MainModelTrafo.java index 395b0312921..2e978b66df1 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/MainModelTrafo.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/MainModelTrafo.java @@ -59,6 +59,7 @@ import org.eclipse.uml2.uml.StructuralFeature; import org.eclipse.uml2.uml.Type; import org.eclipse.uml2.uml.UMLPackage; import org.eclipse.uml2.uml.ValueSpecification; +import org.eclipse.uml2.uml.util.UMLUtil; /** * This class executes the main model transformation. It traverses the @@ -284,7 +285,7 @@ public class MainModelTrafo { } Package smCDP = smIS.getNearestPackage(); - DeploymentPlan smFCM_CDP = StUtils.getApplication(smCDP, DeploymentPlan.class); + DeploymentPlan smFCM_CDP = UMLUtil.getStereotypeApplication(smCDP, DeploymentPlan.class); for(ContainerRule rule : hwRules) { if(isRuleActive(rule)) { @@ -455,7 +456,9 @@ public class MainModelTrafo { // needs to be called independently // propagateNodeAllocation (cdp, compositeInstance); - + AllocTransfo at = new AllocTransfo(); + at.transformAllocs(copy, tmComponent); + if(containerTrafo != null) { // return containerIS containerTrafo.moveSlots(); diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/UpdateUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/UpdateUtils.java index a7ea85387c7..a87108be22f 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/UpdateUtils.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/UpdateUtils.java @@ -23,6 +23,7 @@ import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.uml2.uml.Element; import org.eclipse.uml2.uml.NamedElement; import org.eclipse.uml2.uml.Package; +import org.eclipse.uml2.uml.util.UMLUtil; /** * Utility functions for the update derived elements, e.g. operations of a component @@ -51,7 +52,7 @@ public class UpdateUtils { while(elements.hasNext()) { Element element = elements.next(); if(StUtils.isApplied(element, DerivedElement.class)) { - DerivedElement de = StUtils.getApplication(element, DerivedElement.class); + DerivedElement de = UMLUtil.getStereotypeApplication(element, DerivedElement.class); if((de != null) && (de.getSource() == source)) { return element; } @@ -67,7 +68,7 @@ public class UpdateUtils { public static Element getSource(Element element) { if(StUtils.isApplied(element, DerivedElement.class)) { - DerivedElement de = StUtils.getApplication(element, DerivedElement.class); + DerivedElement de = UMLUtil.getStereotypeApplication(element, DerivedElement.class); if(de != null) { return de.getSource(); } |