Merge branch 'sreiser/develop' of https://git.eclipse.org/r/app4mc/org.eclipse.app4mc.addon.transformation into sreiser/develop
Signed-off-by: Sebastian Reiser <Sebastian.Reiser@de.bosch.com>
diff --git a/framework/examples/app4mc.example.transform.cust.product/CustTransformation.product b/framework/examples/app4mc.example.transform.cust.product/CustTransformation.product
index d855cfc..3486641 100644
--- a/framework/examples/app4mc.example.transform.cust.product/CustTransformation.product
+++ b/framework/examples/app4mc.example.transform.cust.product/CustTransformation.product
@@ -9,7 +9,7 @@
<launcherArgs>
<programArgs>--properties "${project_loc:/app4mc.example.transform.cust.product}/customInput.properties" -console
</programArgs>
- <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dlog4j.configuration=headless_log4j.xml
+ <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dorg.eclipse.emf.ecore.EPackage.Registry.INSTANCE=org.eclipse.emf.ecore.impl.EPackageRegistryImpl
</vmArgs>
<vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
</vmArgsMac>
@@ -40,11 +40,12 @@
<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.eclipse.app4mc.amalthea.model"/>
<plugin id="org.eclipse.app4mc.transformation"/>
- <plugin id="org.eclipse.app4mc.transformation.log4j.configuration" fragment="true"/>
<plugin id="org.eclipse.app4mc.transformation.starter"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog.console"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog.file"/>
<plugin id="org.eclipse.emf.common"/>
<plugin id="org.eclipse.emf.ecore"/>
<plugin id="org.eclipse.emf.ecore.xcore.lib"/>
@@ -58,14 +59,14 @@
<plugin id="org.eclipse.osgi.util"/>
<plugin id="org.eclipse.xtext.xbase.lib"/>
<plugin id="org.slf4j.api"/>
- <plugin id="org.slf4j.impl.log4j12" fragment="true"/>
</plugins>
<configurations>
<plugin id="org.apache.felix.scr" autoStart="true" startLevel="2" />
+ <plugin id="org.eclipse.app4mc.util.sessionlog.console" autoStart="true" startLevel="3" />
+ <plugin id="org.eclipse.app4mc.util.sessionlog.file" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.equinox.cm" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
- <property name="log4j.configuration" value="headless_log4j.xml" />
<property name="app4mctransformation.log.level" value="debug" />
</configurations>
diff --git a/framework/examples/app4mc.example.transform.m2m/META-INF/MANIFEST.MF b/framework/examples/app4mc.example.transform.m2m/META-INF/MANIFEST.MF
index f8916b2..0503d13 100644
--- a/framework/examples/app4mc.example.transform.m2m/META-INF/MANIFEST.MF
+++ b/framework/examples/app4mc.example.transform.m2m/META-INF/MANIFEST.MF
@@ -10,17 +10,14 @@
Automatic-Module-Name: app4mc.example.transform.m2m
Import-Package: com.google.inject;version="1.3.0",
com.google.inject.util;version="1.3.0",
- javax.inject;version="1.0.0",
org.eclipse.app4mc.transformation,
- org.eclipse.app4mc.transformation.executiontype,
org.eclipse.app4mc.transformation.starter,
org.eclipse.app4mc.transformation.transformers,
org.eclipse.app4mc.transformation.util,
+ org.eclipse.app4mc.util.sessionlog;version="1.1.0",
org.osgi.service.component;version="1.4.0",
- org.osgi.service.component.annotations;version="[1.3.0,2.0.0)";resolution:=optional,
- org.slf4j;version="1.7.2"
+ org.osgi.service.component.annotations;version="[1.3.0,2.0.0)";resolution:=optional
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
Service-Component: OSGI-INF/app4mc.example.transform.m2m.configuration.AmaltheaModel2ModelTransformationDefinition.xml,
- OSGI-INF/app4mc.example.transform.m2m.configuration.M2MTransformationConfig.xml,
OSGI-INF/app4mc.example.transform.m2m.transformers.ExampleModel2ModelTransformer.xml
diff --git a/framework/examples/app4mc.example.transform.m2m/OSGI-INF/app4mc.example.transform.m2m.configuration.M2MTransformationConfig.xml b/framework/examples/app4mc.example.transform.m2m/OSGI-INF/app4mc.example.transform.m2m.configuration.M2MTransformationConfig.xml
deleted file mode 100644
index 2594218..0000000
--- a/framework/examples/app4mc.example.transform.m2m/OSGI-INF/app4mc.example.transform.m2m.configuration.M2MTransformationConfig.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" activate="activate" configuration-pid="TRANSFORMATION_SESSION_CONFIG" configuration-policy="require" name="app4mc.example.transform.m2m.configuration.M2MTransformationConfig">
- <property name="transformation" value="Amalthea2SampleModel"/>
- <service>
- <provide interface="org.eclipse.app4mc.transformation.executiontype.IModelToModelConfig"/>
- </service>
- <implementation class="app4mc.example.transform.m2m.configuration.M2MTransformationConfig"/>
-</scr:component>
\ No newline at end of file
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/configuration/M2MTransformationConfig.java b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/configuration/M2MTransformationConfig.java
deleted file mode 100644
index 1306d9b..0000000
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/configuration/M2MTransformationConfig.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2018-2021 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 app4mc.example.transform.m2m.configuration;
-
-import java.util.Map;
-
-import org.eclipse.app4mc.amalthea.model.AmaltheaFactory;
-import org.eclipse.app4mc.transformation.ServiceConstants;
-import org.eclipse.app4mc.transformation.executiontype.IModelToModelConfig;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.ConfigurationPolicy;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import app4mc.example.transform.m2m.loader.AmaltheaMultiFileLoader;
-import app4mc.example.transform.m2m.loader.IMultiFileLoader;
-import app4mc.example.transform.samplemodel.SampleModelPackage;
-
-@Component(
- configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
- configurationPolicy = ConfigurationPolicy.REQUIRE,
- property = { ServiceConstants.TRANSFORMATION_PROPERTY + "=Amalthea2SampleModel" },
- service = IModelToModelConfig.class)
-
-public class M2MTransformationConfig implements IModelToModelConfig {
-
- private static final Logger LOG = LoggerFactory.getLogger(M2MTransformationConfig.class);
-
- private IMultiFileLoader amaltheaMultiFileLoader = new AmaltheaMultiFileLoader();
-
- private String folderPath;
-
- @Activate
- void activate(Map<String, ?> properties) {
- folderPath = (String) properties.get("input_models_folder");
- }
-
- public ResourceSet getInputResourceSet() {
-
- if (folderPath != null) {
-
- ResourceSet resourceSet = amaltheaMultiFileLoader.loadMultipleFiles(folderPath);
-
- if (resourceSet.getResources().isEmpty()) {
- LOG.error("No Amalthea model files are loaded. Verify if the model version is : {}",
- AmaltheaFactory.eINSTANCE.createAmalthea().getVersion());
- }
-
- return resourceSet;
- } else {
- LOG.error("Input_models_folder parameter not set",
- new NullPointerException("input_models_folder property not set"));
- }
-
- return null;
- }
-
- public ResourceSet getOuputResourceSet() {
-
- ResourceSet outputRurceSet = new ResourceSetImpl();
-
- outputRurceSet.getResourceFactoryRegistry().getExtensionToFactoryMap()
- .put(Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl());
-
- outputRurceSet.getPackageRegistry().put(SampleModelPackage.eNS_URI, SampleModelPackage.eINSTANCE);
-
- return outputRurceSet;
- }
-
-}
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/loader/AmaltheaMultiFileLoader.java b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/loader/AmaltheaMultiFileLoader.java
deleted file mode 100644
index cfd15ee..0000000
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/loader/AmaltheaMultiFileLoader.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2018-2021 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 app4mc.example.transform.m2m.loader;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.app4mc.amalthea.model.Amalthea;
-import org.eclipse.app4mc.amalthea.model.AmaltheaPackage;
-import org.eclipse.app4mc.amalthea.model.emf.AmaltheaResourceFactory;
-import org.eclipse.app4mc.amalthea.model.emf.AmaltheaResourceSetImpl;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * AmaltheaMultiFileLoader
- *
- * Should be replaced by standard AmaltheaLoader (APP4MC version > 1.0.0)
- *
- */
-public class AmaltheaMultiFileLoader implements IMultiFileLoader {
-
- private static final Logger LOG = LoggerFactory.getLogger(AmaltheaMultiFileLoader.class);
-
- public ResourceSet loadMultipleFiles(String directoryPath) {
-
- File folder = new File(directoryPath);
-
- if (folder.isDirectory()) {
- File[] listFiles = folder.listFiles((file, name) -> name.endsWith(".amxmi"));
-
- ResourceSet resourceSet = initializeResourceSet();
- loadMultipleFiles(resourceSet, listFiles);
- return resourceSet;
- }
-
- return new ResourceSetImpl();
-
- }
-
- private List<Amalthea> loadMultipleFiles(ResourceSet resourceSet, File[] listFiles) {
-
- List<Amalthea> models = new ArrayList<>();
-
- for (File amxmiFile : listFiles) {
-
- final Resource res = resourceSet.createResource(URI.createURI("file:////" + amxmiFile.getAbsolutePath()));
- try {
- res.load(null);
- for (final EObject content : res.getContents()) {
- if (content instanceof Amalthea) {
- models.add((Amalthea) content);
- }
- }
- } catch (IOException e) {
- LOG.error(e.getMessage(),e);
- }
- }
- return models;
- }
-
- private static ResourceSet initializeResourceSet() {
- final AmaltheaResourceSetImpl resSet = new AmaltheaResourceSetImpl();
- resSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("amxmi", new AmaltheaResourceFactory());
- AmaltheaPackage.eINSTANCE.eClass(); // register the package
-
- return resSet;
- }
-
-}
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/loader/IMultiFileLoader.java b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/loader/IMultiFileLoader.java
deleted file mode 100644
index e00a7d6..0000000
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/loader/IMultiFileLoader.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2018-2021 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 app4mc.example.transform.m2m.loader;
-
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-public interface IMultiFileLoader {
-
- public ResourceSet loadMultipleFiles(String directoryPath);
-}
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/ExampleModel2ModelTransformer.java b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/ExampleModel2ModelTransformer.java
index d212993..d0b3fc3 100644
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/ExampleModel2ModelTransformer.java
+++ b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/ExampleModel2ModelTransformer.java
@@ -24,28 +24,27 @@
import org.eclipse.app4mc.amalthea.model.Amalthea;
import org.eclipse.app4mc.amalthea.model.HWModel;
import org.eclipse.app4mc.transformation.ServiceConstants;
-import org.eclipse.app4mc.transformation.TransformationConstants;
import org.eclipse.app4mc.transformation.transformers.Model2ModelRootTransformer;
-import org.eclipse.app4mc.transformation.util.PropertyUtil;
+import org.eclipse.app4mc.transformation.util.TransformationGuiceModule;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Exceptions;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ConfigurationPolicy;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.inject.Guice;
import com.google.inject.Injector;
-import com.google.inject.util.Modules;
import app4mc.example.transform.m2m.transformers.hw.ExampleHwTransformer;
import app4mc.example.transform.samplemodel.Model;
import app4mc.example.transform.samplemodel.SampleModelFactory;
+import app4mc.example.transform.samplemodel.SampleModelPackage;
@Component(
configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
@@ -53,47 +52,54 @@
property = { ServiceConstants.TRANSFORMATION_PROPERTY + "=Amalthea2SampleModel" },
service = Model2ModelRootTransformer.class
)
-
public class ExampleModel2ModelTransformer extends Model2ModelRootTransformer {
- private static final Logger LOG = LoggerFactory.getLogger(ExampleModel2ModelTransformer.class);
/**
* - Factory initialization
*/
private static final SampleModelFactory outputModelFactory = SampleModelFactory.eINSTANCE;
- private String outputFolder;
private final HashMap<ArrayList<?>, Model> transformCache = CollectionLiterals.newHashMap();
-
+
@Activate
- void activate(final Map<String, ?> properties) {
- LOG.debug("ExampleModel2ModelTransformer activated");
-
- outputFolder = PropertyUtil.getProperty(TransformationConstants.M2M_OUTPUT_FOLDER, properties);
+ @Override
+ protected void activate(final Map<String, ?> properties) {
+ super.activate(properties);
}
@Override
- public void m2mTransformation(final ResourceSet inputResourceSet, final ResourceSet outputResourceSet) {
+ public ResourceSet getOutputResourceSet() {
+
+ ResourceSet outputResourceSet = new ResourceSetImpl();
+
+ outputResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap()
+ .put(Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl());
+
+ outputResourceSet.getPackageRegistry().put(SampleModelPackage.eNS_URI, SampleModelPackage.eINSTANCE);
+
+ return outputResourceSet;
+ }
+
+ @Override
+ public void m2mTransformation() {
try {
- Injector injector = Guice.createInjector(Modules.EMPTY_MODULE);
-
+ Injector injector = Guice.createInjector(new TransformationGuiceModule(logger));
+
ExampleHwTransformer hardwareTransformer = injector.getInstance(ExampleHwTransformer.class);
- LOG.debug("ExampleHwTransformer : {}", Integer.valueOf(hardwareTransformer.hashCode()));
-
int fileIndex = 1;
- for (final Resource inputResource : inputResourceSet.getResources()) {
+ for (final Resource inputResource : getInputResourceSet(getInputFolder(), logger).getResources()) {
for (final EObject content : inputResource.getContents()) {
- LOG.info("Processing file : {}", inputResource.getURI());
+ logger.info("Processing file : {0}", inputResource.getURI());
final Model simulationModelRoot = transform((Amalthea) content, hardwareTransformer);
- URI uri = URI.createFileURI(outputFolder + File.separator + Integer.valueOf(fileIndex++) + ".root");
- final Resource outputResource = outputResourceSet.createResource(uri);
+ URI uri = URI.createFileURI(getOutputFolder() + File.separator + Integer.valueOf(fileIndex++) + ".root");
+ final Resource outputResource = getOutputResourceSet().createResource(uri);
outputResource.getContents().add(simulationModelRoot);
outputResource.save(null);
- LOG.info("Transformed model file generated at : {}", uri);
+ logger.info("Transformed model file generated at : {0}", uri);
}
}
} catch (IOException e) {
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/hw/ExampleHwTransformer.java b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/hw/ExampleHwTransformer.java
index ccc08e0..99ef97d 100644
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/hw/ExampleHwTransformer.java
+++ b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/hw/ExampleHwTransformer.java
@@ -22,8 +22,7 @@
import org.eclipse.app4mc.amalthea.model.Memory;
import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
import org.eclipse.app4mc.amalthea.model.StructureType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -32,7 +31,9 @@
@Singleton
public class ExampleHwTransformer {
- private static final Logger LOG = LoggerFactory.getLogger(ExampleHwTransformer.class);
+
+ @Inject
+ private SessionLogger logger;
@Inject
private ExampleMemoryTransformer memoryTransformer;
@@ -81,7 +82,7 @@
} else if (hwModule instanceof ProcessingUnit) {
ProcessingUnit amPU = (ProcessingUnit) hwModule;
- LOG.info("Transforming PU : {}", amPU);
+ logger.info("Transforming PU : {0}", amPU);
processingUnitTransformer.transfrom(amPU, outputModel);
}
}
diff --git a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/hw/ExampleProcessingUnitTransformer.java b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/hw/ExampleProcessingUnitTransformer.java
index d9657b4..09595d5 100644
--- a/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/hw/ExampleProcessingUnitTransformer.java
+++ b/framework/examples/app4mc.example.transform.m2m/src/app4mc/example/transform/m2m/transformers/hw/ExampleProcessingUnitTransformer.java
@@ -21,8 +21,7 @@
import org.eclipse.app4mc.amalthea.model.Cache;
import org.eclipse.app4mc.amalthea.model.HwAccessElement;
import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -31,7 +30,9 @@
@Singleton
public class ExampleProcessingUnitTransformer {
- private static final Logger LOG = LoggerFactory.getLogger(ExampleProcessingUnitTransformer.class);
+
+ @Inject
+ private SessionLogger logger;
@Inject
private ExampleCacheTransformer cacheTransformer;
@@ -56,7 +57,7 @@
for (Cache referredCache : referredCaches) {
final app4mc.example.transform.samplemodel.Cache outputCache = cacheTransformer.transfrom(referredCache);
- LOG.info("Cache referred in path elements is : {}", outputCache);
+ logger.info("Cache referred in path elements is : {0}", outputCache);
}
}
}
diff --git a/framework/examples/app4mc.example.transform.m2t.cust/META-INF/MANIFEST.MF b/framework/examples/app4mc.example.transform.m2t.cust/META-INF/MANIFEST.MF
index 959df3e..af743f6 100644
--- a/framework/examples/app4mc.example.transform.m2t.cust/META-INF/MANIFEST.MF
+++ b/framework/examples/app4mc.example.transform.m2t.cust/META-INF/MANIFEST.MF
@@ -10,12 +10,11 @@
com.google.inject;version="1.3.0",
com.google.inject.binder;version="1.3.0",
org.eclipse.app4mc.transformation,
- org.eclipse.app4mc.transformation.executiontype,
org.eclipse.app4mc.transformation.starter,
org.eclipse.app4mc.transformation.transformers,
org.eclipse.app4mc.transformation.util,
- org.osgi.service.component.annotations;version="1.3.0";resolution:=optional,
- org.slf4j;version="1.7.2"
+ org.eclipse.app4mc.util.sessionlog;version="1.1.0",
+ org.osgi.service.component.annotations;version="1.3.0";resolution:=optional
Export-Package: app4mc.example.transform.m2t.cust.transformers
Bundle-ActivationPolicy: lazy
Bundle-Vendor: Eclipse APP4MC
diff --git a/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/module/CustExampleGuiceModule.java b/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/module/CustExampleGuiceModule.java
index 7a83d7b..ef40ccd 100644
--- a/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/module/CustExampleGuiceModule.java
+++ b/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/module/CustExampleGuiceModule.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
+ * Copyright (c) 2020, 2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -15,12 +15,18 @@
package app4mc.example.transform.m2t.cust.module;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
+
import app4mc.example.transform.m2t.cust.transformers.CustTransformer;
import app4mc.example.transform.m2t.transformers.ExampleGuiceModule;
import app4mc.example.transform.m2t.transformers.ExampleTransformer;
public class CustExampleGuiceModule extends ExampleGuiceModule {
+ public CustExampleGuiceModule(SessionLogger logger) {
+ super(logger);
+ }
+
@Override
protected void configure() {
super.configure();
diff --git a/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/module/CustExampleGuiceModuleFactory.java b/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/module/CustExampleGuiceModuleFactory.java
index 650a341..e87cd80 100644
--- a/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/module/CustExampleGuiceModuleFactory.java
+++ b/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/module/CustExampleGuiceModuleFactory.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
+ * Copyright (c) 2020, 2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -15,6 +15,7 @@
package app4mc.example.transform.m2t.cust.module;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import org.osgi.service.component.annotations.Component;
import app4mc.example.transform.m2t.transformers.ExampleGuiceModuleFactory;
@@ -24,10 +25,10 @@
service= ExampleGuiceModuleFactory.class
)
public class CustExampleGuiceModuleFactory extends ExampleGuiceModuleFactory {
-
+
@Override
- public CustExampleGuiceModule getModule() {
- return new CustExampleGuiceModule();
+ public CustExampleGuiceModule getModule(SessionLogger logger) {
+ return new CustExampleGuiceModule(logger);
}
}
diff --git a/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/transformers/CustTransformer.java b/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/transformers/CustTransformer.java
index fa7e6b3..d5344cc 100644
--- a/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/transformers/CustTransformer.java
+++ b/framework/examples/app4mc.example.transform.m2t.cust/src/app4mc/example/transform/m2t/cust/transformers/CustTransformer.java
@@ -17,8 +17,6 @@
import org.eclipse.app4mc.amalthea.model.Amalthea;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.inject.Singleton;
@@ -26,12 +24,10 @@
@Singleton
public class CustTransformer extends ExampleTransformer {
-
- private static final Logger LOG = LoggerFactory.getLogger(CustTransformer.class);
-
+
@Override
public void generateOutput1(final Amalthea amalthea, final OutputBuffer outputBuffer) {
- LOG.info(" - executing CustTransformer.generateOutput1");
+ logger.info(" - executing CustTransformer.generateOutput1");
outputBuffer.appendTo("TEXT", "1", "Customer template\n");
super.generateOutput1(amalthea, outputBuffer);
@@ -39,7 +35,7 @@
@Override
public void generateOutput2(final Amalthea amalthea, final OutputBuffer outputBuffer) {
- LOG.info(" - executing CustTransformer.generateOutput2");
+ logger.info(" - executing CustTransformer.generateOutput2");
outputBuffer.appendTo("TEXT", "2", "Customer template\n");
super.generateOutput2(amalthea, outputBuffer);
diff --git a/framework/examples/app4mc.example.transform.m2t/META-INF/MANIFEST.MF b/framework/examples/app4mc.example.transform.m2t/META-INF/MANIFEST.MF
index eb76402..e1c5aa8 100644
--- a/framework/examples/app4mc.example.transform.m2t/META-INF/MANIFEST.MF
+++ b/framework/examples/app4mc.example.transform.m2t/META-INF/MANIFEST.MF
@@ -9,19 +9,16 @@
Automatic-Module-Name: app4mc.example.transform.m2t
Bundle-ActivationPolicy: lazy
Import-Package: com.google.inject;version="1.3.0",
+ com.google.inject.binder;version="1.3.0",
org.eclipse.app4mc.transformation,
- org.eclipse.app4mc.transformation.executiontype,
org.eclipse.app4mc.transformation.starter,
org.eclipse.app4mc.transformation.transformers,
org.eclipse.app4mc.transformation.util,
+ org.eclipse.app4mc.util.sessionlog;version="1.1.0",
org.osgi.service.component;version="1.4.0",
- org.osgi.service.component.annotations;version="[1.3.0,2.0.0)";resolution:=optional,
- org.slf4j;version="1.7.2"
-Export-Package: app4mc.example.transform.m2t.configuration,
- app4mc.example.transform.m2t.loader,
- app4mc.example.transform.m2t.transformers
+ org.osgi.service.component.annotations;version="[1.3.0,2.0.0)";resolution:=optional
+Export-Package: app4mc.example.transform.m2t.transformers
Bundle-ClassPath: .
-Service-Component: OSGI-INF/app4mc.example.transform.m2t.configuration.M2TTransformationDefinition.xml,
- OSGI-INF/app4mc.example.transform.m2t.configuration.M2TTransformationConfig.xml,
- OSGI-INF/app4mc.example.transform.m2t.transformers.ExampleModel2TextTransformer.xml,
+Service-Component: OSGI-INF/app4mc.example.transform.m2t.M2TTransformationDefinition.xml,
+ OSGI-INF/app4mc.example.transform.m2t.ExampleModel2TextTransformer.xml,
OSGI-INF/app4mc.example.transform.m2t.transformers.ExampleGuiceModuleFactory.xml
diff --git a/framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.transformers.ExampleModel2TextTransformer.xml b/framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.ExampleModel2TextTransformer.xml
similarity index 79%
rename from framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.transformers.ExampleModel2TextTransformer.xml
rename to framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.ExampleModel2TextTransformer.xml
index 15375c6..5cb040f 100644
--- a/framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.transformers.ExampleModel2TextTransformer.xml
+++ b/framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.ExampleModel2TextTransformer.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0" activate="activate" configuration-pid="TRANSFORMATION_SESSION_CONFIG" configuration-policy="require" name="app4mc.example.transform.m2t.transformers.ExampleModel2TextTransformer">
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0" activate="activate" configuration-pid="TRANSFORMATION_SESSION_CONFIG" configuration-policy="require" name="app4mc.example.transform.m2t.ExampleModel2TextTransformer">
<property name="transformation" value="Amalthea2Text"/>
<service>
<provide interface="org.eclipse.app4mc.transformation.transformers.Model2TextRootTransformer"/>
</service>
<reference cardinality="1..1" field="factory" interface="app4mc.example.transform.m2t.transformers.ExampleGuiceModuleFactory" name="factory"/>
- <implementation class="app4mc.example.transform.m2t.transformers.ExampleModel2TextTransformer"/>
+ <implementation class="app4mc.example.transform.m2t.ExampleModel2TextTransformer"/>
</scr:component>
\ No newline at end of file
diff --git a/framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.M2TTransformationDefinition.xml b/framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.M2TTransformationDefinition.xml
new file mode 100644
index 0000000..45b3a96
--- /dev/null
+++ b/framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.M2TTransformationDefinition.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="app4mc.example.transform.m2t.M2TTransformationDefinition">
+ <service>
+ <provide interface="org.eclipse.app4mc.transformation.TransformationDefinition"/>
+ </service>
+ <implementation class="app4mc.example.transform.m2t.M2TTransformationDefinition"/>
+</scr:component>
\ No newline at end of file
diff --git a/framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.configuration.M2TTransformationConfig.xml b/framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.configuration.M2TTransformationConfig.xml
deleted file mode 100644
index d3b7f58..0000000
--- a/framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.configuration.M2TTransformationConfig.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" activate="activate" configuration-pid="TRANSFORMATION_SESSION_CONFIG" configuration-policy="require" name="app4mc.example.transform.m2t.configuration.M2TTransformationConfig">
- <property name="transformation" value="Amalthea2Text"/>
- <service>
- <provide interface="org.eclipse.app4mc.transformation.executiontype.IModelToTextConfig"/>
- </service>
- <implementation class="app4mc.example.transform.m2t.configuration.M2TTransformationConfig"/>
-</scr:component>
\ No newline at end of file
diff --git a/framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.configuration.M2TTransformationDefinition.xml b/framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.configuration.M2TTransformationDefinition.xml
deleted file mode 100644
index ae98116..0000000
--- a/framework/examples/app4mc.example.transform.m2t/OSGI-INF/app4mc.example.transform.m2t.configuration.M2TTransformationDefinition.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="app4mc.example.transform.m2t.configuration.M2TTransformationDefinition">
- <service>
- <provide interface="org.eclipse.app4mc.transformation.TransformationDefinition"/>
- </service>
- <implementation class="app4mc.example.transform.m2t.configuration.M2TTransformationDefinition"/>
-</scr:component>
\ No newline at end of file
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleModel2TextTransformer.java b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/ExampleModel2TextTransformer.java
similarity index 68%
rename from framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleModel2TextTransformer.java
rename to framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/ExampleModel2TextTransformer.java
index b7540ac..779cbc6 100644
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleModel2TextTransformer.java
+++ b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/ExampleModel2TextTransformer.java
@@ -13,29 +13,27 @@
********************************************************************************
*/
-package app4mc.example.transform.m2t.transformers;
+package app4mc.example.transform.m2t;
import java.util.Map;
import org.eclipse.app4mc.amalthea.model.Amalthea;
import org.eclipse.app4mc.transformation.ServiceConstants;
-import org.eclipse.app4mc.transformation.TransformationConstants;
import org.eclipse.app4mc.transformation.transformers.Model2TextRootTransformer;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.eclipse.app4mc.transformation.util.PropertyUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ConfigurationPolicy;
import org.osgi.service.component.annotations.Reference;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.inject.Guice;
import com.google.inject.Injector;
+import app4mc.example.transform.m2t.transformers.ExampleGuiceModuleFactory;
+import app4mc.example.transform.m2t.transformers.ExampleTransformer;
+
@Component(
configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
configurationPolicy = ConfigurationPolicy.REQUIRE,
@@ -44,32 +42,29 @@
)
public class ExampleModel2TextTransformer extends Model2TextRootTransformer {
- private static final Logger LOG = LoggerFactory.getLogger(ExampleModel2TextTransformer.class);
-
@Reference
ExampleGuiceModuleFactory factory;
-
- private OutputBuffer outputBuffer;
@Activate
- void activate(final Map<String, ?> properties) {
- LOG.info("ExampleModel2TextTransformer activated : {}", factory.getClass().getName());
-
- outputBuffer = new OutputBuffer();
- outputBuffer.initialize(PropertyUtil.getProperty(TransformationConstants.M2T_OUTPUT_FOLDER, properties));
- outputBuffer.configureFiletype("TEXT", ".txt", "**************** BEGIN ***************\n\n", "***************** END ****************");
+ @Override
+ protected void activate(Map<String, ?> properties) {
+ super.activate(properties);
}
@Override
- public void m2tTransformation(final ResourceSet inputResourceSet) {
-
- Injector injector = Guice.createInjector(factory.getModule());
+ public void m2tTransformation() {
+ Injector injector = Guice.createInjector(factory.getModule(logger));
ExampleTransformer exampleTransformer = injector.getInstance(ExampleTransformer.class);
- for (final Resource resource : inputResourceSet.getResources()) {
+ OutputBuffer outputBuffer = injector.getInstance(OutputBuffer.class);
+
+ outputBuffer.initialize(getOutputFolder());
+ outputBuffer.configureFiletype("TEXT", ".txt", "**************** BEGIN ***************\n\n", "***************** END ****************");
+
+ for (final Resource resource : getInputResourceSet(getInputFolder(), logger).getResources()) {
for (final EObject model : resource.getContents()) {
- LOG.info("Processing file : {}", resource.getURI());
+ logger.info("Processing file : {0}", resource.getURI());
if (model instanceof Amalthea) {
exampleTransformer.generate((Amalthea) model, outputBuffer);
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/configuration/M2TTransformationDefinition.java b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/M2TTransformationDefinition.java
similarity index 95%
rename from framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/configuration/M2TTransformationDefinition.java
rename to framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/M2TTransformationDefinition.java
index 12196a3..9377273 100644
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/configuration/M2TTransformationDefinition.java
+++ b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/M2TTransformationDefinition.java
@@ -13,7 +13,7 @@
********************************************************************************
*/
-package app4mc.example.transform.m2t.configuration;
+package app4mc.example.transform.m2t;
import org.eclipse.app4mc.transformation.TransformationDefinition;
import org.osgi.service.component.annotations.Component;
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/configuration/M2TTransformationConfig.java b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/configuration/M2TTransformationConfig.java
deleted file mode 100644
index 75e8570..0000000
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/configuration/M2TTransformationConfig.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2018-2021 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 app4mc.example.transform.m2t.configuration;
-
-import java.util.Map;
-
-import org.eclipse.app4mc.amalthea.model.AmaltheaFactory;
-import org.eclipse.app4mc.transformation.ServiceConstants;
-import org.eclipse.app4mc.transformation.executiontype.IModelToTextConfig;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.ConfigurationPolicy;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import app4mc.example.transform.m2t.loader.AmaltheaMultiFileLoader2;
-
-@Component(
- configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
- configurationPolicy = ConfigurationPolicy.REQUIRE,
- property = { ServiceConstants.TRANSFORMATION_PROPERTY + "=Amalthea2Text" },
- service = IModelToTextConfig.class
-)
-public class M2TTransformationConfig implements IModelToTextConfig {
-
- private static final Logger LOG = LoggerFactory.getLogger(M2TTransformationConfig.class);
-
- private AmaltheaMultiFileLoader2 amaltheaMultiFileLoader = new AmaltheaMultiFileLoader2();
-
- private String folderPath;
-
- @Activate
- void activate(Map<String, ?> properties) {
- folderPath = (String) properties.get("input_models_folder");
- }
-
- @Override
- public ResourceSet getInputResourceSet() {
-
- if (folderPath != null) {
-
- ResourceSet resourceSet = amaltheaMultiFileLoader.loadMultipleFiles(folderPath);
-
- if (resourceSet.getResources().isEmpty()) {
- LOG.error("No Amalthea model files are loaded. Verify if the model version is : {}",
- AmaltheaFactory.eINSTANCE.createAmalthea().getVersion());
- }
-
- return resourceSet;
- } else {
- LOG.error("Input_models_folder parameter not set",
- new NullPointerException("input_models_folder property not set"));
- }
-
- return null;
- }
-
-}
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/loader/AmaltheaMultiFileLoader2.java b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/loader/AmaltheaMultiFileLoader2.java
deleted file mode 100644
index 66881c7..0000000
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/loader/AmaltheaMultiFileLoader2.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2018-2021 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 app4mc.example.transform.m2t.loader;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.app4mc.amalthea.model.Amalthea;
-import org.eclipse.app4mc.amalthea.model.AmaltheaPackage;
-import org.eclipse.app4mc.amalthea.model.emf.AmaltheaResourceFactory;
-import org.eclipse.app4mc.amalthea.model.emf.AmaltheaResourceSetImpl;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * AmaltheaMultiFileLoader2
- *
- * Should be replaced by standard AmaltheaLoader (APP4MC version > 1.0.0)
- *
- */
-public class AmaltheaMultiFileLoader2 implements IMultiFileLoader {
-
- private static final Logger LOG = LoggerFactory.getLogger(AmaltheaMultiFileLoader2.class);
-
- public ResourceSet loadMultipleFiles(String directoryPath) {
-
- File folder = new File(directoryPath);
-
- if (folder.isDirectory()) {
- File[] listFiles = folder.listFiles((FilenameFilter) (file, name) -> name.endsWith(".amxmi"));
-
- ResourceSet resourceSet = initializeResourceSet();
-
- loadMultipleFiles(resourceSet, listFiles);
-
- return resourceSet;
- }
-
- return new ResourceSetImpl();
-
- }
-
- private List<Amalthea> loadMultipleFiles(ResourceSet resourceSet, File[] listFiles) {
-
- List<Amalthea> models = new ArrayList<>();
-
- for (File amxmiFile : listFiles) {
-
- final Resource res = resourceSet.createResource(URI.createURI("file:////" + amxmiFile.getAbsolutePath()));
- try {
- res.load(null);
- for (final EObject content : res.getContents()) {
- if (content instanceof Amalthea) {
- models.add((Amalthea) content);
- }
- }
- } catch (IOException e) {
- LOG.error(e.getMessage(), e);
- }
- }
- return models;
- }
-
- private static ResourceSet initializeResourceSet() {
- final AmaltheaResourceSetImpl resSet = new AmaltheaResourceSetImpl();
- resSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("amxmi", new AmaltheaResourceFactory());
- AmaltheaPackage.eINSTANCE.eClass(); // register the package
-
- return resSet;
- }
-
-}
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/loader/IMultiFileLoader.java b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/loader/IMultiFileLoader.java
deleted file mode 100644
index 20ae4d4..0000000
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/loader/IMultiFileLoader.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2018-2021 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 app4mc.example.transform.m2t.loader;
-
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-public interface IMultiFileLoader {
-
- public ResourceSet loadMultipleFiles(String directoryPath);
-}
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleGuiceModule.java b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleGuiceModule.java
index 651624c..e52c97b 100644
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleGuiceModule.java
+++ b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleGuiceModule.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
+ * Copyright (c) 2020, 2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -15,14 +15,13 @@
package app4mc.example.transform.m2t.transformers;
-import com.google.inject.AbstractModule;
+import org.eclipse.app4mc.transformation.util.TransformationGuiceModule;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
-public class ExampleGuiceModule extends AbstractModule {
+public class ExampleGuiceModule extends TransformationGuiceModule {
- @Override
- protected void configure() {
- // TODO Auto-generated method stub
-
+ public ExampleGuiceModule(SessionLogger logger) {
+ super(logger);
}
}
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleGuiceModuleFactory.java b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleGuiceModuleFactory.java
index 2e3d3fc..3c01d02 100644
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleGuiceModuleFactory.java
+++ b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleGuiceModuleFactory.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
+ * Copyright (c) 2020, 2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -12,18 +12,16 @@
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
-
package app4mc.example.transform.m2t.transformers;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import org.osgi.service.component.annotations.Component;
-@Component(
- service = ExampleGuiceModuleFactory.class)
-
+@Component(service = ExampleGuiceModuleFactory.class)
public class ExampleGuiceModuleFactory {
-
- public ExampleGuiceModule getModule() {
- return new ExampleGuiceModule();
+
+ public ExampleGuiceModule getModule(SessionLogger logger) {
+ return new ExampleGuiceModule(logger);
}
}
diff --git a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleTransformer.java b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleTransformer.java
index 0f741b8..af032dd 100644
--- a/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleTransformer.java
+++ b/framework/examples/app4mc.example.transform.m2t/src/app4mc/example/transform/m2t/transformers/ExampleTransformer.java
@@ -17,9 +17,9 @@
import org.eclipse.app4mc.amalthea.model.Amalthea;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
+import com.google.inject.Inject;
import com.google.inject.Singleton;
import app4mc.example.transform.m2t.generators.ExampleGenerator;
@@ -27,23 +27,24 @@
@Singleton
public class ExampleTransformer {
- private static final Logger LOG = LoggerFactory.getLogger(ExampleTransformer.class);
-
+ @Inject
+ protected SessionLogger logger;
+
public void generate(Amalthea model, OutputBuffer outputBuffer) {
generateOutput1(model, outputBuffer);
generateOutput2(model, outputBuffer);
- LOG.info("Script file generated at : {}", outputBuffer.getOutputFolder());
+ logger.info("Script file generated at : {0}", outputBuffer.getOutputFolder());
}
protected void generateOutput1(Amalthea model, OutputBuffer outputBuffer) {
- LOG.info(" - executing ExampleTransformer.generateOutput1");
+ logger.info(" - executing ExampleTransformer.generateOutput1");
outputBuffer.appendTo("TEXT", "1", ExampleGenerator.generateOutput1(model));
}
protected void generateOutput2(Amalthea model, OutputBuffer outputBuffer) {
- LOG.info(" - executing ExampleTransformer.generateOutput2");
+ logger.info(" - executing ExampleTransformer.generateOutput2");
outputBuffer.appendTo("TEXT", "2", ExampleGenerator.generateOutput2(model));
}
diff --git a/framework/examples/app4mc.example.transform.product/Transformation.product b/framework/examples/app4mc.example.transform.product/Transformation.product
index 556b953..b13e16a 100644
--- a/framework/examples/app4mc.example.transform.product/Transformation.product
+++ b/framework/examples/app4mc.example.transform.product/Transformation.product
@@ -9,7 +9,7 @@
<launcherArgs>
<programArgs>--properties "${project_loc:/app4mc.example.transform.product}/input.properties" -console
</programArgs>
- <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dlog4j.configuration=headless_log4j.xml -Dorg.eclipse.emf.ecore.EPackage.Registry.INSTANCE=org.eclipse.emf.ecore.impl.EPackageRegistryImpl
+ <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dorg.eclipse.emf.ecore.EPackage.Registry.INSTANCE=org.eclipse.emf.ecore.impl.EPackageRegistryImpl
</vmArgs>
<vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
</vmArgsMac>
@@ -41,11 +41,12 @@
<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.eclipse.app4mc.amalthea.model"/>
<plugin id="org.eclipse.app4mc.transformation"/>
- <plugin id="org.eclipse.app4mc.transformation.log4j.configuration" fragment="true"/>
<plugin id="org.eclipse.app4mc.transformation.starter"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog.console"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog.file"/>
<plugin id="org.eclipse.emf.common"/>
<plugin id="org.eclipse.emf.ecore"/>
<plugin id="org.eclipse.emf.ecore.xcore.lib"/>
@@ -59,14 +60,14 @@
<plugin id="org.eclipse.osgi.util"/>
<plugin id="org.eclipse.xtext.xbase.lib"/>
<plugin id="org.slf4j.api"/>
- <plugin id="org.slf4j.impl.log4j12" fragment="true"/>
</plugins>
<configurations>
<plugin id="org.apache.felix.scr" autoStart="true" startLevel="2" />
+ <plugin id="org.eclipse.app4mc.util.sessionlog.console" autoStart="true" startLevel="3" />
+ <plugin id="org.eclipse.app4mc.util.sessionlog.file" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.equinox.cm" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
- <property name="log4j.configuration" value="headless_log4j.xml" />
</configurations>
<preferencesInfo>
diff --git a/framework/examples/app4mc.example.transform.ui/.classpath b/framework/examples/app4mc.example.transform.ui/.classpath
deleted file mode 100644
index a7272b8..0000000
--- a/framework/examples/app4mc.example.transform.ui/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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/framework/examples/app4mc.example.transform.ui/.project b/framework/examples/app4mc.example.transform.ui/.project
deleted file mode 100644
index ff91dc8..0000000
--- a/framework/examples/app4mc.example.transform.ui/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>app4mc.example.transform.ui</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>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/framework/examples/app4mc.example.transform.ui/.settings/org.eclipse.core.resources.prefs b/framework/examples/app4mc.example.transform.ui/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 99f26c0..0000000
--- a/framework/examples/app4mc.example.transform.ui/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
diff --git a/framework/examples/app4mc.example.transform.ui/.settings/org.eclipse.jdt.core.prefs b/framework/examples/app4mc.example.transform.ui/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 0fee6a9..0000000
--- a/framework/examples/app4mc.example.transform.ui/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,15 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
diff --git a/framework/examples/app4mc.example.transform.ui/META-INF/MANIFEST.MF b/framework/examples/app4mc.example.transform.ui/META-INF/MANIFEST.MF
deleted file mode 100644
index a6506b0..0000000
--- a/framework/examples/app4mc.example.transform.ui/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,27 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: app4mc.example.transform.ui
-Bundle-SymbolicName: app4mc.example.transform.ui;singleton:=true
-Bundle-Version: 1.1.0.qualifier
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.core.expressions;bundle-version="3.6.100",
- org.eclipse.e4.core.services,
- org.eclipse.jface;bundle-version="3.14.0",
- org.eclipse.osgi.services;bundle-version="3.7.0",
- org.eclipse.e4.core.di,
- org.eclipse.e4.ui.model.workbench;bundle-version="2.1.600.v20191106-1503"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: javax.inject;version="1.0.0",
- org.eclipse.app4mc.transformation,
- org.eclipse.app4mc.transformation.executiontype,
- org.eclipse.app4mc.transformation.starter,
- org.eclipse.app4mc.transformation.transformers,
- org.eclipse.e4.core.contexts;version="1.7.0",
- org.eclipse.e4.core.di.annotations;version="1.6.0",
- org.eclipse.e4.core.di.extensions;version="0.15.0",
- org.eclipse.e4.ui.di,
- org.eclipse.e4.ui.services,
- org.slf4j
-Bundle-ActivationPolicy: lazy
-Automatic-Module-Name: app4mc.example.transform.ui
diff --git a/framework/examples/app4mc.example.transform.ui/build.properties b/framework/examples/app4mc.example.transform.ui/build.properties
deleted file mode 100644
index 9afdcd1..0000000
--- a/framework/examples/app4mc.example.transform.ui/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- fragment.e4xmi
-source.. = src/
diff --git a/framework/examples/app4mc.example.transform.ui/filterfolder@2x.png b/framework/examples/app4mc.example.transform.ui/filterfolder@2x.png
deleted file mode 100644
index 543d7e6..0000000
--- a/framework/examples/app4mc.example.transform.ui/filterfolder@2x.png
+++ /dev/null
Binary files differ
diff --git a/framework/examples/app4mc.example.transform.ui/fragment.e4xmi b/framework/examples/app4mc.example.transform.ui/fragment.e4xmi
deleted file mode 100644
index 007e0fb..0000000
--- a/framework/examples/app4mc.example.transform.ui/fragment.e4xmi
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<fragment:ModelFragments xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:commands="http://www.eclipse.org/ui/2010/UIModel/application/commands" xmlns:fragment="http://www.eclipse.org/ui/2010/UIModel/fragment" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_IiAOwAJpEeu5A_airKb0lA">
- <fragments xsi:type="fragment:StringModelFragment" xmi:id="_LZ96YAJpEeu5A_airKb0lA" featurename="commands" parentElementId="xpath:/">
- <elements xsi:type="commands:Command" xmi:id="_NoQ98AJpEeu5A_airKb0lA" elementId="app4mc.example.transform.ui.command.modeltransformation" commandName="model transformation"/>
- </fragments>
- <fragments xsi:type="fragment:StringModelFragment" xmi:id="_QFbj8AJpEeu5A_airKb0lA" featurename="handlers" parentElementId="xpath:/">
- <elements xsi:type="commands:Handler" xmi:id="_RpSjYAJpEeu5A_airKb0lA" elementId="app4mc.example.transform.ui.handler.0" contributionURI="bundleclass://app4mc.example.transform.ui/app4mc.example.transform.product.handlers.SampleHandler" command="_NoQ98AJpEeu5A_airKb0lA"/>
- </fragments>
- <fragments xsi:type="fragment:StringModelFragment" xmi:id="_jmQp0AJqEeu5A_airKb0lA" featurename="menuContributions" parentElementId="xpath:/">
- <elements xsi:type="menu:MenuContribution" xmi:id="_m4OJ0AJqEeu5A_airKb0lA" elementId="app4mc.example.transform.ui.menucontribution.0" positionInParent="after=additions" parentId="popup">
- <children xsi:type="menu:HandledMenuItem" xmi:id="_nqWKUAJqEeu5A_airKb0lA" elementId="modelTransformation.id" label="APP4MC Model Transformation" command="_NoQ98AJpEeu5A_airKb0lA"/>
- </elements>
- </fragments>
-</fragment:ModelFragments>
diff --git a/framework/examples/app4mc.example.transform.ui/icons/sample.gif b/framework/examples/app4mc.example.transform.ui/icons/sample.gif
deleted file mode 100644
index 34fb3c9..0000000
--- a/framework/examples/app4mc.example.transform.ui/icons/sample.gif
+++ /dev/null
Binary files differ
diff --git a/framework/examples/app4mc.example.transform.ui/plugin.xml b/framework/examples/app4mc.example.transform.ui/plugin.xml
deleted file mode 100644
index 9b1e0bc..0000000
--- a/framework/examples/app4mc.example.transform.ui/plugin.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <extension
- id="org.eclipse.app4mc.amalthea.transformation"
- point="org.eclipse.e4.workbench.model">
- <fragment
- uri="fragment.e4xmi">
- </fragment>
- </extension>
-</plugin>
diff --git a/framework/examples/app4mc.example.transform.ui/src/app4mc/example/transform/product/handlers/SampleHandler.java b/framework/examples/app4mc.example.transform.ui/src/app4mc/example/transform/product/handlers/SampleHandler.java
deleted file mode 100644
index 37e9503..0000000
--- a/framework/examples/app4mc.example.transform.ui/src/app4mc/example/transform/product/handlers/SampleHandler.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- *
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
- *
- * 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 app4mc.example.transform.product.handlers;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Properties;
-
-import javax.inject.Named;
-
-import org.eclipse.app4mc.transformation.TransformationConstants;
-import org.eclipse.app4mc.transformation.TransformationProcessor;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.e4.core.di.annotations.Execute;
-import org.eclipse.e4.core.di.extensions.Service;
-import org.eclipse.e4.ui.services.IServiceConstants;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.widgets.Shell;
-import org.osgi.framework.Bundle;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings("restriction")
-public class SampleHandler {
-
- private static final Logger LOG = LoggerFactory.getLogger(SampleHandler.class);
-
- @Execute
- public Object execute(Shell shell,
- @Service TransformationProcessor cmd,
- @Named(IServiceConstants.ACTIVE_SELECTION) ISelection selection) throws ExecutionException {
-
- LOG.debug("\n\n\n****************************************************************************************************************");
- LOG.debug("TransformationProcessor : {}", cmd.hashCode());
- try {
-
- Properties properties = new Properties();
- String input = getResourceFromPlugin("/input/amalthea_models");
- properties.put("input_models_folder", input);
- File inputFile = new File(input);
- File parentFile = inputFile.getParentFile().getParentFile();
- properties.put(TransformationConstants.OUTPUT_FOLDER, new File(parentFile + File.separator + "output/amalthea_models").getCanonicalPath());
-
- properties.put(TransformationConstants.M2M_TRANSFORMERS, "Amalthea2SampleModel");
- properties.put(TransformationConstants.M2T_TRANSFORMERS, "Amalthea2Text");
-
- cmd.startTransformation(properties);
-// cmd.startTransformation(new File(getResourceFromPlugin("/input.properties")));
-
- } catch (Exception e) {
- ErrorDialog.openError(shell, "Error", e.getMessage(), Status.OK_STATUS);
- }
-
- LOG.debug("****************************************************************************************************************");
- return null;
- }
-
- public String getResourceFromPlugin(String path) throws IOException {
-
- Bundle bundle = Platform.getBundle("app4mc.example.transform.product");
-
- if (bundle != null) {
- URL entry = bundle.getEntry(path);
- if (entry != null) {
- URL fileURL = FileLocator.toFileURL(entry);
- if (fileURL != null) {
- return fileURL.getFile();
- }
- }
- } else {
- LOG.error("Bundle app4mc.example.transform.product is not available, and due to this reason input.properties file can not be fetched");
- }
- return null;
- }
-
-
-}
diff --git a/framework/features/org.eclipse.app4mc.transformation.feature.sdk/feature.xml b/framework/features/org.eclipse.app4mc.transformation.feature.sdk/feature.xml
index 4930cf0..7044346 100644
--- a/framework/features/org.eclipse.app4mc.transformation.feature.sdk/feature.xml
+++ b/framework/features/org.eclipse.app4mc.transformation.feature.sdk/feature.xml
@@ -20,10 +20,6 @@
id="org.eclipse.app4mc.transformation.feature"
version="0.0.0"/>
- <includes
- id="org.eclipse.app4mc.transformation.log4j.configuration.feature"
- version="0.0.0"/>
-
<plugin
id="org.eclipse.app4mc.transformation.source"
download-size="0"
@@ -38,12 +34,4 @@
version="0.0.0"
unpack="false"/>
- <plugin
- id="org.eclipse.app4mc.transformation.log4j.configuration.source"
- download-size="0"
- install-size="0"
- version="0.0.0"
- fragment="true"
- unpack="false"/>
-
</feature>
diff --git a/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/.project b/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/.project
deleted file mode 100644
index 4755fcb..0000000
--- a/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.app4mc.transformation.log4j.configuration.feature</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.FeatureBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.FeatureNature</nature>
- </natures>
-</projectDescription>
diff --git a/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/.settings/org.eclipse.core.resources.prefs b/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 99f26c0..0000000
--- a/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
diff --git a/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/about.html b/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/about.html
deleted file mode 100644
index 164f781..0000000
--- a/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!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/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/build.properties b/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/build.properties
deleted file mode 100644
index 09cb93b..0000000
--- a/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/build.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-bin.includes = feature.xml,\
- epl-2.0.html
-src.includes = epl-2.0.html
diff --git a/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/epl-2.0.html b/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/epl-2.0.html
deleted file mode 100644
index 637a181..0000000
--- a/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/epl-2.0.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!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/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/feature.xml b/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/feature.xml
deleted file mode 100644
index f0a0902..0000000
--- a/framework/features/org.eclipse.app4mc.transformation.log4j.configuration.feature/feature.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
- id="org.eclipse.app4mc.transformation.log4j.configuration.feature"
- label="Log4j Configuration"
- version="1.1.0.qualifier"
- provider-name="Eclipse APP4MC"
- license-feature="org.eclipse.license"
- license-feature-version="0.0.0">
-
- <description url="https://projects.eclipse.org/projects/automotive.app4mc">
- Log4j configuration for model transformation.
-
-Includes appender for the Eclipse UI and an appender per transformation session.
- </description>
-
- <copyright url="https://projects.eclipse.org/projects/automotive.app4mc">
- (c) Copyright Eclipse APP4MC contributors and others. 2018-2021.
-All rights reserved.
- </copyright>
-
- <plugin
- id="org.eclipse.app4mc.transformation.log4j.configuration"
- download-size="0"
- install-size="0"
- version="0.0.0"
- fragment="true"
- unpack="false"/>
-
-</feature>
diff --git a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/.classpath b/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/.classpath
deleted file mode 100644
index eca7bdb..0000000
--- a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/.project b/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/.project
deleted file mode 100644
index f56fc7f..0000000
--- a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.app4mc.transformation.log4j.configuration</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>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
diff --git a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/.settings/org.eclipse.core.resources.prefs b/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 99f26c0..0000000
--- a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
diff --git a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/.settings/org.eclipse.jdt.core.prefs b/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 9f6ece8..0000000
--- a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,8 +0,0 @@
-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/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/META-INF/MANIFEST.MF b/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/META-INF/MANIFEST.MF
deleted file mode 100644
index 2a4729f..0000000
--- a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,20 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: APP4MC Transformation Log4j Configuration
-Bundle-SymbolicName: org.eclipse.app4mc.transformation.log4j.configuration
-Bundle-Version: 1.1.0.qualifier
-Fragment-Host: org.apache.log4j;bundle-version="1.2.15"
-Automatic-Module-Name: org.eclipse.app4mc.amalthea.converters.log4j.configuration
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Require-Bundle: org.eclipse.equinox.common;bundle-version="3.10.0";resolution:=optional,
- org.eclipse.core.runtime;bundle-version="3.14.0";resolution:=optional,
- org.eclipse.ui.console;resolution:=optional,
- org.eclipse.ui;bundle-version="3.115.0";resolution:=optional
-Bundle-Vendor: Eclipse APP4MC
-Import-Package: javax.xml.parsers,
- org.eclipse.equinox.log;version="1.0.0";resolution:=optional,
- org.osgi.framework;version="1.9.0";resolution:=optional,
- org.osgi.service.log;version="1.4.0";resolution:=optional,
- org.osgi.util.tracker;version="1.5.2";resolution:=optional,
- org.w3c.dom,
- org.xml.sax
diff --git a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/build.properties b/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/build.properties
deleted file mode 100644
index a73d166..0000000
--- a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/build.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- log4j.xml,\
- headless_log4j.xml
-src.includes = log4j.xml,\
- headless_log4j.xml
diff --git a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/headless_log4j.xml b/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/headless_log4j.xml
deleted file mode 100644
index 57d96ca..0000000
--- a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/headless_log4j.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
-
- <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
- <!-- only log errors to the console -->
- <param name="Threshold" value="${app4mctransformation.log.level}"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%m%n" />
- </layout>
- </appender>
-
- <appender name="FILE" class="org.eclipse.app4mc.transformation.log4j.configuration.CustFileAppender">
- <param name="append" value="false"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern"
- value="%d{yyyy-MM-dd_HH_mm_ss} - %-5p: %m%n" />
- </layout>
- </appender>
-
- <root>
- <!-- set the log level to debug to catch everything -->
- <!-- on the appenders the threshold is set to filter further -->
- <level value="debug" />
- <appender-ref ref="CONSOLE" />
- <appender-ref ref="FILE" />
- </root>
-
-</log4j:configuration>
\ No newline at end of file
diff --git a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/log4j.xml b/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/log4j.xml
deleted file mode 100644
index d60830f..0000000
--- a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/log4j.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
-
- <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
- <!-- only log errors to the console -->
- <param name="Threshold" value="${app4mctransformation.log.level}"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%m%n" />
- </layout>
- </appender>
-
- <appender name="FILE" class="org.eclipse.app4mc.transformation.log4j.configuration.CustFileAppender">
- <param name="append" value="true"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern"
- value="%d{yyyy-MM-dd_HH_mm_ss} - %-5p: %m%n" />
- </layout>
- </appender>
-
- <appender name="ECLIPSE" class="org.eclipse.app4mc.transformation.log4j.configuration.EclipseLogAppender">
- <!-- only log errors to the eclipse log -->
- <param name="Threshold" value="ERROR"/>
- </appender>
-
- <appender name="ECLIPSE_CONSOLE" class="org.eclipse.app4mc.transformation.log4j.configuration.CustomConsoleAppender">
- <!-- only log errors to the console -->
- <param name="Threshold" value="${app4mctransformation.log.level}"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern"
- value="%d{yyyy-MM-dd_HH_mm_ss} - %-5p: %m%n" />
- </layout>
- </appender>
-
- <root>
- <!-- set the log level to debug to catch everything -->
- <!-- on the appenders the threshold is set to filter further -->
- <level value="debug" />
- <!-- <appender-ref ref="CONSOLE" /> -->
- <appender-ref ref="ECLIPSE" />
- <appender-ref ref="FILE" />
- <appender-ref ref="ECLIPSE_CONSOLE" />
- </root>
-
-</log4j:configuration>
\ No newline at end of file
diff --git a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/src/org/eclipse/app4mc/transformation/log4j/configuration/CustFileAppender.java b/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/src/org/eclipse/app4mc/transformation/log4j/configuration/CustFileAppender.java
deleted file mode 100644
index 32c784f..0000000
--- a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/src/org/eclipse/app4mc/transformation/log4j/configuration/CustFileAppender.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- *
- * Copyright (c) 2018, 2021 Robert Bosch GmbH.
- *
- * 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.transformation.log4j.configuration;
-
-import java.io.File;
-
-import org.apache.log4j.FileAppender;
-
-/**
- * Custom Log4j appender that is writing log statements to a dedicated log file
- * if the system property <i>APP4MC_TRANSFORMATION_LOG_FILE</i> is set. With
- * this mechanism it is possible to write a log file per transformation session
- * to a dedicated log file only.
- */
-public class CustFileAppender extends FileAppender {
-
- private String currentLogFile;
-
- @Override
- protected boolean checkEntryConditions() {
- // we only append if an output directory is set
- String logFilePath = System.getProperty("APP4MC_TRANSFORMATION_LOG_FILE");
- if (logFilePath != null) {
- if (this.currentLogFile == null || !this.currentLogFile.equals(logFilePath)) {
- // close an open file as the output directory changed
- closeFile();
-
- this.currentLogFile = logFilePath;
- // create and set a new session log file
- createNewFile();
- }
-
- return super.checkEntryConditions();
- } else if (currentLogFile != null) {
- // system property is null but local output directory is set
- // so we assume the session logging was disabled
- closeFile();
- this.currentLogFile = null;
- }
- return false;
- }
-
- private void createNewFile() {
- super.setFile(new File(this.currentLogFile).getAbsolutePath());
- super.activateOptions();
- }
-
- @Override
- public void activateOptions() {
- // simply avoid the log warning for missing fileName configuration
- if (fileName != null) {
- super.activateOptions();
- }
- }
-
-}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/src/org/eclipse/app4mc/transformation/log4j/configuration/CustomConsoleAppender.java b/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/src/org/eclipse/app4mc/transformation/log4j/configuration/CustomConsoleAppender.java
deleted file mode 100644
index 766b776..0000000
--- a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/src/org/eclipse/app4mc/transformation/log4j/configuration/CustomConsoleAppender.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- *
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
- *
- * 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.transformation.log4j.configuration;
-
-import java.io.IOException;
-
-import org.apache.log4j.ConsoleAppender;
-import org.apache.log4j.Layout;
-import org.apache.log4j.spi.LoggingEvent;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.console.ConsolePlugin;
-import org.eclipse.ui.console.IConsole;
-import org.eclipse.ui.console.IConsoleConstants;
-import org.eclipse.ui.console.IConsoleManager;
-import org.eclipse.ui.console.MessageConsole;
-import org.eclipse.ui.console.MessageConsoleStream;
-
-public class CustomConsoleAppender extends ConsoleAppender {
-
- public CustomConsoleAppender() {
- }
-
- public CustomConsoleAppender(Layout layout) {
- super(layout, SYSTEM_OUT);
- }
-
- public CustomConsoleAppender(Layout layout, String target) {
- super.setLayout(layout);
- super.setTarget(target);
- super.activateOptions();
- }
-
- private MessageConsole myConsole;
-
- @Override
- public void append(LoggingEvent event) {
- if (logMessageOnConsole(event) == false) {
- myConsole = findConsole("ASF SLG");
- logMessageOnConsole(event);
- }
- }
-
- @Override
- public synchronized void doAppend(LoggingEvent event) {
-
- if (logMessageOnConsole(event) == false) {
- myConsole = findConsole("ASF SLG");
- logMessageOnConsole(event);
- }
- }
-
- private boolean logMessageOnConsole(LoggingEvent event) {
- if (myConsole != null) {
- try (MessageConsoleStream out = myConsole.newMessageStream()) {
- out.println(event.getMessage().toString());
- } catch (IOException e) {
- // ignore
- }
- return true;
- }
- return false;
- }
-
- private MessageConsole findConsole(String name) {
-
- openConsoleView();
- ConsolePlugin plugin = ConsolePlugin.getDefault();
- if (plugin != null) {
- IConsoleManager conMan = plugin.getConsoleManager();
- if (conMan != null) {
- IConsole[] existing = conMan.getConsoles();
- for (int i = 0; i < existing.length; i++)
- if (name.equals(existing[i].getName()))
- return (MessageConsole) existing[i];
- // no console found, so create a new one
- MessageConsole myConsole = new MessageConsole(name, null);
- conMan.addConsoles(new IConsole[] { myConsole });
-
- return myConsole;
-
- }
-
- }
- return null;
- }
-
- private void openConsoleView() {
- try {
- IViewPart findView = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
- .findView(IConsoleConstants.ID_CONSOLE_VIEW);
- if (findView == null) {
- PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
- .showView(IConsoleConstants.ID_CONSOLE_VIEW);
- }
-
- } catch (PartInitException e) {
- // TODO:Currently not logging any message for this exception
- }
- }
-
-}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/src/org/eclipse/app4mc/transformation/log4j/configuration/EclipseLogAppender.java b/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/src/org/eclipse/app4mc/transformation/log4j/configuration/EclipseLogAppender.java
deleted file mode 100644
index 321c46f..0000000
--- a/framework/plugins/org.eclipse.app4mc.transformation.log4j.configuration/src/org/eclipse/app4mc/transformation/log4j/configuration/EclipseLogAppender.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- *
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
- *
- * 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.transformation.log4j.configuration;
-
-import org.apache.log4j.AppenderSkeleton;
-import org.apache.log4j.Level;
-import org.apache.log4j.spi.LoggingEvent;
-import org.apache.log4j.spi.ThrowableInformation;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.FrameworkUtil;
-
-/**
- * Custom Log4j appender that forwards log statements to the Eclipse logging mechanism.
- */
-public class EclipseLogAppender extends AppenderSkeleton {
-
- private int getStatus(final LoggingEvent event) {
- final Level level = event.getLevel();
-
- int status = IStatus.INFO;
-
- if (level == Level.ERROR) {
- status = IStatus.ERROR;
- } else if (level == Level.INFO) {
- status = IStatus.INFO;
- } else if (level == Level.WARN) {
- status = IStatus.WARNING;
- } else if (level == Level.FATAL) {
- status = IStatus.ERROR;
- }
- return status;
- }
-
- @Override
- protected void append(final LoggingEvent event) {
-
- final Object messageObject = event.getMessage();
- final ThrowableInformation throwableInformation = event.getThrowableInformation();
- final int status = getStatus(event);
-
- Bundle bundle = FrameworkUtil.getBundle(getClass());
- if (bundle != null) {
- if (throwableInformation != null) {
- Platform.getLog(bundle).log(new Status(status, bundle.getSymbolicName(),
- messageObject != null ? messageObject.toString() : "", throwableInformation.getThrowable()));
- } else {
- Platform.getLog(bundle).log(new Status(status, bundle.getSymbolicName(),
- messageObject != null ? messageObject.toString() : ""));
- }
- }
- }
-
- @Override
- public void close() {
- }
-
- @Override
- public boolean requiresLayout() {
- return false;
- }
-
-}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation.starter/src/org/eclipse/app4mc/transformation/starter/EquinoxTransformationStarter.java b/framework/plugins/org.eclipse.app4mc.transformation.starter/src/org/eclipse/app4mc/transformation/starter/EquinoxTransformationStarter.java
index 6803dc0..8bc775f 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation.starter/src/org/eclipse/app4mc/transformation/starter/EquinoxTransformationStarter.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation.starter/src/org/eclipse/app4mc/transformation/starter/EquinoxTransformationStarter.java
@@ -115,7 +115,13 @@
}
}
- this.transformationProcessor.startTransformation(propertiesFile, workingDirectory);
+ try {
+ this.transformationProcessor.startTransformation(propertiesFile, workingDirectory);
+ } catch (Exception e) {
+ // if an exception occurs we kill the application
+ System.err.println("Error in transformation setup: " + e.getMessage());
+ System.exit(0);
+ }
}
@Override
diff --git a/framework/plugins/org.eclipse.app4mc.transformation.ui/META-INF/MANIFEST.MF b/framework/plugins/org.eclipse.app4mc.transformation.ui/META-INF/MANIFEST.MF
index a0ab0da..aaf1205 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation.ui/META-INF/MANIFEST.MF
+++ b/framework/plugins/org.eclipse.app4mc.transformation.ui/META-INF/MANIFEST.MF
@@ -27,3 +27,4 @@
org.osgi.service.event;version="1.4.0"
Automatic-Module-Name: org.eclipse.app4mc.transformation.ui
Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.app4mc.transformation.ui.dialog
diff --git a/framework/plugins/org.eclipse.app4mc.transformation.ui/fragment.e4xmi b/framework/plugins/org.eclipse.app4mc.transformation.ui/fragment.e4xmi
index 8bc2fec..048e79c 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation.ui/fragment.e4xmi
+++ b/framework/plugins/org.eclipse.app4mc.transformation.ui/fragment.e4xmi
@@ -4,7 +4,7 @@
<elements xsi:type="commands:Command" xmi:id="_BpXQ8IfJEeuDraQmPJFu-Q" elementId="org.eclipse.app4mc.transformation.ui.command.transformation" commandName="Transformation" description="Opens a wizard to transform an Amalthea model"/>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_hCM8EIfJEeuDraQmPJFu-Q" featurename="handlers" parentElementId="xpath:/">
- <elements xsi:type="commands:Handler" xmi:id="_iSHr0IfJEeuDraQmPJFu-Q" elementId="org.eclipse.app4mc.transformation.ui.handler.0" contributionURI="bundleclass://org.eclipse.app4mc.transformation.ui/org.eclipse.app4mc.transformation.ui.handler.TransformationHandler" command="_BpXQ8IfJEeuDraQmPJFu-Q"/>
+ <elements xsi:type="commands:Handler" xmi:id="_iSHr0IfJEeuDraQmPJFu-Q" elementId="org.eclipse.app4mc.transformation.ui.handler.transformation" contributionURI="bundleclass://org.eclipse.app4mc.transformation.ui/org.eclipse.app4mc.transformation.ui.handler.TransformationHandler" command="_BpXQ8IfJEeuDraQmPJFu-Q"/>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_3Ywj0IfIEeuDraQmPJFu-Q" featurename="menuContributions" parentElementId="xpath:/">
<elements xsi:type="menu:MenuContribution" xmi:id="_5uqrQIfIEeuDraQmPJFu-Q" elementId="org.eclipse.app4mc.transformation.ui.menucontribution.0" positionInParent="after=additions" parentId="fileMenu">
diff --git a/framework/plugins/org.eclipse.app4mc.transformation.ui/src/org/eclipse/app4mc/transformation/ui/dialog/TransformationDialog.java b/framework/plugins/org.eclipse.app4mc.transformation.ui/src/org/eclipse/app4mc/transformation/ui/dialog/TransformationDialog.java
index 24880df..4b73201 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation.ui/src/org/eclipse/app4mc/transformation/ui/dialog/TransformationDialog.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation.ui/src/org/eclipse/app4mc/transformation/ui/dialog/TransformationDialog.java
@@ -12,10 +12,13 @@
*******************************************************************************/
package org.eclipse.app4mc.transformation.ui.dialog;
+import java.io.File;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Dictionary;
+import java.util.HashMap;
import java.util.Hashtable;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Properties;
import java.util.stream.Collectors;
@@ -25,12 +28,14 @@
import org.eclipse.app4mc.transformation.ServiceConstants;
import org.eclipse.app4mc.transformation.TransformationConstants;
import org.eclipse.app4mc.transformation.TransformationDefinition;
+import org.eclipse.app4mc.transformation.TransformationDefinition.TransformationParameter;
import org.eclipse.app4mc.transformation.TransformationProcessor;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Platform;
+import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.e4.core.di.extensions.Service;
import org.eclipse.e4.core.services.events.IEventBroker;
@@ -39,14 +44,15 @@
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.widgets.WidgetFactory;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.osgi.framework.Bundle;
@@ -69,20 +75,17 @@
private Text outputFolderText;
private Path inputPath;
+ private IProject project;
- // TODO add extension mechanism to provide additional ui configurations in the dialog, e.g. SLG ConfigModel
-
-// private Text configModelText;
-//
-// private Button experimentalCodeSnippetButton;
-// private Button enableInstrumentationButton;
-
-// private ConfigModel configModel;
+ private IEclipseContext context;
private ServiceRegistration<?> eventHandler = null;
private IEventBroker eventBroker;
+ private LinkedHashMap<String, List<TransformationParameter>> additionalParams = new LinkedHashMap<>();
+ private HashMap<String, Control> additionalControls = new HashMap<>();
+
@Inject
public TransformationDialog(
Shell parentShell,
@@ -90,8 +93,8 @@
@Service List<TransformationDefinition> definitions,
IEventBroker broker,
@Optional Path inputPath,
- @Optional IProject project/*,
- @Optional ConfigModel configModel*/) {
+ @Optional IProject project,
+ IEclipseContext context) {
super(parentShell);
this.processor = processor;
@@ -100,39 +103,17 @@
this.eventBroker = broker;
this.inputPath = inputPath;
-// this.configModel = configModel;
+ this.project = project;
+ this.context = context;
- // register the eventhandler
- Bundle bundle = FrameworkUtil.getBundle(getClass());
- BundleContext bc = (bundle != null) ? bundle.getBundleContext() : null;
- if (bc != null) {
- Dictionary<String, Object> props = new Hashtable<>();
- props.put(EventConstants.EVENT_TOPIC, "org/osgi/service/cm/ConfigurationEvent/CM_DELETED");
- // register the EventHandler service
- this.eventHandler = bc.registerService(
- EventHandler.class.getName(),
- (EventHandler) event -> {
- if (event.getProperty("cm.factoryPid").equals(ServiceConstants.SESSION_CONFIGURATION_PID)) {
- Display.getDefault().asyncExec(() -> {
- MessageDialog.openInformation(getParentShell(), "Transformation finished", "Transformation finished");
-
- if (project != null) {
- try {
- project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
- } catch (final CoreException e) {
- Platform.getLog(getClass()).error(e.getLocalizedMessage(), e);
- }
- }
-
- eventHandler.unregister();
-
- // send event to stop listening
- eventBroker.send("org/eclipse/app4mc/transformation/FINISHED", "FINISHED");
- });
- }
- },
- props);
- }
+ // collect additional parameters
+ definitions.stream().flatMap(def -> def.getTransformationParameter().stream()).forEach(param -> {
+ List<TransformationParameter> groupParams = additionalParams.computeIfAbsent(param.groupName, emp -> new ArrayList<>());
+ if (groupParams.stream().noneMatch(p -> p.parameterKey.equals(param.parameterKey))) {
+ groupParams.add(param);
+ }
+ });
+
}
@Override
@@ -191,70 +172,102 @@
}
})
.create(container);
-
- /*
- // SLG specific settings
- Group slgGroup = new Group(container, SWT.SHADOW_NONE);
- slgGroup.setText("SLG Settings");
- slgGroup.setLayout(new GridLayout(3, false));
- GridDataFactory.fillDefaults().span(3, 1).grab(true, false).applyTo(slgGroup);
-
- // configuration file
- WidgetFactory
- .label(SWT.NONE)
- .text("Configuration Model")
- .create(slgGroup);
-
- this.configModelText = new Text(slgGroup, SWT.BORDER);
- GridDataFactory
- .swtDefaults()
- .align(SWT.FILL, SWT.BEGINNING)
- .grab(true, false)
- .applyTo(configModelText);
+ // specific settings contributed by transformation implementations
+ additionalParams.entrySet().stream().forEach(entry -> {
+ Group group = new Group(container, SWT.SHADOW_NONE);
+ group.setLayout(new GridLayout());
+ group.setText(entry.getKey());
+ GridDataFactory.fillDefaults().span(3, 1).grab(true, false).applyTo(group);
+ entry.getValue().stream().forEach(param -> {
+
+ Composite elementContainer = new Composite(group, SWT.NONE);
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(elementContainer);
+ if (param.parameterType == File.class) {
+ elementContainer.setLayout(new GridLayout(3, false));
- Button configModelButton = WidgetFactory
- .button(SWT.PUSH)
- .text("...")
- .onSelect(e -> {
- FileDialog fileDialog = new FileDialog(getShell());
- fileDialog.setText("Select the configuration model file");
- String selectedFile = fileDialog.open();
- if (selectedFile != null) {
- configModelText.setText(selectedFile);
+ WidgetFactory
+ .label(SWT.NONE)
+ .text(param.parameterName)
+ .create(elementContainer);
+
+ Text elementText = new Text(elementContainer, SWT.BORDER);
+ GridDataFactory
+ .swtDefaults()
+ .align(SWT.FILL, SWT.BEGINNING)
+ .grab(true, false)
+ .applyTo(elementText);
+
+ this.additionalControls.put(param.parameterKey, elementText);
+
+ Button elementButton = WidgetFactory
+ .button(SWT.PUSH)
+ .text("...")
+ .onSelect(e -> {
+ if (param.parameterKey.toLowerCase().endsWith("folder")) {
+ DirectoryDialog directoryDialog = new DirectoryDialog(getShell());
+ directoryDialog.setText("Select the " + param.parameterName + " directory");
+ String selectedFile = directoryDialog.open();
+ if (selectedFile != null) {
+ elementText.setText(selectedFile);
+ }
+ } else {
+ FileDialog fileDialog = new FileDialog(getShell());
+ fileDialog.setText("Select the " + param.parameterName + " file");
+ String selectedFile = fileDialog.open();
+ if (selectedFile != null) {
+ elementText.setText(selectedFile);
+ }
+ }
+ })
+ .create(elementContainer);
+
+ Object parameterValue = context.get(param.parameterKey);
+ if (parameterValue != null) {
+ elementText.setText(parameterValue.toString());
+ elementText.setEditable(false);
+ elementButton.setEnabled(false);
+ }
+
+ } else if (param.parameterType == Boolean.class) {
+ elementContainer.setLayout(new GridLayout(2, false));
+ Button elementButton = WidgetFactory
+ .button(SWT.CHECK)
+ .create(elementContainer);
+
+ this.additionalControls.put(param.parameterKey, elementButton);
+
+ Label elementLabel = WidgetFactory
+ .label(SWT.NONE)
+ .text(param.parameterName)
+ .create(elementContainer);
+ GridDataFactory
+ .swtDefaults()
+ .align(SWT.FILL, SWT.BEGINNING)
+ .grab(true, false)
+ .applyTo(elementLabel);
+
+ } else if (param.parameterType == String.class) {
+ elementContainer.setLayout(new GridLayout(2, false));
+
+ WidgetFactory
+ .label(SWT.NONE)
+ .text(param.parameterName)
+ .create(elementContainer);
+
+ Text elementText = WidgetFactory
+ .text(SWT.BORDER)
+ .create(elementContainer);
+ GridDataFactory
+ .swtDefaults()
+ .align(SWT.FILL, SWT.BEGINNING)
+ .grab(true, false)
+ .applyTo(elementText);
+
+ this.additionalControls.put(param.parameterKey, elementText);
}
- })
- .create(slgGroup);
-
- this.experimentalCodeSnippetButton = WidgetFactory
- .button(SWT.CHECK)
- .create(slgGroup);
- Label experimentalLabel = WidgetFactory
- .label(SWT.NONE)
- .text("Experimental Code Snippet Matching")
- .create(slgGroup);
- GridDataFactory
- .swtDefaults()
- .align(SWT.FILL, SWT.BEGINNING)
- .grab(true, false)
- .span(2, 1)
- .applyTo(experimentalLabel);
-
- this.enableInstrumentationButton = WidgetFactory
- .button(SWT.CHECK)
- .create(slgGroup);
- Label instrumentationLabel = WidgetFactory
- .label(SWT.NONE)
- .text("Enable Instrumentation")
- .create(slgGroup);
- GridDataFactory
- .swtDefaults()
- .align(SWT.FILL, SWT.BEGINNING)
- .grab(true, false)
- .span(2, 1)
- .applyTo(instrumentationLabel);
-
- */
+ });
+ });
// use already loaded models and lock selection otherwise
@@ -265,14 +278,6 @@
this.outputFolderText.setText(inputPath.resolve("result").toString());
}
-
- /*
- if (this.configModel != null) {
- this.configModelText.setText(this.configModel.eResource().getURI().toFileString());
- this.configModelText.setEditable(false);
- configModelButton.setEnabled(false);
- }
- */
// transformer
if (this.allDefinitions.stream().anyMatch(def -> def.getM2TKey() != null)) {
@@ -338,20 +343,64 @@
properties.put(TransformationConstants.OUTPUT_FOLDER, this.outputFolderText.getText());
if (!this.selectedM2TDefinitions.isEmpty()) {
List<String> keys = this.selectedM2TDefinitions.stream().map(TransformationDefinition::getM2TKey).collect(Collectors.toList());
- properties.put(TransformationConstants.M2T_TRANSFORMERS, String.join(",", keys));
+ if (!keys.isEmpty()) {
+ properties.put(TransformationConstants.M2T_TRANSFORMERS, String.join(",", keys));
+ }
}
if (!this.selectedM2MDefinitions.isEmpty()) {
List<String> keys = this.selectedM2MDefinitions.stream().map(TransformationDefinition::getM2MKey).collect(Collectors.toList());
- properties.put(TransformationConstants.M2M_TRANSFORMERS, String.join(",", keys));
+ if (!keys.isEmpty()) {
+ properties.put(TransformationConstants.M2M_TRANSFORMERS, String.join(",", keys));
+ }
+ }
+
+ if (!properties.containsKey(TransformationConstants.M2M_TRANSFORMERS)
+ && !properties.containsKey(TransformationConstants.M2T_TRANSFORMERS)) {
+ MessageDialog.openInformation(getParentShell(), "Transformation", "No transformation selected!");
+ return;
}
-
-// properties.put("configurationFile", configModelText.getText());
-//
-// properties.put("experimentalCodeSnippetMatching", Boolean.toString(this.experimentalCodeSnippetButton.getSelection()));
-// properties.put("enableInstrumentation", Boolean.toString(this.enableInstrumentationButton.getSelection()));
+ additionalControls.forEach((key, value) -> {
+ if (value instanceof Text) {
+ properties.put(key, ((Text)value).getText());
+ } else if (value instanceof Button) {
+ properties.put(key, Boolean.toString(((Button)value).getSelection()));
+ }
+ });
try {
+ // register the eventhandler
+ Bundle bundle = FrameworkUtil.getBundle(getClass());
+ BundleContext bc = (bundle != null) ? bundle.getBundleContext() : null;
+ if (bc != null) {
+ Dictionary<String, Object> props = new Hashtable<>();
+ props.put(EventConstants.EVENT_TOPIC, "org/osgi/service/cm/ConfigurationEvent/CM_DELETED");
+ // register the EventHandler service
+ this.eventHandler = bc.registerService(
+ EventHandler.class.getName(),
+ (EventHandler) event -> {
+ if (event.getProperty("cm.factoryPid").equals(ServiceConstants.SESSION_CONFIGURATION_PID)) {
+ Display.getDefault().asyncExec(() -> {
+ MessageDialog.openInformation(getParentShell(), "Transformation finished", "Transformation finished");
+
+ if (project != null) {
+ try {
+ project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
+ } catch (final CoreException e) {
+ Platform.getLog(getClass()).error(e.getLocalizedMessage(), e);
+ }
+ }
+
+ eventHandler.unregister();
+
+ // send event to stop listening
+ eventBroker.send("org/eclipse/app4mc/transformation/FINISHED", properties.get(TransformationConstants.LOG_FILE));
+ });
+ }
+ },
+ props);
+ }
+
// start transformation
this.processor.startTransformation(properties);
@@ -372,13 +421,6 @@
}
@Override
- protected Point getInitialSize() {
- return new Point(
- convertHorizontalDLUsToPixels(250),
- convertVerticalDLUsToPixels(200));
- }
-
- @Override
protected boolean isResizable() {
return true;
}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/META-INF/MANIFEST.MF b/framework/plugins/org.eclipse.app4mc.transformation/META-INF/MANIFEST.MF
index a858c3a..fc4805b 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/META-INF/MANIFEST.MF
+++ b/framework/plugins/org.eclipse.app4mc.transformation/META-INF/MANIFEST.MF
@@ -5,19 +5,25 @@
Bundle-Version: 1.1.0.qualifier
Bundle-Vendor: Eclipse APP4MC
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Require-Bundle: com.google.inject;bundle-version="3.0.0",
- org.eclipse.emf.ecore;visibility:=reexport,
+Require-Bundle: org.eclipse.emf.ecore;visibility:=reexport,
org.eclipse.emf.ecore.xmi;visibility:=reexport
Export-Package: org.eclipse.app4mc.transformation;version="1.1.0",
- org.eclipse.app4mc.transformation.executiontype;version="1.1.0",
org.eclipse.app4mc.transformation.transformers;version="1.1.0",
org.eclipse.app4mc.transformation.util;version="1.1.0"
Automatic-Module-Name: org.eclipse.app4mc.transformation
-Import-Package: org.osgi.framework;version="1.9.0",
+Import-Package: com.google.inject;version="1.3.0",
+ com.google.inject.binder;version="1.3.0",
+ com.google.inject.name;version="1.3.0",
+ org.eclipse.app4mc.amalthea.model;version="1.1.0",
+ org.eclipse.app4mc.amalthea.model.io;version="1.1.0",
+ org.eclipse.app4mc.util.sessionlog;version="1.1.0",
+ org.osgi.framework;version="1.9.0",
org.osgi.service.cm;version="1.6.0",
org.osgi.service.component;version="1.4.0",
org.osgi.service.component.annotations;version="[1.3.0,2.0.0)";resolution:=optional,
- org.slf4j;version="1.7.2"
+ org.osgi.service.event;version="1.4.0",
+ org.osgi.service.log;version="1.4.0",
+ org.osgi.util.tracker;version="1.5.2"
Require-Capability: osgi.extender;
filter:="(&(osgi.extender=osgi.component)(version>=1.3)(!(version>=2.0)))",
osgi.implementation;
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/OSGI-INF/org.eclipse.app4mc.transformation.TransformationProcessor.xml b/framework/plugins/org.eclipse.app4mc.transformation/OSGI-INF/org.eclipse.app4mc.transformation.TransformationProcessor.xml
index 4273e3a..9d23422 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/OSGI-INF/org.eclipse.app4mc.transformation.TransformationProcessor.xml
+++ b/framework/plugins/org.eclipse.app4mc.transformation/OSGI-INF/org.eclipse.app4mc.transformation.TransformationProcessor.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0" name="org.eclipse.app4mc.transformation.TransformationProcessor">
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0" activate="activate" deactivate="deactivate" name="org.eclipse.app4mc.transformation.TransformationProcessor">
<service>
<provide interface="org.eclipse.app4mc.transformation.TransformationProcessor"/>
</service>
+ <reference bind="setLogger" cardinality="0..1" interface="org.osgi.service.log.LoggerFactory" name="Logger" policy="dynamic" unbind="unsetLogger"/>
<reference cardinality="1..1" field="configAdmin" interface="org.osgi.service.cm.ConfigurationAdmin" name="configAdmin"/>
+ <reference cardinality="1..1" field="loggerFactory" interface="org.osgi.service.component.ComponentFactory" name="loggerFactory" target="(component.factory=org.eclipse.app4mc.amalthea.sessionlog.factory)"/>
<implementation class="org.eclipse.app4mc.transformation.TransformationProcessor"/>
</scr:component>
\ No newline at end of file
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/OSGI-INF/org.eclipse.app4mc.transformation.registry.TransformerRegistry.xml b/framework/plugins/org.eclipse.app4mc.transformation/OSGI-INF/org.eclipse.app4mc.transformation.registry.TransformerRegistry.xml
index 02a6d75..01ca114 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/OSGI-INF/org.eclipse.app4mc.transformation.registry.TransformerRegistry.xml
+++ b/framework/plugins/org.eclipse.app4mc.transformation/OSGI-INF/org.eclipse.app4mc.transformation.registry.TransformerRegistry.xml
@@ -1,9 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0" activate="activate" configuration-pid="TRANSFORMATION_SESSION_CONFIG" configuration-policy="require" deactivate="deactivate" name="org.eclipse.app4mc.transformation.registry.TransformerRegistry">
- <reference bind="setM2mConfig" cardinality="0..n" interface="org.eclipse.app4mc.transformation.executiontype.IModelToModelConfig" name="M2mConfig" policy="dynamic" unbind="unsetM2mConfig"/>
- <reference bind="setM2mTransformer" cardinality="0..n" interface="org.eclipse.app4mc.transformation.transformers.Model2ModelRootTransformer" name="M2mTransformer" policy="dynamic" unbind="unsetM2mTransformer"/>
- <reference bind="setM2tConfig" cardinality="0..n" interface="org.eclipse.app4mc.transformation.executiontype.IModelToTextConfig" name="M2tConfig" policy="dynamic" unbind="unsetM2tConfig"/>
- <reference bind="setM2tTransformer" cardinality="0..n" interface="org.eclipse.app4mc.transformation.transformers.Model2TextRootTransformer" name="M2tTransformer" policy="dynamic" unbind="unsetM2tTransformer"/>
- <reference cardinality="1..1" field="configAdmin" interface="org.osgi.service.cm.ConfigurationAdmin" name="configAdmin"/>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0" activate="activate" configuration-pid="TRANSFORMATION_SESSION_CONFIG" configuration-policy="require" name="org.eclipse.app4mc.transformation.registry.TransformerRegistry">
+ <service>
+ <provide interface="org.eclipse.app4mc.transformation.registry.TransformerRegistry"/>
+ </service>
+ <reference bind="setLogger" cardinality="0..1" interface="org.osgi.service.log.LoggerFactory" name="Logger" policy="dynamic" unbind="unsetLogger"/>
+ <reference cardinality="1..1" field="eventAdmin" interface="org.osgi.service.event.EventAdmin" name="eventAdmin"/>
+ <reference bind="registerM2mTransformer" cardinality="0..n" interface="org.eclipse.app4mc.transformation.transformers.Model2ModelRootTransformer" name="m2mTransformers"/>
+ <reference bind="registerM2tTransformer" cardinality="0..n" interface="org.eclipse.app4mc.transformation.transformers.Model2TextRootTransformer" name="m2tTransformers"/>
+ <reference bind="setSessionLogger" interface="org.eclipse.app4mc.util.sessionlog.SessionLogger" name="sessionLogger"/>
<implementation class="org.eclipse.app4mc.transformation.registry.TransformerRegistry"/>
</scr:component>
\ No newline at end of file
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/TransformationConstants.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/TransformationConstants.java
index 9b25281..6e7bff4 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/TransformationConstants.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/TransformationConstants.java
@@ -56,6 +56,12 @@
public static final String M2T_OUTPUT_FOLDER = "m2t_output_folder";
/**
+ * Property key to specify the transformation result location. Derived from the
+ * m2m/m2t output folder and the transformation key.
+ */
+ public static final String TRANSFORMATION_OUTPUT_FOLDER = "transformation_output_folder";
+
+ /**
* Property key to specify the session log file location.
*/
public static final String LOG_FILE = "log_file";
@@ -69,4 +75,9 @@
* Property key to specify the m2t transformers that should be executed.
*/
public static final String M2T_TRANSFORMERS = "m2tTransformers";
+
+ /**
+ * The event topic for the event that is sent when a transformation is finished.
+ */
+ public static final String TRANSFORMATION_DONE_TOPIC = "org/eclipse/app4mc/transformation/DONE";
}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/TransformationDefinition.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/TransformationDefinition.java
index 007bc83..cafaa7c 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/TransformationDefinition.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/TransformationDefinition.java
@@ -13,6 +13,9 @@
package org.eclipse.app4mc.transformation;
+import java.util.Collections;
+import java.util.List;
+
/**
* A TransformationDefinition is used to promote information on the provided
* transformation implementation to the runtime.
@@ -45,4 +48,24 @@
*/
String getM2TKey();
+
+ default List<TransformationParameter> getTransformationParameter() {
+ return Collections.emptyList();
+ }
+
+
+ public static class TransformationParameter {
+
+ public final String groupName;
+ public final String parameterKey;
+ public final String parameterName;
+ public final Class<?> parameterType;
+
+ public TransformationParameter(String groupName, String parameterKey, String parameterName, Class<?> parameterType) {
+ this.groupName = groupName;
+ this.parameterKey = parameterKey;
+ this.parameterName = parameterName;
+ this.parameterType = parameterType;
+ }
+ }
}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/TransformationProcessor.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/TransformationProcessor.java
index de5ffcd..5750312 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/TransformationProcessor.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/TransformationProcessor.java
@@ -19,16 +19,32 @@
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.HashMap;
import java.util.Hashtable;
import java.util.Properties;
+import org.eclipse.app4mc.transformation.registry.TransformerRegistry;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.Filter;
import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceRegistration;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.service.component.ComponentFactory;
+import org.osgi.service.component.ComponentInstance;
+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.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
+import org.osgi.service.event.EventConstants;
+import org.osgi.service.event.EventHandler;
+import org.osgi.service.log.Logger;
+import org.osgi.service.log.LoggerFactory;
+import org.osgi.util.tracker.ServiceTracker;
/**
* OSGi service component to start a transformation in an OSGi context. Uses the
@@ -37,11 +53,57 @@
@Component(service = TransformationProcessor.class)
public class TransformationProcessor {
- private static final Logger LOG = LoggerFactory.getLogger(TransformationProcessor.class);
+ LoggerFactory factory;
+ Logger logger;
+
+ @Reference(cardinality = ReferenceCardinality.OPTIONAL, policy = ReferencePolicy.DYNAMIC)
+ void setLogger(LoggerFactory factory) {
+ this.factory = factory;
+ this.logger = factory.getLogger(getClass());
+ }
+
+ void unsetLogger(LoggerFactory loggerFactory) {
+ if (this.factory == loggerFactory) {
+ this.factory = null;
+ this.logger = null;
+ }
+ }
@Reference
ConfigurationAdmin configAdmin;
+ @Reference(target = "(component.factory=" + "org.eclipse.app4mc.amalthea.sessionlog.factory" + ")")
+ ComponentFactory<SessionLogger> loggerFactory;
+
+ ServiceRegistration<?> eventHandlerRegistration;
+
+ HashMap<String, ComponentInstance<SessionLogger>> sessionLoggerMap = new HashMap<>();
+
+ BundleContext context;
+
+ @Activate
+ void activate(BundleContext context) {
+ this.context = context;
+
+ Hashtable<String, Object> properties = new Hashtable<>();
+ properties.put(EventConstants.EVENT_TOPIC, TransformationConstants.TRANSFORMATION_DONE_TOPIC);
+ // register the EventHandler service
+ eventHandlerRegistration = context.registerService(
+ EventHandler.class.getName(),
+ (EventHandler) event -> {
+ String sessionName = event.containsProperty(ServiceConstants.SESSION_ID) ? event.getProperty(ServiceConstants.SESSION_ID).toString() : null;
+ cleanup(sessionName);
+ },
+ properties);
+ }
+
+ @Deactivate
+ void deactivate() {
+ if (eventHandlerRegistration != null) {
+ eventHandlerRegistration.unregister();
+ }
+ }
+
/**
* Start the transformation with the configuration provided by the given
* {@link File}.
@@ -68,7 +130,7 @@
startTransformation(inputParameters, false);
} catch (IOException e) {
- LOG.error("Error in extracting properties from provided input file", e);
+ logger.error("Error in extracting properties from provided input file", e);
}
}
@@ -139,31 +201,135 @@
dictionaryForConfiguration.put(ServiceConstants.SESSION_ID, name);
}
- try {
- // ensure that a session is not triggered twice
- String filter = "(&(service.pid=" + ServiceConstants.SESSION_CONFIGURATION_PID + "~" + name + ")"
- + "(service.factoryPid=" + ServiceConstants.SESSION_CONFIGURATION_PID + "))";
- Configuration[] existing = this.configAdmin.listConfigurations(filter);
- if (existing == null || existing.length == 0) {
- // create the configuration to trigger the activation of transformation components and the transformation
- // this way we start a new session to get new transformer instances
- Configuration configuration = this.configAdmin
- .getFactoryConfiguration(ServiceConstants.SESSION_CONFIGURATION_PID, name, "?");
- configuration.update(dictionaryForConfiguration);
+ // ensure that a session is not triggered twice
+ String servicePid = ServiceConstants.SESSION_CONFIGURATION_PID + "~" + name;
+ String pidFilter = "(service.pid=" + servicePid + ")";
+ String factoryPidFilter = "(service.factoryPid=" + ServiceConstants.SESSION_CONFIGURATION_PID + ")";
+ String filter = "(&" + pidFilter + factoryPidFilter + ")";
+ Configuration[] existing = this.configAdmin.listConfigurations(filter);
+ if (existing == null || existing.length == 0) {
+
+ // first we need to create a SessionLogger so all referring services can be satisfied
+ Hashtable<String, Object> sessionLoggerDictionary = new Hashtable<>();
+ sessionLoggerDictionary.put(ServiceConstants.SESSION_ID, name);
+ ComponentInstance<SessionLogger> sessionLoggerInstance = this.loggerFactory.newInstance(sessionLoggerDictionary);
+ this.sessionLoggerMap.put(name, sessionLoggerInstance);
+ SessionLogger sessionLogger = sessionLoggerInstance.getInstance();
+
+ // after the transformers are created via session configuration we create the TransformerRegistry to start the transformation session
+ // specify target properties to consume only the created instances for the created session
+ String m2mTransformersKey = (String) params.get(TransformationConstants.M2M_TRANSFORMERS);
+ String[] m2mKeys = m2mTransformersKey != null ? m2mTransformersKey.split(",") : new String[0];
+ if (m2mKeys.length > 0) {
+ String m2mFilter = "";
+ for (String key : m2mKeys) {
+ m2mFilter += ("(" + TransformationConstants.M2M_TRANSFORMERS + "=" + key + ")");
+ }
+
+ if (m2mKeys.length > 1) {
+ m2mFilter = "(|" + m2mFilter + ")";
+ }
+
+ m2mFilter = "(&" + pidFilter + m2mFilter + ")";
+ dictionaryForConfiguration.put("m2mTransformers.target", m2mFilter);
+ dictionaryForConfiguration.put("m2mTransformers.cardinality.minimum", m2mKeys.length);
}
- } catch (InvalidSyntaxException e) {
- LOG.error("Error in retrieving existing session configurations", e);
+
+ String m2tTransformersKey = (String) params.get(TransformationConstants.M2T_TRANSFORMERS);
+ String[] m2tKeys = m2tTransformersKey != null ? m2tTransformersKey.split(",") : new String[0];
+ if (m2tKeys.length > 0) {
+ String m2tFilter = "";
+ for (String key : m2tKeys) {
+ m2tFilter += ("(" + ServiceConstants.TRANSFORMATION_PROPERTY + "=" + key + ")");
+ }
+
+ if (m2tKeys.length > 1) {
+ m2tFilter = "(|" + m2tFilter + ")";
+ }
+
+ m2tFilter = "(&" + pidFilter + m2tFilter + ")";
+ dictionaryForConfiguration.put("m2tTransformers.target", m2tFilter);
+ dictionaryForConfiguration.put("m2tTransformers.cardinality.minimum", m2tKeys.length);
+ }
+
+ dictionaryForConfiguration.put("sessionLogger.target", "(" + ServiceConstants.SESSION_ID + "=" + name + ")");
+ // create the configuration to trigger the activation of transformation components and the transformation
+ // this way we start a new session to get new transformer instances
+ Configuration configuration = this.configAdmin
+ .getFactoryConfiguration(ServiceConstants.SESSION_CONFIGURATION_PID, name, "?");
+ configuration.update(dictionaryForConfiguration);
+
+ TransformerRegistry transformerRegistry = getTransformerRegistry(pidFilter);
+ if (transformerRegistry != null) {
+ transformerRegistry.startTransformation();
+ } else {
+ StringBuilder errorBuilder = new StringBuilder("Failed to create TransformerRegistry. Double check the transformer configuration.")
+ .append(System.lineSeparator())
+ .append(System.lineSeparator());
+ dictionaryForConfiguration.entrySet().stream()
+ .filter(entry -> TransformationConstants.M2M_TRANSFORMERS.equals(entry.getKey()) || TransformationConstants.M2T_TRANSFORMERS.equals(entry.getKey()))
+ .forEach(entry -> errorBuilder.append(entry.getKey()).append(" : ").append(entry.getValue()).append(System.lineSeparator()));
+ errorBuilder.append(System.lineSeparator());
+ sessionLogger.error(errorBuilder.toString());
+ sessionLogger.flush(new File((String) params.get(TransformationConstants.LOG_FILE)));
+
+ cleanup(name);
+ }
}
-
- } catch (IOException e) {
- // ignore
+
+ } catch (InvalidSyntaxException | IOException e) {
+ logger.error("Error in retrieving existing session configurations", e);
}
} else {
- LOG.error(
- "ERROR !! Unable to start transformation as required parameters are not set in input properties file");
+ logger.error("ERROR !! Unable to start transformation as required parameters are not set in input properties file");
}
}
+
+ /**
+ * Method to get the {@link TransformerRegistry} from the OSGi service context.
+ * Uses a {@link ServiceTracker} with a filter on the given session id. The
+ * tracker is used because the session instance of the TransfomerRegistry and
+ * the referenced root transformer are created when the configuration is created
+ * via ConfigAdmin. We therefore need to wait until the references can be
+ * satisfied and the instance is created.
+ *
+ * @param pidFilter The filter for the service.pid of the current session.
+ * @return The {@link TransformerRegistry} for the given filter.
+ */
+ private TransformerRegistry getTransformerRegistry(String pidFilter) {
+ try {
+ String filterString = "(&(" + Constants.OBJECTCLASS +
+ "=" + TransformerRegistry.class.getName() + ")" + pidFilter + ")";
+ Filter filter = context.createFilter(filterString);
+
+ ServiceTracker<TransformerRegistry, TransformerRegistry> st =
+ new ServiceTracker<>(context, filter, null);
+ st.open();
+ return st.waitForService(1000);
+ } catch (InterruptedException | InvalidSyntaxException e) {
+ logger.error("Failed to get TransformerRegistry", e);
+ Thread.currentThread().interrupt();
+ }
+ return null;
+ }
+ private void cleanup(String sessionName) {
+ if (sessionLoggerMap.containsKey(sessionName)) {
+ // dispose the SessionLogger stored for the session id
+ sessionLoggerMap.get(sessionName).dispose();
+ }
+
+ // once we are done, we delete the configuration to clean up
+ try {
+ Configuration configuration = configAdmin.getFactoryConfiguration(ServiceConstants.SESSION_CONFIGURATION_PID, sessionName, "?");
+ configuration.delete();
+ } catch (IOException e) {
+ if (logger != null) {
+ logger.error("Failed to delete the session configuration", e);
+ }
+ }
+ }
+
private Properties getInputParameter(File propertiesFile, String workingDirectory) throws IOException {
Properties properties = new Properties();
@@ -223,7 +389,7 @@
throw new IllegalArgumentException("'input_models_folder' parameter needs to be set");
}
- if (inputFile == null || !inputFile.exists()) {
+ if (!inputFile.exists()) {
throw new IllegalArgumentException(
"'input_models_folder' doesn't seem to exist. Please check configuration of 'input_models_folder' and optional 'workingDirectory'.");
}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/executiontype/IModelToModelConfig.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/executiontype/IModelToModelConfig.java
deleted file mode 100644
index 350c0b3..0000000
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/executiontype/IModelToModelConfig.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- *
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
- *
- * 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.transformation.executiontype;
-
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-public interface IModelToModelConfig {
-
- public ResourceSet getInputResourceSet();
-
- public ResourceSet getOuputResourceSet();
-
-}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/executiontype/IModelToTextConfig.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/executiontype/IModelToTextConfig.java
deleted file mode 100644
index faedb88..0000000
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/executiontype/IModelToTextConfig.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- *
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
- *
- * 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.transformation.executiontype;
-
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-public interface IModelToTextConfig {
-
- public ResourceSet getInputResourceSet();
-
-}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/registry/TransformerRegistry.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/registry/TransformerRegistry.java
index 1b7f0e8..f54ce75 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/registry/TransformerRegistry.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/registry/TransformerRegistry.java
@@ -14,36 +14,29 @@
package org.eclipse.app4mc.transformation.registry;
-import java.io.IOException;
-import java.util.Arrays;
+import java.io.File;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.stream.Collectors;
import org.eclipse.app4mc.transformation.ServiceConstants;
import org.eclipse.app4mc.transformation.TransformationConstants;
-import org.eclipse.app4mc.transformation.executiontype.IModelToModelConfig;
-import org.eclipse.app4mc.transformation.executiontype.IModelToTextConfig;
import org.eclipse.app4mc.transformation.transformers.Model2ModelRootTransformer;
import org.eclipse.app4mc.transformation.transformers.Model2TextRootTransformer;
-import org.osgi.service.cm.Configuration;
-import org.osgi.service.cm.ConfigurationAdmin;
+import org.eclipse.app4mc.util.sessionlog.SessionLogWriter;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ConfigurationPolicy;
-import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ReferenceCardinality;
import org.osgi.service.component.annotations.ReferencePolicy;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventAdmin;
+import org.osgi.service.log.Logger;
+import org.osgi.service.log.LoggerFactory;
/**
* Configured OSGi service component to consume root transformer and start the
@@ -56,360 +49,129 @@
*/
@Component(
configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
- configurationPolicy = ConfigurationPolicy.REQUIRE)
+ configurationPolicy = ConfigurationPolicy.REQUIRE,
+ service=TransformerRegistry.class)
public class TransformerRegistry {
- private static final String LINE_SEPARATOR = System.getProperty("line.separator");
-
- private static final Logger LOG = LoggerFactory.getLogger(TransformerRegistry.class);
-
private String logFilePath;
private AtomicBoolean transformationStarted = new AtomicBoolean(false);
- ScheduledExecutorService scheduledExecutorService;
- ScheduledFuture<?> killCheck;
+ LoggerFactory factory;
+ Logger osgiLogger;
@Reference
- ConfigurationAdmin configAdmin;
+ EventAdmin eventAdmin;
+ SessionLogger logger;
+
String sessionName;
- private String[] m2mKeys;
- private String[] m2tKeys;
+ private List<Model2ModelRootTransformer> m2mTransformers = new ArrayList<>();
+ private List<Model2TextRootTransformer> m2tTransformers = new ArrayList<>();
- private HashMap<String, Model2ModelRootTransformer> m2mTransformers = new HashMap<>();
- private HashMap<String, IModelToModelConfig> m2mConfigs = new HashMap<>();
-
- private HashMap<String, Model2TextRootTransformer> m2tTransformers = new HashMap<>();
- private HashMap<String, IModelToTextConfig> m2tConfigs = new HashMap<>();
-
@Activate
void activate(Map<String, ?> properties) {
-
this.logFilePath = (String) properties.get(TransformationConstants.LOG_FILE);
this.sessionName = (String) properties.get(ServiceConstants.SESSION_ID);
-
- String m2mTransformersKey = (String) properties.get("m2mTransformers");
- this.m2mKeys = m2mTransformersKey != null ? m2mTransformersKey.split(",") : new String[0];
-
- LOG.debug("m2m transformer to execute: {}", (Object[]) this.m2mKeys);
-
- String m2tTransformersKey = (String) properties.get(TransformationConstants.M2T_TRANSFORMERS);
- this.m2tKeys = m2tTransformersKey != null ? m2tTransformersKey.split(",") : new String[0];
-
- LOG.debug("m2t transformer to execute: {}", (Object[]) this.m2tKeys);
-
- this.scheduledExecutorService = Executors.newScheduledThreadPool(1);
- this.killCheck = this.scheduledExecutorService.schedule(
- () -> {
- // if after 10 seconds we check if all required transformers are available
- // if not we log an error and kill the session
-
- for (String key : this.m2mKeys) {
- if (!this.m2mTransformers.containsKey(key)) {
- LOG.error("M2M transformer for key '{}' is not available in the runtime", key);
- }
- }
-
- for (String key : this.m2mKeys) {
- if (!this.m2mConfigs.containsKey(key)) {
- LOG.error("M2M configuration for key '{}' is not available in the runtime", key);
- }
- }
-
- for (String key : this.m2tKeys) {
- if (!this.m2tTransformers.containsKey(key)) {
- LOG.error("M2T transformer for key '{}' is not available in the runtime", key);
- }
- }
-
- // check that for all configured keys there is a configuration available
- for (String key : this.m2tKeys) {
- if (!this.m2tConfigs.containsKey(key)) {
- LOG.error("M2T configuration for key '{}' is not available in the runtime", key);
- }
- }
-
- LOG.error("Transformation configuration invalid! Stopping the process!");
-
- try {
- Configuration configuration =
- this.configAdmin.getFactoryConfiguration(ServiceConstants.SESSION_CONFIGURATION_PID, this.sessionName, "?");
- configuration.delete();
- } catch (IOException e) {
- LOG.error("Failed to delete the session configuration", e);
- }
- },
- 10, TimeUnit.SECONDS);
- // if the transformers were already set prior to the activation, we need to start
- checkAllReferencesSet();
}
- @Deactivate
- void deactivate() {
- this.scheduledExecutorService.shutdownNow();
+ @Reference(cardinality = ReferenceCardinality.OPTIONAL, policy = ReferencePolicy.DYNAMIC)
+ void setLogger(LoggerFactory factory) {
+ this.factory = factory;
+ this.osgiLogger = factory.getLogger(getClass());
}
- // Model 2 Model
-
- @Reference(
- cardinality = ReferenceCardinality.MULTIPLE,
- policy = ReferencePolicy.DYNAMIC)
- void setM2mTransformer(Model2ModelRootTransformer transformer, Map<String, ?> properties) {
- String transformationKey = (String) properties.get(ServiceConstants.TRANSFORMATION_PROPERTY);
- if (transformationKey != null) {
- this.m2mTransformers.put(transformationKey, transformer);
-
- LOG.debug("m2m transformer registered for key {}", transformationKey);
-
- checkAllReferencesSet();
+ void unsetLogger(LoggerFactory loggerFactory) {
+ if (this.factory == loggerFactory) {
+ this.factory = null;
+ this.osgiLogger = null;
}
}
- void unsetM2mTransformer(Model2ModelRootTransformer transformer, Map<String, ?> properties) {
- String transformationKey = (String) properties.get(ServiceConstants.TRANSFORMATION_PROPERTY);
- if (transformationKey != null) {
- this.m2mTransformers.remove(transformationKey);
- }
+ /**
+ * Set the {@link SessionLogger} that should be used to write the session log of
+ * the transformation. To write the log, the {@link SessionLogger} needs to have
+ * {@link SessionLogWriter} set.
+ *
+ * @param logger The {@link SessionLogger} that should be used to write the
+ * session log of the transformation.
+ */
+ @Reference(name = "sessionLogger")
+ public void setSessionLogger(SessionLogger logger) {
+ this.logger = logger;
}
- @Reference(
- cardinality = ReferenceCardinality.MULTIPLE,
- policy = ReferencePolicy.DYNAMIC)
- void setM2mConfig(IModelToModelConfig config, Map<String, ?> properties) {
- String transformationKey = (String) properties.get(ServiceConstants.TRANSFORMATION_PROPERTY);
- if (transformationKey != null) {
- this.m2mConfigs.put(transformationKey, config);
-
- LOG.debug("m2m config registered for key {}", transformationKey);
-
- checkAllReferencesSet();
- }
- }
-
- void unsetM2mConfig(IModelToModelConfig config, Map<String, ?> properties) {
- String transformationKey = (String) properties.get(ServiceConstants.TRANSFORMATION_PROPERTY);
- if (transformationKey != null) {
- this.m2mConfigs.remove(transformationKey);
- }
- }
-
- public List<Model2ModelRootTransformer> getModelToModelTransformer(String... transformation){
- List<String> keys = Arrays.asList(transformation);
- return this.m2mTransformers.entrySet().stream()
- .filter(entry -> keys.contains(entry.getKey()))
- .map(Entry<String, Model2ModelRootTransformer>::getValue)
- .collect(Collectors.toList());
- }
-
- public List<IModelToModelConfig> getModelToModelConfig(String... transformation) {
- List<String> keys = Arrays.asList(transformation);
- return this.m2mConfigs.entrySet().stream()
- .filter(entry -> keys.contains(entry.getKey()))
- .map(Entry<String, IModelToModelConfig>::getValue)
- .collect(Collectors.toList());
- }
-
// Model 2 Text
- @Reference(
- cardinality = ReferenceCardinality.MULTIPLE,
- policy = ReferencePolicy.DYNAMIC)
- void setM2tTransformer(Model2TextRootTransformer transformer, Map<String, ?> properties) {
- String transformationKey = (String) properties.get(ServiceConstants.TRANSFORMATION_PROPERTY);
- if (transformationKey != null) {
- m2tTransformers.put(transformationKey, transformer);
-
- LOG.debug("m2t transformer registered for key {}", transformationKey);
+ @Reference(name = "m2mTransformers", cardinality = ReferenceCardinality.MULTIPLE)
+ public void registerM2mTransformer(Model2ModelRootTransformer transformer) {
+ this.m2mTransformers.add(transformer);
+ }
+
+ // Model 2 Text
- checkAllReferencesSet();
- }
+ @Reference(name = "m2tTransformers", cardinality = ReferenceCardinality.MULTIPLE)
+ public void registerM2tTransformer(Model2TextRootTransformer transformer) {
+ m2tTransformers.add(transformer);
}
- void unsetM2tTransformer(Model2TextRootTransformer transformer, Map<String, ?> properties) {
- String transformationKey = (String) properties.get(ServiceConstants.TRANSFORMATION_PROPERTY);
- if (transformationKey != null) {
- m2tTransformers.remove(transformationKey);
+ /**
+ * Start the transformation within an OSGi context. The call of this method
+ * assumes that the {@link TransformerRegistry} instance is configured via OSGi
+ * component configuration.
+ */
+ public void startTransformation() {
+ if (this.transformationStarted.compareAndSet(false, true)) {
+ start();
}
}
- @Reference(
- cardinality = ReferenceCardinality.MULTIPLE,
- policy = ReferencePolicy.DYNAMIC)
- void setM2tConfig(IModelToTextConfig config, Map<String, ?> properties) {
- String transformationKey = (String) properties.get(ServiceConstants.TRANSFORMATION_PROPERTY);
- if (transformationKey != null) {
- m2tConfigs.put(transformationKey, config);
-
- LOG.debug("m2t config registered for key {}", transformationKey);
-
- checkAllReferencesSet();
- }
- }
-
- void unsetM2tConfig(IModelToTextConfig config, Map<String, ?> properties) {
- String transformationKey = (String) properties.get(ServiceConstants.TRANSFORMATION_PROPERTY);
- if (transformationKey != null) {
- m2tConfigs.remove(transformationKey);
- }
- }
-
- public List<Model2TextRootTransformer> getModelToTextTransformer(String... transformation) {
- List<String> keys = Arrays.asList(transformation);
- return m2tTransformers.entrySet().stream()
- .filter(entry -> keys.contains(entry.getKey()))
- .map(Entry<String, Model2TextRootTransformer>::getValue)
- .collect(Collectors.toList());
- }
-
- public List<IModelToTextConfig> getModelToTextConfig(String... transformation) {
- List<String> keys = Arrays.asList(transformation);
- return m2tConfigs.entrySet().stream()
- .filter(entry -> keys.contains(entry.getKey()))
- .map(Entry<String, IModelToTextConfig>::getValue)
- .collect(Collectors.toList());
- }
-
- private void checkAllReferencesSet() {
- if (this.configAdmin == null || this.m2mKeys == null || this.m2tKeys == null) {
- // this component is not activated yet, so no action to perform
- return;
- }
-
- // check that for all configured keys there is a root transformer available
- boolean allM2MTransformersSet = true;
- for (String key : this.m2mKeys) {
- if (!this.m2mTransformers.containsKey(key)) {
- allM2MTransformersSet = false;
- break;
- }
- }
-
- // check that for all configured keys there is a configuration available
- boolean allM2MConfigsSet = true;
- for (String key : this.m2mKeys) {
- if (!this.m2mConfigs.containsKey(key)) {
- allM2MConfigsSet = false;
- break;
- }
- }
-
- // check that for all configured keys there is a root transformer available
- boolean allM2TTransformersSet = true;
- for (String key : this.m2tKeys) {
- if (!this.m2tTransformers.containsKey(key)) {
- allM2TTransformersSet = false;
- break;
- }
- }
-
- // check that for all configured keys there is a configuration available
- boolean allM2TConfigsSet = true;
- for (String key : this.m2tKeys) {
- if (!this.m2tConfigs.containsKey(key)) {
- allM2TConfigsSet = false;
- break;
- }
- }
-
- if (allM2MTransformersSet && allM2MConfigsSet
- && allM2TTransformersSet && allM2TConfigsSet
- && this.transformationStarted.compareAndSet(false, true)) {
- // only start the transformation once if all required transformations are set
- this.killCheck.cancel(true);
- startTransformation();
- }
- }
-
- void startTransformation() {
-
+ void start() {
try {
- // activate session file logging
-
- System.setProperty("APP4MC_TRANSFORMATION_LOG_FILE", logFilePath);
-
- LOG.info("Starting Model transformation ...");
+ logger.info("Starting Model transformation ...");
// Model to Model transformation
- for (String m2mKey : this.m2mKeys) {
- LOG.info("****************** Model to Model Transformation : {} *******************************", m2mKey);
-
- List<Model2ModelRootTransformer> m2mTransformers = getModelToModelTransformer(m2mKey);
-
- List<IModelToModelConfig> m2mConfigs = getModelToModelConfig(m2mKey);
-
- if (!m2mTransformers.isEmpty() && !m2mConfigs.isEmpty()) {
-
- for (Model2ModelRootTransformer model2ModelRootTransformer : m2mTransformers) {
-
- LOG.info("** Executing M2M transformer : {}", model2ModelRootTransformer.getClass().getTypeName());
- for (IModelToModelConfig m2mConfig : m2mConfigs) {
- model2ModelRootTransformer.m2mTransformation(m2mConfig.getInputResourceSet(),
- m2mConfig.getOuputResourceSet());
- }
-
- }
- } else {
- LOG.error("Unable to execute the M2M transformation for key : {}", m2mKey);
-
- String info = "Following configuration is loaded for M2M with key : " + m2mKey
- + LINE_SEPARATOR + "Model2ModelRootTransformer objects : "
- + Arrays.toString(m2mTransformers.toArray()) + LINE_SEPARATOR
- + "IModelToModelConfig objects : " + Arrays.toString(m2mConfigs.toArray());
- LOG.info(info);
- }
+ for (Model2ModelRootTransformer model2ModelRootTransformer : m2mTransformers) {
+ logger.info("****************** Model to Model Transformation : {0} *******************************", model2ModelRootTransformer.getTransformationKey());
+
+ logger.info("** Executing M2M transformer : {0}", model2ModelRootTransformer.getClass().getTypeName());
+ model2ModelRootTransformer.setSessionLogger(logger);
+ model2ModelRootTransformer.m2mTransformation();
}
// Model to Text transformation
- for (String m2tKey : this.m2tKeys) {
- LOG.info("****************** Model to Text Transformation : {} ****************************", m2tKey);
- List<Model2TextRootTransformer> m2tTransformers = getModelToTextTransformer(m2tKey);
-
- List<IModelToTextConfig> m2tConfigs = getModelToTextConfig(m2tKey);
-
- if (!m2tTransformers.isEmpty() && !m2tConfigs.isEmpty()) {
-
- for (Model2TextRootTransformer model2TextRootTransformer : m2tTransformers) {
-
- LOG.info("** Executing M2T transformer : {}", model2TextRootTransformer.getClass().getTypeName());
-
- for (IModelToTextConfig m2tConfig : m2tConfigs) {
- model2TextRootTransformer.m2tTransformation(m2tConfig.getInputResourceSet());
- }
- }
- } else {
- LOG.error("Unable to execute the M2T transformation for key : {}", m2tKey);
-
- String info = "Following configuration is loaded for M2T with key : " + m2tKey
- + LINE_SEPARATOR + "Model2TextRootTransformer objects : "
- + Arrays.toString(m2tTransformers.toArray()) + LINE_SEPARATOR
- + "IModelToTextConfig objects : " + Arrays.toString(m2tConfigs.toArray());
- LOG.info(info);
- }
+ for (Model2TextRootTransformer model2TextRootTransformer : m2tTransformers) {
+ logger.info("****************** Model to Text Transformation : {0} ****************************", model2TextRootTransformer.getTransformationKey());
+
+ logger.info("** Executing M2T transformer : {0}", model2TextRootTransformer.getClass().getTypeName());
+ model2TextRootTransformer.setSessionLogger(logger);
+ model2TextRootTransformer.m2tTransformation();
}
- LOG.info("Transformation execution session '{}' completed.", this.sessionName);
-
} finally {
+ logger.info("Transformation execution session \"{0}\" completed.", this.sessionName);
- // we need this check in case the TransformerRegistry is called outside an OSGi context
- if (this.configAdmin != null) {
- // once we are done, we delete the configuration to clean up
- try {
- Configuration configuration = this.configAdmin.getFactoryConfiguration(ServiceConstants.SESSION_CONFIGURATION_PID, this.sessionName, "?");
- configuration.delete();
- } catch (IOException e) {
- LOG.error("Failed to delete the session configuration", e);
- }
- }
-
- // removing the system property will disable the TransformationFileAppender
- System.clearProperty("APP4MC_TRANSFORMATION_LOG_FILE");
- LOG.info("Transformation session finished");
+ stopSession();
+ }
+ }
+
+ /**
+ * Stop the current running session by deleting the configuration. Additionally
+ * the session logger is flushed and disposed.
+ */
+ private void stopSession() {
+ // we need to flush the session log first, as deleting the configuration will
+ // trigger listeners that eventually kill the process, e.g. in headless mode
+ this.logger.flush(new File(this.logFilePath));
+
+ if (this.eventAdmin != null) {
+ HashMap<String, Object> properties = new HashMap<>();
+ properties.put(ServiceConstants.SESSION_ID, this.sessionName);
+ this.eventAdmin.sendEvent(new Event("org/eclipse/app4mc/transformation/DONE", properties));
}
}
@@ -425,14 +187,11 @@
this.logFilePath = (String) properties.get(TransformationConstants.LOG_FILE);
this.sessionName = "single";
-
- String m2mTransformersKey = (String) properties.get("m2mTransformers");
- this.m2mKeys = m2mTransformersKey != null ? m2mTransformersKey.split(",") : new String[0];
-
- String m2tTransformersKey = (String) properties.get(TransformationConstants.M2T_TRANSFORMERS);
- this.m2tKeys = m2tTransformersKey != null ? m2tTransformersKey.split(",") : new String[0];
- startTransformation();
+ if (this.logger == null) {
+ this.logger = new SessionLogger();
+ }
+ start();
}
/**
@@ -440,71 +199,16 @@
* outside the OSGi context.
*
* @param logFilePath the session log file location
- * @param m2mKeys the keys of the m2m transformers that should be executed
- * @param m2tKeys the keys of the m2t transformers that should be executed
*/
- public void startTransformation(String logFilePath, String[] m2mKeys, String[] m2tKeys) {
+ public void startTransformation(String logFilePath) {
this.logFilePath = logFilePath;
this.sessionName = "single";
- this.m2mKeys = m2mKeys != null ? m2mKeys : new String[0];
-
- this.m2tKeys = m2tKeys != null ? m2tKeys : new String[0];
-
- startTransformation();
- }
-
- // Model 2 Text
-
- public void addM2mTransformer(String transformationKey, Model2ModelRootTransformer transformer) {
- if (transformationKey == null || transformer == null) {
- throw new IllegalArgumentException("key and transformer can not be null");
+ if (this.logger == null) {
+ this.logger = new SessionLogger();
}
-
- this.m2mTransformers.put(transformationKey, transformer);
- }
-
- public void removeM2mTransformer(String transformationKey) {
- this.m2mTransformers.remove(transformationKey);
- }
-
- public void addM2mConfig(String transformationKey, IModelToModelConfig config) {
- if (transformationKey == null || config == null) {
- throw new IllegalArgumentException("key and config can not be null");
- }
-
- this.m2mConfigs.put(transformationKey, config);
- }
-
- public void removeM2mConfig(String transformationKey) {
- this.m2mConfigs.remove(transformationKey);
- }
-
- // Model 2 Text
-
- public void addM2tTransformer(String transformationKey, Model2TextRootTransformer transformer) {
- if (transformationKey == null || transformer == null) {
- throw new IllegalArgumentException("key and transformer can not be null");
- }
-
- m2tTransformers.put(transformationKey, transformer);
- }
-
- public void removeM2tTransformer(String transformationKey) {
- m2tTransformers.remove(transformationKey);
- }
-
- public void addM2tConfig(String transformationKey, IModelToTextConfig config) {
- if (transformationKey == null || config == null) {
- throw new IllegalArgumentException("key and config can not be null");
- }
-
- m2tConfigs.put(transformationKey, config);
- }
-
- public void removeM2tConfig(String transformationKey) {
- m2tConfigs.remove(transformationKey);
+ start();
}
}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/IRootTransformer.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/IRootTransformer.java
index c5eb3b7..76de9d1 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/IRootTransformer.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/IRootTransformer.java
@@ -1,6 +1,6 @@
/*******************************************************************************
*
- * Copyright (c) 2018, 2020 Robert Bosch GmbH.
+ * Copyright (c) 2018, 2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -14,6 +14,32 @@
package org.eclipse.app4mc.transformation.transformers;
+import org.eclipse.app4mc.amalthea.model.AmaltheaFactory;
+import org.eclipse.app4mc.amalthea.model.io.AmaltheaLoader;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
public interface IRootTransformer {
+ default ResourceSet getInputResourceSet(String folderPath, SessionLogger logger) {
+
+ if (folderPath != null) {
+
+ ResourceSet resourceSet = AmaltheaLoader.loadFromDirectoryNamed(folderPath);
+
+ if (resourceSet.getResources().stream().noneMatch(r -> !r.getContents().isEmpty())) {
+ logger.error(
+ "No Amalthea model files are loaded. Verify if the model version is : {0}",
+ AmaltheaFactory.eINSTANCE.createAmalthea().getVersion());
+ }
+
+ return resourceSet;
+ } else {
+ logger.error("Input_models_folder parameter not set",
+ new NullPointerException("input_models_folder property not set"));
+ }
+
+ return null;
+ }
+
}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2ModelRootTransformer.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2ModelRootTransformer.java
index 73d060a..4b34ebb 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2ModelRootTransformer.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2ModelRootTransformer.java
@@ -1,5 +1,5 @@
/**
- * Copyright (c) 2018-2020 Robert Bosch GmbH.
+ * Copyright (c) 2018-2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -13,10 +13,49 @@
package org.eclipse.app4mc.transformation.transformers;
+import java.nio.file.Paths;
+import java.util.Map;
+
+import org.eclipse.app4mc.transformation.ServiceConstants;
+import org.eclipse.app4mc.transformation.TransformationConstants;
+import org.eclipse.app4mc.transformation.util.PropertyUtil;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import org.eclipse.emf.ecore.resource.ResourceSet;
public abstract class Model2ModelRootTransformer implements IRootTransformer {
- public abstract void m2mTransformation(final ResourceSet inputResourceSet, final ResourceSet outputResourceSet);
+ protected SessionLogger logger;
+
+ private String inputFolder;
+ private String outputFolder;
+ private String transformationKey;
+
+ protected void activate(Map<String, ?> properties) {
+ this.inputFolder = PropertyUtil.getProperty(TransformationConstants.INPUT_MODELS_FOLDER, properties);
+ this.transformationKey = PropertyUtil.getProperty(ServiceConstants.TRANSFORMATION_PROPERTY, properties);
+
+ String m2mOutputFolder = PropertyUtil.getProperty(TransformationConstants.M2M_OUTPUT_FOLDER, properties);
+ this.outputFolder = Paths.get(m2mOutputFolder, transformationKey).toString();
+ }
+
+ public String getInputFolder() {
+ return inputFolder;
+ }
+
+ public String getOutputFolder() {
+ return outputFolder;
+ }
+
+ public String getTransformationKey() {
+ return transformationKey;
+ }
+
+ public void setSessionLogger(SessionLogger logger) {
+ this.logger = logger;
+ }
+
+ public abstract void m2mTransformation();
+
+ public abstract ResourceSet getOutputResourceSet();
}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2TextRootTransformer.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2TextRootTransformer.java
index cc9f4ad..7b08edc 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2TextRootTransformer.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/transformers/Model2TextRootTransformer.java
@@ -1,5 +1,5 @@
/**
- * Copyright (c) 2018-2020 Robert Bosch GmbH.
+ * Copyright (c) 2018-2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -13,10 +13,46 @@
package org.eclipse.app4mc.transformation.transformers;
-import org.eclipse.emf.ecore.resource.ResourceSet;
+import java.nio.file.Paths;
+import java.util.Map;
+
+import org.eclipse.app4mc.transformation.ServiceConstants;
+import org.eclipse.app4mc.transformation.TransformationConstants;
+import org.eclipse.app4mc.transformation.util.PropertyUtil;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
public abstract class Model2TextRootTransformer implements IRootTransformer {
- public abstract void m2tTransformation(final ResourceSet inputResourceSet);
+ protected SessionLogger logger;
+
+ private String inputFolder;
+ private String transformationKey;
+ private String outputFolder;
+
+ protected void activate(Map<String, ?> properties) {
+ this.inputFolder = PropertyUtil.getProperty(TransformationConstants.INPUT_MODELS_FOLDER, properties);
+ this.transformationKey = PropertyUtil.getProperty(ServiceConstants.TRANSFORMATION_PROPERTY, properties);
+
+ String m2tOutputFolder = PropertyUtil.getProperty(TransformationConstants.M2T_OUTPUT_FOLDER, properties);
+ this.outputFolder = Paths.get(m2tOutputFolder, transformationKey).toString();
+ }
+
+ public String getInputFolder() {
+ return inputFolder;
+ }
+
+ public String getOutputFolder() {
+ return outputFolder;
+ }
+
+ public String getTransformationKey() {
+ return transformationKey;
+ }
+
+ public void setSessionLogger(SessionLogger logger) {
+ this.logger = logger;
+ }
+
+ public abstract void m2tTransformation();
}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/FileHelper.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/FileHelper.java
index 2d98ef9..76542c9 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/FileHelper.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/FileHelper.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
+ * Copyright (c) 2020, 2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -26,8 +26,7 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
public class FileHelper {
@@ -36,13 +35,11 @@
throw new IllegalStateException("Utility class");
}
- private static final Logger LOG = LoggerFactory.getLogger(FileHelper.class);
-
- public static void zipResult(String outputFolder) throws IOException {
- zipResult(outputFolder, Collections.emptyList());
+ public static void zipResult(String outputFolder, SessionLogger logger) throws IOException {
+ zipResult(outputFolder, Collections.emptyList(), logger);
}
- public static void zipResult(String outputFolder, List<Path> excludeDirs) throws IOException {
+ public static void zipResult(String outputFolder, List<Path> excludeDirs, SessionLogger logger) throws IOException {
Path sourceDir = Paths.get(outputFolder);
List<Path> sourceFiles;
@@ -63,21 +60,21 @@
try (ZipOutputStream zipOutputStream = new ZipOutputStream(Files.newOutputStream(zipFile))) {
for (Path path : sourceFiles) {
- addFileToArchive(sourceDir, path, zipOutputStream);
+ addFileToArchive(sourceDir, path, zipOutputStream, logger);
}
} catch (Exception e) {
- LOG.error("Failed to produce result zip archive", e);
+ logger.error("Failed to produce result zip archive", e);
}
}
- private static void addFileToArchive(Path sourceDir, Path file, ZipOutputStream zipOutputStream) {
+ private static void addFileToArchive(Path sourceDir, Path file, ZipOutputStream zipOutputStream, SessionLogger logger) {
try {
ZipEntry zipEntry = new ZipEntry(sourceDir.relativize(file).toString());
zipOutputStream.putNextEntry(zipEntry);
Files.copy(file, zipOutputStream);
zipOutputStream.closeEntry();
} catch (IOException e) {
- LOG.error("Failed to include {} to zip archive", file.getFileName(), e);
+ logger.error("Failed to include {0} to zip archive", file.getFileName(), e);
}
}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/OutputBuffer.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/OutputBuffer.java
index ae75a80..e831b12 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/OutputBuffer.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/OutputBuffer.java
@@ -15,7 +15,6 @@
package org.eclipse.app4mc.transformation.util;
-import java.util.List;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
@@ -25,17 +24,18 @@
import java.nio.file.Path;
import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map.Entry;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
+import com.google.inject.Inject;
import com.google.inject.Singleton;
@Singleton
public class OutputBuffer {
- private static final Logger LOG = LoggerFactory.getLogger(OutputBuffer.class);
+ SessionLogger logger;
private final HashMap<String, TypedBuffer> filetypeToBufferMap = new HashMap<>();
@@ -43,6 +43,11 @@
private List<Path> excludePathsOfResult = Collections.emptyList();
+ @Inject
+ public void setSessionLogger(SessionLogger logger) {
+ this.logger = logger;
+ }
+
public void initialize(String outputFolder) {
this.outputFolder = outputFolder;
}
@@ -100,7 +105,7 @@
writer.append(newContent);
writer.flush();
} catch (IOException e) {
- LOG.error("Failed to write result file: {}", targetFile);
+ logger.error("Failed to write result file: {0}", targetFile);
}
}
}
@@ -108,9 +113,9 @@
if (createZip) {
// Create Zip archive
try {
- FileHelper.zipResult(outputFolder,excludePathsOfResult);
+ FileHelper.zipResult(outputFolder,excludePathsOfResult, logger);
} catch (Exception e) {
- LOG.error("Failed to produce result zip archive: ", e);
+ logger.error("Failed to produce result zip archive: ", e);
}
}
}
@@ -130,7 +135,7 @@
return newContent.equals(String.valueOf(fileContent));
} catch (IOException e1) {
- LOG.error("Failed to read File {}, which should be present", file.getPath());
+ logger.error("Failed to read File {0}, which should be present", file.getPath(), logger);
}
return false;
}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/PropertyUtil.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/PropertyUtil.java
index 9997357..9649397 100644
--- a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/PropertyUtil.java
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/PropertyUtil.java
@@ -32,5 +32,4 @@
}
return value.toString();
}
-
}
diff --git a/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/TransformationGuiceModule.java b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/TransformationGuiceModule.java
new file mode 100644
index 0000000..73bf935
--- /dev/null
+++ b/framework/plugins/org.eclipse.app4mc.transformation/src/org/eclipse/app4mc/transformation/util/TransformationGuiceModule.java
@@ -0,0 +1,39 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2020-2021 Robert Bosch GmbH.
+ *
+ * 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.transformation.util;
+
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
+
+import com.google.inject.AbstractModule;
+
+/**
+ * Default module that should be added to the created injector by creating a
+ * child-injector. Needed to be able to get the SessionLogger instance injected
+ * via Google Guice injection.
+ */
+public class TransformationGuiceModule extends AbstractModule {
+
+ private SessionLogger logger;
+
+ public TransformationGuiceModule(SessionLogger logger) {
+ this.logger = logger;
+ }
+
+ @Override
+ protected void configure() {
+ bind(SessionLogger.class).toInstance(logger);
+ }
+
+}
diff --git a/framework/releng/org.eclipse.app4mc.transformation.p2repo/category.xml b/framework/releng/org.eclipse.app4mc.transformation.p2repo/category.xml
index cfc5dc0..d970758 100644
--- a/framework/releng/org.eclipse.app4mc.transformation.p2repo/category.xml
+++ b/framework/releng/org.eclipse.app4mc.transformation.p2repo/category.xml
@@ -3,9 +3,6 @@
<feature id="org.eclipse.app4mc.transformation.examples.feature">
<category name="org.eclipse.app4mc.transformation.p2repo"/>
</feature>
- <feature id="org.eclipse.app4mc.transformation.log4j.configuration.feature">
- <category name="org.eclipse.app4mc.transformation.p2repo"/>
- </feature>
<feature id="org.eclipse.app4mc.transformation.feature">
<category name="org.eclipse.app4mc.transformation.p2repo"/>
</feature>
diff --git a/framework/releng/org.eclipse.app4mc.transformation.target/org.eclipse.app4mc.transformation.target.target b/framework/releng/org.eclipse.app4mc.transformation.target/org.eclipse.app4mc.transformation.target.target
index 43198f6..083d6fd 100644
--- a/framework/releng/org.eclipse.app4mc.transformation.target/org.eclipse.app4mc.transformation.target.target
+++ b/framework/releng/org.eclipse.app4mc.transformation.target/org.eclipse.app4mc.transformation.target.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="Model Transformation Target" sequenceNumber="1618548343">
+<target name="Model Transformation Target" sequenceNumber="1619689277">
<locations>
<location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
<unit id="org.eclipse.sdk.ide" version="4.14.0.I20191210-0610"/>
@@ -10,12 +10,10 @@
<unit id="org.eclipse.equinox.compendium.sdk.feature.group" version="3.20.0.v20191107-1453"/>
<unit id="org.eclipse.xtext.xbase.lib.feature.group" version="2.20.0.v20191202-0910"/>
<unit id="org.apache.commons.lang" version="2.6.0.v201404270220"/>
- <unit id="org.apache.log4j" version="1.2.15.v201012070815"/>
<unit id="javax.xml" version="1.3.4.v201005080400"/>
- <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="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.10.v20170428-1633"/>
<repository location="https://download.eclipse.org/releases/2019-12"/>
</location>
<location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
@@ -30,5 +28,9 @@
<unit id="org.eclipse.license.feature.group" version="2.0.2.v20181016-2210"/>
<repository location="https://download.eclipse.org/cbi/updates/license"/>
</location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.app4mc.utils.platform.sdk.feature.group" version="0.0.0"/>
+ <repository location="https://download.eclipse.org/app4mc/components/addon/migration/snapshot/p2repo/"/>
+ </location>
</locations>
</target>
diff --git a/framework/releng/org.eclipse.app4mc.transformation.target/org.eclipse.app4mc.transformation.target.tpd b/framework/releng/org.eclipse.app4mc.transformation.target/org.eclipse.app4mc.transformation.target.tpd
index 53a1600..6b54829 100644
--- a/framework/releng/org.eclipse.app4mc.transformation.target/org.eclipse.app4mc.transformation.target.tpd
+++ b/framework/releng/org.eclipse.app4mc.transformation.target/org.eclipse.app4mc.transformation.target.tpd
@@ -9,27 +9,26 @@
org.eclipse.equinox.compendium.sdk.feature.group
org.eclipse.xtext.xbase.lib.feature.group
org.apache.commons.lang
- org.apache.log4j
javax.xml
- // SLF4J
- org.slf4j.api [1.7.2,1.7.3)
- org.slf4j.impl.log4j12 [1.7.2,1.7.3)
-
com.google.guava
com.google.inject
+
+ org.slf4j.api
}
location "https://download.eclipse.org/tools/orbit/downloads/drops/R20191126223242/repository" {
org.apache.commons.math3
}
-//location "https://download.eclipse.org/app4mc/updatesites/releases/1.1.0"
+location "https://download.eclipse.org/app4mc/updatesites/releases/1.1.0" {
+ org.eclipse.app4mc.amalthea.models.feature.group
+}
-location "https://download.eclipse.org/app4mc/updatesites/snapshot" {
- org.eclipse.app4mc.amalthea.models.feature.group lazy
+location "https://download.eclipse.org/app4mc/components/addon/migration/releases/1.1.0/p2repo/" {
+ org.eclipse.app4mc.utils.platform.sdk.feature.group lazy
}
location "https://download.eclipse.org/cbi/updates/license" {
org.eclipse.license.feature.group
-}
\ No newline at end of file
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/META-INF/MANIFEST.MF b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/META-INF/MANIFEST.MF
index 002b755..98a6e56 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/META-INF/MANIFEST.MF
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/META-INF/MANIFEST.MF
@@ -6,7 +6,6 @@
Bundle-Vendor: Eclipse APP4MC
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: com.google.inject;bundle-version="3.0.0",
- org.eclipse.emf;bundle-version="2.6.0",
org.eclipse.app4mc.amalthea.model;bundle-version="1.0.0";visibility:=reexport
Automatic-Module-Name: org.eclipse.app4mc.slg.commons.m2t.transformers.m2t
Export-Package: org.eclipse.app4mc.slg.commons.m2t,
@@ -17,7 +16,6 @@
org.eclipse.app4mc.slg.config,
org.eclipse.app4mc.slg.config.util,
org.eclipse.app4mc.transformation;version="0.1.0",
- org.eclipse.app4mc.transformation.executiontype;version="0.1.0",
org.eclipse.app4mc.transformation.transformers;version="0.1.0",
org.eclipse.app4mc.transformation.util;version="0.1.0",
- org.slf4j;version="1.7.2"
+ org.eclipse.app4mc.util.sessionlog;version="1.1.0"
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/AmaltheaMultiFileLoader.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/AmaltheaMultiFileLoader.java
deleted file mode 100644
index c55c79b..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/AmaltheaMultiFileLoader.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * *******************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
- * 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.slg.commons.m2t;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.app4mc.amalthea.model.Amalthea;
-import org.eclipse.app4mc.amalthea.model.AmaltheaPackage;
-import org.eclipse.app4mc.amalthea.model.emf.AmaltheaResourceFactory;
-import org.eclipse.app4mc.amalthea.model.emf.AmaltheaResourceSetImpl;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * AmaltheaMultiFileLoader
- *
- * Should be replaced by standard AmaltheaLoader (APP4MC version > 1.0.0)
- *
- */
-@Deprecated
-public class AmaltheaMultiFileLoader implements IMultiFileLoader{
-
- private static final Logger LOG = LoggerFactory.getLogger(AmaltheaMultiFileLoader.class);
-
- public ResourceSet loadMultipleFiles(String directoryPath) {
-
- File folder = new File(directoryPath);
-
- if (folder.isDirectory()) {
- File[] listFiles = folder.listFiles((file, name) -> name.endsWith(".amxmi"));
-
- ResourceSet resourceSet = initializeResourceSet();
-
- loadMultipleFiles(resourceSet, listFiles);
-
- return resourceSet;
- }
-
- return new ResourceSetImpl();
-
- }
-
- private List<Amalthea> loadMultipleFiles(ResourceSet resourceSet, File[] listFiles) {
-
- List<Amalthea> models = new ArrayList<>();
-
- for (File amxmiFile : listFiles) {
-
- final Resource res = resourceSet.createResource(URI.createURI("file:////" + amxmiFile.getAbsolutePath()));
- try {
- res.load(null);
- for (final EObject content : res.getContents()) {
- if (content instanceof Amalthea) {
- models.add((Amalthea) content);
- }
- }
- } catch (IOException e) {
- LOG.error(e.getMessage(),e);
- }
- }
- return models;
- }
-
- private static ResourceSet initializeResourceSet() {
- AmaltheaPackage.eINSTANCE.eClass(); // register the package
- final AmaltheaResourceSetImpl resSet = new AmaltheaResourceSetImpl();
- resSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("amxmi", new AmaltheaResourceFactory());
-
- return resSet;
- }
-
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/IMultiFileLoader.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/IMultiFileLoader.java
deleted file mode 100644
index 83dfa24..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/IMultiFileLoader.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
- * 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.slg.commons.m2t;
-
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-@Deprecated
-public interface IMultiFileLoader {
-
- public ResourceSet loadMultipleFiles(String directoryPath);
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/M2TTransformationConfig.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/M2TTransformationConfig.java
deleted file mode 100644
index 2bf2abf..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/M2TTransformationConfig.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * *******************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
- *
- * 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.slg.commons.m2t;
-
-import org.eclipse.app4mc.amalthea.model.AmaltheaFactory;
-import org.eclipse.app4mc.transformation.executiontype.IModelToTextConfig;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class M2TTransformationConfig implements IModelToTextConfig {
-
- private static final Logger LOG = LoggerFactory.getLogger(M2TTransformationConfig.class);
-
- protected AmaltheaMultiFileLoader amaltheaMultiFileLoader = new AmaltheaMultiFileLoader();
- protected String folderPath;
-
- public ResourceSet getInputResourceSet() {
- if (this.folderPath != null) {
- ResourceSet resourceSet = this.amaltheaMultiFileLoader.loadMultipleFiles(this.folderPath);
-
- if (resourceSet.getResources().isEmpty()) {
- LOG.error(
- "No Amalthea model files are loaded. Verify if the model version is : {}",
- AmaltheaFactory.eINSTANCE.createAmalthea().getVersion());
- }
-
- return resourceSet;
- }
- LOG.error("input_models_folder parameter not set");
-
- return null;
- }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/AmaltheaModel2TextTransformer.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/AmaltheaModel2TextTransformer.java
index 92fe81c..b515780 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/AmaltheaModel2TextTransformer.java
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/AmaltheaModel2TextTransformer.java
@@ -21,17 +21,17 @@
import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore;
import org.eclipse.app4mc.slg.config.ConfigModel;
import org.eclipse.app4mc.slg.config.util.ConfigurationFileLoader;
+import org.eclipse.app4mc.transformation.TransformationConstants;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.inject.Inject;
public class AmaltheaModel2TextTransformer extends SLGBaseTransformer {
- private static final Logger LOG = LoggerFactory.getLogger(AmaltheaModel2TextTransformer.class);
+ @Inject private SessionLogger logger;
@Inject private Properties properties;
@Inject private CustomObjectsStore customObjsStore;
@@ -46,27 +46,34 @@
for (final Resource resource : inputResourceSet.getResources()) {
for (final EObject model : resource.getContents()) {
// check javadoc : https://www.eclipse.org/xtend/documentation/204_activeannotations.html#active-annotations-expression
- LOG.info("Processing file : {}", resource.getURI());
+ logger.info("Processing file : {0}", resource.getURI());
- final String outputFolder = getProperty("m2t_output_folder");
+ final String outputFolder = getProperty(TransformationConstants.TRANSFORMATION_OUTPUT_FOLDER);
final String configurationFilePath = getProperty("configurationFile");
if ((configurationFilePath != null)) {
- configModel = new ConfigurationFileLoader().loadConfigurationFile(configurationFilePath);
+ try {
+ configModel = ConfigurationFileLoader.loadConfigurationFile(configurationFilePath);
+ } catch (IllegalStateException e) {
+ logger.error(e.getMessage(), e);
+ return;
+ }
customObjsStore.<ConfigModel>injectMembers(ConfigModel.class, configModel);
} else {
- LOG.error("configuration file path is not supplied as a command line argument");
+ logger.error("configuration file path is not supplied as a command line argument");
+ return;
}
if ((configModel == null)) {
- LOG.error("As no configuration model is available , unable to proceed with the load generator application !!");
+ logger.error("As no configuration model is available , unable to proceed with the load generator application !!");
+ return;
}
if ((model instanceof Amalthea)) {
this.transform(((Amalthea) model), outputFolder);
}
- LOG.info("Script file generated at : {}", outputFolder);
+ logger.info("Script file generated at : {0}", outputFolder);
}
}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/ActivityGraphItemTransformer.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/ActivityGraphItemTransformer.java
index cd0fd5b..5057bd0 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/ActivityGraphItemTransformer.java
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/ActivityGraphItemTransformer.java
@@ -25,18 +25,17 @@
import org.eclipse.app4mc.amalthea.model.Ticks;
import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseTransformer;
import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGTranslationUnit;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@Singleton
public class ActivityGraphItemTransformer extends SLGBaseTransformer {
- private static final String UNSUPPORTED_ELEMENT = "Unsupported element inside ActivityGraph : {}";
- private static final Logger LOG = LoggerFactory.getLogger(ActivityGraphItemTransformer.class);
+ private static final String UNSUPPORTED_ELEMENT = "Unsupported element inside ActivityGraph : {0}";
+ @Inject private SessionLogger logger;
@Inject private RunnableTransformer runnableTransformer;
@Inject private LabelAccessTransformer labelAccessTransformer;
@Inject private TicksTransformer ticksTransformer;
@@ -56,15 +55,15 @@
return runnableTransformer.transform(((RunnableCall) graphItem).getRunnable());
} else if (graphItem instanceof ChannelReceive) {
- LOG.error(UNSUPPORTED_ELEMENT, "ChannelReceive");
+ logger.error(UNSUPPORTED_ELEMENT, "ChannelReceive");
return new SLGTranslationUnit("ChannelReceive is not yet implemented");
} else if (graphItem instanceof ChannelSend) {
- LOG.error(UNSUPPORTED_ELEMENT, "ChannelSend");
+ logger.error(UNSUPPORTED_ELEMENT, "ChannelSend");
return new SLGTranslationUnit("ChannelSend is not yet implemented");
}
- LOG.error(UNSUPPORTED_ELEMENT, graphItem.getClass().getName());
+ logger.error(UNSUPPORTED_ELEMENT, graphItem.getClass().getName());
return new SLGTranslationUnit(graphItem.eClass().getName() + " in not supported");
}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/xtend-gen/readme.txt b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/xtend-gen/readme.txt
deleted file mode 100644
index 759a0c2..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/xtend-gen/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-Code generated by Xtend builder.
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.config/META-INF/MANIFEST.MF b/load_generator/commons/plugins/org.eclipse.app4mc.slg.config/META-INF/MANIFEST.MF
index 29a0051..4415a66 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.config/META-INF/MANIFEST.MF
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.config/META-INF/MANIFEST.MF
@@ -11,12 +11,7 @@
Export-Package: org.eclipse.app4mc.slg.config,
org.eclipse.app4mc.slg.config.impl,
org.eclipse.app4mc.slg.config.util
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.emf.ecore;visibility:=reexport,
+Require-Bundle: org.eclipse.emf.ecore;visibility:=reexport,
org.eclipse.emf.ecore.xmi;bundle-version="2.14.0"
Bundle-ActivationPolicy: lazy
-Import-Package: javax.inject;version="1.0.0",
- org.eclipse.app4mc.transformation;version="0.1.0",
- org.eclipse.app4mc.transformation.executiontype;version="0.1.0",
- org.eclipse.app4mc.transformation.transformers;version="0.1.0",
- org.slf4j;version="1.7.2"
+Import-Package: javax.inject;version="1.0.0"
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.config/src/org/eclipse/app4mc/slg/config/util/ConfigurationFileLoader.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.config/src/org/eclipse/app4mc/slg/config/util/ConfigurationFileLoader.java
index 9a3f9e7..bdca3a8 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.config/src/org/eclipse/app4mc/slg/config/util/ConfigurationFileLoader.java
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.config/src/org/eclipse/app4mc/slg/config/util/ConfigurationFileLoader.java
@@ -1,6 +1,6 @@
/**
* *******************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
+ * Copyright (c) 2020, 2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -27,14 +27,10 @@
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-public class ConfigurationFileLoader {
+public final class ConfigurationFileLoader {
- private static final Logger LOG = LoggerFactory.getLogger(ConfigurationFileLoader.class);
-
- public ConfigModel loadConfigurationFile(String filePath) {
+ public static ConfigModel loadConfigurationFile(String filePath) {
ResourceSet resourceSet = new ResourceSetImpl();
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap()
@@ -48,7 +44,6 @@
String path = file.getCanonicalPath();
URI uri = file.isFile() ? URI.createFileURI(path) : URI.createURI(path);
Resource resource = resourceSet.getResource(uri, true);
- LOG.info("Loaded {}", uri);
// Validate the contents of the loaded resource.
//
@@ -61,7 +56,7 @@
}
}
} catch (RuntimeException | IOException exception) {
- LOG.error("Error loading configuration file : {}", exception.getMessage());
+ throw new IllegalStateException("Error on loading configuration file", exception);
}
return null;
diff --git a/load_generator/commons/releng/org.eclipse.app4mc.slg.commons.target/org.eclipse.app4mc.slg.commons.target.target b/load_generator/commons/releng/org.eclipse.app4mc.slg.commons.target/org.eclipse.app4mc.slg.commons.target.target
index f2c050b..ccfcd7b 100644
--- a/load_generator/commons/releng/org.eclipse.app4mc.slg.commons.target/org.eclipse.app4mc.slg.commons.target.target
+++ b/load_generator/commons/releng/org.eclipse.app4mc.slg.commons.target/org.eclipse.app4mc.slg.commons.target.target
@@ -1,16 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="Synthetic Load Generator Commons Target" sequenceNumber="1619009225">
+<target name="Synthetic Load Generator Commons Target" sequenceNumber="1620299800">
<locations>
<location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
<unit id="org.eclipse.sdk.ide" version="4.14.0.I20191210-0610"/>
<unit id="org.eclipse.emf.ecore.xcore.lib.feature.group" version="1.5.0.v20190401-0856"/>
<unit id="org.eclipse.emf.mwe.core" version="1.5.1.v20191121-1148"/>
<unit id="org.eclipse.emf.sdk.feature.group" version="2.20.0.v20191028-0905"/>
- <unit id="org.eclipse.emf.transaction.feature.group" version="1.12.0.201805140824"/>
- <unit id="org.eclipse.emf.validation.feature.group" version="1.12.1.201812070911"/>
- <unit id="org.eclipse.emf.workspace.feature.group" version="1.12.0.201805140824"/>
<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.xtext.runtime.feature.group" version="2.20.0.v20191202-1256"/>
@@ -19,29 +16,24 @@
<unit id="org.eclipse.xtext.xbase.lib.feature.group" version="2.20.0.v20191202-0910"/>
<unit id="org.eclipse.xtend.sdk.feature.group" version="2.20.0.v20191202-1256"/>
<unit id="org.eclipse.xpand.sdk.feature.group" version="2.2.0.v201605260315"/>
- <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.log4j" version="1.2.15.v201012070815"/>
- <unit id="org.apache.xerces" version="2.9.0.v201101211617"/>
- <unit id="org.apache.xalan" version="2.7.1.v201005080400"/>
- <unit id="org.apache.xml.resolver" version="1.2.0.v201005080400"/>
- <unit id="org.apache.xml.serializer" version="2.7.1.v201005080400"/>
<unit id="javax.xml" version="1.3.4.v201005080400"/>
- <unit id="org.jdom" version="1.1.1.v201101151400"/>
<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="com.google.guava" version="27.1.0.v20190517-1946"/>
<unit id="com.google.inject" version="3.0.0.v201605172100"/>
<repository location="https://download.eclipse.org/releases/2019-12"/>
</location>
<location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
- <unit id="org.apache.commons.math" version="2.1.0.v201105210652"/>
<unit id="org.apache.commons.math3" version="3.5.0.v20190611-1023"/>
<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.app4mc.platform.sdk.feature.group" version="0.0.0"/>
- <repository location="http://download.eclipse.org/app4mc/updatesites/snapshot"/>
+ <unit id="org.eclipse.app4mc.platform.sdk.feature.group" version="1.1.0.202104301043"/>
+ <repository location="https://download.eclipse.org/app4mc/updatesites/releases/1.1.0"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.app4mc.utils.platform.sdk.feature.group" version="1.1.0.202104300936"/>
+ <repository location="https://download.eclipse.org/app4mc/components/addon/migration/releases/1.1.0/p2repo/"/>
</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"/>
diff --git a/load_generator/commons/releng/org.eclipse.app4mc.slg.commons.target/org.eclipse.app4mc.slg.commons.target.tpd b/load_generator/commons/releng/org.eclipse.app4mc.slg.commons.target/org.eclipse.app4mc.slg.commons.target.tpd
index 1ad7dc8..3aab4af 100644
--- a/load_generator/commons/releng/org.eclipse.app4mc.slg.commons.target/org.eclipse.app4mc.slg.commons.target.tpd
+++ b/load_generator/commons/releng/org.eclipse.app4mc.slg.commons.target/org.eclipse.app4mc.slg.commons.target.tpd
@@ -7,9 +7,6 @@
org.eclipse.emf.ecore.xcore.lib.feature.group
org.eclipse.emf.mwe.core
org.eclipse.emf.sdk.feature.group
- org.eclipse.emf.transaction.feature.group
- org.eclipse.emf.validation.feature.group
- org.eclipse.emf.workspace.feature.group
org.eclipse.equinox.sdk.feature.group
org.eclipse.equinox.compendium.sdk.feature.group
org.eclipse.xtext.runtime.feature.group
@@ -18,33 +15,26 @@
org.eclipse.xtext.xbase.lib.feature.group
org.eclipse.xtend.sdk.feature.group
org.eclipse.xpand.sdk.feature.group
- org.apache.commons.cli
org.apache.commons.lang
- org.apache.log4j
- org.apache.xerces
- org.apache.xalan
- org.apache.xml.resolver
- org.apache.xml.serializer
javax.xml
- org.jdom
// SLF4J
org.slf4j.api [1.7.2,1.7.3)
- org.slf4j.impl.log4j12 [1.7.2,1.7.3)
com.google.guava
com.google.inject
}
location "https://download.eclipse.org/tools/orbit/downloads/drops/R20191126223242/repository" {
- org.apache.commons.math
org.apache.commons.math3
}
-//location "http://download.eclipse.org/app4mc/updatesites/releases/1.1.0"
+location "https://download.eclipse.org/app4mc/updatesites/releases/1.1.0" {
+ org.eclipse.app4mc.platform.sdk.feature.group
+}
-location "http://download.eclipse.org/app4mc/updatesites/snapshot" {
- org.eclipse.app4mc.platform.sdk.feature.group lazy
+location "https://download.eclipse.org/app4mc/components/addon/migration/releases/1.1.0/p2repo/" {
+ org.eclipse.app4mc.utils.platform.sdk.feature.group
}
location "https://download.eclipse.org/cbi/updates/license" {
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/META-INF/MANIFEST.MF b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/META-INF/MANIFEST.MF
index 476290d..14111ec 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/META-INF/MANIFEST.MF
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/META-INF/MANIFEST.MF
@@ -7,17 +7,15 @@
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: javax.inject;version="1.0.0",
org.eclipse.app4mc.transformation;version="0.1.0",
- org.eclipse.app4mc.transformation.executiontype;version="0.1.0",
org.eclipse.app4mc.transformation.transformers;version="0.1.0",
org.eclipse.app4mc.transformation.util;version="0.1.0",
- org.osgi.service.component.annotations;version="[1.3.0,2.0.0)";resolution:=optional,
- org.slf4j;version="1.7.2"
+ org.eclipse.app4mc.util.sessionlog;version="1.1.0",
+ org.osgi.service.component.annotations;version="[1.3.0,2.0.0)";resolution:=optional
Require-Bundle: com.google.inject;bundle-version="3.0.0",
org.eclipse.app4mc.slg.commons.m2t;bundle-version="0.1.0",
org.eclipse.app4mc.slg.config;bundle-version="0.1.0"
Bundle-ActivationPolicy: lazy
Bundle-Vendor: Eclipse APP4MC
-Service-Component: OSGI-INF/org.eclipse.app4mc.slg.linux.artefacts.LinuxM2TTransformationConfig.xml,
- OSGI-INF/org.eclipse.app4mc.slg.linux.artefacts.LinuxGoogleGuiceModuleFactory.xml,
+Service-Component: OSGI-INF/org.eclipse.app4mc.slg.linux.artefacts.LinuxGoogleGuiceModuleFactory.xml,
OSGI-INF/org.eclipse.app4mc.slg.linux.artefacts.LinuxRootTransformer.xml,
OSGI-INF/org.eclipse.app4mc.slg.linux.artefacts.LinuxSLGTransformationDefinition.xml
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/OSGI-INF/org.eclipse.app4mc.slg.linux.artefacts.LinuxM2TTransformationConfig.xml b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/OSGI-INF/org.eclipse.app4mc.slg.linux.artefacts.LinuxM2TTransformationConfig.xml
deleted file mode 100644
index 9ed0eeb..0000000
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/OSGI-INF/org.eclipse.app4mc.slg.linux.artefacts.LinuxM2TTransformationConfig.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" activate="activate" configuration-pid="TRANSFORMATION_SESSION_CONFIG" configuration-policy="require" name="org.eclipse.app4mc.slg.linux.artefacts.LinuxM2TTransformationConfig">
- <property name="transformation" value="LINUX_SLG"/>
- <service>
- <provide interface="org.eclipse.app4mc.transformation.executiontype.IModelToTextConfig"/>
- </service>
- <implementation class="org.eclipse.app4mc.slg.linux.artefacts.LinuxM2TTransformationConfig"/>
-</scr:component>
\ No newline at end of file
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxGoogleGuiceModule.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxGoogleGuiceModule.java
index 3d003c2..42b5fbd 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxGoogleGuiceModule.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxGoogleGuiceModule.java
@@ -20,19 +20,22 @@
import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore;
import org.eclipse.app4mc.slg.commons.m2t.transformers.sw.RunnableTransformer;
import org.eclipse.app4mc.slg.customization.CustomRunnableTransformer;
+import org.eclipse.app4mc.transformation.util.TransformationGuiceModule;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
-import com.google.inject.AbstractModule;
-
-public class LinuxGoogleGuiceModule extends AbstractModule {
+public class LinuxGoogleGuiceModule extends TransformationGuiceModule {
protected Properties properties;
- public LinuxGoogleGuiceModule(Properties properties) {
+ public LinuxGoogleGuiceModule(SessionLogger logger, Properties properties) {
+ super(logger);
this.properties = properties;
}
@Override
protected void configure() {
+ super.configure();
+
bind(Properties.class).toInstance(this.properties);
bind(CustomObjectsStore.class).toInstance(new CustomObjectsStore());
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxGoogleGuiceModuleFactory.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxGoogleGuiceModuleFactory.java
index d2dec57..356fd36 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxGoogleGuiceModuleFactory.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxGoogleGuiceModuleFactory.java
@@ -18,6 +18,7 @@
import java.util.Properties;
import org.eclipse.app4mc.transformation.ServiceConstants;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ConfigurationPolicy;
@@ -28,8 +29,8 @@
)
public class LinuxGoogleGuiceModuleFactory {
- public LinuxGoogleGuiceModule getModule(Properties properties) {
- return new LinuxGoogleGuiceModule(properties);
+ public LinuxGoogleGuiceModule getModule(SessionLogger logger, Properties properties) {
+ return new LinuxGoogleGuiceModule(logger, properties);
}
}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxM2TTransformationConfig.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxM2TTransformationConfig.java
deleted file mode 100644
index 2b7cf0d..0000000
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxM2TTransformationConfig.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2020-2021 Robert Bosch GmbH.
- *
- * 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.slg.linux.artefacts;
-
-import java.util.Map;
-
-import org.eclipse.app4mc.slg.commons.m2t.M2TTransformationConfig;
-import org.eclipse.app4mc.transformation.ServiceConstants;
-import org.eclipse.app4mc.transformation.executiontype.IModelToTextConfig;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.ConfigurationPolicy;
-
-@Component(
- configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
- configurationPolicy = ConfigurationPolicy.REQUIRE,
- property = { "transformation=LINUX_SLG" },
- service = IModelToTextConfig.class
-)
-public class LinuxM2TTransformationConfig extends M2TTransformationConfig {
-
- @Activate
- void activate(Map<String, ?> properties) {
- folderPath = (String) properties.get("input_models_folder");
- }
-
-}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxRootTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxRootTransformer.java
index 3a57809..391fa3c 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxRootTransformer.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxRootTransformer.java
@@ -23,13 +23,10 @@
import org.eclipse.app4mc.transformation.ServiceConstants;
import org.eclipse.app4mc.transformation.TransformationConstants;
import org.eclipse.app4mc.transformation.transformers.Model2TextRootTransformer;
-import org.eclipse.emf.ecore.resource.ResourceSet;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ConfigurationPolicy;
import org.osgi.service.component.annotations.Reference;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.inject.Guice;
import com.google.inject.Injector;
@@ -42,37 +39,38 @@
)
public class LinuxRootTransformer extends Model2TextRootTransformer {
- private static final Logger LOG = LoggerFactory.getLogger(LinuxRootTransformer.class);
-
@Reference
private LinuxGoogleGuiceModuleFactory moduleFactory;
Properties properties;
@Activate
- void activate(Map<String, ?> properties) {
- LOG.debug("LinuxRootTransformer activated : {}", this.hashCode());
-
+ @Override
+ protected void activate(Map<String, ?> properties) {
+ super.activate(properties);
this.properties = new Properties();
this.properties.putAll(properties);
+
+ // set the output directory to the local properties
+ this.properties.put(TransformationConstants.TRANSFORMATION_OUTPUT_FOLDER, getOutputFolder());
}
@Override
- public void m2tTransformation(ResourceSet inputResourceSet) {
+ public void m2tTransformation() {
- Injector injector = Guice.createInjector(moduleFactory.getModule(properties));
+ Injector injector = Guice.createInjector(moduleFactory.getModule(logger, properties));
LinuxModel2TextTransformer instance = injector.getInstance(LinuxModel2TextTransformer.class);
harmonizeSLGParams(properties);
- instance.m2tTransformation(inputResourceSet);
+ instance.m2tTransformation(getInputResourceSet(getInputFolder(), logger));
}
private void harmonizeSLGParams(Properties props) {
if (!props.containsKey("configurationFile")) {
- LOG.error("'configurationFile' property not set in the input properties file");
+ logger.error("'configurationFile' property not set in the input properties file");
throw new IllegalArgumentException("'configurationFile' property not set in the input properties file");
}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxSLGTransformationDefinition.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxSLGTransformationDefinition.java
index b8296b6..0bcc289 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxSLGTransformationDefinition.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/artefacts/LinuxSLGTransformationDefinition.java
@@ -15,6 +15,10 @@
package org.eclipse.app4mc.slg.linux.artefacts;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+
import org.eclipse.app4mc.transformation.TransformationDefinition;
import org.osgi.service.component.annotations.Component;
@@ -41,4 +45,11 @@
return "LINUX_SLG";
}
+ @Override
+ public List<TransformationParameter> getTransformationParameter() {
+ return Arrays.asList(
+ new TransformationParameter("SLG Settings", "configurationFile", "Configuration Model", File.class),
+ new TransformationParameter("Linux SLG Settings", "experimentalCodeSnippetMatching", "Experimental Code Snippet Matching", Boolean.class),
+ new TransformationParameter("Linux SLG Settings", "enableInstrumentation", "Enable Instrumentation", Boolean.class));
+ }
}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxModel2TextTransformer.java b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxModel2TextTransformer.java
index bd86d39..18baf95 100644
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxModel2TextTransformer.java
+++ b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/src/org/eclipse/app4mc/slg/linux/transformers/LinuxModel2TextTransformer.java
@@ -32,15 +32,14 @@
import org.eclipse.app4mc.slg.linux.transformers.sw.LinuxRealisticCodeTransformer;
import org.eclipse.app4mc.slg.linux.transformers.sw.LinuxRunnableTransformer;
import org.eclipse.app4mc.slg.linux.transformers.sw.LinuxTaskTransformer;
-import org.eclipse.app4mc.transformation.TransformationConstants;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import com.google.inject.Inject;
public class LinuxModel2TextTransformer extends AmaltheaModel2TextTransformer {
+ @Inject private SessionLogger logger;
@Inject private OutputBuffer outputBuffer;
@Inject private LinuxMakeTransformer linuxMakeTransformer;
@Inject private LinuxRealisticCodeTransformer realisticCodeBasedOnCodeSnippet;
@@ -50,8 +49,6 @@
@Inject private LinuxTaskTransformer taskTransformer;
@Inject private InstrumentationTransformer instrumentationTransformer;
- private static final Logger LOG = LoggerFactory.getLogger(LinuxModel2TextTransformer.class);
-
@Override
public void transform(final Amalthea model, final String outputFolder) {
@@ -63,9 +60,9 @@
final StimuliModel stimuliModel = ModelUtil.getOrCreateStimuliModel(model);
final SWModel swModel = ModelUtil.getOrCreateSwModel(model);
- LOG.info("Starting Linux SLG code generation");
+ logger.info("Starting Linux SLG code generation");
- LinuxBaseSettings.initializeOutputBuffer(outputBuffer, getProperty(TransformationConstants.M2T_OUTPUT_FOLDER));
+ LinuxBaseSettings.initializeOutputBuffer(outputBuffer, outputFolder);
if (experimentalCodeSnippetMatching) {
realisticCodeBasedOnCodeSnippet.transform();
@@ -107,7 +104,7 @@
outputBuffer.finish();
- LOG.info("Finished Linux SLG code generation");
+ logger.info("Finished Linux SLG code generation");
}
}
diff --git a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/xtend-gen/readme.txt b/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/xtend-gen/readme.txt
deleted file mode 100644
index 759a0c2..0000000
--- a/load_generator/linux/plugins/org.eclipse.app4mc.slg.linux/xtend-gen/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-Code generated by Xtend builder.
diff --git a/load_generator/linux/releng/org.eclipse.app4mc.slg.linux.product/Linux_SLG.product b/load_generator/linux/releng/org.eclipse.app4mc.slg.linux.product/Linux_SLG.product
index b052e57..a142732 100644
--- a/load_generator/linux/releng/org.eclipse.app4mc.slg.linux.product/Linux_SLG.product
+++ b/load_generator/linux/releng/org.eclipse.app4mc.slg.linux.product/Linux_SLG.product
@@ -9,7 +9,7 @@
<launcherArgs>
<programArgs>--properties ${workspace_loc:org.eclipse.app4mc.slg.linux.product}/input.properties
</programArgs>
- <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dlog4j.configuration=headless_log4j.xml
+ <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dorg.eclipse.emf.ecore.EPackage.Registry.INSTANCE=org.eclipse.emf.ecore.impl.EPackageRegistryImpl
</vmArgs>
<vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
</vmArgsMac>
@@ -29,10 +29,8 @@
<plugins>
<plugin id="com.google.guava"/>
<plugin id="com.google.inject"/>
- <plugin id="com.ibm.icu"/>
<plugin id="javax.inject"/>
<plugin id="javax.xml"/>
- <plugin id="org.apache.commons.cli"/>
<plugin id="org.apache.commons.lang"/>
<plugin id="org.apache.commons.logging"/>
<plugin id="org.apache.commons.math3"/>
@@ -40,68 +38,36 @@
<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.slg.commons.m2t"/>
<plugin id="org.eclipse.app4mc.slg.config"/>
<plugin id="org.eclipse.app4mc.slg.linux"/>
<plugin id="org.eclipse.app4mc.transformation"/>
- <plugin id="org.eclipse.app4mc.transformation.log4j.configuration" fragment="true"/>
<plugin id="org.eclipse.app4mc.transformation.starter"/>
- <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.filesystem.linux.ppc64le" fragment="true"/>
- <plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/>
- <plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/>
- <plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
- <plugin id="org.eclipse.core.jobs"/>
- <plugin id="org.eclipse.core.resources"/>
- <plugin id="org.eclipse.core.resources.win32.x86_64" fragment="true"/>
- <plugin id="org.eclipse.core.runtime"/>
- <plugin id="org.eclipse.emf"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog.console"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog.file"/>
<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.preferences"/>
- <plugin id="org.eclipse.equinox.region" fragment="true"/>
- <plugin id="org.eclipse.equinox.registry"/>
- <plugin id="org.eclipse.equinox.supplement"/>
- <plugin id="org.eclipse.equinox.transforms.hook" fragment="true"/>
- <plugin id="org.eclipse.equinox.weaving.hook" fragment="true"/>
<plugin id="org.eclipse.osgi"/>
- <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
<plugin id="org.eclipse.osgi.services"/>
<plugin id="org.eclipse.osgi.util"/>
- <plugin id="org.eclipse.xtend.lib"/>
- <plugin id="org.eclipse.xtend.lib.macro"/>
- <plugin id="org.eclipse.xtext.logging" fragment="true"/>
<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="2" />
+ <plugin id="org.eclipse.app4mc.util.sessionlog.console" autoStart="true" startLevel="3" />
+ <plugin id="org.eclipse.app4mc.util.sessionlog.file" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.equinox.cm" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
- <property name="log4j.configuration" value="headless_log4j.xml" />
</configurations>
<preferencesInfo>
diff --git a/load_generator/linux/releng/org.eclipse.app4mc.slg.linux.target/org.eclipse.app4mc.slg.linux.target.target b/load_generator/linux/releng/org.eclipse.app4mc.slg.linux.target/org.eclipse.app4mc.slg.linux.target.target
index 761287b..eb2c456 100644
--- a/load_generator/linux/releng/org.eclipse.app4mc.slg.linux.target/org.eclipse.app4mc.slg.linux.target.target
+++ b/load_generator/linux/releng/org.eclipse.app4mc.slg.linux.target/org.eclipse.app4mc.slg.linux.target.target
@@ -1,16 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="Synthetic Load Generator Linux Target" sequenceNumber="1619009554">
+<target name="Synthetic Load Generator Linux Target" sequenceNumber="1620299879">
<locations>
<location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
<unit id="org.eclipse.sdk.ide" version="4.14.0.I20191210-0610"/>
<unit id="org.eclipse.emf.ecore.xcore.lib.feature.group" version="1.5.0.v20190401-0856"/>
<unit id="org.eclipse.emf.mwe.core" version="1.5.1.v20191121-1148"/>
<unit id="org.eclipse.emf.sdk.feature.group" version="2.20.0.v20191028-0905"/>
- <unit id="org.eclipse.emf.transaction.feature.group" version="1.12.0.201805140824"/>
- <unit id="org.eclipse.emf.validation.feature.group" version="1.12.1.201812070911"/>
- <unit id="org.eclipse.emf.workspace.feature.group" version="1.12.0.201805140824"/>
<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.xtext.runtime.feature.group" version="2.20.0.v20191202-1256"/>
@@ -19,29 +16,24 @@
<unit id="org.eclipse.xtext.xbase.lib.feature.group" version="2.20.0.v20191202-0910"/>
<unit id="org.eclipse.xtend.sdk.feature.group" version="2.20.0.v20191202-1256"/>
<unit id="org.eclipse.xpand.sdk.feature.group" version="2.2.0.v201605260315"/>
- <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.log4j" version="1.2.15.v201012070815"/>
- <unit id="org.apache.xerces" version="2.9.0.v201101211617"/>
- <unit id="org.apache.xalan" version="2.7.1.v201005080400"/>
- <unit id="org.apache.xml.resolver" version="1.2.0.v201005080400"/>
- <unit id="org.apache.xml.serializer" version="2.7.1.v201005080400"/>
<unit id="javax.xml" version="1.3.4.v201005080400"/>
- <unit id="org.jdom" version="1.1.1.v201101151400"/>
<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="com.google.guava" version="27.1.0.v20190517-1946"/>
<unit id="com.google.inject" version="3.0.0.v201605172100"/>
<repository location="https://download.eclipse.org/releases/2019-12"/>
</location>
<location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
- <unit id="org.apache.commons.math" version="2.1.0.v201105210652"/>
<unit id="org.apache.commons.math3" version="3.5.0.v20190611-1023"/>
<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.app4mc.platform.sdk.feature.group" version="0.0.0"/>
- <repository location="http://download.eclipse.org/app4mc/updatesites/snapshot"/>
+ <unit id="org.eclipse.app4mc.platform.sdk.feature.group" version="1.1.0.202104301043"/>
+ <repository location="https://download.eclipse.org/app4mc/updatesites/releases/1.1.0"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.app4mc.utils.platform.sdk.feature.group" version="1.1.0.202104300936"/>
+ <repository location="https://download.eclipse.org/app4mc/components/addon/migration/releases/1.1.0/p2repo/"/>
</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"/>
@@ -49,8 +41,7 @@
</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"/>
- <unit id="org.eclipse.app4mc.transformation.log4j.configuration.feature.feature.group" version="0.0.0"/>
- <repository location="https://download.eclipse.org/app4mc/components/addon/transformation/snapshot/p2repo"/>
+ <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.slg.commons.m2t.feature.sdk.feature.group" version="0.0.0"/>
diff --git a/load_generator/linux/releng/org.eclipse.app4mc.slg.linux.target/org.eclipse.app4mc.slg.linux.target.tpd b/load_generator/linux/releng/org.eclipse.app4mc.slg.linux.target/org.eclipse.app4mc.slg.linux.target.tpd
index 90701f7..4556898 100644
--- a/load_generator/linux/releng/org.eclipse.app4mc.slg.linux.target/org.eclipse.app4mc.slg.linux.target.tpd
+++ b/load_generator/linux/releng/org.eclipse.app4mc.slg.linux.target/org.eclipse.app4mc.slg.linux.target.tpd
@@ -7,9 +7,6 @@
org.eclipse.emf.ecore.xcore.lib.feature.group
org.eclipse.emf.mwe.core
org.eclipse.emf.sdk.feature.group
- org.eclipse.emf.transaction.feature.group
- org.eclipse.emf.validation.feature.group
- org.eclipse.emf.workspace.feature.group
org.eclipse.equinox.sdk.feature.group
org.eclipse.equinox.compendium.sdk.feature.group
org.eclipse.xtext.runtime.feature.group
@@ -18,42 +15,34 @@
org.eclipse.xtext.xbase.lib.feature.group
org.eclipse.xtend.sdk.feature.group
org.eclipse.xpand.sdk.feature.group
- org.apache.commons.cli
org.apache.commons.lang
- org.apache.log4j
- org.apache.xerces
- org.apache.xalan
- org.apache.xml.resolver
- org.apache.xml.serializer
javax.xml
- org.jdom
// SLF4J
org.slf4j.api [1.7.2,1.7.3)
- org.slf4j.impl.log4j12 [1.7.2,1.7.3)
com.google.guava
com.google.inject
}
location "https://download.eclipse.org/tools/orbit/downloads/drops/R20191126223242/repository" {
- org.apache.commons.math
org.apache.commons.math3
}
-//location "http://download.eclipse.org/app4mc/updatesites/releases/1.1.0"
+location "https://download.eclipse.org/app4mc/updatesites/releases/1.1.0" {
+ org.eclipse.app4mc.platform.sdk.feature.group
+}
-location "http://download.eclipse.org/app4mc/updatesites/snapshot" {
- org.eclipse.app4mc.platform.sdk.feature.group lazy
+location "https://download.eclipse.org/app4mc/components/addon/migration/releases/1.1.0/p2repo/" {
+ org.eclipse.app4mc.utils.platform.sdk.feature.group
}
location "https://download.eclipse.org/cbi/updates/license" {
org.eclipse.license.feature.group
}
-location "https://download.eclipse.org/app4mc/components/addon/transformation/snapshot/p2repo" {
+location "https://download.eclipse.org/app4mc/components/addon/transformation/snapshot/p2repo/" {
org.eclipse.app4mc.transformation.feature.sdk.feature.group lazy
- org.eclipse.app4mc.transformation.log4j.configuration.feature.feature.group lazy
}
location "https://download.eclipse.org/app4mc/components/addon/transformation.slg.commons/snapshot/p2repo" {
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/META-INF/MANIFEST.MF b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/META-INF/MANIFEST.MF
index e9049e9..556a536 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/META-INF/MANIFEST.MF
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/META-INF/MANIFEST.MF
@@ -7,17 +7,15 @@
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: javax.inject;version="1.0.0",
org.eclipse.app4mc.transformation,
- org.eclipse.app4mc.transformation.executiontype,
org.eclipse.app4mc.transformation.transformers,
org.eclipse.app4mc.transformation.util,
+ org.eclipse.app4mc.util.sessionlog;version="1.1.0",
org.osgi.service.component;version="1.4.0",
- org.osgi.service.component.annotations;version="[1.3.0,2.0.0)";resolution:=optional,
- org.slf4j;version="1.7.2"
+ org.osgi.service.component.annotations;version="[1.3.0,2.0.0)";resolution:=optional
Require-Bundle: com.google.inject;bundle-version="3.0.0",
org.eclipse.app4mc.slg.config;bundle-version="0.1.0",
org.eclipse.app4mc.slg.commons.m2t;bundle-version="0.1.0"
Bundle-ActivationPolicy: lazy
-Service-Component: OSGI-INF/org.eclipse.app4mc.slg.ros2.artefacts.ROS2M2TTransformationConfig.xml,
- OSGI-INF/org.eclipse.app4mc.slg.ros2.artefacts.ROS2GoogleGuiceModuleFactory.xml,
+Service-Component: OSGI-INF/org.eclipse.app4mc.slg.ros2.artefacts.ROS2GoogleGuiceModuleFactory.xml,
OSGI-INF/org.eclipse.app4mc.slg.ros2.artefacts.ROS2RootTransformer.xml,
OSGI-INF/org.eclipse.app4mc.slg.ros2.artefacts.ROS2SLGTransformationDefinition.xml
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/OSGI-INF/org.eclipse.app4mc.slg.ros2.artefacts.ROS2M2TTransformationConfig.xml b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/OSGI-INF/org.eclipse.app4mc.slg.ros2.artefacts.ROS2M2TTransformationConfig.xml
deleted file mode 100644
index 1133ca2..0000000
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/OSGI-INF/org.eclipse.app4mc.slg.ros2.artefacts.ROS2M2TTransformationConfig.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" activate="activate" configuration-pid="TRANSFORMATION_SESSION_CONFIG" configuration-policy="require" name="org.eclipse.app4mc.slg.ros2.artefacts.ROS2M2TTransformationConfig">
- <property name="transformation" value="ROS2_SLG"/>
- <service>
- <provide interface="org.eclipse.app4mc.transformation.executiontype.IModelToTextConfig"/>
- </service>
- <implementation class="org.eclipse.app4mc.slg.ros2.artefacts.ROS2M2TTransformationConfig"/>
-</scr:component>
\ No newline at end of file
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2GoogleGuiceModule.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2GoogleGuiceModule.java
index 42a56c3..d136b38 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2GoogleGuiceModule.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2GoogleGuiceModule.java
@@ -24,19 +24,22 @@
import org.eclipse.app4mc.slg.ros2.transformers.sw.RosLabelTransformer;
import org.eclipse.app4mc.slg.ros2.transformers.sw.RosRunnableTransformer;
import org.eclipse.app4mc.slg.ros2.transformers.sw.RosTaskTransformer;
+import org.eclipse.app4mc.transformation.util.TransformationGuiceModule;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
-import com.google.inject.AbstractModule;
-
-public class ROS2GoogleGuiceModule extends AbstractModule {
+public class ROS2GoogleGuiceModule extends TransformationGuiceModule {
protected Properties properties;
- public ROS2GoogleGuiceModule(Properties properties) {
+ public ROS2GoogleGuiceModule(SessionLogger logger, Properties properties) {
+ super(logger);
this.properties = properties;
}
@Override
protected void configure() {
+ super.configure();
+
bind(Properties.class).toInstance(this.properties);
bind(CustomObjectsStore.class).toInstance(new CustomObjectsStore());
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2GoogleGuiceModuleFactory.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2GoogleGuiceModuleFactory.java
index 9cb304d..969587f 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2GoogleGuiceModuleFactory.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2GoogleGuiceModuleFactory.java
@@ -16,6 +16,7 @@
import java.util.Properties;
import org.eclipse.app4mc.transformation.ServiceConstants;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ConfigurationPolicy;
@@ -23,11 +24,10 @@
configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
configurationPolicy = ConfigurationPolicy.REQUIRE,
service = ROS2GoogleGuiceModuleFactory.class)
-
public class ROS2GoogleGuiceModuleFactory {
- public ROS2GoogleGuiceModule getModule(Properties properties) {
- return new ROS2GoogleGuiceModule(properties);
+ public ROS2GoogleGuiceModule getModule(SessionLogger logger, Properties properties) {
+ return new ROS2GoogleGuiceModule(logger, properties);
}
}
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2M2TTransformationConfig.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2M2TTransformationConfig.java
deleted file mode 100644
index ed6278b..0000000
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2M2TTransformationConfig.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Copyright (c) 2020-2021 Robert Bosch GmbH.
- *
- * 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.slg.ros2.artefacts;
-
-import java.util.Map;
-
-import org.eclipse.app4mc.slg.commons.m2t.M2TTransformationConfig;
-import org.eclipse.app4mc.transformation.ServiceConstants;
-import org.eclipse.app4mc.transformation.executiontype.IModelToTextConfig;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.ConfigurationPolicy;
-
-@Component(
- configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
- configurationPolicy = ConfigurationPolicy.REQUIRE,
- property = { "transformation=ROS2_SLG" },
- service = IModelToTextConfig.class)
-
-public class ROS2M2TTransformationConfig extends M2TTransformationConfig {
-
- @Activate
- void activate(Map<String, ?> properties) {
- folderPath = (String) properties.get("input_models_folder");
- }
-
-}
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2RootTransformer.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2RootTransformer.java
index a2c3b4e..88cd4c3 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2RootTransformer.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2RootTransformer.java
@@ -23,13 +23,10 @@
import org.eclipse.app4mc.transformation.ServiceConstants;
import org.eclipse.app4mc.transformation.TransformationConstants;
import org.eclipse.app4mc.transformation.transformers.Model2TextRootTransformer;
-import org.eclipse.emf.ecore.resource.ResourceSet;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ConfigurationPolicy;
import org.osgi.service.component.annotations.Reference;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.inject.Guice;
import com.google.inject.Injector;
@@ -42,37 +39,38 @@
public class ROS2RootTransformer extends Model2TextRootTransformer {
- private static final Logger LOG = LoggerFactory.getLogger(ROS2RootTransformer.class);
-
@Reference
private ROS2GoogleGuiceModuleFactory moduleFactory;
Properties properties;
@Activate
- void activate(Map<String, ?> properties) {
- LOG.debug("LinuxRootTransformer activated : {}", this.hashCode());
-
+ @Override
+ protected void activate(Map<String, ?> properties) {
+ super.activate(properties);
this.properties = new Properties();
this.properties.putAll(properties);
+
+ // set the output directory to the local properties
+ this.properties.put(TransformationConstants.TRANSFORMATION_OUTPUT_FOLDER, getOutputFolder());
}
@Override
- public void m2tTransformation(ResourceSet inputResourceSet) {
+ public void m2tTransformation() {
- Injector injector = Guice.createInjector(moduleFactory.getModule(properties));
+ Injector injector = Guice.createInjector(moduleFactory.getModule(logger, properties));
RosModel2TextTransformer instance = injector.getInstance(RosModel2TextTransformer.class);
harmonizeSLGParams(properties);
- instance.m2tTransformation(inputResourceSet);
+ instance.m2tTransformation(getInputResourceSet(getInputFolder(), logger));
}
private void harmonizeSLGParams(Properties props) {
if (!props.containsKey("configurationFile")) {
- LOG.error("'configurationFile' property not set in the input properties file");
+ logger.error("'configurationFile' property not set in the input properties file");
throw new IllegalArgumentException("'configurationFile' property not set in the input properties file");
}
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2SLGTransformationDefinition.java b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2SLGTransformationDefinition.java
index 78582df..b80265f 100644
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2SLGTransformationDefinition.java
+++ b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/artefacts/ROS2SLGTransformationDefinition.java
@@ -15,6 +15,10 @@
package org.eclipse.app4mc.slg.ros2.artefacts;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+
import org.eclipse.app4mc.transformation.TransformationDefinition;
import org.osgi.service.component.annotations.Component;
@@ -41,4 +45,10 @@
return "ROS2_SLG";
}
+ @Override
+ public List<TransformationParameter> getTransformationParameter() {
+ return Arrays.asList(
+ new TransformationParameter("SLG Settings", "configurationFile", "Configuration Model", File.class));
+ }
+
}
diff --git a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/readme.txt b/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/readme.txt
deleted file mode 100644
index 759a0c2..0000000
--- a/load_generator/ros2/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-Code generated by Xtend builder.
diff --git a/load_generator/ros2/releng/org.eclipse.app4mc.slg.ros2.product/ROS2_SLG.product b/load_generator/ros2/releng/org.eclipse.app4mc.slg.ros2.product/ROS2_SLG.product
index 9111986..9bf8ab3 100644
--- a/load_generator/ros2/releng/org.eclipse.app4mc.slg.ros2.product/ROS2_SLG.product
+++ b/load_generator/ros2/releng/org.eclipse.app4mc.slg.ros2.product/ROS2_SLG.product
@@ -3,14 +3,13 @@
<product uid="org.eclipse.app4mc.slg.ros2.product" application="org.eclipse.app4mc.amlt2systemc.app.application" version="1.1.0.qualifier" useFeatures="false" includeLaunchers="true">
-
<configIni use="default">
</configIni>
<launcherArgs>
<programArgs>--properties ${workspace_loc:org.eclipse.app4mc.slg.ros2.product}/input.properties"
</programArgs>
- <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dlog4j.configuration=headless_log4j.xml
+ <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dorg.eclipse.emf.ecore.EPackage.Registry.INSTANCE=org.eclipse.emf.ecore.impl.EPackageRegistryImpl
</vmArgs>
<vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
</vmArgsMac>
@@ -18,24 +17,20 @@
<windowImages/>
-
<launcher>
<win useIco="false">
<bmp/>
</win>
</launcher>
-
<vm>
</vm>
<plugins>
<plugin id="com.google.guava"/>
<plugin id="com.google.inject"/>
- <plugin id="com.ibm.icu"/>
<plugin id="javax.inject"/>
<plugin id="javax.xml"/>
- <plugin id="org.apache.commons.cli"/>
<plugin id="org.apache.commons.lang"/>
<plugin id="org.apache.commons.logging"/>
<plugin id="org.apache.commons.math3"/>
@@ -43,68 +38,36 @@
<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.slg.commons.m2t"/>
<plugin id="org.eclipse.app4mc.slg.config"/>
<plugin id="org.eclipse.app4mc.slg.ros2"/>
<plugin id="org.eclipse.app4mc.transformation"/>
- <plugin id="org.eclipse.app4mc.transformation.log4j.configuration" fragment="true"/>
<plugin id="org.eclipse.app4mc.transformation.starter"/>
- <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.filesystem.linux.ppc64le" fragment="true"/>
- <plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/>
- <plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/>
- <plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
- <plugin id="org.eclipse.core.jobs"/>
- <plugin id="org.eclipse.core.resources"/>
- <plugin id="org.eclipse.core.resources.win32.x86_64" fragment="true"/>
- <plugin id="org.eclipse.core.runtime"/>
- <plugin id="org.eclipse.emf"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog.console"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog.file"/>
<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.preferences"/>
- <plugin id="org.eclipse.equinox.region" fragment="true"/>
- <plugin id="org.eclipse.equinox.registry"/>
- <plugin id="org.eclipse.equinox.supplement"/>
- <plugin id="org.eclipse.equinox.transforms.hook" fragment="true"/>
- <plugin id="org.eclipse.equinox.weaving.hook" fragment="true"/>
<plugin id="org.eclipse.osgi"/>
- <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
<plugin id="org.eclipse.osgi.services"/>
<plugin id="org.eclipse.osgi.util"/>
- <plugin id="org.eclipse.xtend.lib"/>
- <plugin id="org.eclipse.xtend.lib.macro"/>
- <plugin id="org.eclipse.xtext.logging" fragment="true"/>
<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="2" />
+ <plugin id="org.eclipse.app4mc.util.sessionlog.console" autoStart="true" startLevel="3" />
+ <plugin id="org.eclipse.app4mc.util.sessionlog.file" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.equinox.cm" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
- <property name="log4j.configuration" value="headless_log4j.xml" />
</configurations>
<preferencesInfo>
diff --git a/load_generator/ros2/releng/org.eclipse.app4mc.slg.ros2.target/org.eclipse.app4mc.slg.ros2.target.target b/load_generator/ros2/releng/org.eclipse.app4mc.slg.ros2.target/org.eclipse.app4mc.slg.ros2.target.target
index 434c244..3052a5d 100644
--- a/load_generator/ros2/releng/org.eclipse.app4mc.slg.ros2.target/org.eclipse.app4mc.slg.ros2.target.target
+++ b/load_generator/ros2/releng/org.eclipse.app4mc.slg.ros2.target/org.eclipse.app4mc.slg.ros2.target.target
@@ -1,16 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/eclipse-cbi/targetplatform-dsl -->
-<target name="Synthetic Load Generator ROS2 Target" sequenceNumber="1619009657">
+<target name="Synthetic Load Generator ROS2 Target" sequenceNumber="1620299918">
<locations>
<location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
<unit id="org.eclipse.sdk.ide" version="4.14.0.I20191210-0610"/>
<unit id="org.eclipse.emf.ecore.xcore.lib.feature.group" version="1.5.0.v20190401-0856"/>
<unit id="org.eclipse.emf.mwe.core" version="1.5.1.v20191121-1148"/>
<unit id="org.eclipse.emf.sdk.feature.group" version="2.20.0.v20191028-0905"/>
- <unit id="org.eclipse.emf.transaction.feature.group" version="1.12.0.201805140824"/>
- <unit id="org.eclipse.emf.validation.feature.group" version="1.12.1.201812070911"/>
- <unit id="org.eclipse.emf.workspace.feature.group" version="1.12.0.201805140824"/>
<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.xtext.runtime.feature.group" version="2.20.0.v20191202-1256"/>
@@ -19,29 +16,24 @@
<unit id="org.eclipse.xtext.xbase.lib.feature.group" version="2.20.0.v20191202-0910"/>
<unit id="org.eclipse.xtend.sdk.feature.group" version="2.20.0.v20191202-1256"/>
<unit id="org.eclipse.xpand.sdk.feature.group" version="2.2.0.v201605260315"/>
- <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.log4j" version="1.2.15.v201012070815"/>
- <unit id="org.apache.xerces" version="2.9.0.v201101211617"/>
- <unit id="org.apache.xalan" version="2.7.1.v201005080400"/>
- <unit id="org.apache.xml.resolver" version="1.2.0.v201005080400"/>
- <unit id="org.apache.xml.serializer" version="2.7.1.v201005080400"/>
<unit id="javax.xml" version="1.3.4.v201005080400"/>
- <unit id="org.jdom" version="1.1.1.v201101151400"/>
<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="com.google.guava" version="27.1.0.v20190517-1946"/>
<unit id="com.google.inject" version="3.0.0.v201605172100"/>
<repository location="https://download.eclipse.org/releases/2019-12"/>
</location>
<location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
- <unit id="org.apache.commons.math" version="2.1.0.v201105210652"/>
<unit id="org.apache.commons.math3" version="3.5.0.v20190611-1023"/>
<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.app4mc.platform.sdk.feature.group" version="0.0.0"/>
- <repository location="http://download.eclipse.org/app4mc/updatesites/snapshot"/>
+ <unit id="org.eclipse.app4mc.platform.sdk.feature.group" version="1.1.0.202104301043"/>
+ <repository location="https://download.eclipse.org/app4mc/updatesites/releases/1.1.0"/>
+ </location>
+ <location includeMode="slicer" includeAllPlatforms="true" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.app4mc.utils.platform.sdk.feature.group" version="1.1.0.202104300936"/>
+ <repository location="https://download.eclipse.org/app4mc/components/addon/migration/releases/1.1.0/p2repo/"/>
</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"/>
@@ -49,8 +41,7 @@
</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"/>
- <unit id="org.eclipse.app4mc.transformation.log4j.configuration.feature.feature.group" version="0.0.0"/>
- <repository location="https://download.eclipse.org/app4mc/components/addon/transformation/snapshot/p2repo"/>
+ <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.slg.commons.m2t.feature.sdk.feature.group" version="0.0.0"/>
diff --git a/load_generator/ros2/releng/org.eclipse.app4mc.slg.ros2.target/org.eclipse.app4mc.slg.ros2.target.tpd b/load_generator/ros2/releng/org.eclipse.app4mc.slg.ros2.target/org.eclipse.app4mc.slg.ros2.target.tpd
index d6e6318..1a4b4c0 100644
--- a/load_generator/ros2/releng/org.eclipse.app4mc.slg.ros2.target/org.eclipse.app4mc.slg.ros2.target.tpd
+++ b/load_generator/ros2/releng/org.eclipse.app4mc.slg.ros2.target/org.eclipse.app4mc.slg.ros2.target.tpd
@@ -7,9 +7,6 @@
org.eclipse.emf.ecore.xcore.lib.feature.group
org.eclipse.emf.mwe.core
org.eclipse.emf.sdk.feature.group
- org.eclipse.emf.transaction.feature.group
- org.eclipse.emf.validation.feature.group
- org.eclipse.emf.workspace.feature.group
org.eclipse.equinox.sdk.feature.group
org.eclipse.equinox.compendium.sdk.feature.group
org.eclipse.xtext.runtime.feature.group
@@ -18,42 +15,34 @@
org.eclipse.xtext.xbase.lib.feature.group
org.eclipse.xtend.sdk.feature.group
org.eclipse.xpand.sdk.feature.group
- org.apache.commons.cli
org.apache.commons.lang
- org.apache.log4j
- org.apache.xerces
- org.apache.xalan
- org.apache.xml.resolver
- org.apache.xml.serializer
javax.xml
- org.jdom
// SLF4J
org.slf4j.api [1.7.2,1.7.3)
- org.slf4j.impl.log4j12 [1.7.2,1.7.3)
com.google.guava
com.google.inject
}
location "https://download.eclipse.org/tools/orbit/downloads/drops/R20191126223242/repository" {
- org.apache.commons.math
org.apache.commons.math3
}
-//location "http://download.eclipse.org/app4mc/updatesites/releases/1.1.0"
+location "https://download.eclipse.org/app4mc/updatesites/releases/1.1.0" {
+ org.eclipse.app4mc.platform.sdk.feature.group
+}
-location "http://download.eclipse.org/app4mc/updatesites/snapshot" {
- org.eclipse.app4mc.platform.sdk.feature.group lazy
+location "https://download.eclipse.org/app4mc/components/addon/migration/releases/1.1.0/p2repo/" {
+ org.eclipse.app4mc.utils.platform.sdk.feature.group
}
location "https://download.eclipse.org/cbi/updates/license" {
org.eclipse.license.feature.group
}
-location "https://download.eclipse.org/app4mc/components/addon/transformation/snapshot/p2repo" {
+location "https://download.eclipse.org/app4mc/components/addon/transformation/snapshot/p2repo/" {
org.eclipse.app4mc.transformation.feature.sdk.feature.group lazy
- org.eclipse.app4mc.transformation.log4j.configuration.feature.feature.group lazy
}
location "https://download.eclipse.org/app4mc/components/addon/transformation.slg.commons/snapshot/p2repo" {
diff --git a/simulation_generator/app4mc.sim/Dockerfile b/simulation_generator/app4mc.sim/Dockerfile
new file mode 100644
index 0000000..3179e1c
--- /dev/null
+++ b/simulation_generator/app4mc.sim/Dockerfile
@@ -0,0 +1,14 @@
+# checkout the develop branch of APP4MC Transformation
+FROM alpine/git as clone-stage
+WORKDIR /app
+RUN git clone --branch develop --single-branch https://git.eclipse.org/r/app4mc/org.eclipse.app4mc.addon.transformation.git
+
+# build via Maven
+FROM maven:3.6.3-openjdk-11 as build-stage
+WORKDIR /app
+COPY --from=clone-stage /app/org.eclipse.app4mc.addon.transformation/simulation_generator/app4mc.sim /app
+RUN mvn verify
+
+FROM scratch AS export-stage
+COPY --from=build-stage /app/releng/org.eclipse.app4mc.amlt2systemc.product/target/products/org.eclipse.app4mc.amlt2systemc.product-linux.gtk.x86_64.zip /
+
diff --git a/simulation_generator/app4mc.sim/features/org.eclipse.app4mc.amlt2systemc.feature/feature.xml b/simulation_generator/app4mc.sim/features/org.eclipse.app4mc.amlt2systemc.feature/feature.xml
index d247517..bd3c067 100644
--- a/simulation_generator/app4mc.sim/features/org.eclipse.app4mc.amlt2systemc.feature/feature.xml
+++ b/simulation_generator/app4mc.sim/features/org.eclipse.app4mc.amlt2systemc.feature/feature.xml
@@ -18,7 +18,7 @@
<requires>
<import plugin="org.eclipse.app4mc.amalthea.model"/>
- <import feature="org.eclipse.app4mc.transformation.feature" version="0.1.0.qualifier"/>
+ <import feature="org.eclipse.app4mc.transformation.feature" version="1.1.0"/>
</requires>
<plugin
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t.cust/META-INF/MANIFEST.MF b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t.cust/META-INF/MANIFEST.MF
index 32e0f92..60e328f 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t.cust/META-INF/MANIFEST.MF
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t.cust/META-INF/MANIFEST.MF
@@ -7,15 +7,14 @@
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: javax.inject;version="1.0.0",
org.eclipse.app4mc.transformation,
- org.eclipse.app4mc.transformation.executiontype,
org.eclipse.app4mc.transformation.starter,
org.eclipse.app4mc.transformation.transformers,
+ org.eclipse.app4mc.util.sessionlog;version="1.1.0",
org.osgi.service.component;version="1.4.0",
org.osgi.service.component.annotations;version="[1.3.0,2.0.0)";resolution:=optional,
org.slf4j;version="1.7.2"
Bundle-ActivationPolicy: lazy
Require-Bundle: com.google.inject;bundle-version="3.0.0",
- org.apache.log4j;bundle-version="1.2.15",
org.eclipse.emf;bundle-version="2.6.0",
org.eclipse.app4mc.amalthea.model;visibility:=reexport,
org.eclipse.app4mc.transformation,
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t.cust/src/org/eclipse/app4mc/amlt2systemc/m2t/cust/module/CustSystemCGuiceModule.java b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t.cust/src/org/eclipse/app4mc/amlt2systemc/m2t/cust/module/CustSystemCGuiceModule.java
index 67f9155..2b8bf95 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t.cust/src/org/eclipse/app4mc/amlt2systemc/m2t/cust/module/CustSystemCGuiceModule.java
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t.cust/src/org/eclipse/app4mc/amlt2systemc/m2t/cust/module/CustSystemCGuiceModule.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
+ * Copyright (c) 2020, 2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -20,11 +20,12 @@
import org.eclipse.app4mc.amlt2systemc.m2t.SystemCGuiceModule;
import org.eclipse.app4mc.amlt2systemc.m2t.cust.transformers.CustMemoryTransformer;
import org.eclipse.app4mc.amlt2systemc.m2t.transformers.hw.MemoryTransformer;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
public class CustSystemCGuiceModule extends SystemCGuiceModule {
- public CustSystemCGuiceModule(Properties properties) {
- super(properties);
+ public CustSystemCGuiceModule(SessionLogger logger, Properties properties) {
+ super(logger, properties);
}
@Override
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t.cust/src/org/eclipse/app4mc/amlt2systemc/m2t/cust/module/CustSystemCGuiceModuleFactory.java b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t.cust/src/org/eclipse/app4mc/amlt2systemc/m2t/cust/module/CustSystemCGuiceModuleFactory.java
index efb4492..9d8d83d 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t.cust/src/org/eclipse/app4mc/amlt2systemc/m2t/cust/module/CustSystemCGuiceModuleFactory.java
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t.cust/src/org/eclipse/app4mc/amlt2systemc/m2t/cust/module/CustSystemCGuiceModuleFactory.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
+ * Copyright (c) 2020, 2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -19,6 +19,7 @@
import org.eclipse.app4mc.amlt2systemc.m2t.SystemCGuiceModule;
import org.eclipse.app4mc.amlt2systemc.m2t.SystemCGuiceModuleFactory;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import org.osgi.service.component.annotations.Component;
@Component(
@@ -28,8 +29,8 @@
public class CustSystemCGuiceModuleFactory extends SystemCGuiceModuleFactory {
@Override
- public SystemCGuiceModule getModule(Properties properties) {
- return new CustSystemCGuiceModule(properties);
+ public SystemCGuiceModule getModule(SessionLogger logger, Properties properties) {
+ return new CustSystemCGuiceModule(logger,properties);
}
}
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/META-INF/MANIFEST.MF b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/META-INF/MANIFEST.MF
index 7abdef4..7d9da19 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/META-INF/MANIFEST.MF
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/META-INF/MANIFEST.MF
@@ -9,14 +9,12 @@
org.eclipse.app4mc.amalthea.model;bundle-version="1.0.0"
Import-Package: javax.inject;version="1.0.0",
org.eclipse.app4mc.transformation,
- org.eclipse.app4mc.transformation.executiontype,
org.eclipse.app4mc.transformation.transformers,
org.eclipse.app4mc.transformation.util,
+ org.eclipse.app4mc.util.sessionlog;version="1.1.0",
org.osgi.service.component;version="1.4.0",
- org.osgi.service.component.annotations;version="[1.3.0,2.0.0)";resolution:=optional,
- org.slf4j;version="1.7.2"
+ org.osgi.service.component.annotations;version="[1.3.0,2.0.0)";resolution:=optional
Export-Package: org.eclipse.app4mc.amlt2systemc.m2t,
- org.eclipse.app4mc.amlt2systemc.m2t.config,
org.eclipse.app4mc.amlt2systemc.m2t.module,
org.eclipse.app4mc.amlt2systemc.m2t.transformers,
org.eclipse.app4mc.amlt2systemc.m2t.transformers.hw,
@@ -29,5 +27,4 @@
Automatic-Module-Name: org.eclipse.app4mc.amlt2systemc.m2t
Service-Component: OSGI-INF/org.eclipse.app4mc.amlt2systemc.m2t.SystemCGuiceModuleFactory.xml,
OSGI-INF/org.eclipse.app4mc.amlt2systemc.m2t.APP4MCsimTransformationDefinition.xml,
- OSGI-INF/org.eclipse.app4mc.amlt2systemc.m2t.M2TTransformationConfig.xml,
OSGI-INF/org.eclipse.app4mc.amlt2systemc.m2t.SystemCRootTransformer.xml
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/OSGI-INF/org.eclipse.app4mc.amlt2systemc.m2t.M2TTransformationConfig.xml b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/OSGI-INF/org.eclipse.app4mc.amlt2systemc.m2t.M2TTransformationConfig.xml
deleted file mode 100644
index 5803607..0000000
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/OSGI-INF/org.eclipse.app4mc.amlt2systemc.m2t.M2TTransformationConfig.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" activate="activate" configuration-pid="TRANSFORMATION_SESSION_CONFIG" configuration-policy="require" name="org.eclipse.app4mc.amlt2systemc.m2t.M2TTransformationConfig">
- <property name="transformation" value="APP4MCSIM"/>
- <service>
- <provide interface="org.eclipse.app4mc.transformation.executiontype.IModelToTextConfig"/>
- </service>
- <implementation class="org.eclipse.app4mc.amlt2systemc.m2t.M2TTransformationConfig"/>
-</scr:component>
\ No newline at end of file
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/APP4MCsimTransformationDefinition.java b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/APP4MCsimTransformationDefinition.java
index 24fed57..7e9b29d 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/APP4MCsimTransformationDefinition.java
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/APP4MCsimTransformationDefinition.java
@@ -15,6 +15,11 @@
package org.eclipse.app4mc.amlt2systemc.m2t;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.app4mc.amlt2systemc.m2t.module.PropertyKeys;
import org.eclipse.app4mc.transformation.TransformationDefinition;
import org.osgi.service.component.annotations.Component;
@@ -41,4 +46,10 @@
return "APP4MCSIM";
}
+ @Override
+ public List<TransformationParameter> getTransformationParameter() {
+ return Arrays.asList(
+ new TransformationParameter("APP4MCsim Settings", PropertyKeys.APP4MCSIM_FOLDER, "APP4MCsim Folder", File.class));
+ }
+
}
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/M2TTransformationConfig.java b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/M2TTransformationConfig.java
deleted file mode 100644
index b0a1ef2..0000000
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/M2TTransformationConfig.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2020, 2021 Robert Bosch GmbH.
- *
- * 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.m2t;
-
-import java.util.Map;
-
-import org.eclipse.app4mc.amalthea.model.AmaltheaFactory;
-import org.eclipse.app4mc.amalthea.model.io.AmaltheaLoader;
-import org.eclipse.app4mc.amlt2systemc.m2t.module.PropertyKeys;
-import org.eclipse.app4mc.transformation.ServiceConstants;
-import org.eclipse.app4mc.transformation.executiontype.IModelToTextConfig;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.ConfigurationPolicy;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Component(
- configurationPid = ServiceConstants.SESSION_CONFIGURATION_PID,
- configurationPolicy = ConfigurationPolicy.REQUIRE,
- property = { ServiceConstants.TRANSFORMATION_PROPERTY + "=APP4MCSIM" },
- service = IModelToTextConfig.class)
-public class M2TTransformationConfig implements IModelToTextConfig {
-
- private static final Logger LOG = LoggerFactory.getLogger(M2TTransformationConfig.class);
-
- private String folderPath;
-
- @Activate
- void activate(Map<String, ?> properties) {
- folderPath = (String) properties.get(PropertyKeys.INPUT_MODELS_FOLDER);
- }
-
- public ResourceSet getInputResourceSet() {
-
- if (folderPath != null) {
-
- ResourceSet resourceSet = AmaltheaLoader.loadFromDirectoryNamed(folderPath);
-
- if (resourceSet.getResources().isEmpty()) {
- LOG.error(
- "No Amalthea model files are loaded. Verify if the model version is : {}",
- AmaltheaFactory.eINSTANCE.createAmalthea().getVersion());
- }
-
- return resourceSet;
- } else {
- LOG.error("Input_models_folder parameter not set",
- new NullPointerException("input_models_folder property not set"));
- }
-
- return null;
- }
-
-}
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCGuiceModule.java b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCGuiceModule.java
index d330750..515c8e9 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCGuiceModule.java
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCGuiceModule.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
+ * Copyright (c) 2020, 2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -17,18 +17,21 @@
import java.util.Properties;
-import com.google.inject.AbstractModule;
+import org.eclipse.app4mc.transformation.util.TransformationGuiceModule;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
-public class SystemCGuiceModule extends AbstractModule {
+public class SystemCGuiceModule extends TransformationGuiceModule {
protected Properties properties;
- public SystemCGuiceModule(Properties properties) {
+ public SystemCGuiceModule(SessionLogger logger, Properties properties) {
+ super(logger);
this.properties = properties;
}
@Override
protected void configure() {
+ super.configure();
bind(Properties.class).toInstance(this.properties);
}
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCGuiceModuleFactory.java b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCGuiceModuleFactory.java
index 487a7aa..03fe69c 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCGuiceModuleFactory.java
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCGuiceModuleFactory.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
+ * Copyright (c) 2020, 2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -17,15 +17,14 @@
import java.util.Properties;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import org.osgi.service.component.annotations.Component;
-@Component(
- service = SystemCGuiceModuleFactory.class)
-
+@Component(service = SystemCGuiceModuleFactory.class)
public class SystemCGuiceModuleFactory {
- public SystemCGuiceModule getModule(Properties properties) {
- return new SystemCGuiceModule(properties);
+ public SystemCGuiceModule getModule(SessionLogger logger, Properties properties) {
+ return new SystemCGuiceModule(logger, properties);
}
}
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCRootTransformer.java b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCRootTransformer.java
index bfb439e..9c2afb2 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCRootTransformer.java
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/SystemCRootTransformer.java
@@ -22,6 +22,7 @@
import org.eclipse.app4mc.amlt2systemc.m2t.module.PropertyKeys;
import org.eclipse.app4mc.amlt2systemc.m2t.transformers.AmaltheaModel2TextTransformer;
import org.eclipse.app4mc.transformation.ServiceConstants;
+import org.eclipse.app4mc.transformation.TransformationConstants;
import org.eclipse.app4mc.transformation.transformers.Model2TextRootTransformer;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.resource.Resource;
@@ -30,8 +31,6 @@
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ConfigurationPolicy;
import org.osgi.service.component.annotations.Reference;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.inject.Guice;
import com.google.inject.Injector;
@@ -44,28 +43,30 @@
public class SystemCRootTransformer extends Model2TextRootTransformer {
- private static final Logger LOG = LoggerFactory.getLogger(SystemCRootTransformer.class);
-
@Reference
SystemCGuiceModuleFactory factory;
Properties properties;
@Activate
- void activate(Map<String, ?> properties) {
- LOG.debug("SystemCRootTransformer activated : {}", this.hashCode());
-
+ @Override
+ protected void activate(Map<String, ?> properties) {
+ super.activate(properties);
this.properties = new Properties();
this.properties.putAll(properties);
+
+ // set the output directory to the local properties
+ this.properties.put(TransformationConstants.TRANSFORMATION_OUTPUT_FOLDER, getOutputFolder());
}
-
+
@Override
- public void m2tTransformation(ResourceSet inputResourceSet) {
+ public void m2tTransformation() {
- Injector injector = Guice.createInjector(factory.getModule(properties));
+ Injector injector = Guice.createInjector(factory.getModule(logger, properties));
AmaltheaModel2TextTransformer instance = injector.getInstance(AmaltheaModel2TextTransformer.class);
+ ResourceSet inputResourceSet = getInputResourceSet(getInputFolder(), logger);
setProjectName(inputResourceSet, this.properties);
instance.m2tTransformation(inputResourceSet);
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/config/M2TTransformation.java b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/config/M2TTransformation.java
deleted file mode 100644
index 69763a9..0000000
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/config/M2TTransformation.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- ********************************************************************************
- * Copyright (c) 2020, 2021 Robert Bosch GmbH.
- *
- * 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.m2t.config;
-
-import java.util.Properties;
-
-import org.eclipse.app4mc.amalthea.model.AmaltheaFactory;
-import org.eclipse.app4mc.amalthea.model.io.AmaltheaLoader;
-import org.eclipse.app4mc.amlt2systemc.m2t.module.PropertyKeys;
-import org.eclipse.app4mc.transformation.executiontype.IModelToTextConfig;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class M2TTransformation implements IModelToTextConfig {
-
- private Properties parameters;
-
- private static final Logger LOG = LoggerFactory.getLogger(M2TTransformation.class);
-
- @Override
- public ResourceSet getInputResourceSet() {
-
- if (parameters != null) {
-
- String folderPath = parameters.getProperty(PropertyKeys.INPUT_MODELS_FOLDER);
-
- if (folderPath != null) {
-
- ResourceSet resourceSet = AmaltheaLoader.loadFromDirectoryNamed(folderPath);
-
- if (resourceSet.getResources().isEmpty()) {
- LOG.error("No Amalthea model files are loaded. Verify if the model version is : {}",
- AmaltheaFactory.eINSTANCE.createAmalthea().getVersion());
- }
-
- return resourceSet;
- } else {
- LOG.error("Input_models_folder parameter not set",
- new NullPointerException("input_models_folder property not set"));
- }
-
- } else {
- LOG.error("Parameters object not set ", new NullPointerException("Parameter object is null"));
- }
- return null;
- }
-
- public void setProperties(Properties parameters) {
- this.parameters = parameters;
- }
-
-}
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/module/PropertyKeys.java b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/module/PropertyKeys.java
index 6cff52f..3c373ae 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/module/PropertyKeys.java
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/module/PropertyKeys.java
@@ -1,6 +1,6 @@
/**
********************************************************************************
- * Copyright (c) 2020 Robert Bosch GmbH.
+ * Copyright (c) 2020, 2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -22,11 +22,7 @@
throw new IllegalStateException("Utility class");
}
- public static final String INPUT_MODELS_FOLDER = "input_models_folder";
- public static final String M2M_OUTPUT_FOLDER = "m2m_output_folder";
- public static final String M2T_OUTPUT_FOLDER = "m2t_output_folder";
public static final String APP4MCSIM_FOLDER = "app4mcsim_folder";
- public static final String LOG_FILE = "logFile";
public static final String PROJECT_NAME = "project_name";
}
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/AmaltheaModel2TextTransformer.java b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/AmaltheaModel2TextTransformer.java
index c63518e..cf1178e 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/AmaltheaModel2TextTransformer.java
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/AmaltheaModel2TextTransformer.java
@@ -22,51 +22,60 @@
import org.eclipse.app4mc.amalthea.model.Amalthea;
import org.eclipse.app4mc.amlt2systemc.m2t.module.BaseTransformer;
-import org.eclipse.app4mc.amlt2systemc.m2t.module.PropertyKeys;
+import org.eclipse.app4mc.transformation.TransformationConstants;
import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.app4mc.util.sessionlog.SessionLogger;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.inject.Inject;
public class AmaltheaModel2TextTransformer extends BaseTransformer {
- private static final Logger LOG = LoggerFactory.getLogger(AmaltheaModel2TextTransformer.class);
+ @Inject private SessionLogger logger;
@Inject private OutputBuffer outputBuffer;
@Inject private AmaltheaTransformer amaltheaTransformer;
@Inject private CMakeTopGenerator cmakeTopGenerator;
public void m2tTransformation(final ResourceSet inputResourceSet) {
+ // configure output buffer
+ this.outputBuffer.initialize(this.getProperty(TransformationConstants.TRANSFORMATION_OUTPUT_FOLDER));
+ this.outputBuffer.configureFiletype("SRC", ".cpp", "// This code was generated for simulation with app4mc.sim\n\n", null);
+ this.outputBuffer.configureFiletype("INC", ".h", "// This code was generated for simulation with app4mc.sim\n\n#pragma once\n\n", null);
+ this.outputBuffer.configureFiletype("OTHER", "", "", "");
+
+ ArrayList<Amalthea> amaltheas = new ArrayList<Amalthea>();
for (final Resource resource : inputResourceSet.getResources()) {
for (final EObject model : resource.getContents()) {
- LOG.info(("Processing file : " + resource.getURI()));
-
+ logger.info("Processing file : {0}", resource.getURI());
+
if ((model instanceof Amalthea)) {
-
- this.outputBuffer.initialize(this.getProperty(PropertyKeys.M2T_OUTPUT_FOLDER));
- this.outputBuffer.configureFiletype("SRC", ".cpp", "// This code was generated for simulation with app4mc.sim\n\n", null);
- this.outputBuffer.configureFiletype("INC", ".h", "// This code was generated for simulation with app4mc.sim\n\n#pragma once\n\n", null);
- this.outputBuffer.configureFiletype("OTHER", "", "", "");
-
- this.amaltheaTransformer.transform(((Amalthea) model));
- this.cmakeTopGenerator.transform();
-
- ArrayList<Path> buildPathList = new ArrayList<>();
- Path buildPath = Paths.get(outputBuffer.getOutputFolder(),"build");
- if(Files.isDirectory(buildPath)) {
- buildPathList.add(buildPath);
- }
- this.outputBuffer.setExcludePathsOfResult(buildPathList);
- this.outputBuffer.finish(true, true);
-
- LOG.info("Script file generated at : {}", this.outputBuffer.getOutputFolder());
+ amaltheas.add((Amalthea) model);
}
}
}
+
+ //transform models
+ this.amaltheaTransformer.transform(amaltheas.toArray(new Amalthea[amaltheas.size()]));
+
+ logger.info("Generating cmake");
+
+ this.cmakeTopGenerator.transform();
+
+ // exclude build path
+ ArrayList<Path> buildPathList = new ArrayList<>();
+ Path buildPath = Paths.get(outputBuffer.getOutputFolder(),"build");
+ if(Files.isDirectory(buildPath)) {
+ buildPathList.add(buildPath);
+ }
+
+ // write output buffer to disk
+ this.outputBuffer.setExcludePathsOfResult(buildPathList);
+ this.outputBuffer.finish(true, true);
+
+ logger.info("Script file generated at : {0}", this.outputBuffer.getOutputFolder());
}
}
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/AmaltheaTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/AmaltheaTransformer.xtend
index d483247..48567d8 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/AmaltheaTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/AmaltheaTransformer.xtend
@@ -16,8 +16,8 @@
package org.eclipse.app4mc.amlt2systemc.m2t.transformers
import com.google.inject.Inject
+import com.google.inject.Singleton
import org.eclipse.app4mc.amalthea.model.Amalthea
-import org.eclipse.app4mc.amalthea.model.check.ModelStructureCheck
import org.eclipse.app4mc.amalthea.model.util.ModelUtil
import org.eclipse.app4mc.amlt2systemc.m2t.module.BaseTransformer
import org.eclipse.app4mc.amlt2systemc.m2t.module.PropertyKeys
@@ -29,10 +29,11 @@
import org.eclipse.app4mc.amlt2systemc.m2t.transformers.os.OsModelTransformer
import org.eclipse.app4mc.amlt2systemc.m2t.transformers.stimuli.StimuliModelTransformer
import org.eclipse.app4mc.amlt2systemc.m2t.transformers.sw.SWModelTransformer
+import org.eclipse.app4mc.amlt2systemc.m2t.utils.TuSort
import org.eclipse.app4mc.transformation.util.OutputBuffer
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
+import org.eclipse.app4mc.util.sessionlog.SessionLogger
+@Singleton
class AmaltheaTransformer extends BaseTransformer {
@Inject OutputBuffer outputBuffer
@@ -46,7 +47,7 @@
@Inject ProcessingUnitTransformer processingUnitTransformer
@Inject MemoryTransformer memoryTransformer
- static final Logger LOG = LoggerFactory.getLogger(AmaltheaTransformer);
+ @Inject SessionLogger logger;
static def getModulePath() {
return "amaltheaTop"
@@ -56,23 +57,27 @@
return getModulePath() + "/amalthea"
}
- def void transform(Amalthea amalthea) {
-
- if (amalthea === null) {
- LOG.error("Input Amalthea model invalid (received null).")
+ def void transform(Amalthea[] amaltheas) {
+ if (amaltheas === null || amaltheas.empty) {
+ logger.error("Input Amalthea model(s) invalid (received null).")
return
}
-
- if (!ModelStructureCheck.checkModel(amalthea, null, false)){
- LOG.error("Input Amalthea model failed model structure check.")
- return
- }
+
+ //make sure all submodels are present in at least one input model
+ //Note: chose index 0 at will, any list element would do just fine
+ adjustModel(amaltheas.get(0))
- adjustModel(amalthea)
+ swModelTransformer.transform(amaltheas.map[it.swModel])
+ hwModelTransformer.transform(amaltheas.map[it.hwModel])
+ mappingModelTransformer.transform(amaltheas.map[it.mappingModel])
+ osModelTransformer.transform(amaltheas.map[it.osModel])
+ eventModelTransformer.transform(amaltheas.map[it.eventModel])
+ stimuliModelTransformer.transform(amaltheas.map[it.stimuliModel])
- outputBuffer.appendTo("INC", getModuleName(), toH(amalthea))
- outputBuffer.appendTo("SRC", getModuleName(), toCpp(amalthea))
+ outputBuffer.appendTo("INC", getModuleName(), toH())
+ outputBuffer.appendTo("SRC", getModuleName(), toCpp())//swModels, hwModels, mappingModels, osModels, eventModels, stimuliModels))
outputBuffer.appendTo("OTHER", getModulePath() + "/CMakeLists.txt", getCMake());
+
}
private def void adjustModel(Amalthea amalthea) {
@@ -85,99 +90,126 @@
ModelUtil.getOrCreateStimuliModel(amalthea);
}
- private def String toH(Amalthea amalthea) '''
+ private def String toH() '''
//top level header
'''
- private def String toCpp(Amalthea amalthea) '''
- #include "APP4MCsim.h"
- #include "Tracer/Tracer.h"
- #include "Tracer/BTFTracer.h"
-
- #include "«getModuleName()».h"
- //include model elements
- #include "«swModelTransformer.transform(ModelUtil.getOrCreateSwModel(amalthea)).module».h"
- #include "«hwModelTransformer.transform(ModelUtil.getOrCreateHwModel(amalthea)).module».h"
- #include "«mappingModelTransformer.transform(ModelUtil.getOrCreateMappingModel(amalthea)).module».h"
- #include "«osModelTransformer.transform(ModelUtil.getOrCreateOsModel(amalthea)).module».h"
- #include "«eventModelTransformer.transform(ModelUtil.getOrCreateEventModel(amalthea)).module».h"
- #include "«stimuliModelTransformer.transform(ModelUtil.getOrCreateStimuliModel(amalthea)).module».h"
-
-
- //include processing units and memories for tracing -----
- «FOR tu: processingUnitTransformer.cache.values»
- #include "«tu.module».h"
- «ENDFOR»
- «FOR tu: memoryTransformer.cache.values»
- #include "«tu.module».h"
- «ENDFOR»
- // tracing includes -----------------
-
- INITIALIZE_EASYLOGGINGPP;
-
- int sc_main(int argc, char *argv[]) {
- //static code ----------------------
- START_EASYLOGGINGPP(argc, argv);
- sc_core::sc_set_time_resolution(1.0,sc_core::SC_NS);
- //end static code ------------------
-
- /* Hardware */
- «hwModelTransformer.transform(amalthea.hwModel).call»;
-
- /* Software */
- «swModelTransformer.transform(amalthea.swModel).call»;
-
- /* OS */
- «osModelTransformer.transform(amalthea.osModel).call»;
-
-
- /* Mapping */
- «mappingModelTransformer.transform(amalthea.mappingModel).call»;
+ private def String toCpp()'''
+ #include "APP4MCsim.h"
+ #include "Tracer/Tracer.h"
+ #include "Tracer/BTFTracer.h"
- /* Event */
- «eventModelTransformer.transform(amalthea.eventModel).call»;
+ #include "«getModuleName()».h"
+ //include model elements
+ «FOR obj : TuSort.byModule(swModelTransformer.cache.values)»
+ #include "«obj.module».h"
+ «ENDFOR»
+ «FOR obj : TuSort.byModule(hwModelTransformer.cache.values)»
+ #include "«obj.module».h"
+ «ENDFOR»
+ «FOR obj : TuSort.byModule(osModelTransformer.cache.values)»
+ #include "«obj.module».h"
+ «ENDFOR»
+ «FOR obj : TuSort.byModule(mappingModelTransformer.cache.values)»
+ #include "«obj.module».h"
+ «ENDFOR»
+ «FOR obj : TuSort.byModule(eventModelTransformer.cache.values)»
+ #include "«obj.module».h"
+ «ENDFOR»
+ «FOR obj : TuSort.byModule(stimuliModelTransformer.cache.values)»
+ #include "«obj.module».h"
+ «ENDFOR»
- /* Stimuli */
- «stimuliModelTransformer.transform(amalthea.stimuliModel).call»;
-
- «val tracer = super.getProperty("tracer", "BtfTracer")»
-
- auto tracer = std::make_shared<«tracer»>();
- TraceManager::setTracer(tracer);
- //static code ----------------------
- sc_core::sc_trace_file *tf = sc_core::sc_create_vcd_trace_file("trace");
-
- //trace processing units and memories -----
+ //include processing units and memories for tracing -----
«FOR tu: processingUnitTransformer.cache.values»
- sc_trace(tf, &*«tu.call»(), "«tu.module.replaceAll("/", "_")»");
+ #include "«tu.module».h"
«ENDFOR»
«FOR tu: memoryTransformer.cache.values»
- sc_trace(tf, &*«tu.call»(), "«tu.module.replaceAll("/", "_")»");
+ #include "«tu.module».h"
«ENDFOR»
- // tracing includes -----------------
-
-
- try {
- «val simDuration = super.getProperty("simDurationInMS", "1000")»
- sc_core::sc_start(«simDuration», sc_core::SC_MS);
+ // tracing includes -----------------
+
+ INITIALIZE_EASYLOGGINGPP;
+
+ int sc_main(int argc, char *argv[]) {
+ //static code ----------------------
+ START_EASYLOGGINGPP(argc, argv);
+ sc_core::sc_set_time_resolution(1.0,sc_core::SC_NS);
+ //end static code ------------------
+
+ /* Software */
+ «FOR obj : TuSort.byModule(swModelTransformer.cache.values)»
+ «obj.call»;
+ «ENDFOR»
+ /* Hardware */
+ «FOR obj : TuSort.byModule(hwModelTransformer.cache.values)»
+ «obj.call»;
+ «ENDFOR»
+ /* OS */
+ «FOR obj : TuSort.byModule(osModelTransformer.cache.values)»
+ «obj.call»;
+ «ENDFOR»
+ /* Mapping */
+ «FOR obj : TuSort.byModule(mappingModelTransformer.cache.values)»
+ «obj.call»;
+ «ENDFOR»
+ /* Event */
+ «FOR obj : TuSort.byModule(eventModelTransformer.cache.values)»
+ «obj.call»;
+ «ENDFOR»
+ /* Stimuli */
+ «FOR obj : TuSort.byModule(stimuliModelTransformer.cache.values)»
+ «obj.call»;
+ «ENDFOR»
+
+ «val tracerProperty = super.getProperty("tracer", "BtfTracer")»
+ auto tracer = std::make_shared<«tracerProperty»>();
+ TraceManager::setTracer(tracer);
+
+ //static code ----------------------
+ sc_core::sc_trace_file *tf = sc_core::sc_create_vcd_trace_file("trace");
+
+ //trace processing units and memories -----
+ «FOR tu: processingUnitTransformer.cache.values»
+ sc_trace(tf, &*«tu.call»(), "«tu.module.replaceAll("/", "_")»");
+ «ENDFOR»
+ «FOR tu: memoryTransformer.cache.values»
+ sc_trace(tf, &*«tu.call»(), "«tu.module.replaceAll("/", "_")»");
+ «ENDFOR»
+
+ //run simulation
+ try {
+ «val simDuration = super.getProperty("simDurationInMS", "1000")»
+ sc_core::sc_start(«simDuration», sc_core::SC_MS);
+ }
+ catch (sc_core::sc_report e) {
+ const char* file = e.get_file_name();
+ const int line = e.get_line_number();
+ const char* msg = e.get_msg();
+ VLOG(0) << msg << "\nin file: " << file << "\nline: " << line;
+ return -1;
+ }
+
+ sc_core::sc_close_vcd_trace_file(tf);
+
+ VLOG(0) << " done ";
+ return 0;
}
- catch (sc_core::sc_report e) {
- const char* file = e.get_file_name();
- const int line = e.get_line_number();
- const char* msg = e.get_msg();
- VLOG(0) << msg << "\nin file: " << file << "\nline: " << line;
- return -1;
- }
+ '''
+
- sc_core::sc_close_vcd_trace_file(tf);
-
- VLOG(0) << " done ";
- return 0;
- }'''
def String getCMake() '''
include_directories(${PROJECT_SOURCE_DIR})
+
+ add_executable («getProperty(PropertyKeys.PROJECT_NAME)»
+ "${PROJECT_SOURCE_DIR}/«getModuleName()».cpp"
+ )
+
+ target_link_libraries(«getProperty(PropertyKeys.PROJECT_NAME)» app4mc.sim_lib)
+ target_include_directories(«getProperty(PropertyKeys.PROJECT_NAME)» PUBLIC app4mc.sim_lib)
+
add_subdirectory ("./hwModel")
add_subdirectory ("./swModel")
add_subdirectory ("./mappingModel")
@@ -185,17 +217,17 @@
add_subdirectory ("./stimuliModel")
add_subdirectory ("./osModel")
- add_executable («getProperty(PropertyKeys.PROJECT_NAME)»
- "${PROJECT_SOURCE_DIR}/«getModuleName()».cpp"
- )
-
- target_link_libraries(«getProperty(PropertyKeys.PROJECT_NAME)» app4mc.sim_lib eventModel_lib stimuliModel_lib swModel_lib hwModel_lib mappingModel_lib osModel_lib)
- target_include_directories(«getProperty(PropertyKeys.PROJECT_NAME)» PUBLIC app4mc.sim_lib eventModel_lib stimuliModel_lib swModel_lib hwModel_lib mappingModel_lib osModel_lib)
+ «IF Integer.parseInt(super.getProperty("CmakeUnityBuildTUPerCore","0")) > 0»
+ #set the unity-batch-size to a Processorcount dependend value, for more efficient compiling
+ if(COMMAND calc_unity_batch_size)
+ calc_unity_batch_size(«getProperty(PropertyKeys.PROJECT_NAME)» «super.getProperty("CmakeUnityBuildTUPerCore")»)
+ endif()
+ «ENDIF»
add_custom_target(model_execution
- COMMAND «getProperty(PropertyKeys.PROJECT_NAME)»
- WORKING_DIRECTORY "${MODEL_WORKING_DIR}"
- )
+ COMMAND «getProperty(PropertyKeys.PROJECT_NAME)»
+ WORKING_DIRECTORY "${MODEL_WORKING_DIR}"
+ )
'''
}
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/event/EventModelTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/event/EventModelTransformer.xtend
index 78f93c0..832e7c8 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/event/EventModelTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/event/EventModelTransformer.xtend
@@ -24,6 +24,7 @@
import org.eclipse.app4mc.amlt2systemc.m2t.transformers.TranslationUnit
import org.eclipse.app4mc.amlt2systemc.m2t.utils.TuSort
import org.eclipse.app4mc.transformation.util.OutputBuffer
+import org.eclipse.app4mc.amlt2systemc.m2t.module.PropertyKeys
@Singleton
class EventModelTransformer extends BaseTransformer {
@@ -46,18 +47,15 @@
return "init_eventModel()"
}
- private def getLibName() {
- return "eventModel_lib"
- }
-
def create new TranslationUnit(
getModuleName(),
getFunctionDef()
- ) transform(EventModel eventModel) {
- // start transformation @ task level,
- // Note: generate referenced object (e.g. runnables) when referenced (eg. in a runnable call within the call graph)
- eventModel.events.forEach[eventsDispatcher.transform(it)]
-
+ ) transform(EventModel[] eventModels) {
+ eventModels.forEach[eventModel |{
+ // start transformation @ task level,
+ // Note: generate referenced object (e.g. runnables) when referenced (eg. in a runnable call within the call graph)
+ eventModel.events.forEach[eventsDispatcher.transform(it)]
+ }]
outputBuffer.appendTo("INC", it.module, toH())
outputBuffer.appendTo("SRC", it.module, toCpp())
outputBuffer.appendTo("OTHER", getModulePath() + "/CMakeLists.txt", getCMake(it.module));
@@ -92,19 +90,19 @@
def String getCMake(String thisModule) '''
- # CMakeList.txt: CMake project for "«getLibName()»".
- # Include the source and define project specific logic here.
- #
- cmake_minimum_required (VERSION 3.12)
-
- # Add a source to the project executable
- add_library («getLibName()» OBJECT
+ # CMakeList.txt: CMake project for EventModel of "«getProperty(PropertyKeys.PROJECT_NAME)»".
+
+
+ # Add sources of EventModel
+ target_sources («getProperty(PropertyKeys.PROJECT_NAME)» PRIVATE
«FOR obj : TuSort.byModule(eventsDispatcher.getCache(typeof(ChannelEvent)).values)»
"${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
«ENDFOR»
- "${PROJECT_SOURCE_DIR}/«thisModule».cpp" )
- target_link_libraries(«getLibName()» app4mc.sim_lib easyloggingpp)
+ "${PROJECT_SOURCE_DIR}/«thisModule».cpp")
'''
+ def getCache(){
+ return this._createCache_transform
+ }
}
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/ConnectionHandlerTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/ConnectionHandlerTransformer.xtend
index fbbbe38..c6ede8d 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/ConnectionHandlerTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/ConnectionHandlerTransformer.xtend
@@ -69,7 +69,7 @@
«setPortsAndConnections(connectionHandler)»
//frequency domain
«IF (connectionHandler.frequencyDomain !== null)»
- «name»->clock_period= *«frequencyDomainTransformer.transform(connectionHandler.frequencyDomain).call»;
+ «name»->clock_period= «frequencyDomainTransformer.transform(connectionHandler.frequencyDomain).call»;
«ENDIF»
}
return «name»;
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/FrequencyDomainTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/FrequencyDomainTransformer.xtend
index 7f48325..8281b6c 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/FrequencyDomainTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/FrequencyDomainTransformer.xtend
@@ -48,20 +48,15 @@
def String toH(FrequencyDomain frequencyDomain) '''
#include <systemc>
- sc_core::sc_time* «getCall(frequencyDomain)»;
+ sc_core::sc_time «getCall(frequencyDomain)»;
'''
def String toCpp(FrequencyDomain frequencyDomain) '''
#include "«getModulePath(frequencyDomain)».h"
- sc_core::sc_time* «getName(frequencyDomain)» = nullptr;
-
- sc_core::sc_time* «getCall(frequencyDomain)» {
- if («getName(frequencyDomain)» == nullptr){
- «getName(frequencyDomain)» = new sc_core::sc_time(«getPeriodInPS(frequencyDomain.defaultValue)», sc_core::SC_PS);
- }
- return «getName(frequencyDomain)»;
+ sc_core::sc_time «getCall(frequencyDomain)» {
+ return sc_core::sc_time(«getPeriodInPS(frequencyDomain.defaultValue)», sc_core::SC_PS);
}
'''
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/HwAccessElementTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/HwAccessElementTransformer.xtend
index f078475..71ad322 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/HwAccessElementTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/HwAccessElementTransformer.xtend
@@ -61,7 +61,7 @@
#include "Common.h"
#include "HardwareModel.h"
- HwAccessElement* «getCall(hwAccessElement)»();
+ HwAccessElement «getCall(hwAccessElement)»();
'''
private def String toCpp(HwAccessElement hwAccessElement) '''
@@ -75,37 +75,33 @@
#include "«hwModuleTransformer.transform(hwAccessElement.source).module».h"
#include "«hwModuleTransformer.transform(hwAccessElement.destination).module».h"
- «val name = getName(hwAccessElement)»
- HwAccessElement* «name» = nullptr;
-
/* HwAccessWlement not contained in structure, eg. in flat hardware model */
- HwAccessElement* «getCall(hwAccessElement)»(){
- if («name»==NULL){
- «name» = new HwAccessElement();
- «IF hwAccessElement.readLatency !== null »
- «name»->setReadLatency(«IDiscreteValueDeviationTransformer.getDeviation(hwAccessElement.readLatency)»);
- «ENDIF»
- «IF hwAccessElement.writeLatency !== null »
- «name»->setWriteLatency(«IDiscreteValueDeviationTransformer.getDeviation(hwAccessElement.writeLatency)»);
- «ENDIF»
- «IF hwAccessElement.dataRate !== null »
- «name»->setDataRate(«DataRateUtil.transform(hwAccessElement.dataRate)»);
- «ENDIF»
+ HwAccessElement «getCall(hwAccessElement)»(){
+ //utilize RTO here
+ HwAccessElement returnVal;
+ «IF hwAccessElement.readLatency !== null »
+ returnVal.setReadLatency(«IDiscreteValueDeviationTransformer.getDeviation(hwAccessElement.readLatency)»);
+ «ENDIF»
+ «IF hwAccessElement.writeLatency !== null »
+ returnVal.setWriteLatency(«IDiscreteValueDeviationTransformer.getDeviation(hwAccessElement.writeLatency)»);
+ «ENDIF»
+ «IF hwAccessElement.dataRate !== null »
+ returnVal.setDataRate(«DataRateUtil.transform(hwAccessElement.dataRate)»);
+ «ENDIF»
+
+
+ «IF hwAccessElement.accessPath !== null»
+ «val calls = getAccessElementCalls(hwAccessElement)»
+ returnVal.path.elements.assign({«FOR call : calls» «call» «ENDFOR»});
+ «ENDIF»
+
+ //set source
+ returnVal.source = «hwModuleTransformer.transform(hwAccessElement.source).call»();
+
+ //set destination
+ returnVal.dest = «hwModuleTransformer.transform(hwAccessElement.destination).call»();
-
- «IF hwAccessElement.accessPath !== null»
- «val calls = getAccessElementCalls(hwAccessElement)»
- «name»->path.elements.assign({«FOR call : calls» «call» «ENDFOR»});
- «ENDIF»
-
- //set source
- «name»->source = «hwModuleTransformer.transform(hwAccessElement.source).call»();
-
- //set destination
- «name»->dest = «hwModuleTransformer.transform(hwAccessElement.destination).call»();
-
- }
- return «name»;
+ return returnVal;
}
'''
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/HwModelTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/HwModelTransformer.xtend
index d5d92c7..9a61f84 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/HwModelTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/HwModelTransformer.xtend
@@ -19,10 +19,11 @@
import com.google.inject.Singleton
import org.eclipse.app4mc.amalthea.model.HWModel
import org.eclipse.app4mc.amlt2systemc.m2t.module.BaseTransformer
+import org.eclipse.app4mc.amlt2systemc.m2t.module.PropertyKeys
import org.eclipse.app4mc.amlt2systemc.m2t.transformers.AmaltheaTransformer
import org.eclipse.app4mc.amlt2systemc.m2t.transformers.TranslationUnit
-import org.eclipse.app4mc.transformation.util.OutputBuffer
import org.eclipse.app4mc.amlt2systemc.m2t.utils.TuSort
+import org.eclipse.app4mc.transformation.util.OutputBuffer
@Singleton
class HwModelTransformer extends BaseTransformer {
@@ -39,10 +40,6 @@
return "init_hwModel()"
}
- private def getLibName() {
- return "hwModel_lib"
- }
-
@Inject OutputBuffer outputBuffer
@Inject HwStructureTransformer hwStructureTransformer
@Inject FrequencyDomainTransformer frequencyDomainTransformer
@@ -57,98 +54,99 @@
def create new TranslationUnit(
getModuleName(),
getFunctionDef()
- ) transform(HWModel hwModel) {
+ ) transform(HWModel[] hwModels) {
+ hwModels.forEach[hwModel | {
+ hwModel.structures.forEach[structure |{
+ hwStructureTransformer.transform(structure)
+ }]
+ }]
// start transformation @ task level,
// Note: generate referenced object (e.g. runnables) when referenced (eg. in a runnable call within the call graph)
- outputBuffer.appendTo("INC", it.module, toH(hwModel))
- outputBuffer.appendTo("SRC", it.module, toCpp(hwModel))
+ outputBuffer.appendTo("INC", it.module, toH())
+ outputBuffer.appendTo("SRC", it.module, toCpp())
val buf = getCMake(it.module);
outputBuffer.appendTo("OTHER", getModulePath() + "/CMakeLists.txt", buf);
}
- private def String toH(HWModel hwModel) '''
+ private def String toH() '''
#include <systemc>
#include <memory>
#include "Common.h"
#include "HardwareModel.h"
//include model elements
- «FOR structure : hwModel.structures»
- #include "«hwStructureTransformer.transform(structure).module».h"
+ «FOR structure : TuSort.byModule(hwStructureTransformer.cache.values)»
+ #include "«structure.module».h"
«ENDFOR»
+
void «getFunctionDef()»;
'''
- private def String toCpp(HWModel hwModel) '''
+ private def String toCpp() '''
#include "«getModuleName».h"
/* Hardware */
void «getFunctionDef()»{
- «FOR structure : hwModel.structures»
- «hwStructureTransformer.transform(structure).call»();
+ «FOR structure : TuSort.byModule(hwStructureTransformer.cache.values)»
+ «structure.call»();
«ENDFOR»
}
'''
def String getCMake(String thisModule) '''
- # CMakeList.txt: CMake project for "«getLibName()»".
- # Include the source and define project specific logic here.
- #
- cmake_minimum_required (VERSION 3.12)
+ # CMakeList.txt: CMake project for HwModel of "«getProperty(PropertyKeys.PROJECT_NAME)»".
+
-
- # Add a source to the project executable
- add_library («getLibName()» OBJECT
+ # Add sources of HwModel
+ target_sources («getProperty(PropertyKeys.PROJECT_NAME)» PRIVATE
#features
- «FOR obj : TuSort.byModule(hwFeatureTransformer.cache.values)»
- "${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
- «ENDFOR»
+ «FOR obj : TuSort.byModule(hwFeatureTransformer.cache.values)»
+ "${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
+ «ENDFOR»
#definitions
- «FOR obj : TuSort.byModule(processingUnitDefinitionTransformer.cache.values)»
- "${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
- «ENDFOR»
+ «FOR obj : TuSort.byModule(processingUnitDefinitionTransformer.cache.values)»
+ "${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
+ «ENDFOR»
#domains
- «FOR obj : TuSort.byModule(frequencyDomainTransformer.cache.values)»
- "${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
- «ENDFOR»
+ «FOR obj : TuSort.byModule(frequencyDomainTransformer.cache.values)»
+ "${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
+ «ENDFOR»
+
#hw structure
- «FOR obj : TuSort.byModule(hwStructureTransformer.cache.values)»
- "${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
- «ENDFOR»
-
- # modules
- «FOR obj : TuSort.byModule(memoryTransformer.cache.values)»
- "${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
- «ENDFOR»
- «FOR obj : TuSort.byModule(processingUnitTransformer.cache.values)»
- "${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
- «ENDFOR»
- «FOR obj : TuSort.byModule(connectionHandlerTransformer.cache.values)»
- "${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
- «ENDFOR»
-
+ «FOR obj : TuSort.byModule(hwStructureTransformer.cache.values)»
+ "${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
+ «ENDFOR»
+
+ # modules
+ «FOR obj : TuSort.byModule(memoryTransformer.cache.values)»
+ "${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
+ «ENDFOR»
+ «FOR obj : TuSort.byModule(processingUnitTransformer.cache.values)»
+ "${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
+ «ENDFOR»
+ «FOR obj : TuSort.byModule(connectionHandlerTransformer.cache.values)»
+ "${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
+ «ENDFOR»
+
#connections
«FOR obj : TuSort.byModule(hwConnectionTransformer.cache.values)»
"${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
«ENDFOR»
-
+
#HW access elements
«FOR obj : TuSort.byModule(hwAccessElementTransformer.cache.values)»
"${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
«ENDFOR»
- "${PROJECT_SOURCE_DIR}/«thisModule».cpp")
-
-
- #target_include_directories(RUNNABLES_LIB
- # PUBLIC
- # ${CMAKE_CURRENT_LIST_DIR}/definitions/_inc
- # ${CMAKE_CURRENT_LIST_DIR}/../labels/_inc
-
- target_link_libraries(«getLibName()» app4mc.sim_lib effolkronium_random easyloggingpp systemc)
+
+ "${PROJECT_SOURCE_DIR}/«thisModule».cpp")
+
'''
-
+
+ def getCache(){
+ return this._createCache_transform
+ }
}
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/MemoryTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/MemoryTransformer.xtend
index 61485cd..cf27bb8 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/MemoryTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/MemoryTransformer.xtend
@@ -65,7 +65,7 @@
«name» = «getConstructor(module)»<Memory>("«name»", 0);
«ENDIF»
«IF (module.frequencyDomain !== null)»
- «name»->clock_period= *«frequencyDomainTransformer.transform(module.frequencyDomain).call»;
+ «name»->clock_period= «frequencyDomainTransformer.transform(module.frequencyDomain).call»;
«ENDIF»
«setPortsAndConnections(module)»
«setAccessLatency(module)»
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/ProcessingUnitTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/ProcessingUnitTransformer.xtend
index f454b7c..564f087 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/ProcessingUnitTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/hw/ProcessingUnitTransformer.xtend
@@ -67,13 +67,13 @@
«getName(pu)» = «getConstructor(pu)»<ProcessingUnit>("«name»", NULL);
«ENDIF»
«IF (pu.frequencyDomain !== null)»
- «getName(pu)»->clock_period= *«frequencyDomainTransformer.transform(pu.frequencyDomain).call»;
+ «getName(pu)»->clock_period= «frequencyDomainTransformer.transform(pu.frequencyDomain).call»;
«ENDIF»
//ports & connections
«setPortsAndConnections(pu)»
//access elements
«FOR accessElement : pu.accessElements»
- «getName(pu)»->addHWAccessElement(*«hwAccessElementTransformer.transform(accessElement).call»());
+ «getName(pu)»->addHWAccessElement(«hwAccessElementTransformer.transform(accessElement).call»());
«ENDFOR»
}
return «name»;
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/mapping/MappingModelTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/mapping/MappingModelTransformer.xtend
index 7c70297..cc4a4d7 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/mapping/MappingModelTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/mapping/MappingModelTransformer.xtend
@@ -24,6 +24,7 @@
import org.eclipse.app4mc.amlt2systemc.m2t.transformers.TranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
import org.eclipse.app4mc.amlt2systemc.m2t.utils.TuSort
+import org.eclipse.app4mc.amlt2systemc.m2t.module.PropertyKeys
@Singleton
class MappingModelTransformer extends BaseTransformer {
@@ -45,22 +46,19 @@
return "init_mappingModel()"
}
- private def getLibName() {
- return "mappingModel_lib"
- }
-
def create new TranslationUnit(
getModuleName(),
getFunctionDef()
- ) transform(MappingModel mappingModel) {
-
- // start transformation @ task level,
- // Note: generate referenced object (e.g. runnables) when referenced (eg. in a runnable call within the call graph)
- mappingModel.memoryMapping.forEach[memMapping|memoryMappingTransformer.transform(memMapping)]
- mappingModel.taskAllocation.forEach[taskAllocation|taskAllocationTransformer.transform(taskAllocation)]
- mappingModel.schedulerAllocation.forEach [ schedulerAllocation |
- schedulerAllocationTransformer.transform(schedulerAllocation)
- ]
+ ) transform(MappingModel[] mappingModels) {
+ mappingModels.forEach[mappingModel | {
+ // start transformation @ task level,
+ // Note: generate referenced object (e.g. runnables) when referenced (eg. in a runnable call within the call graph)
+ mappingModel.memoryMapping.forEach[memMapping|memoryMappingTransformer.transform(memMapping)]
+ mappingModel.taskAllocation.forEach[taskAllocation|taskAllocationTransformer.transform(taskAllocation)]
+ mappingModel.schedulerAllocation.forEach [ schedulerAllocation |
+ schedulerAllocationTransformer.transform(schedulerAllocation)
+ ]
+ }]
outputBuffer.appendTo("INC", it.module, toH())
outputBuffer.appendTo("SRC", it.module, toCpp())
@@ -85,8 +83,7 @@
«FOR obj : TuSort.byModule(schedulerAllocationTransformer.cache.values)»
#include "«(obj as TranslationUnit).module».h"
«ENDFOR»
- void «getFunctionDef()»;
-
+ void «getFunctionDef()»;
'''
private def String toCpp() '''
@@ -106,13 +103,11 @@
'''
def String getCMake(String thisModule) '''
- # CMakeList.txt: CMake project for "«getLibName()»".
- # Include the source and define project specific logic here.
- #
- cmake_minimum_required (VERSION 3.12)
-
- # Add a source to the project executable
- add_library («getLibName()» OBJECT
+ # CMakeList.txt: CMake project for MappingModel of "«getProperty(PropertyKeys.PROJECT_NAME)»".
+
+
+ # Add sources of MappingModel
+ target_sources («getProperty(PropertyKeys.PROJECT_NAME)» PRIVATE
«val uniqueMemoryMappings = new HashSet<String>()»
«memoryMappingTransformer.cache.values.forEach[uniqueMemoryMappings.add(it.module)]»
«FOR module : uniqueMemoryMappings»
@@ -127,7 +122,9 @@
"${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
«ENDFOR»
"${PROJECT_SOURCE_DIR}/«thisModule».cpp")
-
- target_link_libraries(«getLibName()» app4mc.sim_lib effolkronium_random easyloggingpp systemc)
'''
+
+ def getCache(){
+ return this._createCache_transform
+ }
}
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/os/OsModelTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/os/OsModelTransformer.xtend
index 1b182e9..6c718cf 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/os/OsModelTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/os/OsModelTransformer.xtend
@@ -23,6 +23,7 @@
import org.eclipse.app4mc.amlt2systemc.m2t.transformers.TranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
import org.eclipse.app4mc.amlt2systemc.m2t.utils.TuSort
+import org.eclipse.app4mc.amlt2systemc.m2t.module.PropertyKeys
@Singleton
class OsModelTransformer extends BaseTransformer {
@@ -50,15 +51,21 @@
return "osModel_lib"
}
- def create new TranslationUnit(getModuleName(), getFunctionDef()) transform(OSModel osModel) {
+ def create new TranslationUnit(getModuleName(), getFunctionDef())
+ transform(OSModel[] osModels) {
+ osModels.forEach[osModel |{
+ osModel.operatingSystems.forEach[os |
+ operatingSystemTransformer.transform(os)
+ ]
+ }]
// start transformation @ task level,
// Note: generate referenced object (e.g. runnables) when referenced (eg. in a runnable call within the call graph)
- outputBuffer.appendTo("INC", it.module, toH(osModel))
- outputBuffer.appendTo("SRC", it.module, toCpp(osModel))
+ outputBuffer.appendTo("INC", it.module, toH())
+ outputBuffer.appendTo("SRC", it.module, toCpp())
outputBuffer.appendTo("OTHER", modulePath + "/" + "CMakeLists.txt", getCMake())
}
- private def String toH(OSModel osModel) '''
+ private def String toH() '''
#include <systemc>
#include <memory>
#include "Common.h"
@@ -68,39 +75,39 @@
'''
- private def String toCpp(OSModel osModel) '''
+ private def String toCpp() '''
#include "«getModuleName».h"
- «FOR os : osModel.operatingSystems»
- #include "«operatingSystemTransformer.transform(os).module».h"
+ «FOR os : TuSort.byModule(operatingSystemTransformer.cache.values)»
+ #include "«os.module».h"
«ENDFOR»
/* OS */
void «getFunctionDef()»{
- «FOR os : osModel.operatingSystems»
- «operatingSystemTransformer.transform(os).call»();
+ «FOR os : TuSort.byModule(operatingSystemTransformer.cache.values)»
+ «os.call»();
«ENDFOR»
}
'''
def String getCMake() '''
- # CMakeList.txt: CMake project for "«getLibName()»".
- # Include the source and define project specific logic here.
- #
- cmake_minimum_required (VERSION 3.12)
-
- # Add a source to the project executable
- add_library («getLibName()» OBJECT
+ # CMakeList.txt: CMake project for OsModel of "«getProperty(PropertyKeys.PROJECT_NAME)»".
+
+
+ # Add sources of OsModel
+ target_sources («getProperty(PropertyKeys.PROJECT_NAME)» PRIVATE
«FOR obj : TuSort.byModule(taskSchedulerTransformer.cache.values)»
"${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
«ENDFOR»
«FOR obj : TuSort.byModule(operatingSystemTransformer.cache.values)»
"${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
«ENDFOR»
- "${PROJECT_SOURCE_DIR}/«moduleName».cpp"
- )
- target_link_libraries(«getLibName()» app4mc.sim_lib effolkronium_random easyloggingpp)
+ "${PROJECT_SOURCE_DIR}/«moduleName».cpp")
'''
+
+ def getCache(){
+ return this._createCache_transform
+ }
}
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/stimuli/StimuliModelTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/stimuli/StimuliModelTransformer.xtend
index 743e27d..c89ea4f 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/stimuli/StimuliModelTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/stimuli/StimuliModelTransformer.xtend
@@ -12,6 +12,7 @@
import org.eclipse.app4mc.amlt2systemc.m2t.transformers.TranslationUnit
import org.eclipse.app4mc.amlt2systemc.m2t.utils.TuSort
import org.eclipse.app4mc.transformation.util.OutputBuffer
+import org.eclipse.app4mc.amlt2systemc.m2t.module.PropertyKeys
@Singleton
class StimuliModelTransformer extends BaseTransformer {
@@ -31,25 +32,18 @@
return "init_stimuliModel()"
}
- private def getLibName() {
- return "stimuliModel_lib"
- }
-
def create new TranslationUnit(
getModuleName(),
getFunctionDef()
- ) transform(StimuliModel stimuliModel) {
-
-
- // start transformation @ task level,
- // Note: generate referenced object (e.g. runnables) when referenced (eg. in a runnable call within the call graph)
- stimuliModel.stimuli.forEach[stimulusDispatcher.transform(it)]
-
+ ) transform(StimuliModel[] stimuliModels) {
+ stimuliModels.forEach[stimuliModel|{
+ stimuliModel.stimuli.forEach[stimulusDispatcher.transform(it)]
+ }]
outputBuffer.appendTo("INC", it.module, toH())
outputBuffer.appendTo("SRC", it.module, toCpp())
outputBuffer.appendTo("OTHER", getModulePath() + "/CMakeLists.txt", getCMake());
}
-
+
private def String toH() '''
#include <systemc>
#include <memory>
@@ -94,12 +88,11 @@
'''
def String getCMake() '''
- # CMakeList.txt: CMake-Project for "«getLibName()»".
- # Include the source and define project specific logic here.
- #
- cmake_minimum_required (VERSION 3.12)
-
- add_library («getLibName()» OBJECT
+ # CMakeList.txt: CMake project for StimuliModel of "«getProperty(PropertyKeys.PROJECT_NAME)»".
+
+
+ # Add sources of Stimuli
+ target_sources («getProperty(PropertyKeys.PROJECT_NAME)» PRIVATE
«FOR obj : TuSort.byModule(stimulusDispatcher.getCache(typeof(PeriodicStimulus)).values)»
"${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
«ENDFOR»
@@ -113,9 +106,10 @@
"${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
«ENDFOR»
- "${PROJECT_SOURCE_DIR}/«getModuleName()».cpp"
-
- )
- target_link_libraries(«getLibName()» app4mc.sim_lib effolkronium_random easyloggingpp)
+ "${PROJECT_SOURCE_DIR}/«getModuleName()».cpp")
'''
+
+ def getCache(){
+ return this._createCache_transform
+ }
}
diff --git a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/SWModelTransformer.xtend b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/SWModelTransformer.xtend
index e27f385..7013dd8 100644
--- a/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/SWModelTransformer.xtend
+++ b/simulation_generator/app4mc.sim/plugins/org.eclipse.app4mc.amlt2systemc.m2t/src/org/eclipse/app4mc/amlt2systemc/m2t/transformers/sw/SWModelTransformer.xtend
@@ -23,6 +23,7 @@
import org.eclipse.app4mc.amlt2systemc.m2t.transformers.TranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
import org.eclipse.app4mc.amlt2systemc.m2t.utils.TuSort
+import org.eclipse.app4mc.amlt2systemc.m2t.module.PropertyKeys
@Singleton
class SWModelTransformer extends BaseTransformer {
@@ -47,18 +48,17 @@
return "init_swModel()"
}
- private def getLibName() {
- return "swModel_lib"
- }
-
def create new TranslationUnit(
getModuleName(),
getFunctionDef()
- ) transform(SWModel swModel) {
+ ) transform(SWModel[] swModels) {
+
+ swModels.forEach[swModel | {
// start transformation @ task level,
// Note: generate referenced object (e.g. runnables) when referenced (eg. in a runnable call within the call graph)
- swModel.tasks.forEach[taskTransformer.transform(it)]
-
+ swModel.tasks.forEach[taskTransformer.transform(it)]
+ }]
+
outputBuffer.appendTo("INC", it.module, toH())
outputBuffer.appendTo("SRC", it.module, toCpp())
outputBuffer.appendTo("OTHER", getModulePath() + "/CMakeLists.txt", getCMake(it.module));
@@ -84,13 +84,11 @@
'''
def String getCMake(String thisModule) '''
- # CMakeList.txt: CMake project for "«getLibName()»".
- # Include the source and define project specific logic here.
- #
- cmake_minimum_required (VERSION 3.12)
-
- # Add a source to the project executable
- add_library («getLibName()» OBJECT
+ # CMakeList.txt: CMake project for SoftwareModel of "«getProperty(PropertyKeys.PROJECT_NAME)»".
+
+
+ # Add sources of SoftwareModel
+ target_sources («getProperty(PropertyKeys.PROJECT_NAME)» PRIVATE
«FOR obj : TuSort.byModule(modeTransformer.cache.values)»
"${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
«ENDFOR»
@@ -115,8 +113,11 @@
"${PROJECT_SOURCE_DIR}/«(obj as TranslationUnit).module».cpp"
«ENDFOR»
- "${PROJECT_SOURCE_DIR}/«thisModule».cpp" )
- target_link_libraries(«getLibName()» app4mc.sim_lib effolkronium_random easyloggingpp)
+ "${PROJECT_SOURCE_DIR}/«thisModule».cpp")
'''
+
+ def getCache(){
+ return this._createCache_transform
+ }
}
diff --git a/simulation_generator/app4mc.sim/releng/org.eclipse.app4mc.amlt2systemc.product/Amlt2SystemC.product b/simulation_generator/app4mc.sim/releng/org.eclipse.app4mc.amlt2systemc.product/Amlt2SystemC.product
index dd76b81..d51f512 100644
--- a/simulation_generator/app4mc.sim/releng/org.eclipse.app4mc.amlt2systemc.product/Amlt2SystemC.product
+++ b/simulation_generator/app4mc.sim/releng/org.eclipse.app4mc.amlt2systemc.product/Amlt2SystemC.product
@@ -7,9 +7,9 @@
</configIni>
<launcherArgs>
- <programArgs>--properties ${workspace_loc:org.eclipse.app4mc.amlt2systemc.product}/input/democarWithFixedPriorityScheduler/democarWithFixedPriorityScheduler.properties --workingDirectory ${workspace_loc:org.eclipse.app4mc.amlt2systemc.product}
+ <programArgs>--properties ${workspace_loc:org.eclipse.app4mc.amlt2systemc.product}/input/democarWithFixedPriorityScheduler/democarWithFixedPriorityScheduler.properties --workingDirectory ${workspace_loc:org.eclipse.app4mc.amlt2systemc.product} -console
</programArgs>
- <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dlog4j.configuration=headless_log4j.xml -Dorg.eclipse.emf.ecore.EPackage.Registry.INSTANCE=org.eclipse.emf.ecore.impl.EPackageRegistryImpl
+ <vmArgs>-Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dorg.eclipse.emf.ecore.EPackage.Registry.INSTANCE=org.eclipse.emf.ecore.impl.EPackageRegistryImpl
</vmArgs>
<vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
</vmArgsMac>
@@ -38,12 +38,13 @@
<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.eclipse.app4mc.amalthea.model"/>
<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.app4mc.transformation.starter"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog.console"/>
+ <plugin id="org.eclipse.app4mc.util.sessionlog.file"/>
<plugin id="org.eclipse.emf.common"/>
<plugin id="org.eclipse.emf.ecore"/>
<plugin id="org.eclipse.emf.ecore.xcore.lib"/>
@@ -57,14 +58,14 @@
<plugin id="org.eclipse.osgi.util"/>
<plugin id="org.eclipse.xtext.xbase.lib"/>
<plugin id="org.slf4j.api"/>
- <plugin id="org.slf4j.impl.log4j12" fragment="true"/>
</plugins>
<configurations>
<plugin id="org.apache.felix.scr" autoStart="true" startLevel="2" />
+ <plugin id="org.eclipse.app4mc.util.sessionlog.console" autoStart="true" startLevel="3" />
+ <plugin id="org.eclipse.app4mc.util.sessionlog.file" autoStart="true" startLevel="3" />
<plugin id="org.eclipse.equinox.cm" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
- <property name="log4j.configuration" value="headless_log4j.xml" />
</configurations>
<preferencesInfo>
diff --git a/simulation_generator/app4mc.sim/releng/org.eclipse.app4mc.amlt2systemc.product/input/waters/WATERS-2017_FMTV-Model.amxmi b/simulation_generator/app4mc.sim/releng/org.eclipse.app4mc.amlt2systemc.product/input/waters/WATERS-2017_FMTV-Model.amxmi
new file mode 100644
index 0000000..b8bc4e7
--- /dev/null
+++ b/simulation_generator/app4mc.sim/releng/org.eclipse.app4mc.amlt2systemc.product/input/waters/WATERS-2017_FMTV-Model.amxmi
@@ -0,0 +1,174674 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<am:Amalthea xmlns:am="http://app4mc.eclipse.org/amalthea/1.0.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmi:version="2.0">
+ <customProperties key="origin">
+ <value xsi:type="am:StringObject" value="https://waters2017.inria.fr/challenge/" />
+ </customProperties>
+ <swModel>
+ <tasks xmi:id="Angle_Sync?type=Task" name="Angle_Sync" stimuli="periodic_6660us?type=PeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="14" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_Angle_Sync" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_4?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_5?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_6?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_7?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_8?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_9?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_10?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_11?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_12?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_13?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_14?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_15?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_16?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_17?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_18?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_19?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_20?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_21?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_22?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_23?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_24?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_25?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_26?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_27?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_28?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_29?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_30?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_31?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_32?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_33?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_34?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_35?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_36?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_37?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_38?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_39?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_40?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_41?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_42?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_43?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_44?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_45?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_46?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_47?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_48?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_49?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_50?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_51?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_52?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_53?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_54?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_55?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_56?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_57?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_58?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_59?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_60?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_61?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_62?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_63?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_64?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_65?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_66?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_67?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_68?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_69?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_70?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_71?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_72?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_73?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_74?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_75?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_76?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_77?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_78?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_79?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_80?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_81?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_82?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_83?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_84?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_85?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_86?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_87?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_88?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_89?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_90?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_91?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_92?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_93?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_94?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_95?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_96?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_97?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_98?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_99?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_100?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_101?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_102?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_103?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_104?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_105?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_106?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_107?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_108?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_109?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_110?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_111?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_112?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_113?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_114?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_115?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_116?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_117?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_118?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_119?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_120?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_121?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_122?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_123?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_124?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_125?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_126?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_127?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_128?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_129?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_130?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_131?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_132?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_133?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_134?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_135?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_136?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_137?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_138?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_139?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_140?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_141?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_142?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_143?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_144?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_145?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_6660us_146?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="ISR_1?type=Task" name="ISR_1" stimuli="sporadic_9500us_10500us_ISR_1?type=RelativePeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="32" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_ISR_1" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_9500us_10500us_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_9500us_10500us_4?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_9500us_10500us_5?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_9500us_10500us_7?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="ISR_10?type=Task" name="ISR_10" stimuli="sporadic_700us_800us_ISR_10?type=RelativePeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="40" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_ISR_10" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_700us_800us_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_700us_800us_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_700us_800us_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_700us_800us_3?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="ISR_11?type=Task" name="ISR_11" stimuli="sporadic_5000us_5100us_ISR_11?type=RelativePeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="34" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_ISR_11" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_5000us_5100us_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_5000us_5100us_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_5000us_5100us_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_5000us_5100us_3?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="ISR_2?type=Task" name="ISR_2" stimuli="sporadic_9500us_10500us_ISR_2?type=RelativePeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="31" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_ISR_2" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_9500us_10500us_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_9500us_10500us_6?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="ISR_3?type=Task" name="ISR_3" stimuli="sporadic_9500us_10500us_ISR_3?type=RelativePeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="30" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_ISR_3" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_9500us_10500us_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_9500us_10500us_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_9500us_10500us_8?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="ISR_4?type=Task" name="ISR_4" stimuli="sporadic_1500us_1700us_ISR_4?type=RelativePeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="37" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_ISR_4" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1500us_1700us_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1500us_1700us_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1500us_1700us_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1500us_1700us_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1500us_1700us_4?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1500us_1700us_5?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1500us_1700us_6?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1500us_1700us_7?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="ISR_5?type=Task" name="ISR_5" stimuli="sporadic_900us_1000us_ISR_5?type=RelativePeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="39" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_ISR_5" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_900us_1000us_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_900us_1000us_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_900us_1000us_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_900us_1000us_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_900us_1000us_4?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="ISR_6?type=Task" name="ISR_6" stimuli="sporadic_1100us_1200us_ISR_6?type=RelativePeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="38" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_ISR_6" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1100us_1200us_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1100us_1200us_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1100us_1200us_2?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="ISR_7?type=Task" name="ISR_7" stimuli="sporadic_4900us_5050us_ISR_7?type=RelativePeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="35" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_ISR_7" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_4900us_5050us_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_4900us_5050us_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_4900us_5050us_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_4900us_5050us_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_4900us_5050us_4?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="ISR_8?type=Task" name="ISR_8" stimuli="sporadic_1700us_1800us_ISR_8?type=RelativePeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="36" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_ISR_8" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1700us_1800us_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1700us_1800us_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1700us_1800us_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1700us_1800us_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1700us_1800us_4?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1700us_1800us_5?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_1700us_1800us_6?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="ISR_9?type=Task" name="ISR_9" stimuli="sporadic_6000us_6100us_ISR_9?type=RelativePeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="33" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_ISR_9" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_6000us_6100us_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_sporadic_6000us_6100us_1?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="Task_1000ms?type=Task" name="Task_1000ms" stimuli="periodic_1000ms?type=PeriodicStimulus" preemption="cooperative" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="5" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_Task_1000ms" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_4?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_5?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_6?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_7?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_8?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_9?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_10?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_11?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_12?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_13?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_14?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_15?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_16?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_17?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_18?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_19?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_20?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_21?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_22?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_23?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_24?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_25?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_26?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_27?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_28?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_29?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_30?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_31?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_32?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_33?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_34?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_35?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_36?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_37?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_38?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_39?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_40?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_41?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_42?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1000ms_43?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="Task_100ms?type=Task" name="Task_100ms" stimuli="periodic_100ms?type=PeriodicStimulus" preemption="cooperative" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="7" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_Task_100ms" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_4?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_5?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_6?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_7?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_8?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_9?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_10?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_11?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_12?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_13?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_14?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_15?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_16?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_17?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_18?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_19?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_20?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_21?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_22?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_23?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_24?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_25?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_26?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_27?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_28?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_29?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_30?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_31?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_32?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_33?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_34?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_35?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_36?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_37?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_38?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_39?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_40?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_41?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_42?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_43?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_44?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_45?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_46?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_47?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_48?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_49?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_50?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_51?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_52?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_53?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_54?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_55?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_56?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_57?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_58?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_59?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_60?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_61?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_62?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_63?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_64?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_65?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_66?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_67?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_68?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_69?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_70?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_71?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_72?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_73?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_74?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_75?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_76?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_77?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_78?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_79?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_80?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_81?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_82?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_83?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_84?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_85?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_86?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_87?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_88?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_89?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_90?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_91?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_92?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_93?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_94?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_95?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_96?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_97?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_98?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_99?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_100?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_101?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_102?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_103?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_104?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_105?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_106?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_107?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_108?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_109?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_110?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_111?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_112?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_113?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_114?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_115?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_116?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_117?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_118?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_119?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_120?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_121?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_122?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_123?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_124?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_125?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_126?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_127?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_128?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_129?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_130?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_131?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_132?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_133?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_134?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_135?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_136?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_137?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_138?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_139?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_140?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_141?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_142?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_143?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_144?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_145?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_146?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_147?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_148?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_149?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_150?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_151?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_152?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_153?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_154?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_155?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_156?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_157?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_158?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_159?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_160?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_161?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_162?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_163?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_164?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_165?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_166?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_167?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_168?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_169?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_170?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_171?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_172?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_173?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_174?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_175?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_176?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_177?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_178?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_179?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_180?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_181?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_182?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_183?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_184?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_185?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_186?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_187?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_188?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_189?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_190?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_191?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_192?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_193?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_194?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_195?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_196?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_197?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_198?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_199?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_200?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_201?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_202?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_203?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_204?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_205?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_206?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_207?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_208?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_209?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_210?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_211?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_212?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_213?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_214?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_215?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_216?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_217?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_218?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_219?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_220?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_221?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_222?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_223?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_224?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_225?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_226?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_227?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_228?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_229?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_230?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_231?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_232?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_233?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_234?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_235?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_236?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_237?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_238?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_239?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_240?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_241?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_242?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_243?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_244?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_245?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_100ms_246?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="Task_10ms?type=Task" name="Task_10ms" stimuli="periodic_10ms?type=PeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="11" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_Task_10ms" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_4?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_5?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_6?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_7?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_8?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_9?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_10?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_11?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_12?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_13?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_14?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_15?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_16?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_17?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_18?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_19?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_20?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_21?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_22?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_23?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_24?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_25?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_26?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_27?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_28?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_29?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_30?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_31?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_32?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_33?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_34?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_35?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_36?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_37?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_38?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_39?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_40?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_41?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_42?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_43?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_44?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_45?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_46?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_47?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_48?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_49?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_50?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_51?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_52?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_53?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_54?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_55?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_56?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_57?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_58?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_59?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_60?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_61?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_62?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_63?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_64?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_65?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_66?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_67?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_68?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_69?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_70?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_71?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_72?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_73?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_74?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_75?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_76?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_77?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_78?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_79?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_80?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_81?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_82?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_83?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_84?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_85?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_86?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_87?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_88?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_89?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_90?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_91?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_92?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_93?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_94?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_95?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_96?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_97?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_98?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_99?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_100?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_101?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_102?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_103?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_104?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_105?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_106?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_107?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_108?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_109?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_110?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_111?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_112?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_113?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_114?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_115?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_116?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_117?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_118?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_119?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_120?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_121?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_122?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_123?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_124?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_125?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_126?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_127?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_128?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_129?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_130?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_131?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_132?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_133?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_134?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_135?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_136?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_137?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_138?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_139?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_140?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_141?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_142?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_143?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_144?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_145?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_146?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_147?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_148?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_149?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_150?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_151?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_152?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_153?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_154?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_155?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_156?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_157?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_158?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_159?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_160?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_161?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_162?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_163?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_164?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_165?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_166?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_167?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_168?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_169?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_170?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_171?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_172?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_173?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_174?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_175?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_176?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_177?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_178?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_179?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_180?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_181?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_182?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_183?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_184?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_185?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_186?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_187?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_188?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_189?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_190?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_191?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_192?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_193?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_194?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_195?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_196?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_197?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_198?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_199?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_200?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_201?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_202?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_203?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_204?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_205?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_206?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_207?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_208?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_209?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_210?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_211?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_212?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_213?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_214?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_215?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_216?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_217?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_218?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_219?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_220?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_221?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_222?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_223?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_224?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_225?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_226?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_227?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_228?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_229?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_230?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_231?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_232?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_233?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_234?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_235?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_236?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_237?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_238?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_239?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_240?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_241?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_242?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_243?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_244?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_245?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_246?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_247?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_248?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_249?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_250?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_251?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_252?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_253?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_254?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_255?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_256?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_257?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_258?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_259?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_260?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_261?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_262?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_263?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_264?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_265?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_266?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_267?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_268?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_269?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_270?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_271?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_272?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_273?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_274?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_275?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_276?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_277?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_278?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_279?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_280?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_281?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_282?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_283?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_284?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_285?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_286?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_287?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_288?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_289?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_290?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_291?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_292?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_293?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_294?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_295?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_296?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_297?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_298?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_299?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_300?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_301?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_302?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_10ms_303?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="Task_1ms?type=Task" name="Task_1ms" stimuli="periodic_1ms?type=PeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="15" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_Task_1ms" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_4?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_5?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_6?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_7?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_8?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_9?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_10?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_11?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_12?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_13?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_14?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_15?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_16?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_17?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_18?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_19?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_20?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_21?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_22?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_23?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_24?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_25?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_26?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_27?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_28?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_29?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_30?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_31?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_32?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_33?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_34?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_35?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_36?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_37?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_38?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_39?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_40?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_1ms_41?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="Task_200ms?type=Task" name="Task_200ms" stimuli="periodic_200ms?type=PeriodicStimulus" preemption="cooperative" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="6" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_Task_200ms" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_4?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_5?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_6?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_7?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_8?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_9?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_10?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_11?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_12?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_13?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_200ms_14?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="Task_20ms?type=Task" name="Task_20ms" stimuli="periodic_20ms?type=PeriodicStimulus" preemption="cooperative" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="9" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_Task_20ms" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_4?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_5?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_6?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_7?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_8?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_9?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_10?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_11?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_12?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_13?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_14?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_15?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_16?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_17?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_18?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_19?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_20?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_21?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_22?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_23?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_24?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_25?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_26?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_27?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_28?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_29?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_30?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_31?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_32?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_33?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_34?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_35?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_36?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_37?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_38?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_39?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_40?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_41?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_42?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_43?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_44?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_45?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_46?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_47?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_48?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_49?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_50?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_51?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_52?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_53?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_54?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_55?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_56?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_57?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_58?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_59?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_60?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_61?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_62?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_63?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_64?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_65?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_66?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_67?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_68?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_69?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_70?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_71?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_72?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_73?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_74?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_75?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_76?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_77?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_78?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_79?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_80?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_81?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_82?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_83?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_84?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_85?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_86?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_87?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_88?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_89?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_90?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_91?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_92?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_93?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_94?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_95?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_96?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_97?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_98?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_99?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_100?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_101?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_102?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_103?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_104?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_105?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_106?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_107?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_108?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_109?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_110?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_111?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_112?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_113?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_114?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_115?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_116?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_117?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_118?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_119?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_120?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_121?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_122?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_123?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_124?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_125?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_126?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_127?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_128?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_129?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_130?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_131?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_132?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_133?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_134?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_135?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_136?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_137?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_138?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_139?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_140?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_141?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_142?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_143?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_144?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_145?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_146?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_147?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_148?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_149?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_150?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_151?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_152?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_153?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_154?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_155?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_156?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_157?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_158?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_159?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_160?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_161?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_162?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_163?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_164?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_165?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_166?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_167?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_168?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_169?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_170?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_171?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_172?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_173?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_174?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_175?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_176?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_177?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_178?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_179?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_180?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_181?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_182?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_183?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_184?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_185?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_186?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_187?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_188?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_189?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_190?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_191?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_192?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_193?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_194?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_195?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_196?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_197?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_198?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_199?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_200?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_201?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_202?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_203?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_204?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_205?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_206?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_207?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_208?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_209?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_210?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_211?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_212?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_213?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_214?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_215?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_216?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_217?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_218?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_219?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_220?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_221?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_222?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_223?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_224?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_225?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_226?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_227?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_228?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_229?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_230?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_231?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_232?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_233?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_234?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_235?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_236?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_237?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_238?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_239?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_240?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_241?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_242?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_243?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_244?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_245?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_246?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_247?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_248?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_249?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_250?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_251?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_252?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_253?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_254?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_255?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_256?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_257?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_258?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_259?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_260?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_261?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_262?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_263?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_264?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_265?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_266?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_267?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_268?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_269?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_270?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_271?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_272?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_273?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_274?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_275?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_276?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_277?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_278?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_279?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_280?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_281?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_282?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_283?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_284?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_285?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_286?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_287?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_288?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_289?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_290?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_291?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_292?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_293?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_294?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_295?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_296?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_297?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_298?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_299?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_300?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_301?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_302?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_303?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_304?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_305?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_20ms_306?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="Task_2ms?type=Task" name="Task_2ms" stimuli="periodic_2ms?type=PeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="13" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_Task_2ms" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_4?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_5?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_6?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_7?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_8?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_9?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_10?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_11?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_12?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_13?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_14?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_15?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_16?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_17?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_18?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_19?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_20?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_21?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_22?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_23?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_24?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_25?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_26?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_2ms_27?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="Task_50ms?type=Task" name="Task_50ms" stimuli="periodic_50ms?type=PeriodicStimulus" preemption="cooperative" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="8" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_Task_50ms" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_4?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_5?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_6?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_7?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_8?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_9?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_10?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_11?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_12?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_13?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_14?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_15?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_16?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_17?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_18?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_19?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_20?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_21?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_22?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_23?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_24?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_25?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_26?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_27?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_28?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_29?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_30?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_31?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_32?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_33?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_34?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_35?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_36?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_37?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_38?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_39?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_40?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_41?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_42?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_43?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_44?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_50ms_45?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <tasks xmi:id="Task_5ms?type=Task" name="Task_5ms" stimuli="periodic_5ms?type=PeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="1">
+ <customProperties key="priority">
+ <value xsi:type="am:StringObject" value="12" />
+ </customProperties>
+ <activityGraph>
+ <items xsi:type="am:Group" name="CS_Task_5ms" ordered="true">
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_0?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_1?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_2?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_3?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_4?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_5?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_6?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_7?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_8?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_9?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_10?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_11?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_12?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_13?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_14?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_15?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_16?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_17?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_18?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_19?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_20?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_21?type=Runnable" />
+ <items xsi:type="am:RunnableCall" runnable="Runnable_5ms_22?type=Runnable" />
+ </items>
+ </activityGraph>
+ </tasks>
+ <runnables xmi:id="Runnable_10ms_0?type=Runnable" name="Runnable_10ms_0" activations="periodic_10ms?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_4071?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1867?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2596?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1209?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_699?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3550?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_406?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_6510?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_8680?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="427" upperBound="561" average="442.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1867?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_944?type=Label" access="write" implementation="explicit" />
+ <items xsi:type="am:LabelAccess" data="Label_3281?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4619?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4281?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4901?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_540?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1741?type=Label" access="write" implementation="explicit" />
+ <items xsi:type="am:LabelAccess" data="Label_1349?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3942?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_100ms_0?type=Runnable" name="Runnable_100ms_0" activations="periodic_100ms?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_2614?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1030?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1374?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4735?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3510?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_712?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4983?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4434?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_5282?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_5530?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_5567?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_5749?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_6582?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_7346?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_8974?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="3619" upperBound="6156" average="5290.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_641?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4730?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_9289?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_6660us_0?type=Runnable" name="Runnable_6660us_0" activations="periodic_6660us?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_4322?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4227?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2037?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4805?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_7010?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_7105?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_7971?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="452" upperBound="1782" average="979.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3805?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_700?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_435?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4336?type=Label" access="write" implementation="explicit" />
+ <items xsi:type="am:LabelAccess" data="Label_774?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4936?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_sporadic_700us_800us_0?type=Runnable" name="Runnable_sporadic_700us_800us_0" activations="sporadic_700us_800us?type=SporadicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_5564?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_6354?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_8480?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="902" upperBound="1817" average="1252.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_232?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_20ms_0?type=Runnable" name="Runnable_20ms_0" activations="periodic_20ms?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_4881?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_6829?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="927" upperBound="12478" average="7557.0" pRemainPromille="5.0E-4" />
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_10ms_1?type=Runnable" name="Runnable_10ms_1" activations="periodic_10ms?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_2655?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3605?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4725?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1646?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_893?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1845?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3600?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1690?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_770?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3961?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_7099?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="1739" upperBound="3253" average="2502.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1198?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_948?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4071?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1690?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_161?type=Label" access="write" implementation="explicit" />
+ <items xsi:type="am:LabelAccess" data="Label_1706?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3637?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_10ms_2?type=Runnable" name="Runnable_10ms_2" activations="periodic_10ms?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_448?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1760?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1766?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3139?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_240?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_683?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_414?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_5392?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_6547?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_6624?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_8291?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="143" upperBound="1273" average="670.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3103?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2418?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4747?type=Label" access="write" implementation="explicit" />
+ <items xsi:type="am:LabelAccess" data="Label_3622?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4643?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_2ms_0?type=Runnable" name="Runnable_2ms_0" activations="periodic_2ms?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_6652?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_7485?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_7772?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_8173?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="2491" upperBound="4523" average="3717.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_9153?type=Label" access="write" implementation="explicit" />
+ <items xsi:type="am:LabelAccess" data="Label_9462?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_10ms_3?type=Runnable" name="Runnable_10ms_3" activations="periodic_10ms?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_1098?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1907?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_6644?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_7085?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="12545" upperBound="23334" average="15488.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_87?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1484?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3035?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_100ms_1?type=Runnable" name="Runnable_100ms_1" activations="periodic_100ms?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_4117?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2703?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4092?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1062?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_163?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_263?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_6134?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_7255?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_8605?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_8796?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="347" upperBound="716" average="523.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1062?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4779?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4931?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_57?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1432?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_23?type=Label" access="write" implementation="explicit" />
+ <items xsi:type="am:LabelAccess" data="Label_3563?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3927?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1133?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_20ms_1?type=Runnable" name="Runnable_20ms_1" activations="periodic_20ms?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_2494?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4160?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2096?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_823?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_417?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3000?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3826?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_7591?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_8451?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="15175" upperBound="22953" average="20142.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1838?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4372?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2883?type=Label" access="write" implementation="explicit" />
+ <items xsi:type="am:LabelAccess" data="Label_405?type=Label" access="write" implementation="explicit" />
+ <items xsi:type="am:LabelAccess" data="Label_9305?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_9526?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_10ms_4?type=Runnable" name="Runnable_10ms_4" activations="periodic_10ms?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_2557?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2304?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2792?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_327?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1189?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1036?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1469?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4350?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3557?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2619?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3714?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_258?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3031?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_5463?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_5989?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_7574?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_8461?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_8803?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="1846" upperBound="9278" average="6888.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1565?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_448?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1390?type=Label" access="write" implementation="explicit" />
+ <items xsi:type="am:LabelAccess" data="Label_1189?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4868?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1999?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_9434?type=Label" access="write" implementation="explicit" />
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_6660us_1?type=Runnable" name="Runnable_6660us_1" activations="periodic_6660us?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_3011?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1218?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2135?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3350?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_6323?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="4078" upperBound="7300" average="4613.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_839?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1738?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4227?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1327?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_9095?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_100ms_2?type=Runnable" name="Runnable_100ms_2" activations="periodic_100ms?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_1457?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1835?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4685?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3603?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_5635?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_5777?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_5922?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_6419?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_6514?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="1145" upperBound="8943" average="6370.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3185?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3603?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4983?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1120?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_263?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1282?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2084?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2230?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_9733?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_100ms_3?type=Runnable" name="Runnable_100ms_3" activations="periodic_100ms?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_3163?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4710?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1407?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3747?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2751?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_173?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1437?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4729?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_427?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_5427?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="12018" upperBound="25260" average="20602.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_830?type=Label" access="write" implementation="explicit" />
+ <items xsi:type="am:LabelAccess" data="Label_3510?type=Label" access="write" implementation="explicit" />
+ <items xsi:type="am:LabelAccess" data="Label_173?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1981?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_9235?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_9360?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_100ms_4?type=Runnable" name="Runnable_100ms_4" activations="periodic_100ms?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_2913?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1488?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4142?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2817?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2250?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_7974?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_8507?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="4.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_8741?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="1440" upperBound="11668" average="7040.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1488?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4654?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4142?type=Label" access="write" implementation="explicit" />
+ <items xsi:type="am:LabelAccess" data="Label_899?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3991?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_6660us_2?type=Runnable" name="Runnable_6660us_2" activations="periodic_6660us?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_3957?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4810?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3556?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_912?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_7496?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="412" upperBound="580" average="529.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_4810?type=Label" access="write" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_20ms_2?type=Runnable" name="Runnable_20ms_2" activations="periodic_20ms?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_2377?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3133?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_973?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_500?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_1336?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_5765?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_6818?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_7102?type=Label" access="read" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="3.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:Ticks">
+ <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="4685" upperBound="8086" average="5179.0" pRemainPromille="5.0E-4" />
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3000?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_9605?type=Label" access="write" implementation="implicit">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="IMPLICIT" />
+ </customProperties>
+ </items>
+ </activityGraph>
+ </runnables>
+ <runnables xmi:id="Runnable_6660us_3?type=Runnable" name="Runnable_6660us_3" activations="periodic_6660us?type=PeriodicActivation" callback="false" service="false">
+ <activityGraph>
+ <items xsi:type="am:LabelAccess" data="Label_1398?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="5.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_2450?type=Label" access="read" implementation="explicit">
+ <statistic>
+ <value xsi:type="am:SingleValueStatistic" value="2.0" />
+ </statistic>
+ </items>
+ <items xsi:type="am:LabelAccess" data="Label_3341?type=Label" access="read" implementation="timed">
+ <customProperties key="COMMUNINCATION_TYPE">
+ <value xsi:type="am:StringObject" value="TIMED" />
+ </customProperties>