Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTp.java')
-rw-r--r--plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTp.java23
1 files changed, 21 insertions, 2 deletions
diff --git a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTp.java b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTp.java
index fd8e03255..7c1c8ad11 100644
--- a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTp.java
+++ b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTp.java
@@ -11,6 +11,7 @@ import static org.eclipse.qvtd.cs2as.compiler.internal.OCL2QVTpUtil.getOwningPac
import static org.eclipse.qvtd.cs2as.compiler.internal.OCL2QVTpUtil.getSuperClasses;
import static org.eclipse.qvtd.cs2as.compiler.internal.OCL2QVTpUtil.getUpdateMappingName;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -490,8 +491,26 @@ public class OCL2QVTp {
private ClonsMap cloneImportedOperationsAndEcoreImports(Model oldModel, Model newModel, List<URI> extendedASURIs) {
- ClonsMap clonsMap = new ClonsMap(newModel);
+ Model newOCL = PivotFactory.eINSTANCE.createModel();
+ URI newOCLURI = URI.createURI(newModel.getExternalURI()).appendFileExtension("oclas");
+ newOCL.setExternalURI(newOCLURI.toString());
+
+ ClonsMap clonsMap = new ClonsMap(newOCL);
doCloneImportedOperationsAndImports(oldModel, clonsMap, new HashSet<Model>(), extendedASURIs);
+ updateOpCallExpressions(newOCL, clonsMap);
+
+ Import newOCLimport = PivotFactory.eINSTANCE.createImport();
+ newOCLimport.setImportedNamespace(newOCL);
+ newModel.getOwnedImports().add(newOCLimport);
+
+ Resource resource = envFact.getMetamodelManager().getASResourceSet().createResource(newOCLURI);
+ resource.getContents().add(newOCL);
+ try {
+ resource.save(saveOptions);
+ } catch (IOException e) {
+ logger.severe("qvtp.qvtcas.ocl OCL file could not be saved");
+ }
+
return clonsMap;
}
@@ -556,7 +575,7 @@ public class OCL2QVTp {
private void updateOpCallExpression(OperationCallExp opCallExp, ClonsMap copyHelper) {
Operation oclOp = opCallExp.getReferredOperation();
if (isOclDocOp().test(oclOp) // We are only interested in ops belonging to a model corresponding to an Ocl Doc
- && !refersToContainingOperation().test(opCallExp)) { // and opCallExps that refer to operation that contains them
+ && !refersToContainingOperation().test(opCallExp)) { // and opCallExps that do not refer to operations that contains them
Operation newOp = copyHelper.getCachedOperation(oclOp);
opCallExp.setReferredOperation(newOp);
}

Back to the top