Bug 570445 - Add Amlt2SystemC transformation cloud service
Change-Id: I9647619c72cdcc2a1fe2eadecfa825d967541280
Signed-off-by: Dirk Fauth <Dirk.Fauth@de.bosch.com>
diff --git a/manager/Dockerfile b/manager/Dockerfile
index cdef499..069b4e6 100644
--- a/manager/Dockerfile
+++ b/manager/Dockerfile
@@ -1,4 +1,4 @@
-FROM amazoncorretto:8u265
+FROM amazoncorretto:8u275
COPY target/manager-0.0.1-SNAPSHOT.jar app.jar
COPY src/main/resources/services_online.txt services.txt
diff --git a/manager/src/main/resources/services.txt b/manager/src/main/resources/services.txt
index e1513a9..ac82627 100644
--- a/manager/src/main/resources/services.txt
+++ b/manager/src/main/resources/services.txt
@@ -1,13 +1,13 @@
migration;Migration;http://localhost:8080/app4mc/converter/;Migrates an input model file to model version 0.9.9
validation;Validation;http://localhost:8181/app4mc/validation/;Validates the input model file
rtc_analysis;RTC Analysis;http://localhost:8081/app4mc/analysis/;Executes Real-Time Calculus (RTC) techniques on a provided Amalthea model to analyse timing properties of heterogeneous embedded systems
-rtc_interpreter;RTC Interpreter;http://localhost:8082/app4mc/interpreter/rtc/;Converts the results of a RTC Analysis into an input for the Chart Visualizer
-label_core_interpreter;Label per Core Interpreter;http://localhost:8084/app4mc/interpreter/label-per-core/;Parses an Amalthea model to inspect label access operations per core
-label_memory_interpreter;Label per Memory Interpreter;http://localhost:8084/app4mc/interpreter/label-per-memory/;Parses an Amalthea model to inspect label access operations per memory
-label_task_interpreter;Label per Task Interpreter;http://localhost:8084/app4mc/interpreter/label-per-task/;Parses an Amalthea model to inspect label access operations per task
-label_size_interpreter;Label Size Interpreter;http://localhost:8084/app4mc/interpreter/label-size/;Parses an Amalthea model to inspect the number of labels grouped by size
+rtc_interpreter;RTC Evaluation;http://localhost:8082/app4mc/interpreter/rtc/;Converts the results of a RTC Analysis into an input for the Chart Visualizer
+label_core_interpreter;Label per Core Evaluation;http://localhost:8084/app4mc/interpreter/label-per-core/;Parses an Amalthea model to inspect label access operations per core
+label_memory_interpreter;Label per Memory Evaluation;http://localhost:8084/app4mc/interpreter/label-per-memory/;Parses an Amalthea model to inspect label access operations per memory
+label_task_interpreter;Label per Task Evaluation;http://localhost:8084/app4mc/interpreter/label-per-task/;Parses an Amalthea model to inspect label access operations per task
+label_size_interpreter;Label Size Evaluation;http://localhost:8084/app4mc/interpreter/label-size/;Parses an Amalthea model to inspect the number of labels grouped by size
chart_visualizer;Chart Visualizer;http://localhost:8083/app4mc/visualization/barchart/;Visualization of interpreter results
-amlt2inchron;Amalthea 2 INCHRON;https://am2inc.dev1.inchron.de/projects;Transforms an Amalthea model to an INCHRON model
-amlt2systemc;Amalthea 2 SystemC;http://localhost:8282/app4mc/amlt2systemc/;Transforms an Amalthea model to simulation code
+amlt2inchron;Amalthea -> INCHRON;https://am2inc.dev1.inchron.de/projects;Transforms an Amalthea model to an INCHRON model
+amlt2systemc;Amalthea -> SystemC;http://localhost:8282/app4mc/amlt2systemc/;Transforms an Amalthea model to simulation code
app4mc_sim;APP4MC.Sim;http://139.30.201.29:2323/app4mc/simulation/;Executes simulation and generates a BTF traces
inchron_btf_visualization;INCHRON BTF Trace Visualization;https://trace.dev1.inchron.de/traces/;Visualization of trace data provided by INCHRON
\ No newline at end of file
diff --git a/manager/src/main/resources/services_online.txt b/manager/src/main/resources/services_online.txt
index b608a29..85f8073 100644
--- a/manager/src/main/resources/services_online.txt
+++ b/manager/src/main/resources/services_online.txt
@@ -1,13 +1,13 @@
migration;Migration;https://app4mc.eclipseprojects.io/app4mc/converter/;Migrates an input model file to model version 0.9.9
validation;Validation;https://app4mc.eclipseprojects.io/app4mc/validation/;Validates the input model file
rtc_analysis;RTC Analysis;https://app4mc.eclipseprojects.io/app4mc/analysis/;Executes Real-Time Calculus (RTC) techniques on a provided Amalthea model to analyse timing properties of heterogeneous embedded systems
-rtc_interpreter;RTC Interpreter;https://app4mc.eclipseprojects.io/app4mc/interpreter/rtc/;Converts the results of a RTC Analysis into an input for the Chart Visualizer
-label_core_interpreter;Label per Core Interpreter;https://app4mc.eclipseprojects.io/app4mc/interpreter/label-per-core/;Parses an Amalthea model to inspect label access operations per core
-label_memory_interpreter;Label per Memory Interpreter;https://app4mc.eclipseprojects.io/app4mc/interpreter/label-per-memory/;Parses an Amalthea model to inspect label access operations per memory
-label_task_interpreter;Label per Task Interpreter;https://app4mc.eclipseprojects.io/app4mc/interpreter/label-per-task/;Parses an Amalthea model to inspect label access operations per task
-label_size_interpreter;Label Size Interpreter;https://app4mc.eclipseprojects.io/app4mc/interpreter/label-size/;Parses an Amalthea model to inspect the number of labels grouped by size
+rtc_interpreter;RTC Evaluation;https://app4mc.eclipseprojects.io/app4mc/interpreter/rtc/;Converts the results of a RTC Analysis into an input for the Chart Visualizer
+label_core_interpreter;Label per Core Evaluation;https://app4mc.eclipseprojects.io/app4mc/interpreter/label-per-core/;Parses an Amalthea model to inspect label access operations per core
+label_memory_interpreter;Label per Memory Evaluation;https://app4mc.eclipseprojects.io/app4mc/interpreter/label-per-memory/;Parses an Amalthea model to inspect label access operations per memory
+label_task_interpreter;Label per Task Evaluation;https://app4mc.eclipseprojects.io/app4mc/interpreter/label-per-task/;Parses an Amalthea model to inspect label access operations per task
+label_size_interpreter;Label Size Evaluation;https://app4mc.eclipseprojects.io/app4mc/interpreter/label-size/;Parses an Amalthea model to inspect the number of labels grouped by size
chart_visualizer;Chart Visualizer;https://app4mc.eclipseprojects.io/app4mc/visualization/barchart/;Visualization of interpreter results
-amlt2inchron;Amalthea 2 INCHRON;https://am2inc.dev1.inchron.de/projects;Transforms an Amalthea model to an INCHRON model
-amlt2systemc;Amalthea 2 SystemC;https://app4mc.eclipseprojects.io/app4mc/amlt2systemc/;Transforms an Amalthea model to simulation code
+amlt2inchron;Amalthea -> INCHRON;https://am2inc.dev1.inchron.de/projects;Transforms an Amalthea model to an INCHRON model
+amlt2systemc;Amalthea -> SystemC;https://app4mc.eclipseprojects.io/app4mc/amlt2systemc/;Transforms an Amalthea model to simulation code
app4mc_sim;APP4MC.Sim;http://139.30.201.29:2323/app4mc/simulation/;Executes simulation and generates a BTF traces
inchron_btf_visualization;INCHRON BTF Trace Visualization;https://trace.dev1.inchron.de/traces/;Visualization of trace data provided by INCHRON
\ No newline at end of file
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/.gitignore b/org.eclipse.app4m.amlt2systemc.cloud/.gitignore
new file mode 100644
index 0000000..785e40b
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/.gitignore
@@ -0,0 +1,8 @@
+.metadata/
+
+# Eclipse target directories
+bin/
+target/
+
+#pomless tycho fragments
+pom.tycho
\ No newline at end of file
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/.mvn/extensions.xml b/org.eclipse.app4m.amlt2systemc.cloud/.mvn/extensions.xml
new file mode 100644
index 0000000..c8b79d9
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/.mvn/extensions.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<extensions>
+ <extension>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-pomless</artifactId>
+ <version>1.7.0</version>
+ </extension>
+</extensions>
\ No newline at end of file
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/.project b/org.eclipse.app4m.amlt2systemc.cloud/.project
new file mode 100644
index 0000000..4052477
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.amlt2systemc.cloud</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/.settings/org.eclipse.core.resources.prefs b/org.eclipse.app4m.amlt2systemc.cloud/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.app4m.amlt2systemc.cloud/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/Dockerfile b/org.eclipse.app4m.amlt2systemc.cloud/Dockerfile
new file mode 100644
index 0000000..0eefec7
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/Dockerfile
@@ -0,0 +1,6 @@
+FROM amazoncorretto:8u275
+
+ADD org.eclipse.app4mc.amlt2systemc.cloud.product/target/products/org.eclipse.app4mc.amlt2systemc.cloud.product-linux.gtk.x86_64.tar.gz org.eclipse.app4mc.amlt2systemc.cloud.product
+RUN chmod +x org.eclipse.app4mc.amlt2systemc.cloud.product/eclipse
+
+ENTRYPOINT org.eclipse.app4mc.amlt2systemc.cloud.product/eclipse
\ No newline at end of file
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/README.txt b/org.eclipse.app4m.amlt2systemc.cloud/README.txt
new file mode 100644
index 0000000..faa7d36
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/README.txt
@@ -0,0 +1,21 @@
+To build you first need to checkout
+https://gitlab.idial.institute/panorama.systemc.group/amalthea2systemc.transformation
+
+Start the build of this repository via
+ mvn clean verify
+
+Copy the result from
+ releng/org.eclipse.app4mc.amlt2systemc.p2repo/target/repository
+to
+ C:/Development/PANORAMA/org.eclipse.app4mc.amlt2systemc.p2repo/repository
+
+Alternatively copy it to any place you like and edit the location in the target file
+ org.eclipse.app4mc.amlt2systemc.cloud.target/org.eclipse.app4mc.amlt2systemc.cloud.target.target
+
+ (if you are familiar with the Target Platform DSL, edit the .tpd file and generate the .target file)
+
+Run the build from the root directory via
+ mvn clean verify
+
+Find the result in
+ org.eclipse.app4mc.amlt2systemc.cloud.product/target/products
\ No newline at end of file
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/.classpath b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/.project b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/.project
new file mode 100644
index 0000000..4bd5e22
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.amlt2systemc.cloud.http</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..9f6ece8
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/META-INF/MANIFEST.MF b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1871ebf
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: APP4MC AMLT2SystemC Transformation HTTP Service
+Bundle-SymbolicName: org.eclipse.app4mc.amlt2systemc.cloud.http
+Bundle-Version: 0.1.0.qualifier
+Automatic-Module-Name: org.eclipse.app4mc.validation.cloud.http
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: com.fasterxml.jackson.core;version="2.9.9",
+ com.fasterxml.jackson.databind;version="2.9.93",
+ javax.servlet;version="3.1.0",
+ javax.servlet.http;version="3.1.0",
+ org.osgi.framework;version="1.9.0",
+ org.osgi.service.component.annotations;version="1.3.0";resolution:=optional,
+ org.osgi.service.event;version="1.4.0",
+ org.slf4j;version="1.7.2"
+Require-Bundle: org.eclipse.app4mc.amlt2systemc.m2t;bundle-version="0.1.0",
+ org.eclipse.app4mc.transformation;bundle-version="0.1.0"
+Bundle-ActivationPolicy: lazy
+Service-Component: OSGI-INF/org.eclipse.app4mc.amlt2systemc.cloud.http.TransformationServlet.xml
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/OSGI-INF/org.eclipse.app4mc.amlt2systemc.cloud.http.TransformationServlet.xml b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/OSGI-INF/org.eclipse.app4mc.amlt2systemc.cloud.http.TransformationServlet.xml
new file mode 100644
index 0000000..108350a
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/OSGI-INF/org.eclipse.app4mc.amlt2systemc.cloud.http.TransformationServlet.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0" activate="activate" deactivate="deactivate" name="org.eclipse.app4mc.amlt2systemc.cloud.http.TransformationServlet">
+ <property name="osgi.http.whiteboard.servlet.pattern" value="/app4mc/amlt2systemc/*"/>
+ <property name="osgi.http.whiteboard.servlet.multipart.enabled" value="true"/>
+ <service scope="prototype">
+ <provide interface="javax.servlet.Servlet"/>
+ </service>
+ <reference cardinality="1..1" field="processor" interface="org.eclipse.app4mc.transformation.TransformationProcessor" name="processor"/>
+ <implementation class="org.eclipse.app4mc.amlt2systemc.cloud.http.TransformationServlet"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/about.html b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/about.html
new file mode 100644
index 0000000..f87aeb3
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/about.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>About</title>
+</head>
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ ("Content"). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 ("EPL"). A copy of the EPL is
+ available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, "Program" will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ ("Redistributor") and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ </p>
+
+</body>
+</html>
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/build.properties b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/build.properties
new file mode 100644
index 0000000..79789f3
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/,\
+ about.html,\
+ epl-2.0.html
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/epl-2.0.html b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Eclipse Public License - Version 2.0</title>
+ <style type="text/css">
+ body {
+ margin: 1.5em 3em;
+ }
+ h1{
+ font-size:1.5em;
+ }
+ h2{
+ font-size:1em;
+ margin-bottom:0.5em;
+ margin-top:1em;
+ }
+ p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ ul, ol{
+ list-style-type:none;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>Eclipse Public License - v 2.0</h1>
+ <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+ PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION
+ OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+ </p>
+ <h2 id="definitions">1. DEFINITIONS</h2>
+ <p>“Contribution” means:</p>
+ <ul>
+ <li>a) in the case of the initial Contributor, the initial content
+ Distributed under this Agreement, and
+ </li>
+ <li>
+ b) in the case of each subsequent Contributor:
+ <ul>
+ <li>i) changes to the Program, and</li>
+ <li>ii) additions to the Program;</li>
+ </ul>
+ where such changes and/or additions to the Program originate from
+ and are Distributed by that particular Contributor. A Contribution
+ “originates” from a Contributor if it was added to the Program by such
+ Contributor itself or anyone acting on such Contributor's behalf.
+ Contributions do not include changes or additions to the Program that
+ are not Modified Works.
+ </li>
+ </ul>
+ <p>“Contributor” means any person or entity that Distributes the Program.</p>
+ <p>“Licensed Patents” mean patent claims licensable by a Contributor which
+ are necessarily infringed by the use or sale of its Contribution alone
+ or when combined with the Program.
+ </p>
+ <p>“Program” means the Contributions Distributed in accordance with this
+ Agreement.
+ </p>
+ <p>“Recipient” means anyone who receives the Program under this Agreement
+ or any Secondary License (as applicable), including Contributors.
+ </p>
+ <p>“Derivative Works” shall mean any work, whether in Source Code or other
+ form, that is based on (or derived from) the Program and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship.
+ </p>
+ <p>“Modified Works” shall mean any work in Source Code or other form that
+ results from an addition to, deletion from, or modification of the
+ contents of the Program, including, for purposes of clarity any new file
+ in Source Code form that contains any contents of the Program. Modified
+ Works shall not include works that contain only declarations, interfaces,
+ types, classes, structures, or files of the Program solely in each case
+ in order to link to, bind by name, or subclass the Program or Modified
+ Works thereof.
+ </p>
+ <p>“Distribute” means the acts of a) distributing or b) making available
+ in any manner that enables the transfer of a copy.
+ </p>
+ <p>“Source Code” means the form of a Program preferred for making
+ modifications, including but not limited to software source code,
+ documentation source, and configuration files.
+ </p>
+ <p>“Secondary License” means either the GNU General Public License,
+ Version 2.0, or any later versions of that license, including any
+ exceptions or additional permissions as identified by the initial
+ Contributor.
+ </p>
+ <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+ <ul>
+ <li>a) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare Derivative Works of, publicly display,
+ publicly perform, Distribute and sublicense the Contribution of such
+ Contributor, if any, and such Derivative Works.
+ </li>
+ <li>b) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such Contributor,
+ if any, in Source Code or other form. This patent license shall
+ apply to the combination of the Contribution and the Program if,
+ at the time the Contribution is added by the Contributor, such
+ addition of the Contribution causes such combination to be covered
+ by the Licensed Patents. The patent license shall not apply to any
+ other combinations which include the Contribution. No hardware per
+ se is licensed hereunder.
+ </li>
+ <li>c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity.
+ Each Contributor disclaims any liability to Recipient for claims
+ brought by any other entity based on infringement of intellectual
+ property rights or otherwise. As a condition to exercising the rights
+ and licenses granted hereunder, each Recipient hereby assumes sole
+ responsibility to secure any other intellectual property rights needed,
+ if any. For example, if a third party patent license is required to
+ allow Recipient to Distribute the Program, it is Recipient's
+ responsibility to acquire that license before distributing the Program.
+ </li>
+ <li>d) Each Contributor represents that to its knowledge it has sufficient
+ copyright rights in its Contribution, if any, to grant the copyright
+ license set forth in this Agreement.
+ </li>
+ <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+ makes additional grants to any Recipient (other than those set forth
+ in this Agreement) as a result of such Recipient's receipt of the
+ Program under the terms of a Secondary License (if permitted under
+ the terms of Section 3).
+ </li>
+ </ul>
+ <h2 id="requirements">3. REQUIREMENTS</h2>
+ <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+ <ul>
+ <li>a) the Program must also be made available as Source Code, in
+ accordance with section 3.2, and the Contributor must accompany
+ the Program with a statement that the Source Code for the Program
+ is available under this Agreement, and informs Recipients how to
+ obtain it in a reasonable manner on or through a medium customarily
+ used for software exchange; and
+ </li>
+ <li>
+ b) the Contributor may Distribute the Program under a license
+ different than this Agreement, provided that such license:
+ <ul>
+ <li>i) effectively disclaims on behalf of all other Contributors all
+ warranties and conditions, express and implied, including warranties
+ or conditions of title and non-infringement, and implied warranties
+ or conditions of merchantability and fitness for a particular purpose;
+ </li>
+ <li>ii) effectively excludes on behalf of all other Contributors all
+ liability for damages, including direct, indirect, special, incidental
+ and consequential damages, such as lost profits;
+ </li>
+ <li>iii) does not attempt to limit or alter the recipients' rights in the
+ Source Code under section 3.2; and
+ </li>
+ <li>iv) requires any subsequent distribution of the Program by any party
+ to be under a license that satisfies the requirements of this section 3.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <p>3.2 When the Program is Distributed as Source Code:</p>
+ <ul>
+ <li>a) it must be made available under this Agreement, or if the Program (i)
+ is combined with other material in a separate file or files made available
+ under a Secondary License, and (ii) the initial Contributor attached to
+ the Source Code the notice described in Exhibit A of this Agreement,
+ then the Program may be made available under the terms of such
+ Secondary Licenses, and
+ </li>
+ <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+ </ul>
+ <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+ attribution notices, disclaimers of warranty, or limitations of liability
+ (‘notices’) contained within the Program from any copy of the Program which
+ they Distribute, provided that Contributors may add their own appropriate
+ notices.
+ </p>
+ <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+ <p>Commercial distributors of software may accept certain responsibilities
+ with respect to end users, business partners and the like. While this
+ license is intended to facilitate the commercial use of the Program, the
+ Contributor who includes the Program in a commercial product offering should
+ do so in a manner which does not create potential liability for other
+ Contributors. Therefore, if a Contributor includes the Program in a
+ commercial product offering, such Contributor (“Commercial Contributor”)
+ hereby agrees to defend and indemnify every other Contributor
+ (“Indemnified Contributor”) against any losses, damages and costs
+ (collectively “Losses”) arising from claims, lawsuits and other legal actions
+ brought by a third party against the Indemnified Contributor to the extent
+ caused by the acts or omissions of such Commercial Contributor in connection
+ with its distribution of the Program in a commercial product offering.
+ The obligations in this section do not apply to any claims or Losses relating
+ to any actual or alleged intellectual property infringement. In order to
+ qualify, an Indemnified Contributor must: a) promptly notify the
+ Commercial Contributor in writing of such claim, and b) allow the Commercial
+ Contributor to control, and cooperate with the Commercial Contributor in,
+ the defense and any related settlement negotiations. The Indemnified
+ Contributor may participate in any such claim at its own expense.
+ </p>
+ <p>For example, a Contributor might include the Program
+ in a commercial product offering, Product X. That Contributor is then a
+ Commercial Contributor. If that Commercial Contributor then makes performance
+ claims, or offers warranties related to Product X, those performance claims
+ and warranties are such Commercial Contributor's responsibility alone.
+ Under this section, the Commercial Contributor would have to defend claims
+ against the other Contributors related to those performance claims and
+ warranties, and if a court requires any other Contributor to pay any damages
+ as a result, the Commercial Contributor must pay those damages.
+ </p>
+ <h2 id="warranty">5. NO WARRANTY</h2>
+ <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+ BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+ WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+ solely responsible for determining the appropriateness of using and
+ distributing the Program and assumes all risks associated with its
+ exercise of rights under this Agreement, including but not limited to the
+ risks and costs of program errors, compliance with applicable laws, damage
+ to or loss of data, programs or equipment, and unavailability or
+ interruption of operations.
+ </p>
+ <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+ <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+ BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+ LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+ GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ </p>
+ <h2 id="general">7. GENERAL</h2>
+ <p>If any provision of this Agreement is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability of the
+ remainder of the terms of this Agreement, and without further action by the
+ parties hereto, such provision shall be reformed to the minimum extent
+ necessary to make such provision valid and enforceable.
+ </p>
+ <p>If Recipient institutes patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+ (excluding combinations of the Program with other software or hardware)
+ infringes such Recipient's patent(s), then such Recipient's rights granted
+ under Section 2(b) shall terminate as of the date such litigation is filed.
+ </p>
+ <p>All Recipient's rights under this Agreement shall terminate if it fails to
+ comply with any of the material terms or conditions of this Agreement and
+ does not cure such failure in a reasonable period of time after becoming
+ aware of such noncompliance. If all Recipient's rights under this Agreement
+ terminate, Recipient agrees to cease use and distribution of the Program
+ as soon as reasonably practicable. However, Recipient's obligations under
+ this Agreement and any licenses granted by Recipient relating to the
+ Program shall continue and survive.
+ </p>
+ <p>Everyone is permitted to copy and distribute copies of this Agreement,
+ but in order to avoid inconsistency the Agreement is copyrighted and may
+ only be modified in the following manner. The Agreement Steward reserves
+ the right to publish new versions (including revisions) of this Agreement
+ from time to time. No one other than the Agreement Steward has the right
+ to modify this Agreement. The Eclipse Foundation is the initial Agreement
+ Steward. The Eclipse Foundation may assign the responsibility to serve as
+ the Agreement Steward to a suitable separate entity. Each new version of
+ the Agreement will be given a distinguishing version number. The Program
+ (including Contributions) may always be Distributed subject to the version
+ of the Agreement under which it was received. In addition, after a new
+ version of the Agreement is published, Contributor may elect to Distribute
+ the Program (including its Contributions) under the new version.
+ </p>
+ <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+ receives no rights or licenses to the intellectual property of any
+ Contributor under this Agreement, whether expressly, by implication,
+ estoppel or otherwise. All rights in the Program not expressly granted
+ under this Agreement are reserved. Nothing in this Agreement is intended
+ to be enforceable by any entity that is not a Contributor or Recipient.
+ No third-party beneficiary rights are created under this Agreement.
+ </p>
+ <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
+ <p>“This Source Code may also be made available under the following
+ Secondary Licenses when the conditions for such availability set forth
+ in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+ version(s), and exceptions or additional permissions here}.”
+ </p>
+ <blockquote>
+ <p>Simply including a copy of this Agreement, including this Exhibit A
+ is not sufficient to license the Source Code under Secondary Licenses.
+ </p>
+ <p>If it is not possible or desirable to put the notice in a particular file,
+ then You may include the notice in a location (such as a LICENSE file in a
+ relevant directory) where a recipient would be likely to look for
+ such a notice.
+ </p>
+ <p>You may add additional accurate notices of copyright ownership.</p>
+ </blockquote>
+ </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/src/org/eclipse/app4mc/amlt2systemc/cloud/http/TransformationServlet.java b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/src/org/eclipse/app4mc/amlt2systemc/cloud/http/TransformationServlet.java
new file mode 100644
index 0000000..2051956
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.http/src/org/eclipse/app4mc/amlt2systemc/cloud/http/TransformationServlet.java
@@ -0,0 +1,404 @@
+/*********************************************************************************
+ * Copyright (c) 2020 Robert Bosch GmbH and others.
+ *
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+package org.eclipse.app4mc.amlt2systemc.cloud.http;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Comparator;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.stream.Stream;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.Part;
+
+import org.eclipse.app4mc.transformation.ServiceConstants;
+import org.eclipse.app4mc.transformation.TransformationProcessor;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ServiceScope;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventConstants;
+import org.osgi.service.event.EventHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Component(
+ service=Servlet.class,
+ property= {
+ "osgi.http.whiteboard.servlet.pattern=/app4mc/amlt2systemc/*",
+ "osgi.http.whiteboard.servlet.multipart.enabled=true"
+ },
+ scope=ServiceScope.PROTOTYPE)
+public class TransformationServlet extends HttpServlet {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(TransformationServlet.class);
+
+ private static final long serialVersionUID = 1L;
+
+ private static final String TEMP_DIR_PREFIX = "app4mc_amlt2systemc_";
+
+ private static final String PROGRESS_MARKER = "in_progress";
+ private static final String ERROR_MARKER = "error";
+ private static final String FINISHED_MARKER = "finished";
+
+ private static final String ERROR_FILE = "error.txt";
+
+ private final String defaultBaseDir = System.getProperty("java.io.tmpdir");
+
+ private ExecutorService executor = Executors.newFixedThreadPool(1);
+
+ @Reference
+ private TransformationProcessor processor;
+
+ private ServiceRegistration<?> eventHandler;
+
+ @Activate
+ void activate(BundleContext bc) {
+ Hashtable<String, Object> properties = new Hashtable<>();
+ properties.put(EventConstants.EVENT_TOPIC, "org/osgi/service/cm/ConfigurationEvent/CM_DELETED");
+ // register the EventHandler service
+ this.eventHandler = bc.registerService(
+ EventHandler.class.getName(),
+ new EventHandler() {
+
+ @Override
+ public void handleEvent(Event event) {
+ if (event.getProperty("cm.factoryPid").equals(ServiceConstants.SESSION_CONFIGURATION_PID)) {
+ String pid = event.getProperty("cm.pid").toString();
+ String uuid = pid.substring(pid.indexOf('~') + 1);
+ ServletContext context = getServletContext();
+ LOGGER.debug("Finish transformation session with id {}", uuid);
+ if (!ERROR_MARKER.equals(getRegistry(context).get(uuid))) {
+ getRegistry(context).put(uuid, FINISHED_MARKER);
+ }
+ }
+ }
+ },
+ properties);
+ }
+
+ @Deactivate
+ void deactivate() {
+ if (this.eventHandler != null) {
+ // ensure that no event handler is left in the registry
+ this.eventHandler.unregister();
+ }
+ }
+
+ private String[] validatePath(String pathInfo) {
+ // request to /app4mc/amlt2systemc
+ if (pathInfo == null || pathInfo.equals("/")){
+ return null;
+ }
+
+ if (pathInfo.startsWith("/")) {
+ pathInfo.substring(1);
+ }
+
+ String[] splitPath = pathInfo.split("/");
+
+ if (splitPath.length > 3) {
+ return null;
+ }
+
+ return splitPath;
+ }
+
+ // POST /app4mc/amlt2systemc
+
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+
+ String[] splitPath = validatePath(request.getPathInfo());
+
+ String requestUrl = request.getRequestURL().toString();
+ if (requestUrl.endsWith("/")) {
+ requestUrl = requestUrl.substring(0, requestUrl.length() - 1);
+ }
+
+ if (splitPath != null && splitPath.length != 1) {
+ response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid path");
+ response.addHeader("Link", "<" + requestUrl + ">;rel=\"self\"");
+ return;
+ }
+
+ Part part = request.getPart("file");
+ if (part != null && part.getSubmittedFileName() != null && part.getSubmittedFileName().length() > 0) {
+ String filename = part.getSubmittedFileName();
+ try (InputStream is = part.getInputStream()) {
+ Path tempFolderPath = Files.createTempDirectory(TEMP_DIR_PREFIX);
+
+ // extract uuid from pathname
+ String uuid = tempFolderPath.toString().substring(tempFolderPath.toString().lastIndexOf('_') + 1);
+
+ Path uploaded = Paths.get(tempFolderPath.toString(), filename);
+ Files.copy(is, uploaded);
+
+ if (Files.exists(uploaded)) {
+ // mark uuid in progress
+ ServletContext context = getServletContext();
+ Map<String, String> registry = getRegistry(context);
+ registry.put(uuid, PROGRESS_MARKER);
+
+ // trigger asynchronous processing
+ executor.execute(() -> {
+
+ try {
+ Properties properties = new Properties();
+ properties.put("input_models_folder", tempFolderPath.toString());
+ properties.put("output_folder", Paths.get(tempFolderPath.toString(), "output"));
+ properties.put("m2tTransformers", "APP4MCSIM");
+ properties.put(ServiceConstants.SESSION_ID, uuid);
+
+ processor.startTransformation(properties);
+ } catch (Exception e) {
+ LOGGER.error("Failure in transformation", e);
+ registry.put(uuid, ERROR_MARKER);
+ error(tempFolderPath, "Failure in transformation", e);
+ }
+ });
+
+ // return uuid
+ response.setStatus(HttpServletResponse.SC_CREATED);
+ response.addHeader("Location", requestUrl + "/" + uuid);
+ response.addHeader("Link", "<" + requestUrl + ">;rel=\"self\"");
+ response.addHeader("Link", "<" + requestUrl + "/" + uuid + ">;rel=\"status\"");
+ response.setContentType("application/json");
+ response.getWriter().write(uuid);
+ return;
+ } else {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND, "Model file upload failed!");
+ response.addHeader("Link", "<" + requestUrl + ">;rel=\"self\"");
+ return;
+ }
+ }
+ }
+
+ // bad request without file
+ response.sendError(HttpServletResponse.SC_BAD_REQUEST, "No model file provided!");
+ response.addHeader("Link", "<" + request.getRequestURL() + ">;rel=\"self\"");
+ return;
+ }
+
+ // GET /app4mc/amlt2systemc/{id}
+ // GET /app4mc/amlt2systemc/{id}/download
+ // GET /app4mc/amlt2systemc/{id}/error
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+
+ response.addHeader("Link", "<" + request.getRequestURL() + ">;rel=\"self\"");
+
+ String[] splitPath = validatePath(request.getPathInfo());
+
+ if (splitPath == null) {
+ response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid path");
+ return;
+ }
+
+ if (splitPath.length == 2) {
+ response.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate");
+
+ String uuid = splitPath[1];
+
+ // check for the in_progress marker file
+ Path tempFolderPath = Paths.get(defaultBaseDir, TEMP_DIR_PREFIX + uuid);
+ if (!Files.exists(tempFolderPath)) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ }
+
+ boolean hasErrorFile = false;
+ try (Stream<Path> files = Files.list(tempFolderPath)) {
+ hasErrorFile = files.anyMatch(path -> path.endsWith(ERROR_FILE));
+ }
+
+ String status = getRegistry(getServletContext()).get(uuid);
+ if (PROGRESS_MARKER.equals(status)) {
+ response.setStatus(HttpServletResponse.SC_ACCEPTED);
+ return;
+ } else if (ERROR_MARKER.equals(status) || hasErrorFile) {
+ // processing finished with error
+ response.setStatus(HttpServletResponse.SC_NO_CONTENT);
+ response.addHeader("Link", "<" + request.getRequestURL() + "/error>;rel=\"error\"");
+ return;
+ }
+
+ // processing is finished
+ response.setStatus(HttpServletResponse.SC_OK);
+ response.addHeader("Link", "<" + request.getRequestURL() + "/download>;rel=\"result\"");
+ return;
+
+ } else if (splitPath.length == 3 && "download".equals(splitPath[2])) {
+ String status = getRegistry(getServletContext()).get(splitPath[1]);
+
+ if (PROGRESS_MARKER.equals(status)) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND, "Process is still in progresss");
+ return;
+ }
+
+ Path tempFolderPath = Paths.get(defaultBaseDir, TEMP_DIR_PREFIX + splitPath[1]);
+
+ if (!Files.exists(tempFolderPath)) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ }
+
+ response.setStatus(HttpServletResponse.SC_OK);
+
+ Path path = Paths.get(tempFolderPath.toString(), "output", "m2t_output_text_files", "result.zip");
+ if (!Files.exists(path)) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND, "No transformation result available");
+ return;
+ }
+
+ response.addHeader("Link", "<" + request.getRequestURL().substring(0, request.getRequestURL().lastIndexOf("/")) + ">;rel=\"delete\"");
+ response.setHeader("Content-Disposition","attachment; filename=\"" + path.toFile().getName() + "\"");
+ response.setContentType("text/plain");
+
+ try (InputStream in = Files.newInputStream(path);
+ OutputStream out = response.getOutputStream()) {
+
+ byte[] buffer = new byte[4096];
+
+ int numBytesRead;
+ while ((numBytesRead = in.read(buffer)) > 0) {
+ out.write(buffer, 0, numBytesRead);
+ }
+ }
+ return;
+ } else if (splitPath.length == 3 && "error".equals(splitPath[2])) {
+ String uuid = splitPath[1];
+ Path tempFolderPath = Paths.get(defaultBaseDir, TEMP_DIR_PREFIX + uuid);
+
+ if (!Files.exists(tempFolderPath)) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ }
+
+ // if there is no error file, the error resource is 404
+ boolean hasErrorFile = false;
+ try (Stream<Path> files = Files.list(tempFolderPath)) {
+ hasErrorFile = files.anyMatch(path -> path.endsWith(ERROR_FILE));
+ }
+
+ if (!hasErrorFile) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND, "No error occured");
+ return;
+ }
+
+ Path errorFilePath = Paths.get(tempFolderPath.toString(), ERROR_FILE);
+
+ response.setStatus(HttpServletResponse.SC_OK);
+ response.addHeader("Link", "<" + request.getRequestURL().substring(0, request.getRequestURL().lastIndexOf("/")) + ">;rel=\"delete\"");
+ response.setHeader("Content-Disposition", "attachment; filename=\"" + errorFilePath.toFile().getName() + "\"");
+ response.setContentType("text/plain");
+
+ try (InputStream in = Files.newInputStream(errorFilePath);
+ OutputStream out = response.getOutputStream()) {
+
+ byte[] buffer = new byte[4096];
+
+ int numBytesRead;
+ while ((numBytesRead = in.read(buffer)) > 0) {
+ out.write(buffer, 0, numBytesRead);
+ }
+ }
+ return;
+ }
+
+ // no content
+ response.setStatus(HttpServletResponse.SC_NO_CONTENT);
+ return;
+ }
+
+
+ // DELETE /app4mc/amlt2systemc/{id}
+
+ @Override
+ protected void doDelete(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+
+ String[] splitPath = validatePath(request.getPathInfo());
+
+ if (splitPath == null || splitPath.length != 2) {
+ response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid path");
+ return;
+ }
+
+ String uuid = splitPath[1];
+
+ Path path = Paths.get(defaultBaseDir, TEMP_DIR_PREFIX + uuid);
+
+ if (Files.exists(path)) {
+ Files.walk(path)
+ .sorted(Comparator.reverseOrder())
+ .map(Path::toFile)
+ .forEach(File::delete);
+
+ response.setStatus(HttpServletResponse.SC_OK);
+ } else {
+ // not found
+ response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ }
+
+ return;
+ }
+
+ private void error(Path resultFolder, String message, Exception exception) {
+ try {
+ Path errorFilePath = Files.createFile(Paths.get(resultFolder.toString(), ERROR_FILE));
+ try (PrintWriter writer = new PrintWriter(Files.newOutputStream(errorFilePath))) {
+ writer.append(message).append(System.lineSeparator());
+ if (exception != null) {
+ exception.printStackTrace(writer);
+ }
+ }
+
+ } catch (IOException e) {
+ LOGGER.error("Failed to write error.txt", e);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private static synchronized Map<String, String> getRegistry(ServletContext context) {
+ if (context.getAttribute("_REGISTRY") == null) {
+ context.setAttribute("_REGISTRY", new ConcurrentHashMap<String, String>());
+ }
+ return (Map<String, String>) context.getAttribute("_REGISTRY");
+ }
+
+}
\ No newline at end of file
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.product/.project b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.product/.project
new file mode 100644
index 0000000..f967aa0
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.product/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.amlt2systemc.cloud.product</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.product/about.html b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.product/about.html
new file mode 100644
index 0000000..164f781
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.product/about.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>About</title>
+</head>
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ ("Content"). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 ("EPL"). A copy of the EPL is
+ available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, "Program" will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ ("Redistributor") and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ </p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.product/amlt2systemc_service.product b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.product/amlt2systemc_service.product
new file mode 100644
index 0000000..4715882
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.product/amlt2systemc_service.product
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product uid="org.eclipse.app4mc.amlt2systemc.cloud.product" version="0.1.0.qualifier" useFeatures="false" includeLaunchers="true">
+
+ <configIni use="default">
+ </configIni>
+
+ <launcherArgs>
+ <programArgs>-console
+ </programArgs>
+ <vmArgs>-Dorg.osgi.service.http.port=8282 -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dlog4j.configuration=headless_log4j.xml -Dorg.eclipse.jetty.server.Request.maxFormContentSize=100000000
+ </vmArgs>
+ <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
+ </vmArgsMac>
+ </launcherArgs>
+
+ <launcher>
+ <win useIco="false">
+ <bmp/>
+ </win>
+ </launcher>
+
+ <vm>
+ </vm>
+
+ <plugins>
+ <plugin id="com.fasterxml.jackson.core.jackson-annotations"/>
+ <plugin id="com.fasterxml.jackson.core.jackson-core"/>
+ <plugin id="com.fasterxml.jackson.core.jackson-databind"/>
+ <plugin id="com.google.guava"/>
+ <plugin id="com.google.inject"/>
+ <plugin id="com.ibm.icu"/>
+ <plugin id="javax.inject"/>
+ <plugin id="javax.servlet"/>
+ <plugin id="javax.xml"/>
+ <plugin id="org.apache.commons.cli"/>
+ <plugin id="org.apache.commons.fileupload"/>
+ <plugin id="org.apache.commons.io"/>
+ <plugin id="org.apache.commons.lang"/>
+ <plugin id="org.apache.commons.logging"/>
+ <plugin id="org.apache.commons.math3"/>
+ <plugin id="org.apache.felix.gogo.command"/>
+ <plugin id="org.apache.felix.gogo.runtime"/>
+ <plugin id="org.apache.felix.gogo.shell"/>
+ <plugin id="org.apache.felix.scr"/>
+ <plugin id="org.apache.log4j"/>
+ <plugin id="org.apache.xerces"/>
+ <plugin id="org.apache.xml.resolver"/>
+ <plugin id="org.apache.xml.serializer"/>
+ <plugin id="org.eclipse.app4mc.amalthea.model"/>
+ <plugin id="org.eclipse.app4mc.amlt2systemc.cloud.http"/>
+ <plugin id="org.eclipse.app4mc.amlt2systemc.m2t"/>
+ <plugin id="org.eclipse.app4mc.transformation"/>
+ <plugin id="org.eclipse.app4mc.transformation.log4j.configuration" fragment="true"/>
+ <plugin id="org.eclipse.core.commands"/>
+ <plugin id="org.eclipse.core.contenttype"/>
+ <plugin id="org.eclipse.core.expressions"/>
+ <plugin id="org.eclipse.core.filesystem"/>
+ <plugin id="org.eclipse.core.jobs"/>
+ <plugin id="org.eclipse.core.resources"/>
+ <plugin id="org.eclipse.core.runtime"/>
+ <plugin id="org.eclipse.emf"/>
+ <plugin id="org.eclipse.emf.common"/>
+ <plugin id="org.eclipse.emf.ecore"/>
+ <plugin id="org.eclipse.emf.ecore.change"/>
+ <plugin id="org.eclipse.emf.ecore.xcore.lib"/>
+ <plugin id="org.eclipse.emf.ecore.xmi"/>
+ <plugin id="org.eclipse.emf.edit"/>
+ <plugin id="org.eclipse.emf.transaction"/>
+ <plugin id="org.eclipse.emf.validation"/>
+ <plugin id="org.eclipse.emf.workspace"/>
+ <plugin id="org.eclipse.equinox.app"/>
+ <plugin id="org.eclipse.equinox.cm"/>
+ <plugin id="org.eclipse.equinox.common"/>
+ <plugin id="org.eclipse.equinox.console"/>
+ <plugin id="org.eclipse.equinox.event"/>
+ <plugin id="org.eclipse.equinox.http.jetty"/>
+ <plugin id="org.eclipse.equinox.http.servlet"/>
+ <plugin id="org.eclipse.equinox.preferences"/>
+ <plugin id="org.eclipse.equinox.registry"/>
+ <plugin id="org.eclipse.jetty.continuation"/>
+ <plugin id="org.eclipse.jetty.http"/>
+ <plugin id="org.eclipse.jetty.io"/>
+ <plugin id="org.eclipse.jetty.security"/>
+ <plugin id="org.eclipse.jetty.server"/>
+ <plugin id="org.eclipse.jetty.servlet"/>
+ <plugin id="org.eclipse.jetty.util"/>
+ <plugin id="org.eclipse.osgi"/>
+ <plugin id="org.eclipse.osgi.services"/>
+ <plugin id="org.eclipse.osgi.util"/>
+ <plugin id="org.eclipse.sphinx.emf"/>
+ <plugin id="org.eclipse.sphinx.emf.workspace"/>
+ <plugin id="org.eclipse.sphinx.platform"/>
+ <plugin id="org.eclipse.xtend.lib"/>
+ <plugin id="org.eclipse.xtend.lib.macro"/>
+ <plugin id="org.eclipse.xtext.xbase.lib"/>
+ <plugin id="org.jdom"/>
+ <plugin id="org.slf4j.api"/>
+ <plugin id="org.slf4j.impl.log4j12" fragment="true"/>
+ </plugins>
+
+ <configurations>
+ <plugin id="org.apache.felix.scr" autoStart="true" startLevel="0" />
+ <plugin id="org.eclipse.equinox.cm" autoStart="true" startLevel="0" />
+ <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="0" />
+ <plugin id="org.eclipse.equinox.http.jetty" autoStart="true" startLevel="0" />
+ <plugin id="org.eclipse.jetty.server" autoStart="true" startLevel="0" />
+ <property name="log4j.configuration" value="headless_log4j.xml" />
+ </configurations>
+
+</product>
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.product/epl-2.0.html b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.product/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.product/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Eclipse Public License - Version 2.0</title>
+ <style type="text/css">
+ body {
+ margin: 1.5em 3em;
+ }
+ h1{
+ font-size:1.5em;
+ }
+ h2{
+ font-size:1em;
+ margin-bottom:0.5em;
+ margin-top:1em;
+ }
+ p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ ul, ol{
+ list-style-type:none;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>Eclipse Public License - v 2.0</h1>
+ <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+ PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION
+ OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+ </p>
+ <h2 id="definitions">1. DEFINITIONS</h2>
+ <p>“Contribution” means:</p>
+ <ul>
+ <li>a) in the case of the initial Contributor, the initial content
+ Distributed under this Agreement, and
+ </li>
+ <li>
+ b) in the case of each subsequent Contributor:
+ <ul>
+ <li>i) changes to the Program, and</li>
+ <li>ii) additions to the Program;</li>
+ </ul>
+ where such changes and/or additions to the Program originate from
+ and are Distributed by that particular Contributor. A Contribution
+ “originates” from a Contributor if it was added to the Program by such
+ Contributor itself or anyone acting on such Contributor's behalf.
+ Contributions do not include changes or additions to the Program that
+ are not Modified Works.
+ </li>
+ </ul>
+ <p>“Contributor” means any person or entity that Distributes the Program.</p>
+ <p>“Licensed Patents” mean patent claims licensable by a Contributor which
+ are necessarily infringed by the use or sale of its Contribution alone
+ or when combined with the Program.
+ </p>
+ <p>“Program” means the Contributions Distributed in accordance with this
+ Agreement.
+ </p>
+ <p>“Recipient” means anyone who receives the Program under this Agreement
+ or any Secondary License (as applicable), including Contributors.
+ </p>
+ <p>“Derivative Works” shall mean any work, whether in Source Code or other
+ form, that is based on (or derived from) the Program and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship.
+ </p>
+ <p>“Modified Works” shall mean any work in Source Code or other form that
+ results from an addition to, deletion from, or modification of the
+ contents of the Program, including, for purposes of clarity any new file
+ in Source Code form that contains any contents of the Program. Modified
+ Works shall not include works that contain only declarations, interfaces,
+ types, classes, structures, or files of the Program solely in each case
+ in order to link to, bind by name, or subclass the Program or Modified
+ Works thereof.
+ </p>
+ <p>“Distribute” means the acts of a) distributing or b) making available
+ in any manner that enables the transfer of a copy.
+ </p>
+ <p>“Source Code” means the form of a Program preferred for making
+ modifications, including but not limited to software source code,
+ documentation source, and configuration files.
+ </p>
+ <p>“Secondary License” means either the GNU General Public License,
+ Version 2.0, or any later versions of that license, including any
+ exceptions or additional permissions as identified by the initial
+ Contributor.
+ </p>
+ <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+ <ul>
+ <li>a) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare Derivative Works of, publicly display,
+ publicly perform, Distribute and sublicense the Contribution of such
+ Contributor, if any, and such Derivative Works.
+ </li>
+ <li>b) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such Contributor,
+ if any, in Source Code or other form. This patent license shall
+ apply to the combination of the Contribution and the Program if,
+ at the time the Contribution is added by the Contributor, such
+ addition of the Contribution causes such combination to be covered
+ by the Licensed Patents. The patent license shall not apply to any
+ other combinations which include the Contribution. No hardware per
+ se is licensed hereunder.
+ </li>
+ <li>c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity.
+ Each Contributor disclaims any liability to Recipient for claims
+ brought by any other entity based on infringement of intellectual
+ property rights or otherwise. As a condition to exercising the rights
+ and licenses granted hereunder, each Recipient hereby assumes sole
+ responsibility to secure any other intellectual property rights needed,
+ if any. For example, if a third party patent license is required to
+ allow Recipient to Distribute the Program, it is Recipient's
+ responsibility to acquire that license before distributing the Program.
+ </li>
+ <li>d) Each Contributor represents that to its knowledge it has sufficient
+ copyright rights in its Contribution, if any, to grant the copyright
+ license set forth in this Agreement.
+ </li>
+ <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+ makes additional grants to any Recipient (other than those set forth
+ in this Agreement) as a result of such Recipient's receipt of the
+ Program under the terms of a Secondary License (if permitted under
+ the terms of Section 3).
+ </li>
+ </ul>
+ <h2 id="requirements">3. REQUIREMENTS</h2>
+ <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+ <ul>
+ <li>a) the Program must also be made available as Source Code, in
+ accordance with section 3.2, and the Contributor must accompany
+ the Program with a statement that the Source Code for the Program
+ is available under this Agreement, and informs Recipients how to
+ obtain it in a reasonable manner on or through a medium customarily
+ used for software exchange; and
+ </li>
+ <li>
+ b) the Contributor may Distribute the Program under a license
+ different than this Agreement, provided that such license:
+ <ul>
+ <li>i) effectively disclaims on behalf of all other Contributors all
+ warranties and conditions, express and implied, including warranties
+ or conditions of title and non-infringement, and implied warranties
+ or conditions of merchantability and fitness for a particular purpose;
+ </li>
+ <li>ii) effectively excludes on behalf of all other Contributors all
+ liability for damages, including direct, indirect, special, incidental
+ and consequential damages, such as lost profits;
+ </li>
+ <li>iii) does not attempt to limit or alter the recipients' rights in the
+ Source Code under section 3.2; and
+ </li>
+ <li>iv) requires any subsequent distribution of the Program by any party
+ to be under a license that satisfies the requirements of this section 3.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <p>3.2 When the Program is Distributed as Source Code:</p>
+ <ul>
+ <li>a) it must be made available under this Agreement, or if the Program (i)
+ is combined with other material in a separate file or files made available
+ under a Secondary License, and (ii) the initial Contributor attached to
+ the Source Code the notice described in Exhibit A of this Agreement,
+ then the Program may be made available under the terms of such
+ Secondary Licenses, and
+ </li>
+ <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+ </ul>
+ <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+ attribution notices, disclaimers of warranty, or limitations of liability
+ (‘notices’) contained within the Program from any copy of the Program which
+ they Distribute, provided that Contributors may add their own appropriate
+ notices.
+ </p>
+ <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+ <p>Commercial distributors of software may accept certain responsibilities
+ with respect to end users, business partners and the like. While this
+ license is intended to facilitate the commercial use of the Program, the
+ Contributor who includes the Program in a commercial product offering should
+ do so in a manner which does not create potential liability for other
+ Contributors. Therefore, if a Contributor includes the Program in a
+ commercial product offering, such Contributor (“Commercial Contributor”)
+ hereby agrees to defend and indemnify every other Contributor
+ (“Indemnified Contributor”) against any losses, damages and costs
+ (collectively “Losses”) arising from claims, lawsuits and other legal actions
+ brought by a third party against the Indemnified Contributor to the extent
+ caused by the acts or omissions of such Commercial Contributor in connection
+ with its distribution of the Program in a commercial product offering.
+ The obligations in this section do not apply to any claims or Losses relating
+ to any actual or alleged intellectual property infringement. In order to
+ qualify, an Indemnified Contributor must: a) promptly notify the
+ Commercial Contributor in writing of such claim, and b) allow the Commercial
+ Contributor to control, and cooperate with the Commercial Contributor in,
+ the defense and any related settlement negotiations. The Indemnified
+ Contributor may participate in any such claim at its own expense.
+ </p>
+ <p>For example, a Contributor might include the Program
+ in a commercial product offering, Product X. That Contributor is then a
+ Commercial Contributor. If that Commercial Contributor then makes performance
+ claims, or offers warranties related to Product X, those performance claims
+ and warranties are such Commercial Contributor's responsibility alone.
+ Under this section, the Commercial Contributor would have to defend claims
+ against the other Contributors related to those performance claims and
+ warranties, and if a court requires any other Contributor to pay any damages
+ as a result, the Commercial Contributor must pay those damages.
+ </p>
+ <h2 id="warranty">5. NO WARRANTY</h2>
+ <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+ BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+ WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+ solely responsible for determining the appropriateness of using and
+ distributing the Program and assumes all risks associated with its
+ exercise of rights under this Agreement, including but not limited to the
+ risks and costs of program errors, compliance with applicable laws, damage
+ to or loss of data, programs or equipment, and unavailability or
+ interruption of operations.
+ </p>
+ <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+ <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+ BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+ LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+ GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ </p>
+ <h2 id="general">7. GENERAL</h2>
+ <p>If any provision of this Agreement is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability of the
+ remainder of the terms of this Agreement, and without further action by the
+ parties hereto, such provision shall be reformed to the minimum extent
+ necessary to make such provision valid and enforceable.
+ </p>
+ <p>If Recipient institutes patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+ (excluding combinations of the Program with other software or hardware)
+ infringes such Recipient's patent(s), then such Recipient's rights granted
+ under Section 2(b) shall terminate as of the date such litigation is filed.
+ </p>
+ <p>All Recipient's rights under this Agreement shall terminate if it fails to
+ comply with any of the material terms or conditions of this Agreement and
+ does not cure such failure in a reasonable period of time after becoming
+ aware of such noncompliance. If all Recipient's rights under this Agreement
+ terminate, Recipient agrees to cease use and distribution of the Program
+ as soon as reasonably practicable. However, Recipient's obligations under
+ this Agreement and any licenses granted by Recipient relating to the
+ Program shall continue and survive.
+ </p>
+ <p>Everyone is permitted to copy and distribute copies of this Agreement,
+ but in order to avoid inconsistency the Agreement is copyrighted and may
+ only be modified in the following manner. The Agreement Steward reserves
+ the right to publish new versions (including revisions) of this Agreement
+ from time to time. No one other than the Agreement Steward has the right
+ to modify this Agreement. The Eclipse Foundation is the initial Agreement
+ Steward. The Eclipse Foundation may assign the responsibility to serve as
+ the Agreement Steward to a suitable separate entity. Each new version of
+ the Agreement will be given a distinguishing version number. The Program
+ (including Contributions) may always be Distributed subject to the version
+ of the Agreement under which it was received. In addition, after a new
+ version of the Agreement is published, Contributor may elect to Distribute
+ the Program (including its Contributions) under the new version.
+ </p>
+ <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+ receives no rights or licenses to the intellectual property of any
+ Contributor under this Agreement, whether expressly, by implication,
+ estoppel or otherwise. All rights in the Program not expressly granted
+ under this Agreement are reserved. Nothing in this Agreement is intended
+ to be enforceable by any entity that is not a Contributor or Recipient.
+ No third-party beneficiary rights are created under this Agreement.
+ </p>
+ <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
+ <p>“This Source Code may also be made available under the following
+ Secondary Licenses when the conditions for such availability set forth
+ in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+ version(s), and exceptions or additional permissions here}.”
+ </p>
+ <blockquote>
+ <p>Simply including a copy of this Agreement, including this Exhibit A
+ is not sufficient to license the Source Code under Secondary Licenses.
+ </p>
+ <p>If it is not possible or desirable to put the notice in a particular file,
+ then You may include the notice in a location (such as a LICENSE file in a
+ relevant directory) where a recipient would be likely to look for
+ such a notice.
+ </p>
+ <p>You may add additional accurate notices of copyright ownership.</p>
+ </blockquote>
+ </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/.project b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/.project
new file mode 100644
index 0000000..358e750
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.amlt2systemc.cloud.target</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/about.html b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/about.html
new file mode 100644
index 0000000..164f781
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/about.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>About</title>
+</head>
+<body lang="EN-US">
+ <h2>About This Content</h2>
+
+ <p>November 30, 2017</p>
+ <h3>License</h3>
+
+ <p>
+ The Eclipse Foundation makes available all content in this plug-in
+ ("Content"). Unless otherwise indicated below, the Content
+ is provided to you under the terms and conditions of the Eclipse
+ Public License Version 2.0 ("EPL"). A copy of the EPL is
+ available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+ For purposes of the EPL, "Program" will mean the Content.
+ </p>
+
+ <p>
+ If you did not receive this Content directly from the Eclipse
+ Foundation, the Content is being redistributed by another party
+ ("Redistributor") and different terms and conditions may
+ apply to your use of any object code in the Content. Check the
+ Redistributor's license that was provided with the Content. If no such
+ license exists, contact the Redistributor. Unless otherwise indicated
+ below, the terms and conditions of the EPL still apply to any source
+ code in the Content and such source code may be obtained at <a
+ href="http://www.eclipse.org/">http://www.eclipse.org</a>.
+ </p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/epl-2.0.html b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>Eclipse Public License - Version 2.0</title>
+ <style type="text/css">
+ body {
+ margin: 1.5em 3em;
+ }
+ h1{
+ font-size:1.5em;
+ }
+ h2{
+ font-size:1em;
+ margin-bottom:0.5em;
+ margin-top:1em;
+ }
+ p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ ul, ol{
+ list-style-type:none;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>Eclipse Public License - v 2.0</h1>
+ <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+ PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION
+ OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+ </p>
+ <h2 id="definitions">1. DEFINITIONS</h2>
+ <p>“Contribution” means:</p>
+ <ul>
+ <li>a) in the case of the initial Contributor, the initial content
+ Distributed under this Agreement, and
+ </li>
+ <li>
+ b) in the case of each subsequent Contributor:
+ <ul>
+ <li>i) changes to the Program, and</li>
+ <li>ii) additions to the Program;</li>
+ </ul>
+ where such changes and/or additions to the Program originate from
+ and are Distributed by that particular Contributor. A Contribution
+ “originates” from a Contributor if it was added to the Program by such
+ Contributor itself or anyone acting on such Contributor's behalf.
+ Contributions do not include changes or additions to the Program that
+ are not Modified Works.
+ </li>
+ </ul>
+ <p>“Contributor” means any person or entity that Distributes the Program.</p>
+ <p>“Licensed Patents” mean patent claims licensable by a Contributor which
+ are necessarily infringed by the use or sale of its Contribution alone
+ or when combined with the Program.
+ </p>
+ <p>“Program” means the Contributions Distributed in accordance with this
+ Agreement.
+ </p>
+ <p>“Recipient” means anyone who receives the Program under this Agreement
+ or any Secondary License (as applicable), including Contributors.
+ </p>
+ <p>“Derivative Works” shall mean any work, whether in Source Code or other
+ form, that is based on (or derived from) the Program and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship.
+ </p>
+ <p>“Modified Works” shall mean any work in Source Code or other form that
+ results from an addition to, deletion from, or modification of the
+ contents of the Program, including, for purposes of clarity any new file
+ in Source Code form that contains any contents of the Program. Modified
+ Works shall not include works that contain only declarations, interfaces,
+ types, classes, structures, or files of the Program solely in each case
+ in order to link to, bind by name, or subclass the Program or Modified
+ Works thereof.
+ </p>
+ <p>“Distribute” means the acts of a) distributing or b) making available
+ in any manner that enables the transfer of a copy.
+ </p>
+ <p>“Source Code” means the form of a Program preferred for making
+ modifications, including but not limited to software source code,
+ documentation source, and configuration files.
+ </p>
+ <p>“Secondary License” means either the GNU General Public License,
+ Version 2.0, or any later versions of that license, including any
+ exceptions or additional permissions as identified by the initial
+ Contributor.
+ </p>
+ <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+ <ul>
+ <li>a) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare Derivative Works of, publicly display,
+ publicly perform, Distribute and sublicense the Contribution of such
+ Contributor, if any, and such Derivative Works.
+ </li>
+ <li>b) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such Contributor,
+ if any, in Source Code or other form. This patent license shall
+ apply to the combination of the Contribution and the Program if,
+ at the time the Contribution is added by the Contributor, such
+ addition of the Contribution causes such combination to be covered
+ by the Licensed Patents. The patent license shall not apply to any
+ other combinations which include the Contribution. No hardware per
+ se is licensed hereunder.
+ </li>
+ <li>c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity.
+ Each Contributor disclaims any liability to Recipient for claims
+ brought by any other entity based on infringement of intellectual
+ property rights or otherwise. As a condition to exercising the rights
+ and licenses granted hereunder, each Recipient hereby assumes sole
+ responsibility to secure any other intellectual property rights needed,
+ if any. For example, if a third party patent license is required to
+ allow Recipient to Distribute the Program, it is Recipient's
+ responsibility to acquire that license before distributing the Program.
+ </li>
+ <li>d) Each Contributor represents that to its knowledge it has sufficient
+ copyright rights in its Contribution, if any, to grant the copyright
+ license set forth in this Agreement.
+ </li>
+ <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+ makes additional grants to any Recipient (other than those set forth
+ in this Agreement) as a result of such Recipient's receipt of the
+ Program under the terms of a Secondary License (if permitted under
+ the terms of Section 3).
+ </li>
+ </ul>
+ <h2 id="requirements">3. REQUIREMENTS</h2>
+ <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+ <ul>
+ <li>a) the Program must also be made available as Source Code, in
+ accordance with section 3.2, and the Contributor must accompany
+ the Program with a statement that the Source Code for the Program
+ is available under this Agreement, and informs Recipients how to
+ obtain it in a reasonable manner on or through a medium customarily
+ used for software exchange; and
+ </li>
+ <li>
+ b) the Contributor may Distribute the Program under a license
+ different than this Agreement, provided that such license:
+ <ul>
+ <li>i) effectively disclaims on behalf of all other Contributors all
+ warranties and conditions, express and implied, including warranties
+ or conditions of title and non-infringement, and implied warranties
+ or conditions of merchantability and fitness for a particular purpose;
+ </li>
+ <li>ii) effectively excludes on behalf of all other Contributors all
+ liability for damages, including direct, indirect, special, incidental
+ and consequential damages, such as lost profits;
+ </li>
+ <li>iii) does not attempt to limit or alter the recipients' rights in the
+ Source Code under section 3.2; and
+ </li>
+ <li>iv) requires any subsequent distribution of the Program by any party
+ to be under a license that satisfies the requirements of this section 3.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <p>3.2 When the Program is Distributed as Source Code:</p>
+ <ul>
+ <li>a) it must be made available under this Agreement, or if the Program (i)
+ is combined with other material in a separate file or files made available
+ under a Secondary License, and (ii) the initial Contributor attached to
+ the Source Code the notice described in Exhibit A of this Agreement,
+ then the Program may be made available under the terms of such
+ Secondary Licenses, and
+ </li>
+ <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+ </ul>
+ <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+ attribution notices, disclaimers of warranty, or limitations of liability
+ (‘notices’) contained within the Program from any copy of the Program which
+ they Distribute, provided that Contributors may add their own appropriate
+ notices.
+ </p>
+ <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+ <p>Commercial distributors of software may accept certain responsibilities
+ with respect to end users, business partners and the like. While this
+ license is intended to facilitate the commercial use of the Program, the
+ Contributor who includes the Program in a commercial product offering should
+ do so in a manner which does not create potential liability for other
+ Contributors. Therefore, if a Contributor includes the Program in a
+ commercial product offering, such Contributor (“Commercial Contributor”)
+ hereby agrees to defend and indemnify every other Contributor
+ (“Indemnified Contributor”) against any losses, damages and costs
+ (collectively “Losses”) arising from claims, lawsuits and other legal actions
+ brought by a third party against the Indemnified Contributor to the extent
+ caused by the acts or omissions of such Commercial Contributor in connection
+ with its distribution of the Program in a commercial product offering.
+ The obligations in this section do not apply to any claims or Losses relating
+ to any actual or alleged intellectual property infringement. In order to
+ qualify, an Indemnified Contributor must: a) promptly notify the
+ Commercial Contributor in writing of such claim, and b) allow the Commercial
+ Contributor to control, and cooperate with the Commercial Contributor in,
+ the defense and any related settlement negotiations. The Indemnified
+ Contributor may participate in any such claim at its own expense.
+ </p>
+ <p>For example, a Contributor might include the Program
+ in a commercial product offering, Product X. That Contributor is then a
+ Commercial Contributor. If that Commercial Contributor then makes performance
+ claims, or offers warranties related to Product X, those performance claims
+ and warranties are such Commercial Contributor's responsibility alone.
+ Under this section, the Commercial Contributor would have to defend claims
+ against the other Contributors related to those performance claims and
+ warranties, and if a court requires any other Contributor to pay any damages
+ as a result, the Commercial Contributor must pay those damages.
+ </p>
+ <h2 id="warranty">5. NO WARRANTY</h2>
+ <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+ BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+ WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+ solely responsible for determining the appropriateness of using and
+ distributing the Program and assumes all risks associated with its
+ exercise of rights under this Agreement, including but not limited to the
+ risks and costs of program errors, compliance with applicable laws, damage
+ to or loss of data, programs or equipment, and unavailability or
+ interruption of operations.
+ </p>
+ <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+ <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+ BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+ LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+ GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ </p>
+ <h2 id="general">7. GENERAL</h2>
+ <p>If any provision of this Agreement is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability of the
+ remainder of the terms of this Agreement, and without further action by the
+ parties hereto, such provision shall be reformed to the minimum extent
+ necessary to make such provision valid and enforceable.
+ </p>
+ <p>If Recipient institutes patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+ (excluding combinations of the Program with other software or hardware)
+ infringes such Recipient's patent(s), then such Recipient's rights granted
+ under Section 2(b) shall terminate as of the date such litigation is filed.
+ </p>
+ <p>All Recipient's rights under this Agreement shall terminate if it fails to
+ comply with any of the material terms or conditions of this Agreement and
+ does not cure such failure in a reasonable period of time after becoming
+ aware of such noncompliance. If all Recipient's rights under this Agreement
+ terminate, Recipient agrees to cease use and distribution of the Program
+ as soon as reasonably practicable. However, Recipient's obligations under
+ this Agreement and any licenses granted by Recipient relating to the
+ Program shall continue and survive.
+ </p>
+ <p>Everyone is permitted to copy and distribute copies of this Agreement,
+ but in order to avoid inconsistency the Agreement is copyrighted and may
+ only be modified in the following manner. The Agreement Steward reserves
+ the right to publish new versions (including revisions) of this Agreement
+ from time to time. No one other than the Agreement Steward has the right
+ to modify this Agreement. The Eclipse Foundation is the initial Agreement
+ Steward. The Eclipse Foundation may assign the responsibility to serve as
+ the Agreement Steward to a suitable separate entity. Each new version of
+ the Agreement will be given a distinguishing version number. The Program
+ (including Contributions) may always be Distributed subject to the version
+ of the Agreement under which it was received. In addition, after a new
+ version of the Agreement is published, Contributor may elect to Distribute
+ the Program (including its Contributions) under the new version.
+ </p>
+ <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+ receives no rights or licenses to the intellectual property of any
+ Contributor under this Agreement, whether expressly, by implication,
+ estoppel or otherwise. All rights in the Program not expressly granted
+ under this Agreement are reserved. Nothing in this Agreement is intended
+ to be enforceable by any entity that is not a Contributor or Recipient.
+ No third-party beneficiary rights are created under this Agreement.
+ </p>
+ <h2 id="exhibit-a">Exhibit A – Form of Secondary Licenses Notice</h2>
+ <p>“This Source Code may also be made available under the following
+ Secondary Licenses when the conditions for such availability set forth
+ in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+ version(s), and exceptions or additional permissions here}.”
+ </p>
+ <blockquote>
+ <p>Simply including a copy of this Agreement, including this Exhibit A
+ is not sufficient to license the Source Code under Secondary Licenses.
+ </p>
+ <p>If it is not possible or desirable to put the notice in a particular file,
+ then You may include the notice in a location (such as a LICENSE file in a
+ relevant directory) where a recipient would be likely to look for
+ such a notice.
+ </p>
+ <p>You may add additional accurate notices of copyright ownership.</p>
+ </blockquote>
+ </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/org.eclipse.app4mc.amlt2systemc.cloud.target.target b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/org.eclipse.app4mc.amlt2systemc.cloud.target.target
new file mode 100644
index 0000000..80b01fd
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/org.eclipse.app4mc.amlt2systemc.cloud.target.target
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde?>
+<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
+<target name="Amalthea AMLT2SystemC Cloud Target" sequenceNumber="1610972886">
+ <locations>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.sdk.feature.group" version="4.14.0.v20191210-0610"/>
+ <unit id="org.eclipse.equinox.sdk.feature.group" version="3.20.0.v20191122-2104"/>
+ <unit id="org.eclipse.equinox.compendium.sdk.feature.group" version="3.20.0.v20191107-1453"/>
+ <unit id="org.eclipse.equinox.server.jetty.feature.group" version="1.10.100.v20191122-1941"/>
+ <unit id="javax.xml" version="1.3.4.v201005080400"/>
+ <unit id="org.jdom" version="1.1.1.v201101151400"/>
+ <unit id="com.google.guava" version="27.1.0.v20190517-1946"/>
+ <unit id="com.google.inject" version="3.0.0.v201605172100"/>
+ <unit id="org.slf4j.api" version="1.7.2.v20121108-1250"/>
+ <unit id="org.slf4j.impl.log4j12" version="1.7.2.v20131105-2200"/>
+ <unit id="org.apache.commons.cli" version="1.2.0.v201404270220"/>
+ <unit id="org.apache.commons.lang" version="2.6.0.v201404270220"/>
+ <unit id="org.apache.commons.logging" version="1.2.0.v20180409-1502"/>
+ <unit id="org.apache.log4j" version="1.2.15.v201012070815"/>
+ <unit id="org.apache.xalan" version="2.7.1.v201005080400"/>
+ <unit id="org.apache.xerces" version="2.9.0.v201101211617"/>
+ <unit id="org.apache.xml.resolver" version="1.2.0.v201005080400"/>
+ <unit id="org.apache.xml.serializer" version="2.7.1.v201005080400"/>
+ <unit id="org.apache.felix.gogo.command" version="1.0.2.v20170914-1324"/>
+ <unit id="org.apache.felix.gogo.runtime" version="1.1.0.v20180713-1646"/>
+ <unit id="org.apache.felix.gogo.shell" version="1.1.0.v20180713-1646"/>
+ <unit id="org.eclipse.equinox.console" version="1.4.0.v20190819-1430"/>
+ <unit id="org.eclipse.emf.sdk.feature.group" version="2.20.0.v20191028-0905"/>
+ <unit id="org.eclipse.emf.ecore.xcore.sdk.feature.group" version="1.12.0.v20190924-0817"/>
+ <unit id="org.eclipse.emf.transaction.sdk.feature.group" version="1.12.0.201805140824"/>
+ <unit id="org.eclipse.emf.validation.feature.group" version="1.12.1.201812070911"/>
+ <unit id="org.eclipse.xtend.sdk.feature.group" version="2.20.0.v20191202-1256"/>
+ <unit id="org.eclipse.xtend.lib" version="2.20.0.v20191202-0907"/>
+ <unit id="org.eclipse.xtend.lib.macro" version="2.20.0.v20191202-0907"/>
+ <unit id="org.eclipse.xtext.xbase.lib.feature.group" version="2.20.0.v20191202-0910"/>
+ <repository location="https://download.eclipse.org/releases/2019-12"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.app4mc.amalthea.models.feature.group" version="0.9.9.202007301332"/>
+ <unit id="org.eclipse.app4mc.validation.feature.group" version="0.9.9.202007301332"/>
+ <repository location="https://download.eclipse.org/app4mc/updatesites/releases/0.9.9/"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.app4mc.transformation.feature.sdk.feature.group" version="0.0.0"/>
+ <repository location="https://download.eclipse.org/app4mc/components/addon/transformation/snapshot/p2repo/"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.app4mc.amlt2systemc.feature.sdk.feature.group" version="0.0.0"/>
+ <repository location="https://download.eclipse.org/app4mc/components/addon/transformation.sim.app4mc/snapshot/p2repo/"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.jaxen" version="1.1.6.v20191106-1554"/>
+ <unit id="org.jdom2" version="2.0.6.v20191125-0928"/>
+ <unit id="org.apache.commons.math" version="2.1.0.v201105210652"/>
+ <unit id="org.apache.commons.math3" version="3.5.0.v20190611-1023"/>
+ <unit id="org.apache.commons.fileupload" version="1.3.2.v20170320-2229"/>
+ <unit id="com.fasterxml.jackson.core.jackson-core" version="2.9.9.v20190906-1522"/>
+ <unit id="com.fasterxml.jackson.core.jackson-databind" version="2.9.93.v20190906-1522"/>
+ <unit id="com.fasterxml.jackson.core.jackson-annotations" version="2.9.9.v20190906-1522"/>
+ <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20191126223242/repository"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.sphinx.sdk.feature.group" version="0.11.2.201802230805"/>
+ <repository location="https://download.eclipse.org/sphinx/updates/0.11.x"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.license.feature.group" version="2.0.2.v20181016-2210"/>
+ <repository location="https://download.eclipse.org/cbi/updates/license"/>
+ </location>
+ </locations>
+</target>
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/org.eclipse.app4mc.amlt2systemc.cloud.target.tpd b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/org.eclipse.app4mc.amlt2systemc.cloud.target.tpd
new file mode 100644
index 0000000..b903338
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/org.eclipse.app4mc.amlt2systemc.cloud.target/org.eclipse.app4mc.amlt2systemc.cloud.target.tpd
@@ -0,0 +1,68 @@
+target "Amalthea AMLT2SystemC Cloud Target"
+
+with source allEnvironments
+
+location "https://download.eclipse.org/releases/2019-12" {
+ org.eclipse.sdk.feature.group
+ org.eclipse.equinox.sdk.feature.group
+ org.eclipse.equinox.compendium.sdk.feature.group
+ org.eclipse.equinox.server.jetty.feature.group
+ javax.xml
+ org.jdom
+ com.google.guava
+ com.google.inject
+ org.slf4j.api [1.7.2,1.7.3)
+ org.slf4j.impl.log4j12 [1.7.2,2.0.0)
+ org.apache.commons.cli
+ org.apache.commons.lang
+ org.apache.commons.logging
+ org.apache.log4j [1.2.15,1.3.0)
+ org.apache.xalan [2.7.1,2.7.2)
+ org.apache.xerces [2.9.0,2.10.0)
+ org.apache.xml.resolver [1.2.0,1.2.1)
+ org.apache.xml.serializer [2.7.1,2.7.2)
+ org.apache.felix.gogo.command [1.0.2,1.1.0)
+ org.apache.felix.gogo.runtime [1.1.0,1.2.0)
+ org.apache.felix.gogo.shell [1.1.0,1.2.0)
+ org.eclipse.equinox.console [1.4.0,1.5.0)
+ org.eclipse.emf.sdk.feature.group
+ org.eclipse.emf.ecore.xcore.sdk.feature.group
+ org.eclipse.emf.transaction.sdk.feature.group
+ org.eclipse.emf.validation.feature.group
+ org.eclipse.xtend.sdk.feature.group
+ org.eclipse.xtend.lib
+ org.eclipse.xtend.lib.macro
+ org.eclipse.xtext.xbase.lib.feature.group
+}
+
+location "https://download.eclipse.org/app4mc/updatesites/releases/0.9.9/" {
+ org.eclipse.app4mc.amalthea.models.feature.group
+ org.eclipse.app4mc.validation.feature.group
+}
+
+location "https://download.eclipse.org/app4mc/components/addon/transformation/snapshot/p2repo/" {
+ org.eclipse.app4mc.transformation.feature.sdk.feature.group lazy
+}
+
+location "https://download.eclipse.org/app4mc/components/addon/transformation.sim.app4mc/snapshot/p2repo/" {
+ org.eclipse.app4mc.amlt2systemc.feature.sdk.feature.group lazy
+}
+
+location "https://download.eclipse.org/tools/orbit/downloads/drops/R20191126223242/repository" {
+ org.jaxen [1.1.6,1.1.7)
+ org.jdom2 [2.0.6,2.0.7)
+ org.apache.commons.math
+ org.apache.commons.math3
+ org.apache.commons.fileupload
+ com.fasterxml.jackson.core.jackson-core
+ com.fasterxml.jackson.core.jackson-databind
+ com.fasterxml.jackson.core.jackson-annotations
+}
+
+location "https://download.eclipse.org/sphinx/updates/0.11.x" {
+ org.eclipse.sphinx.sdk.feature.group
+}
+
+location "https://download.eclipse.org/cbi/updates/license" {
+ org.eclipse.license.feature.group
+}
\ No newline at end of file
diff --git a/org.eclipse.app4m.amlt2systemc.cloud/pom.xml b/org.eclipse.app4m.amlt2systemc.cloud/pom.xml
new file mode 100644
index 0000000..148775e
--- /dev/null
+++ b/org.eclipse.app4m.amlt2systemc.cloud/pom.xml
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.eclipse.app4mc</groupId>
+ <artifactId>org.eclipse.app4mc.amlt2systemc.cloud</artifactId>
+ <version>0.1.0-SNAPSHOT</version>
+
+ <packaging>pom</packaging>
+
+ <url>http://projects.eclipse.org/projects/technology.app4mc</url>
+ <name>APP4MC AMLT2SystemC Transformation Cloud Service</name>
+
+ <properties>
+ <tycho.version>2.0.0</tycho.version>
+
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <maven.build.timestamp.format>yyyyMMdd-HHmmss</maven.build.timestamp.format>
+
+ </properties>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>cbi</id>
+ <url>https://repo.eclipse.org/content/repositories/cbi-releases/</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <modules>
+ <module>org.eclipse.app4mc.amlt2systemc.cloud.target</module>
+ <module>org.eclipse.app4mc.amlt2systemc.cloud.http</module>
+ <module>org.eclipse.app4mc.amlt2systemc.cloud.product</module>
+ </modules>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.cbi.maven.plugins</groupId>
+ <artifactId>eclipse-jarsigner-plugin</artifactId>
+ <version>1.1.3</version>
+ <executions>
+ <execution>
+ <id>sign</id>
+ <phase>package</phase>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-packaging-plugin</artifactId>
+ <version>${tycho.version}</version>
+
+<!--
+ <dependencies>
+ <dependency>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-buildtimestamp-jgit</artifactId>
+ <version>${tycho.version}</version>
+ </dependency>
+ </dependencies>
+
+ <configuration>
+ <timestampProvider>jgit</timestampProvider>
+ <jgit.ignore>pom.xml</jgit.ignore>
+ <jgit.dirtyWorkingTree>ignore</jgit.dirtyWorkingTree>
+ </configuration>
+ -->
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-repository-plugin</artifactId>
+ <version>${tycho.version}</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho.version}</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-director-plugin</artifactId>
+ <version>${tycho.version}</version>
+ <executions>
+ <execution>
+ <id>materialize-products</id>
+ <goals>
+ <goal>materialize-products</goal>
+ </goals>
+ </execution>
+
+ <execution>
+ <id>archive-products</id>
+ <goals>
+ <goal>archive-products</goal>
+ </goals>
+ <configuration>
+ <formats>
+ <linux>tar.gz</linux>
+ <macosx>tar.gz</macosx>
+ </formats>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>target-platform-configuration</artifactId>
+ <version>${tycho.version}</version>
+
+ <configuration>
+ <environments>
+ <environment>
+ <os>win32</os>
+ <ws>win32</ws>
+ <arch>x86_64</arch>
+ </environment>
+ <environment>
+ <os>linux</os>
+ <ws>gtk</ws>
+ <arch>x86_64</arch>
+ </environment>
+ <environment>
+ <os>macosx</os>
+ <ws>cocoa</ws>
+ <arch>x86_64</arch>
+ </environment>
+ </environments>
+
+ <target>
+ <artifact>
+ <groupId>org.eclipse.app4mc</groupId>
+ <artifactId>org.eclipse.app4mc.amlt2systemc.cloud.target</artifactId>
+ <version>0.1.0-SNAPSHOT</version>
+ </artifact>
+ </target>
+ <targetDefinitionIncludeSource>honor</targetDefinitionIncludeSource>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-maven-plugin</artifactId>
+ <version>${tycho.version}</version>
+
+ <extensions>true</extensions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho.version}</version>
+
+ <executions>
+ <execution>
+ <id>plugin-source</id>
+ <goals>
+ <goal>plugin-source</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-surefire-plugin</artifactId>
+ <version>${tycho.version}</version>
+
+ <configuration>
+ <includes>
+ <forkMode>never</forkMode>
+ <include>**/*Test.java</include>
+ <include>**/*Tests.java</include>
+ </includes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>sign</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.cbi.maven.plugins</groupId>
+ <artifactId>eclipse-jarsigner-plugin</artifactId>
+ <version>1.1.3</version>
+ <executions>
+ <execution>
+ <id>sign</id>
+ <phase>package</phase>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
\ No newline at end of file
diff --git a/org.eclipse.app4mc.converter.cloud/Dockerfile b/org.eclipse.app4mc.converter.cloud/Dockerfile
index 58ec81d..4aaf12b 100644
--- a/org.eclipse.app4mc.converter.cloud/Dockerfile
+++ b/org.eclipse.app4mc.converter.cloud/Dockerfile
@@ -1,4 +1,4 @@
-FROM amazoncorretto:8u265
+FROM amazoncorretto:8u275
COPY converter-app/target/converter-app.jar converter-app.jar
diff --git a/org.eclipse.app4mc.validation.cloud/.project b/org.eclipse.app4mc.validation.cloud/.project
new file mode 100644
index 0000000..03287ef
--- /dev/null
+++ b/org.eclipse.app4mc.validation.cloud/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.app4mc.validation.cloud</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.app4mc.validation.cloud/.settings/org.eclipse.core.resources.prefs b/org.eclipse.app4mc.validation.cloud/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.app4mc.validation.cloud/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.app4mc.validation.cloud/Dockerfile b/org.eclipse.app4mc.validation.cloud/Dockerfile
index 6b9b08f..4b5a518 100644
--- a/org.eclipse.app4mc.validation.cloud/Dockerfile
+++ b/org.eclipse.app4mc.validation.cloud/Dockerfile
@@ -1,4 +1,4 @@
-FROM amazoncorretto:8u265
+FROM amazoncorretto:8u275
ADD org.eclipse.app4mc.validation.cloud.product/target/products/org.eclipse.app4mc.validation.cloud.product-linux.gtk.x86_64.tar.gz org.eclipse.app4mc.validation.cloud.product
RUN chmod +x org.eclipse.app4mc.validation.cloud.product/eclipse