Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnsgar Radermacher2015-04-13 13:59:34 +0000
committerAnsgar Radermacher2015-04-13 14:01:23 +0000
commit25df8237c84c4c5118c0ca9ff21a051b71105d50 (patch)
treed817bed59fad0378a2b0a057feaeb212c4416922 /extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer
parent825b29dc824862e1ecf9d14a3a2367ba302ee0c9 (diff)
downloadorg.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')
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/BootLoaderGen.java5
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/InstantiateDepPlan.java12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LWContainerTrafo.java6
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LazyCopier.java11
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/MainModelTrafo.java2
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TrafoAndCodegenPackage.java15
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TransformationContext.java6
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/container/ContainerTrafo.java2
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;

Back to the top