diff --git a/qvto-app/.classpath b/qvto-app/.classpath
new file mode 100644
index 0000000..f619a53
--- /dev/null
+++ b/qvto-app/.classpath
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/qvto-app/.gitignore b/qvto-app/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/qvto-app/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/qvto-app/.project b/qvto-app/.project
new file mode 100644
index 0000000..3c1fc43
--- /dev/null
+++ b/qvto-app/.project
@@ -0,0 +1,23 @@
+
+
+ qvto-app
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+
+
diff --git a/qvto-app/.settings/org.eclipse.core.resources.prefs b/qvto-app/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..e9441bb
--- /dev/null
+++ b/qvto-app/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding/=UTF-8
diff --git a/qvto-app/.settings/org.eclipse.jdt.core.prefs b/qvto-app/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..ec4300d
--- /dev/null
+++ b/qvto-app/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/qvto-app/.settings/org.eclipse.m2e.core.prefs b/qvto-app/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/qvto-app/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/qvto-app/dependency-reduced-pom.xml b/qvto-app/dependency-reduced-pom.xml
new file mode 100644
index 0000000..d4077b9
--- /dev/null
+++ b/qvto-app/dependency-reduced-pom.xml
@@ -0,0 +1,135 @@
+
+
+ 4.0.0
+ at.ac.wu.nm
+ qvto-app
+ QVTo Command-Line App
+ 0.1-SNAPSHOT
+
+
+
+ maven-compiler-plugin
+ 2.3
+
+
+ ${jdk.version}
+
+
+
+ maven-dependency-plugin
+ 2.10
+
+
+ unpack
+ process-sources
+
+ unpack
+
+
+
+
+ at.ac.wu.nm
+ qvt-bundle
+ 4.4
+ repackaged
+ jar
+ false
+ ${project.build.directory}
+ META-INF/MANIFEST.MF
+
+
+
+
+
+
+
+ maven-jar-plugin
+ 2.6
+
+
+ ${project.build.directory}/META-INF/MANIFEST.MF
+
+
+
+
+ maven-shade-plugin
+ 2.3
+
+
+ package
+
+ shade
+
+
+
+
+
+ at.ac.wu.nm.qvto.App
+
+
+
+
+
+ *:qvt-bundle:*
+
+ *.jar
+ at/**
+ org/eclipse/jdt/internal/jarinjarloader/**
+ META-INF/MANIFEST.MF
+
+
+
+
+
+
+
+
+ maven-surefire-plugin
+ 2.19.1
+
+
+ src/test/resources/unitTests/testng.xml
+
+
+
+
+ maven-failsafe-plugin
+ 2.19.1
+
+
+
+ integration-test
+ verify
+
+
+
+
+
+ src/test/resources/integrationTests/testng.xml
+
+ target/qvto-app-0.1-SNAPSHOT.jar
+
+
+
+
+
+
+ org.testng
+ testng
+ 6.9.8
+ test
+
+
+ bsh
+ org.beanshell
+
+
+
+
+
+ 1.6.1
+ 1.7
+ UTF-8
+
+
+
diff --git a/qvto-app/pom.xml b/qvto-app/pom.xml
index 3bd99b0..db84398 100644
--- a/qvto-app/pom.xml
+++ b/qvto-app/pom.xml
@@ -1,121 +1,166 @@
-
- 4.0.0
- at.ac.wu.nm
- qvto-app
- jar
- 0.1-SNAPSHOT
- QVTo Command-Line App
-
- 1.7
- UTF-8
-
-
-
-
- at.ac.wu.nm
- qvt-bundle
- 4.4
- repackaged
-
-
- com.beust
- jcommander
- 1.47
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 2.3
-
-
- ${jdk.version}
-
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
- 2.10
-
-
- unpack
- process-sources
-
- unpack
-
-
-
-
- at.ac.wu.nm
- qvt-bundle
- 4.4
- repackaged
- jar
- false
- ${project.build.directory}
- META-INF/MANIFEST.MF
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-jar-plugin
- 2.6
-
-
- ${project.build.directory}/META-INF/MANIFEST.MF
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- 2.3
-
-
- package
-
- shade
-
-
-
-
-
-
- at.ac.wu.nm.qvto.App
-
-
-
-
-
- *:qvt-bundle:*
-
- *.jar
- at/**
- org/eclipse/jdt/internal/jarinjarloader/**
- META-INF/MANIFEST.MF
-
-
-
-
-
-
-
-
-
-
-
-
+ 4.0.0
+ at.ac.wu.nm
+ qvto-app
+ jar
+ 0.1-SNAPSHOT
+ QVTo Command-Line App
+
+
+ 1.7
+ UTF-8
+ 1.6.1
+
+
+
+
+ at.ac.wu.nm
+ qvt-bundle
+ 4.4
+ repackaged
+
+
+ com.beust
+ jcommander
+ 1.47
+
+
+ org.testng
+ testng
+ 6.9.8
+ test
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4jVersion}
+
+
+ ch.qos.logback
+ logback-classic
+ 1.0.13
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 2.3
+
+
+ ${jdk.version}
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+ 2.10
+
+
+ unpack
+ process-sources
+
+ unpack
+
+
+
+
+ at.ac.wu.nm
+ qvt-bundle
+ 4.4
+ repackaged
+ jar
+ false
+ ${project.build.directory}
+ META-INF/MANIFEST.MF
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 2.6
+
+
+ ${project.build.directory}/META-INF/MANIFEST.MF
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 2.3
+
+
+ package
+
+ shade
+
+
+
+
+
+
+ at.ac.wu.nm.qvto.App
+
+
+
+
+
+ *:qvt-bundle:*
+
+ *.jar
+ at/**
+ org/eclipse/jdt/internal/jarinjarloader/**
+ META-INF/MANIFEST.MF
+
+
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.19.1
+
+
+ src/test/resources/unitTests/testng.xml
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+ 2.19.1
+
+
+ src/test/resources/integrationTests/testng.xml
+
+ target/qvto-app-0.1-SNAPSHOT.jar
+
+
+
+
+ integration-test
+ verify
+
+
+
+
+
+
+
diff --git a/qvto-app/src/main/java/at/ac/wu/nm/qvto/App.java b/qvto-app/src/main/java/at/ac/wu/nm/qvto/App.java
index ac3c69d..6ff8fca 100644
--- a/qvto-app/src/main/java/at/ac/wu/nm/qvto/App.java
+++ b/qvto-app/src/main/java/at/ac/wu/nm/qvto/App.java
@@ -3,17 +3,15 @@
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
-import java.util.List;
import java.util.ArrayList;
+import java.util.List;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.emf.common.util.BasicDiagnostic;
import org.eclipse.emf.common.util.Diagnostic;
-import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
@@ -24,10 +22,10 @@
import org.eclipse.m2m.qvt.oml.ExecutionDiagnostic;
import org.eclipse.m2m.qvt.oml.ModelExtent;
import org.eclipse.m2m.qvt.oml.TransformationExecutor;
-import org.eclipse.uml2.uml.UMLPackage;
-import org.eclipse.uml2.uml.resource.UMLResource;
import org.eclipse.m2m.qvt.oml.util.Log;
import org.eclipse.m2m.qvt.oml.util.WriterLog;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.resource.UMLResource;
import com.beust.jcommander.JCommander;
import com.beust.jcommander.Parameter;
diff --git a/qvto-app/src/main/resources/logback.xml b/qvto-app/src/main/resources/logback.xml
new file mode 100644
index 0000000..ae1cc02
--- /dev/null
+++ b/qvto-app/src/main/resources/logback.xml
@@ -0,0 +1,13 @@
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/qvto-app/src/test/java/org/fraben/qvtoapp/test/BasicTest.java b/qvto-app/src/test/java/org/fraben/qvtoapp/test/BasicTest.java
new file mode 100644
index 0000000..bd5bf95
--- /dev/null
+++ b/qvto-app/src/test/java/org/fraben/qvtoapp/test/BasicTest.java
@@ -0,0 +1,60 @@
+package org.fraben.qvtoapp.test;
+
+import org.testng.annotations.Test;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.*;
+
+import com.beust.jcommander.JCommander;
+import com.beust.jcommander.ParameterException;
+
+import at.ac.wu.nm.qvto.App;
+
+public class BasicTest {
+
+ @BeforeMethod
+ @BeforeClass
+ public void setUp() {
+ // code that will be invoked when this test is instantiated
+ }
+
+ @Test
+ public void aFastTest() {
+ System.out.println("Fast test");
+ //java -jar qvto-app-0.1-SNAPSHOT.jar
+ //-xform
+ //../src/test/resources/qvto4abcmodel/transforms/transformationABC.qvto
+ //-src
+ //../src/test/resources/qvto4abcmodel/modelSource/MMSource.ecore
+ //../src/test/resources/qvto4abcmodel/modelSource/MSource.xmi
+ //-tgt
+ //../src/test/resources/qvto4abcmodel/modelSource/MMSource.ecore
+ //./src/test/resources/qvto4abcmodel/modelTarget/my.xmi
+
+
+ String[] args= new String[8];
+ args[0]="-xform";
+ args[1]="src/test/resources/qvto4abcmodel/transforms/transformationABC.qvto";
+ args[2]="-src";
+ args[3]="src/test/resources/qvto4abcmodel/modelSource/MMSource.ecore";
+ args[4]="src/test/resources/qvto4abcmodel/modelSource/MSource.xmi";
+ args[5]="-tgt";
+ args[6]="src/test/resources/qvto4abcmodel/modelSource/MMSource.ecore";
+ args[7]="src/test/resources/qvto4abcmodel/modelTarget/my.xmi";
+
+
+ App app = new App();
+ JCommander jc = new JCommander(app);
+
+ try {
+ jc.parse(args);
+ /* TODO: check whether -src value is an even list */
+ } catch (ParameterException pe) {
+ System.out.println(pe.getMessage());
+ jc.usage();
+ return;
+ }
+
+ app.build();
+ }
+
+}
diff --git a/qvto-app/src/test/resources/integrationTests/testng.xml b/qvto-app/src/test/resources/integrationTests/testng.xml
new file mode 100644
index 0000000..3ffb292
--- /dev/null
+++ b/qvto-app/src/test/resources/integrationTests/testng.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/qvto-app/src/test/resources/qvto4abcmodel/modelSource/MMSource.ecore b/qvto-app/src/test/resources/qvto4abcmodel/modelSource/MMSource.ecore
new file mode 100644
index 0000000..84c1130
--- /dev/null
+++ b/qvto-app/src/test/resources/qvto4abcmodel/modelSource/MMSource.ecore
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/qvto-app/src/test/resources/qvto4abcmodel/modelSource/MSource.xmi b/qvto-app/src/test/resources/qvto4abcmodel/modelSource/MSource.xmi
new file mode 100644
index 0000000..787250c
--- /dev/null
+++ b/qvto-app/src/test/resources/qvto4abcmodel/modelSource/MSource.xmi
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/qvto-app/src/test/resources/qvto4abcmodel/transforms/transformationABC.qvto b/qvto-app/src/test/resources/qvto4abcmodel/transforms/transformationABC.qvto
new file mode 100644
index 0000000..da30e05
--- /dev/null
+++ b/qvto-app/src/test/resources/qvto4abcmodel/transforms/transformationABC.qvto
@@ -0,0 +1,32 @@
+modeltype mmsource "strict" uses 'http://www.mmsource.fr';
+//modeltype mmsource "strict" uses mmsource('http://www.mmsource.fr');
+
+
+transformation TransformationABC(in source: mmsource, out target:mmsource);
+
+main() {
+ source.rootObjects()[root] . map Root2Root();
+}
+
+mapping root::Root2Root() : root {
+ result.element += self.element ->select(a |a.oclIsKindOf(A))[A]-> map A2B();
+ result.element += self.element ->select(b |b.oclIsKindOf(B))[B]-> map B2B();
+ result.element += self.element ->select(c |c.oclIsKindOf(C))[C]-> map C2C();
+}
+
+
+mapping A::A2B() : B
+ when {self.Id > 0 }
+{
+ result.Id := self.Id;
+ result.b := self.a+" work at FraBen Company";
+}
+
+mapping B::B2B() : B {
+ result.Id := self.Id;
+ result.b := self.b;
+}
+mapping C::C2C() : C {
+ result.Id := self.Id;
+ result.c := self.c;
+}
\ No newline at end of file
diff --git a/qvto-app/src/test/resources/testng.xml b/qvto-app/src/test/resources/testng.xml
new file mode 100644
index 0000000..2acba2f
--- /dev/null
+++ b/qvto-app/src/test/resources/testng.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/qvto-app/src/test/resources/unitTests/testng.xml b/qvto-app/src/test/resources/unitTests/testng.xml
new file mode 100644
index 0000000..6ca4a6e
--- /dev/null
+++ b/qvto-app/src/test/resources/unitTests/testng.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+