[ocl2qvtp] - Removing saving from the ocl2qvtp component (rely on
compiler chain)
- Improving AbstractCompilerChain options reuse
diff --git a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTiBroker.java b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTiBroker.java
index 25345ff..b3b44e0 100644
--- a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTiBroker.java
+++ b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTiBroker.java
@@ -183,7 +183,7 @@
PivotModel oclModel = createOCLModel(oclDocURI);
pModel= createQVTpModel(qvtiFileURI);
- OCL2QVTp ocl2qvtp = new OCL2QVTp(environmentFactory, traceabilityPropName, savingOptions);
+ OCL2QVTp ocl2qvtp = new OCL2QVTp(environmentFactory, traceabilityPropName);
Resource resource = ocl2qvtp.run(oclModel.getResource().getResourceSet() , oclDocURI); // NB. cModel is the .ocl doc
pModel.getResource().getContents().addAll(resource.getContents());
diff --git a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTiCompilerChain.java b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTiCompilerChain.java
index db74445..ab1218f 100644
--- a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTiCompilerChain.java
+++ b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTiCompilerChain.java
@@ -12,6 +12,7 @@
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.ocl.pivot.Element;
import org.eclipse.qvtd.compiler.AbstractCompilerChain;
+import org.eclipse.qvtd.compiler.CompilerChain;
import org.eclipse.qvtd.pivot.qvtbase.Transformation;
import org.eclipse.qvtd.pivot.qvtbase.utilities.QVTbaseUtil;
import org.eclipse.qvtd.pivot.qvtimperative.utilities.QVTimperative;
@@ -19,27 +20,34 @@
public class OCL2QVTiCompilerChain extends AbstractCompilerChain {
public @NonNull static final String DEFAULT_TRACE_PROPERTY_NAME = "ast";
- public @NonNull static final String OCL2QVTP_STEP = "ocl2qvtp";
- public @NonNull static final Key<String> TRACE_PROPERTY_NAME = new Key<String>("ocl2qvtp.tracePropName");
+ public @NonNull static final Key<String> TRACE_PROPERTY_NAME_KEY = new Key<String>("ocl2qvtp.tracePropName");
private @NonNull URI oclASUri;
private @NonNull List<URI> extendedASUris = new ArrayList<URI>();
private @Nullable String traceabilityPropName;
+ /**
+ * To provide a different traceabilityPropName different to the default {@link OCL2QVTiCompilerChain#DEFAULT_TRACE_PROPERTY_NAME "ast"} one,
+ * it must be passed as an option using the {@link #TRACE_PROPERTY_NAME_KEY TRACE_PROPERTY_NAME_KEY} and the {@link CompilerChain#QVTP_STEP QVTP_STEP}
+ *
+ * @param qvti mandatory {@link QVTimperative} instance
+ * @param options optional options
+ * @param oclDocURI the mandatory main OCL document URI to compile
+ * @param extendedDocURIs optional OCL document URIs that the main one extends
+ */
public OCL2QVTiCompilerChain(@NonNull QVTimperative qvti, @Nullable Map<@NonNull String, @NonNull Map<@NonNull Key<?>, @Nullable Object>> options,
- @NonNull URI oclDocURI, @NonNull URI... extendDocURIs) {
+ @NonNull URI oclDocURI, URI... extendedDocURIs) {
super(qvti.getEnvironmentFactory(), oclDocURI, options);
this.traceabilityPropName = getTraceabilityPropertyName();
this.oclASUri = qvti.parse(oclDocURI).getURI();
- for (URI oclDocUri : extendDocURIs) {
+ for (URI oclDocUri : extendedDocURIs) {
this.extendedASUris.add(qvti.parse(oclDocUri).getURI()); // We add the AS URI
}
}
@Override
public @NonNull Transformation compile(@NonNull String enforcedOutputName) throws IOException {
- Resource qvtpResource = ocl2qvtp();
- return qvtp2qvti(qvtpResource);
+ return qvtp2qvti(ocl2qvtp());
}
public @NonNull Transformation compile() throws IOException {
@@ -54,28 +62,23 @@
qvtpModels.add(ocl2qvtp(extendedQVTpModel));
}
QVTpModelsMerger.merge(environmentFactory , pModel, qvtpModels);
- options.get(OCL2QVTP_STEP);
- pModel.save(getOption(OCL2QVTP_STEP, SAVE_OPTIONS_KEY));
+ saveResource(pModel, QVTP_STEP);
for(Resource qvtpModel : qvtpModels) { // unload unnecessary qvtpModels
qvtpModel.unload();
}
}
- assertNoResourceErrors("pModel", pModel);
return pModel;
}
- protected Resource ocl2qvtp(URI oclURI) {
- OCL2QVTp ocl2qvtp = new OCL2QVTp(environmentFactory, traceabilityPropName, getOption(OCL2QVTP_STEP, SAVE_OPTIONS_KEY));
- return ocl2qvtp.run(environmentFactory.getMetamodelManager().getASResourceSet(),
- oclURI);
- }
-
- private @Nullable Map<?, ?> getSavingOptions() {
- return getOption(OCL2QVTP_STEP, SAVE_OPTIONS_KEY);
+ protected Resource ocl2qvtp(URI oclURI) throws IOException {
+ OCL2QVTp ocl2qvtp = new OCL2QVTp(environmentFactory, traceabilityPropName);
+ Resource pResource = ocl2qvtp.run(environmentFactory.getMetamodelManager().getASResourceSet(), oclURI);
+ saveResource(pResource, QVTP_STEP);
+ return pResource;
}
private @NonNull String getTraceabilityPropertyName() {
- String tracePropName = getOption(OCL2QVTP_STEP, TRACE_PROPERTY_NAME);
+ String tracePropName = getOption(QVTP_STEP, TRACE_PROPERTY_NAME_KEY);
return tracePropName == null ? DEFAULT_TRACE_PROPERTY_NAME : tracePropName;
}
@Override
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 f51277f..0904c55 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
@@ -9,7 +9,6 @@
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.List;
@@ -21,7 +20,6 @@
import java.util.stream.Collectors;
import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.common.util.WrappedException;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
@@ -62,22 +60,17 @@
public class OCL2QVTp {
- private Logger logger = Logger.getLogger(getClass().getName());
+ private @NonNull Logger logger = Logger.getLogger(getClass().getName());
private @NonNull EnvironmentFactory envFact;
private @NonNull String traceabilityPropName;
private @Nullable Map<?,?> saveOptions;
- public static final String RIGHT_MODEL_TYPE_NAME = "rightAS";
- public static final String LEFT_MODEL_TYPE_NAME = "leftCS";
+ public static final @NonNull String RIGHT_MODEL_TYPE_NAME = "rightAS";
+ public static final @NonNull String LEFT_MODEL_TYPE_NAME = "leftCS";
public OCL2QVTp(@NonNull EnvironmentFactory envFact, @NonNull String traceabilityPropName) {
- this(envFact, traceabilityPropName, null);
- }
-
- public OCL2QVTp(@NonNull EnvironmentFactory envFact, @NonNull String traceabilityPropName, @Nullable Map<?, ?> saveOptions) {
this.envFact = envFact;
this.traceabilityPropName = traceabilityPropName;
- this.saveOptions = saveOptions;
}
public Resource run(ResourceSet resourceSet, URI oclDocURI) {
@@ -95,12 +88,8 @@
URI outputURI = oclDocURI.trimFileExtension().trimFileExtension().appendFileExtension("qvtp.qvtcas");
Resource outputResource = resourceSet.createResource(outputURI);
outputResource.getContents().add(outputModel);
- try {
- outputResource.save(saveOptions);
- return outputResource;
- } catch (IOException e) {
- throw new WrappedException(e);
- }
+ return outputResource;
+
} else {
throw new IllegalArgumentException(oclDocURI.toString() + " doesn't contain an OCL Model");
}
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/OCL2QVTiTestCases.java b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/OCL2QVTiTestCases.java
index d49b152..74d7ebc 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/OCL2QVTiTestCases.java
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/OCL2QVTiTestCases.java
@@ -38,9 +38,6 @@
import org.eclipse.ocl.pivot.evaluation.tx.Transformer;
import org.eclipse.ocl.pivot.internal.manager.MetamodelManagerInternal;
import org.eclipse.ocl.pivot.internal.resource.StandaloneProjectMap;
-import org.eclipse.ocl.pivot.internal.utilities.EnvironmentFactoryInternal;
-import org.eclipse.ocl.pivot.internal.utilities.OCLInternal;
-import org.eclipse.ocl.pivot.internal.validation.PivotEObjectValidator;
import org.eclipse.ocl.pivot.oclstdlib.OCLstdlibPackage;
import org.eclipse.ocl.pivot.resource.ASResource;
import org.eclipse.ocl.pivot.resource.CSResource;
@@ -48,7 +45,6 @@
import org.eclipse.ocl.pivot.utilities.OCL;
import org.eclipse.ocl.pivot.utilities.PivotConstants;
import org.eclipse.ocl.xtext.completeocl.CompleteOCLStandaloneSetup;
-import org.eclipse.ocl.xtext.completeocl.validation.CompleteOCLEObjectValidator;
import org.eclipse.qvtd.compiler.CompilerChain.Key;
import org.eclipse.qvtd.compiler.internal.etl.EtlTask;
import org.eclipse.qvtd.compiler.internal.etl.MtcBroker;
@@ -58,13 +54,11 @@
import org.eclipse.qvtd.cs2as.compiler.internal.CS2ASJavaCompilerImpl;
import org.eclipse.qvtd.cs2as.compiler.internal.CS2ASJavaCompilerParametersImpl;
import org.eclipse.qvtd.cs2as.compiler.internal.OCL2QVTiCompilerChain;
-import org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage;
+import org.eclipse.qvtd.cs2as.compiler.internal.OCL2QVTp;
import org.eclipse.qvtd.pivot.qvtbase.Transformation;
import org.eclipse.qvtd.pivot.qvtbase.utilities.QVTbase;
import org.eclipse.qvtd.pivot.qvtcore.QVTcorePivotStandaloneSetup;
-import org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage;
import org.eclipse.qvtd.pivot.qvtimperative.ImperativeModel;
-import org.eclipse.qvtd.pivot.qvtimperative.QVTimperativePackage;
import org.eclipse.qvtd.pivot.qvtimperative.evaluation.BasicQVTiExecutor;
import org.eclipse.qvtd.pivot.qvtimperative.evaluation.QVTiEnvironmentFactory;
import org.eclipse.qvtd.pivot.qvtimperative.evaluation.QVTiIncrementalExecutor;
@@ -96,7 +90,6 @@
private static final boolean CREATE_GRAPHML = false; // Note. You need Epsilon with Bug 458724 fix to have output graphml models serialised
private static final @NonNull String TESTS_GEN_PATH = "../org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/";
private static final @NonNull String TESTS_PACKAGE_NAME = "cg";
- private static final @NonNull String NEW_TESTS_PACKAGE_NAME = "new_cg";
private static final @NonNull String DEBUG_SEGMENT = "debug";
private static @NonNull URI TESTS_BASE_URI = URI.createPlatformResourceURI("org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models", true);
@@ -140,7 +133,7 @@
ResourceSet rSet = getResourceSet();
Resource inputResource = rSet.getResource(csModelURI, true);
- tx.addRootObjects("leftCS", ClassUtil.nonNullState(inputResource.getContents()));
+ tx.addRootObjects(OCL2QVTp.LEFT_MODEL_TYPE_NAME, ClassUtil.nonNullState(inputResource.getContents()));
assertTrue(tx.run());
Resource outputResource = rSet.createResource(asModelURI);
outputResource.getContents().addAll(tx.getRootObjects("rightAS"));
@@ -166,8 +159,8 @@
BasicQVTiExecutor testEvaluator = new QVTiIncrementalExecutor(getEnvironmentFactory(), tx, QVTiIncrementalExecutor.Mode.LAZY);
//testEvaluator.saveTransformation(null);
- testEvaluator.loadModel("leftCS", csModelURI);
- testEvaluator.createModel("rightAS", asModelURI, null);
+ testEvaluator.loadModel(OCL2QVTp.LEFT_MODEL_TYPE_NAME, csModelURI);
+ testEvaluator.createModel(OCL2QVTp.RIGHT_MODEL_TYPE_NAME, asModelURI, null);
boolean success = testEvaluator.execute();
testEvaluator.saveModels(TestsXMLUtil.defaultSavingOptions);
testEvaluator.dispose();
@@ -185,7 +178,7 @@
for (int i=0; i < extendedOclDocs.length; i++) {
oclDocURIs[i] = baseURI.appendSegment(extendedOclDocs[i]);
}
- OCL2QVTiCompilerChain compiler = new OCL2QVTiCompilerChain(this, createOcl2QVTpCompilerOptions(), mainOclDocURI, oclDocURIs);
+ OCL2QVTiCompilerChain compiler = new OCL2QVTiCompilerChain(this, createTestCasesCompilerOptions(), mainOclDocURI, oclDocURIs);
Transformation qvtiTransf = compiler.compile();
URI txURI = qvtiTransf.eResource().getURI();
if (txURI != null) {
@@ -196,14 +189,7 @@
return qvtiTransf;
}
- protected @NonNull Map<@NonNull String, @NonNull Map<@NonNull Key<?>, @Nullable Object>> createOcl2QVTpCompilerOptions() {
- Map<@NonNull String, @NonNull Map<@NonNull Key<?>, @Nullable Object>> options = new HashMap<@NonNull String, @NonNull Map<@NonNull Key<?>, @Nullable Object>>();
- Map<@NonNull Key<?>, @Nullable Object> ocl2qvtpOptions = new HashMap<@NonNull Key<?>, @Nullable Object>();
- ocl2qvtpOptions.put(OCL2QVTiCompilerChain.SAVE_OPTIONS_KEY, TestsXMLUtil.defaultSavingOptions);
- options.put(OCL2QVTiCompilerChain.OCL2QVTP_STEP, ocl2qvtpOptions);
- return options;
- }
-
+
protected void loadEcoreFile(String ecoreFileName, EPackage ePackage) {
URI fileURI = baseURI.appendSegment(ecoreFileName);
ResourceSet rSet = getResourceSet();
@@ -249,12 +235,12 @@
private static class OCL2QVTiCompilerTester extends OCL2QVTiCompilerChain {
public OCL2QVTiCompilerTester(@NonNull URI baseURI, @NonNull String oclDocName, @NonNull QVTimperative metaModelManager) {
- super(metaModelManager, null, baseURI.appendSegment(oclDocName));
+ super(metaModelManager, createTestCasesCompilerOptions(), baseURI.appendSegment(oclDocName));
}
// For testing purpose
@Override
- protected Resource ocl2qvtp(URI oclDocURI) {
+ protected Resource ocl2qvtp(URI oclDocURI) throws IOException {
return super.ocl2qvtp(oclDocURI);
}
}
@@ -281,7 +267,7 @@
CS2ASJavaCompilerParameters cgParams = new CS2ASJavaCompilerParametersImpl(
"example1.target.lookup.util.TargetLookupSolver",
"example1.target.lookup.util.TargetLookupResult",
- TESTS_GEN_PATH, NEW_TESTS_PACKAGE_NAME);
+ TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
Class<? extends Transformer> txClass = new CS2ASJavaCompilerImpl().compileTransformation(myQVT, qvtiTransf, cgParams);
myQVT.executeModelsTX_CG(txClass, "model1");
myQVT.executeModelsTX_CG(txClass, "model2");
@@ -340,7 +326,7 @@
CS2ASJavaCompilerParameters cgParams = new CS2ASJavaCompilerParametersImpl(
"example2.classes.lookup.util.ClassesLookupSolver",
"example2.classes.lookup.util.ClassesLookupResult",
- TESTS_GEN_PATH, NEW_TESTS_PACKAGE_NAME);
+ TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
Class<? extends Transformer> txClass = new CS2ASJavaCompilerImpl().compileTransformation(myQVT, qvtiTransf, cgParams);
myQVT.executeModelsTX_CG(txClass, "model1");
myQVT.executeModelsTX_CG(txClass, "model2");
@@ -398,7 +384,7 @@
CS2ASJavaCompilerParameters cgParams = new CS2ASJavaCompilerParametersImpl(
"example2.classes.lookup.util.ClassesLookupSolver",
"example2.classes.lookup.util.ClassesLookupResult",
- TESTS_GEN_PATH, NEW_TESTS_PACKAGE_NAME);
+ TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
Class<? extends Transformer> txClass = new CS2ASJavaCompilerImpl().compileTransformation(myQVT, qvtiTransf, cgParams);
myQVT.dispose();
@@ -506,7 +492,7 @@
myQVT.loadGenModels("SimplerKiamaAS.genmodel", "SimplerKiamaCS.genmodel");
Transformation qvtiTransf = myQVT.executeNewOCL2QVTi_CompilerChain("SimplerKiama.ocl");
CS2ASJavaCompilerParameters cgParams = new CS2ASJavaCompilerParametersImpl("","",
- TESTS_GEN_PATH, NEW_TESTS_PACKAGE_NAME);
+ TESTS_GEN_PATH, TESTS_PACKAGE_NAME);
Class<? extends Transformer> txClass = new CS2ASJavaCompilerImpl().compileTransformation(myQVT, qvtiTransf, cgParams);
// myQVT.getEnvironmentFactory().setEvaluationTracingEnabled(true);
// FIXME BUG 484278 model0 has an invalid model TopCS.node[1] has a null value.
@@ -609,20 +595,7 @@
protected static void assertValidQVTiModel(@NonNull URI asURI) {
- OCLInternal ocl = OCLInternal.newInstance();
- EnvironmentFactoryInternal factory = ocl.getEnvironmentFactory();
- factory.configureLoadFirstStrategy();
- ResourceSet asResourceSet = ocl.getMetamodelManager().getASResourceSet();
-
- URI oclURI = ClassUtil.nonNullState(URI.createPlatformResourceURI("/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ocl", true));
-
- CompleteOCLEObjectValidator validator = new CompleteOCLEObjectValidator(ClassUtil.nonNullState(QVTcoreBasePackage.eINSTANCE), oclURI, factory);
- validator.initialize();
- PivotEObjectValidator.install(asResourceSet, factory);
- PivotEObjectValidator.install(ClassUtil.nonNullState(QVTbasePackage.eINSTANCE), null);
- PivotEObjectValidator.install(ClassUtil.nonNullState(QVTcoreBasePackage.eINSTANCE), null);
- PivotEObjectValidator.install(ClassUtil.nonNullState(QVTimperativePackage.eINSTANCE), null);
- assertValidModel(asURI, asResourceSet);
+ // We don't generate QVTi models anymore. Perhaps do a QVTc validation if there is a QVTcore.ocl file
}
protected @NonNull Transformation getTransformation(ResourceSet rSet, URI qvtiURI) {
@@ -743,4 +716,13 @@
return (ASResource) asResource;
}
+ private static @NonNull Map<@NonNull String, @NonNull Map<@NonNull Key<?>, @Nullable Object>> createTestCasesCompilerOptions() {
+ Map<@NonNull String, @NonNull Map<@NonNull Key<?>, @Nullable Object>> options = new HashMap<@NonNull String, @NonNull Map<@NonNull Key<?>, @Nullable Object>>();
+ Map<@NonNull Key<?>, @Nullable Object> defStepOptions = new HashMap<@NonNull Key<?>, @Nullable Object>();
+ defStepOptions.put(OCL2QVTiCompilerChain.SAVE_OPTIONS_KEY, TestsXMLUtil.defaultSavingOptions);
+ // TODO problem hen validating defStepOptions.put(OCL2QVTiCompilerChain.VALIDATE_KEY, true);
+ options.put(OCL2QVTiCompilerChain.DEFAULT_STEP, defStepOptions);
+ return options;
+ }
+
}
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/.gitignore b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/.gitignore
index ed2bb3f..65aac1a 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/.gitignore
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example1/.gitignore
@@ -9,3 +9,5 @@
/Source2TargetDependencyGraph.xmi
/SourceMM1ContainmentTree.xmi
/TargetMM1ContainmentTree.xmi
+/Source2Target.qvtp.qvtcas
+/Source2Target.qvts.xmi
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/.gitignore b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/.gitignore
index 240da03..993050a 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/.gitignore
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example2/.gitignore
@@ -11,3 +11,7 @@
/classescs2asV2Schedule.xmi
/classescs2asV2.qvtias
/classescs2asV2.qvtp.qvtias
+/classescs2as.qvtp.qvtcas
+/classescs2as.qvts.xmi
+/classescs2asV2.qvtp.qvtcas
+/classescs2asV2.qvts.xmi
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example4/.gitignore b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example4/.gitignore
index 6a5858f..1715b53 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example4/.gitignore
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example4/.gitignore
@@ -6,3 +6,5 @@
/SimplerKiama.serialized.qvti
/*ContainmentTree.xmi
/SimplerKiamaSchedule.xmi
+/SimplerKiama.qvtp.qvtcas
+/SimplerKiama.qvts.xmi
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example5/.gitignore b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example5/.gitignore
index f9ed4db..e9f9c2b 100644
--- a/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example5/.gitignore
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/src/org/eclipse/qvtd/cs2as/compiler/tests/models/example5/.gitignore
@@ -15,3 +15,7 @@
/TargetDerivedMMContainmentTree.xmi
/*.dot
/*.graphml
+/Source2TargetBase.qvtp.qvtcas
+/Source2TargetBase.qvts.xmi
+/Source2TargetDerived.qvtp.qvtcas
+/Source2TargetDerived.qvts.xmi
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_SimplerKiama_qvtp_qvtcas/.gitignore b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_SimplerKiama_qvtp_qvtcas/.gitignore
new file mode 100644
index 0000000..5cd66bd
--- /dev/null
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_SimplerKiama_qvtp_qvtcas/.gitignore
@@ -0,0 +1 @@
+/SimplerKiama_qvtp_qvtcas.java
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2TargetBase_qvtp_qvtcas/.gitignore b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2TargetBase_qvtp_qvtcas/.gitignore
new file mode 100644
index 0000000..00e1711
--- /dev/null
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2TargetBase_qvtp_qvtcas/.gitignore
@@ -0,0 +1 @@
+/Source2TargetBase_qvtp_qvtcas.java
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2TargetDerived_qvtp_qvtcas/.gitignore b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2TargetDerived_qvtp_qvtcas/.gitignore
new file mode 100644
index 0000000..5760bad
--- /dev/null
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2TargetDerived_qvtp_qvtcas/.gitignore
@@ -0,0 +1 @@
+/Source2TargetDerived_qvtp_qvtcas.java
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2Target_qvtp_qvtcas/.gitignore b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2Target_qvtp_qvtcas/.gitignore
new file mode 100644
index 0000000..79082dd
--- /dev/null
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_Source2Target_qvtp_qvtcas/.gitignore
@@ -0,0 +1 @@
+/Source2Target_qvtp_qvtcas.java
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_classescs2asV2_qvtp_qvtcas/.gitignore b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_classescs2asV2_qvtp_qvtcas/.gitignore
new file mode 100644
index 0000000..8460b46
--- /dev/null
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_classescs2asV2_qvtp_qvtcas/.gitignore
@@ -0,0 +1 @@
+/classescs2asV2_qvtp_qvtcas.java
diff --git a/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_classescs2as_qvtp_qvtcas/.gitignore b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_classescs2as_qvtp_qvtcas/.gitignore
new file mode 100644
index 0000000..97be367
--- /dev/null
+++ b/tests/org.eclipse.qvtd.cs2as.compiler.tests/tests-gen/cg/_classescs2as_qvtp_qvtcas/.gitignore
@@ -0,0 +1 @@
+/classescs2as_qvtp_qvtcas.java