diff options
author | Ansgar Radermacher | 2015-04-13 13:59:34 +0000 |
---|---|---|
committer | Ansgar Radermacher | 2015-04-13 14:01:23 +0000 |
commit | 25df8237c84c4c5118c0ca9ff21a051b71105d50 (patch) | |
tree | d817bed59fad0378a2b0a057feaeb212c4416922 /extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer | |
parent | 825b29dc824862e1ecf9d14a3a2367ba302ee0c9 (diff) | |
download | org.eclipse.papyrus-25df8237c84c4c5118c0ca9ff21a051b71105d50.tar.gz org.eclipse.papyrus-25df8237c84c4c5118c0ca9ff21a051b71105d50.tar.xz org.eclipse.papyrus-25df8237c84c4c5118c0ca9ff21a051b71105d50.zip |
461632 - [QDesigner] it should be possible to reference xtend templates in opaque expressions - replace Acceleo templates in models by references to xtend classes
Diffstat (limited to 'extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer')
8 files changed, 27 insertions, 32 deletions
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 4a2d8cab596..0989bb55df9 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 @@ -27,8 +27,8 @@ import org.eclipse.papyrus.FCM.InitPrecedence; import org.eclipse.papyrus.MARTE.MARTE_DesignModel.SRM.SW_Concurrency.SwSchedulableResource; import org.eclipse.papyrus.qompass.designer.core.Messages; import org.eclipse.papyrus.qompass.designer.core.StUtils; +import org.eclipse.papyrus.qompass.designer.core.UMLTool; import org.eclipse.papyrus.qompass.designer.core.Utils; -import org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool; import org.eclipse.papyrus.qompass.designer.core.transformations.ExecuteOOTrafo; import org.eclipse.papyrus.qompass.designer.core.transformations.LazyCopier; import org.eclipse.papyrus.qompass.designer.core.transformations.PrefixConstants; @@ -91,6 +91,9 @@ public class BootLoaderGen { "const int nodeIndex = " + nodeIndex + ";" + NL + //$NON-NLS-1$//$NON-NLS-2$ "const int numberOfNodes = " + numberOfNodes + ";" + NL; //$NON-NLS-1$ //$NON-NLS-2$ Include cppIncludeNodeInfo = StereotypeUtil.applyApp(nodeInfo, Include.class); + if (cppIncludeNodeInfo == null) { + throw new TransformationException("Can not apply C++ stereotypes during bootloader generation. Please apply the C++ profile to the source model"); + } cppIncludeNodeInfo.setHeader(headerStr); // bootLoader.createOwnedAttribute (mainInstance.getName (), composite); 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 a6d8a0191d6..b18adc85900 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 @@ -30,16 +30,15 @@ import org.eclipse.papyrus.FCM.Configuration; import org.eclipse.papyrus.FCM.OperatingSystem; import org.eclipse.papyrus.FCM.Target; import org.eclipse.papyrus.FCM.util.MapUtil; -import org.eclipse.papyrus.acceleo.AcceleoDriver; import org.eclipse.papyrus.codegen.extensionpoints.ILangSupport; import org.eclipse.papyrus.codegen.extensionpoints.LanguageSupport; +import org.eclipse.papyrus.qompass.designer.core.EnumService; import org.eclipse.papyrus.qompass.designer.core.Log; import org.eclipse.papyrus.qompass.designer.core.Messages; import org.eclipse.papyrus.qompass.designer.core.ModelManagement; import org.eclipse.papyrus.qompass.designer.core.ProjectManagement; import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.papyrus.qompass.designer.core.Utils; -import org.eclipse.papyrus.qompass.designer.core.acceleo.EnumService; import org.eclipse.papyrus.qompass.designer.core.deployment.AllocUtils; import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation; import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils; @@ -165,7 +164,6 @@ public class InstantiateDepPlan { private void instantiate(IProgressMonitor monitor, int genOptions) { try { initialize(monitor, genOptions); - AcceleoDriver.clearErrors(); executeTransformation(); } catch (AcceleoException e) { displayError(Messages.InstantiateDepPlan_AcceleoErrors, @@ -271,11 +269,6 @@ public class InstantiateDepPlan { } intermediateModelManagement.dispose(); - - if (AcceleoDriver.hasErrors()) { - throw new AcceleoException(); - } - } private void deployOnNodes(InstanceSpecification mainInstance, @@ -555,8 +548,7 @@ public class InstantiateDepPlan { profileResource = ModelManagement.getResourceSet() .getResource(profile.eResource().getURI(), true); } - Profile newProfileTop = (Profile) profileResource.getContents() - .get(0); + Profile newProfileTop = (Profile) profileResource.getContents().get(0); Profile newProfile; String qname = profile.getQualifiedName(); if ((qname != null) && qname.contains("::")) { //$NON-NLS-1$ diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LWContainerTrafo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LWContainerTrafo.java index ef189820245..00cfdf7a478 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LWContainerTrafo.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LWContainerTrafo.java @@ -25,12 +25,12 @@ import org.eclipse.papyrus.FCM.InterceptionRule; import org.eclipse.papyrus.FCM.Template; import org.eclipse.papyrus.qompass.designer.core.Messages; import org.eclipse.papyrus.qompass.designer.core.StUtils; -import org.eclipse.papyrus.qompass.designer.core.acceleo.AcceleoDriverWrapper; import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation; import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils; import org.eclipse.papyrus.qompass.designer.core.extensions.InstanceConfigurator; import org.eclipse.papyrus.qompass.designer.core.templates.TemplateInstantiation; import org.eclipse.papyrus.qompass.designer.core.templates.TemplateUtils; +import org.eclipse.papyrus.qompass.designer.core.templates.TextTemplateBinding; import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil; import org.eclipse.uml2.uml.Behavior; import org.eclipse.uml2.uml.Class; @@ -140,7 +140,7 @@ public class LWContainerTrafo extends AbstractContainerTrafo { // create interception code // TODO: this is Java/C++ specific! OpaqueBehavior b = (OpaqueBehavior) tmClass.createOwnedBehavior(operation.getName(), UMLPackage.eINSTANCE.getOpaqueBehavior()); - String body = AcceleoDriverWrapper.bind(interceptor, copiedOperation); + String body = TextTemplateBinding.bind(interceptor, copiedOperation); // TODO: solution is specific to C++ b.getLanguages().add("C/C++"); //$NON-NLS-1$ b.getBodies().add(body); @@ -309,7 +309,7 @@ public class LWContainerTrafo extends AbstractContainerTrafo { if (StereotypeUtil.isApplied(interceptionOperationInRule, Template.class)) { // pass operation in source model, since this enables acceleo code to check // for markers on model - interceptionBody = AcceleoDriverWrapper.evaluate(interceptionBody, smOperation, null); + interceptionBody = TextTemplateBinding.bind(interceptionBody, smOperation, null); } if (interceptionBody.length() > 0) { // only add interception operation, if the interception is not empty diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LazyCopier.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LazyCopier.java index 63f4871a303..f5c9494ca6e 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LazyCopier.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LazyCopier.java @@ -665,9 +665,16 @@ public class LazyCopier extends Copier { } else { for (EObject sourceEObj : source) { // if eObject has already been copied, add it to target + // don't add, if copyEObj is identical to sourceEObj. This would imply manipulating an + // element of the source model. EObject copyEObj = noCopy(sourceEObj); - if ((copyEObj != null) && (!target.contains(copyEObj))) { - target.add(copyEObj); + if ((copyEObj != null) && (copyEObj != sourceEObj) && (!target.contains(copyEObj))) { + try { + target.add(copyEObj); + } + catch (Exception e) { + System.err.println(e); + } } } } 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 cadc3b639d4..c1c3262cd4c 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 @@ -37,7 +37,7 @@ import org.eclipse.papyrus.qompass.designer.core.Log; import org.eclipse.papyrus.qompass.designer.core.Messages; import org.eclipse.papyrus.qompass.designer.core.PortUtils; import org.eclipse.papyrus.qompass.designer.core.StUtils; -import org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool; +import org.eclipse.papyrus.qompass.designer.core.UMLTool; import org.eclipse.papyrus.qompass.designer.core.deployment.AllocUtils; import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation; import org.eclipse.papyrus.qompass.designer.core.deployment.DepPlanUtils; diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TrafoAndCodegenPackage.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TrafoAndCodegenPackage.java index 7685ce77259..2b41484c526 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TrafoAndCodegenPackage.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TrafoAndCodegenPackage.java @@ -30,15 +30,14 @@ import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.papyrus.FCM.ContainerRule; import org.eclipse.papyrus.FCM.ContainerRuleKind; import org.eclipse.papyrus.FCM.util.FCMUtil; -import org.eclipse.papyrus.acceleo.AcceleoDriver; import org.eclipse.papyrus.codegen.extensionpoints.ILangSupport; import org.eclipse.papyrus.codegen.extensionpoints.LanguageSupport; +import org.eclipse.papyrus.qompass.designer.core.EnumService; import org.eclipse.papyrus.qompass.designer.core.Log; import org.eclipse.papyrus.qompass.designer.core.Messages; import org.eclipse.papyrus.qompass.designer.core.ModelManagement; import org.eclipse.papyrus.qompass.designer.core.StUtils; import org.eclipse.papyrus.qompass.designer.core.Utils; -import org.eclipse.papyrus.qompass.designer.core.acceleo.EnumService; import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils; import org.eclipse.papyrus.qompass.designer.core.generate.GenerateCode; import org.eclipse.papyrus.qompass.designer.core.transformations.filters.FilterTemplate; @@ -128,7 +127,6 @@ public class TrafoAndCodegenPackage { Model tmpModel = null; ModelManagement tmpMM = null; - AcceleoDriver.clearErrors(); Package selectedPkg; if (cdpOrConfig instanceof Package) { selectedPkg = (Package) cdpOrConfig; @@ -247,17 +245,6 @@ public class TrafoAndCodegenPackage { if (tmpMM != null) { tmpMM.dispose(); } - if (AcceleoDriver.hasErrors()) { - Display.getDefault().syncExec(new Runnable() { - @Override - public void run() { - Shell shell = new Shell(); - MessageDialog.openInformation(shell, Messages.InstantiateDepPlan_AcceleoErrors, - Messages.InstantiateDepPlan_AcceleoErrorsCheckLog); - } - }); - } - } diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TransformationContext.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TransformationContext.java index 47a247d0e34..81f1b2a6bea 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TransformationContext.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TransformationContext.java @@ -51,6 +51,12 @@ public class TransformationContext { return sourceRoot; } + public static LazyCopier copier; + + public static LazyCopier getCopier() { + return copier; + }; + public static Classifier formalParameter; public static Classifier getFormalParameter() { diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/container/ContainerTrafo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/container/ContainerTrafo.java index 3be31de126e..342830d705a 100644 --- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/container/ContainerTrafo.java +++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/container/ContainerTrafo.java @@ -33,8 +33,8 @@ import org.eclipse.papyrus.FCM.util.MapUtil; import org.eclipse.papyrus.qompass.designer.core.Messages; import org.eclipse.papyrus.qompass.designer.core.PortUtils; import org.eclipse.papyrus.qompass.designer.core.StUtils; +import org.eclipse.papyrus.qompass.designer.core.UMLTool; import org.eclipse.papyrus.qompass.designer.core.Utils; -import org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool; import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation; import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils; import org.eclipse.papyrus.qompass.designer.core.templates.TemplateInstantiation; |