diff options
author | Ansgar Radermacher | 2013-11-30 23:09:51 +0000 |
---|---|---|
committer | Ansgar Radermacher | 2013-11-30 23:19:47 +0000 |
commit | 83937dde13ef67c8e7d740c06da4e1950e2826b9 (patch) | |
tree | d06a69156b52fd2ee88f0f46f59d381d86777ae2 /extraplugins/qompass-designer | |
parent | d6b64632c6706fe8163202bb89352c6c703c1f56 (diff) | |
download | org.eclipse.papyrus-83937dde13ef67c8e7d740c06da4e1950e2826b9.tar.gz org.eclipse.papyrus-83937dde13ef67c8e7d740c06da4e1950e2826b9.tar.xz org.eclipse.papyrus-83937dde13ef67c8e7d740c06da4e1950e2826b9.zip |
- 422899 - [QDesigner] Regression in template instantiation
Diffstat (limited to 'extraplugins/qompass-designer')
7 files changed, 29 insertions, 17 deletions
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/CommandSupport.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/CommandSupport.java index 21a80bced95..261e56f3a43 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/CommandSupport.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/CommandSupport.java @@ -100,18 +100,17 @@ public class CommandSupport { } }, null, null); } catch (ExecutionException e) { - e.printStackTrace(); + Activator.log.error(e); } } } - public static void exec(TransactionalEditingDomain domain, IUndoableOperation command) { + public static void exec(IUndoableOperation command) { IOperationHistory history = OperationHistoryFactory.getOperationHistory(); try { history.execute(command, new NullProgressMonitor(), null); } catch (ExecutionException e) { - e.printStackTrace(); + Activator.log.error(e); } - } } 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 db6d6745aea..8d92db8ab03 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 @@ -259,6 +259,7 @@ public class AllocUtils { " to " + node.getName(), UMLPackage.eINSTANCE.getAbstraction()); //$NON-NLS-1$ if(StereotypeUtil.apply(allocation, Allocate.class) == null) { // stereotype application failed + allocation.destroy(); return false; } allocation.getClients().add(instance); 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 c5ca6e027b5..2f08cce0bd6 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 @@ -110,6 +110,9 @@ public class BootLoaderGen { * } */ Include cppInclude = StereotypeUtil.applyApp(m_bootLoader, Include.class); + if (cppInclude == null) { + throw new TransformationException("Cannot apply cppInclude stereotype. Make sure that C/C++ profile is applied to your model"); + } Object existingBody = cppInclude.getBody(); String existingBodyStr = ""; //$NON-NLS-1$ if(existingBody instanceof String) { 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 f0fc9e75a25..36ee99a3941 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 @@ -106,7 +106,7 @@ public class TemplateInstantiation { for(TemplateParameterSubstitution substitution : binding.getParameterSubstitutions()) { ParameterableElement formal = substitution.getFormal().getParameteredElement(); ParameterableElement actual = substitution.getActual(); - copy.put(formal, actual); + copy.putPair(formal, actual); } // add copy listeners --- 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 2009d421e6e..7626b23535c 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 @@ -286,7 +286,7 @@ public class ContainerTrafo extends AbstractContainerTrafo { expandAggregationExtension(part.getName(), extOrInterceptor, tmComponent); // register relation to facilitate connector copy copy.setPackageTemplate(smContainerRule.getBase_Class(), tmContainerImpl); - copy.put(part, extensionPart); + copy.putPair(part, extensionPart); copy.setPackageTemplate(null, null); } } @@ -315,7 +315,7 @@ public class ContainerTrafo extends AbstractContainerTrafo { for(Property interceptorPart : interceptorPartsMap.get(ruleInterceptorPart)) { // map an interceptor part within rule successively to to an interceptor part // within the container - copy.put(ruleInterceptorPart, interceptorPart); + copy.putPair(ruleInterceptorPart, interceptorPart); copy.removeForCopy(connector); copy.getCopy(connector); } diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/Copy.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/Copy.java index 3829bb540c4..8c571972136 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/Copy.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/Copy.java @@ -212,6 +212,19 @@ public class Copy extends Copier { return null; } + /** + * Put a pair into the copy map. Unlike the standard put operation, + * the target object is marked as full copy. + * Just using the put operation lead to bug 422899 - [QDesigner] Regression in + * template instantiation + * @return + */ + public EObject putPair(EObject sourceEObj, EObject targetEObj) { + EObject target = put(sourceEObj, targetEObj); + setStatus(targetEObj, CopyStatus.FULL); + return target; + } + @Override public boolean containsKey(Object sourceEObj) { if(sourceEObj instanceof EObject) { @@ -246,11 +259,6 @@ public class Copy extends Copier { * @return */ public CopyStatus getStatus(EObject targetEObj) { - /* - if (targetEObj instanceof Package) { - return true; - } - */ if (targetEObj != null) { CopyStatus status = statusMap.get(targetEObj); if(status != null) { @@ -260,10 +268,6 @@ public class Copy extends Copier { return CopyStatus.UNKNOWN; } - // public Namespace getPackageTemplate() { - // return null; - // } - /** * Set the reference of a bound package template. It must be a member of the target model. * Setting the package template is required to assure that elements that are part of a different 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 259bb029206..88a590a6082 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 @@ -63,7 +63,12 @@ public class UpdateUtils { public static void setSource(Element derivedElement, Element source) { DerivedElement de = StereotypeUtil.applyApp(derivedElement, DerivedElement.class); - de.setSource(source); + if (de != null) { + de.setSource(source); + } + else { + throw new TransformationRTException("cannot apply FCM stereotype. Check whether profile is applied"); + } } public static Element getSource(Element element) { |