Converted SLG Commons transformers to Java - step 1
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
new file mode 100644
index 0000000..ee07a46
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/ActivityGraphItemTransformer.java
@@ -0,0 +1,96 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 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.commons.m2t.transformers.sw;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
+import org.eclipse.app4mc.amalthea.model.ChannelReceive;
+import org.eclipse.app4mc.amalthea.model.ChannelSend;
+import org.eclipse.app4mc.amalthea.model.LabelAccess;
+import org.eclipse.app4mc.amalthea.model.RunnableCall;
+import org.eclipse.app4mc.amalthea.model.Ticks;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TicksTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseTransformer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+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);
+
+ @Inject private RunnableTransformer runnableTransformer;
+ @Inject private LabelAccessTransformer labelAccessTransformer;
+ @Inject private TicksTransformer ticksTransformer;
+
+ protected TranslationUnit _transform(final ActivityGraphItem activityGraphItem) {
+ ActivityGraphItemTransformer.LOG.error(UNSUPPORTED_ELEMENT, activityGraphItem.getClass().getName());
+ return new TranslationUnit("undefined", "", "", "");
+ }
+
+ protected TranslationUnit _transform(final RunnableCall runnableCall) {
+ return this.runnableTransformer.transform(runnableCall.getRunnable());
+ }
+
+ protected TranslationUnit _transform(final Ticks ticks) {
+ return this.ticksTransformer.transform(ticks);
+ }
+
+ public List<TicksTranslationUnit> transformAllItems(final Ticks ticks) {
+ return this.ticksTransformer.transformAllItems(ticks);
+ }
+
+ protected TranslationUnit _transform(final LabelAccess labelAccess) {
+ return this.labelAccessTransformer.transform(labelAccess);
+ }
+
+ protected TranslationUnit _transform(final ChannelReceive channelReceive) {
+ ActivityGraphItemTransformer.LOG.error(UNSUPPORTED_ELEMENT, channelReceive.getClass().getName());
+ return new TranslationUnit("undefined", "", "", "");
+ }
+
+ protected TranslationUnit _transform(final ChannelSend channelSend) {
+ ActivityGraphItemTransformer.LOG.error(UNSUPPORTED_ELEMENT, channelSend.getClass().getName());
+ return new TranslationUnit("undefined", "", "", "");
+ }
+
+ public TranslationUnit transform(final ActivityGraphItem channelReceive) {
+ if (channelReceive instanceof ChannelReceive) {
+ return _transform((ChannelReceive) channelReceive);
+ } else if (channelReceive instanceof ChannelSend) {
+ return _transform((ChannelSend) channelReceive);
+ } else if (channelReceive instanceof LabelAccess) {
+ return _transform((LabelAccess) channelReceive);
+ } else if (channelReceive instanceof Ticks) {
+ return _transform((Ticks) channelReceive);
+ } else if (channelReceive instanceof RunnableCall) {
+ return _transform((RunnableCall) channelReceive);
+ } else if (channelReceive != null) {
+ return _transform(channelReceive);
+ } else {
+ throw new IllegalArgumentException(
+ "Unhandled parameter types: " + Arrays.<Object>asList(channelReceive).toString());
+ }
+ }
+
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/ActivityGraphItemTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/ActivityGraphItemTransformer.xtend
deleted file mode 100644
index 63d372b..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/ActivityGraphItemTransformer.xtend
+++ /dev/null
@@ -1,76 +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.transformers.sw
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import java.util.List
-import org.eclipse.app4mc.amalthea.model.ActivityGraphItem
-import org.eclipse.app4mc.amalthea.model.ChannelReceive
-import org.eclipse.app4mc.amalthea.model.ChannelSend
-import org.eclipse.app4mc.amalthea.model.LabelAccess
-import org.eclipse.app4mc.amalthea.model.RunnableCall
-import org.eclipse.app4mc.amalthea.model.Ticks
-import org.eclipse.app4mc.slg.commons.m2t.generators.TicksTranslationUnit
-import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
-import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseTransformer
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
-
-@Singleton
-class ActivityGraphItemTransformer extends SLGBaseTransformer {
-
- static final Logger LOG = LoggerFactory.getLogger(typeof(ActivityGraphItemTransformer))
-
- @Inject RunnableTransformer runnableTransformer
- @Inject LabelAccessTransformer labelAccessTransformer
- @Inject TicksTransformer ticksTransformer
-
- dispatch def TranslationUnit transform(ActivityGraphItem activityGraphItem) {
-
- LOG.error("Unsupported element inside ActivityGraph : " + activityGraphItem.class.name)
- return new TranslationUnit("undefined", "", "", "")
- }
-
- dispatch def TranslationUnit transform(RunnableCall runnableCall) {
- return runnableTransformer.transform(runnableCall.runnable)
- }
-
- dispatch def TranslationUnit transform(Ticks ticks) {
- return ticksTransformer.transform(ticks)
- }
-
- def List<TicksTranslationUnit> transformAllItems(Ticks ticks) {
- return ticksTransformer.transformAllItems(ticks)
- }
-
- dispatch def TranslationUnit transform(LabelAccess labelAccess) {
- return labelAccessTransformer.transform(labelAccess)
- }
-
- dispatch def TranslationUnit transform(ChannelReceive channelReceive) {
-
- LOG.error("Unsupported element inside ActivityGraph : " + channelReceive.class.name)
- return new TranslationUnit("undefined", "", "", "")
- }
-
- dispatch def TranslationUnit transform(ChannelSend channelSend) {
-
- LOG.error("Unsupported element inside ActivityGraph : " + channelSend.class.name)
- return new TranslationUnit("undefined", "", "", "")
- }
-
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/GroupHeaderTransformer.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/GroupHeaderTransformer.java
new file mode 100644
index 0000000..7219c1a
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/GroupHeaderTransformer.java
@@ -0,0 +1,100 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 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.commons.m2t.transformers.sw;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.function.Consumer;
+
+import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
+import org.eclipse.app4mc.amalthea.model.Component;
+import org.eclipse.app4mc.amalthea.model.Group;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class GroupHeaderTransformer extends ActivityGraphItemTransformer {
+
+ @Inject private OutputBuffer outputBuffer;
+ @Inject private ActivityGraphItemTransformer psCallGraphItemTransformer;
+
+ public static String getModuleName(final Group group) {
+ return "groups";
+ }
+
+ public static String getFunctionDef(final Group group) {
+ return "group_" + group.getName() + "()";
+ }
+
+ public TranslationUnit transform(final Group group, final Component component) {
+ final ArrayList<?> key = CollectionLiterals.newArrayList(group, component);
+ final TranslationUnit _result;
+ synchronized (cache) {
+ if (cache.containsKey(key)) {
+ return cache.get(key);
+ }
+ TranslationUnit _translationUnit = new TranslationUnit();
+ _result = _translationUnit;
+ cache.put(key, _result);
+ }
+ _init_transform(_result, group, component);
+ return _result;
+ }
+
+ private final HashMap<ArrayList<?>, TranslationUnit> cache = CollectionLiterals.newHashMap();
+
+ private void _init_transform(final TranslationUnit it, final Group group, final Component component) {
+ it.setPath(GroupHeaderTransformer.getModuleName(group));
+ it.setCall(GroupHeaderTransformer.getFunctionDef(group));
+
+ final LinkedHashSet<String> groupItemIncludes = new LinkedHashSet<>();
+ final LinkedHashSet<String> groupItemCalls = new LinkedHashSet<>();
+
+ EList<ActivityGraphItem> _items = null;
+ if (group != null) {
+ _items = group.getItems();
+ }
+ final Consumer<ActivityGraphItem> _function = (ActivityGraphItem item) -> {
+ final TranslationUnit tmp = this.psCallGraphItemTransformer.transform(item);
+ if (((!StringExtensions.isNullOrEmpty(tmp.getExtendedIncPath()))
+ && (!it.getExtendedIncPath().equals(tmp.getExtendedIncPath())))) {
+ groupItemIncludes.add(tmp.getExtendedIncPath());
+ }
+ if (!StringExtensions.isNullOrEmpty(tmp.getCall())) {
+ groupItemCalls.add(tmp.getCall());
+ }
+ };
+ _items.forEach(_function);
+
+ final int index = it.getExtendedIncPath().lastIndexOf(".");
+ final String trimmedIncPath = it.getExtendedIncPath().substring(0, index);
+
+ outputBuffer.appendTo("INC", trimmedIncPath, "\n//Group " + group.getName() + "----\n");
+
+ groupItemIncludes.forEach(include ->
+ outputBuffer.appendTo("INC", trimmedIncPath, "#include \"" + include + ".h\"\n"));
+
+ outputBuffer.appendTo("INC", trimmedIncPath, "void " + it.getCall() + ";\n");
+ }
+
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/GroupHeaderTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/GroupHeaderTransformer.xtend
deleted file mode 100644
index 718775a..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/GroupHeaderTransformer.xtend
+++ /dev/null
@@ -1,67 +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.transformers.sw
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import java.util.LinkedHashSet
-import org.eclipse.app4mc.amalthea.model.Component
-import org.eclipse.app4mc.amalthea.model.Group
-import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-
-@Singleton
-class GroupHeaderTransformer extends ActivityGraphItemTransformer {
-
- @Inject OutputBuffer outputBuffer
- @Inject ActivityGraphItemTransformer psCallGraphItemTransformer
-
- static def getModuleName(Group group) {
- return "groups"
- }
-
- static def getFunctionDef(Group group) {
- return "group_" + group.name + "()"
- }
-
- def create new TranslationUnit()
- transform(Group group, Component component) {
-
- it.path = GroupHeaderTransformer.getModuleName(group)
- it.call = GroupHeaderTransformer.getFunctionDef(group)
-
- val groupItemIncludes = new LinkedHashSet<String>
- val groupItemCalls = new LinkedHashSet<String>
- group?.items.forEach [ item |
- val tmp = psCallGraphItemTransformer.transform(item)
- if (!tmp.extendedIncPath.isNullOrEmpty && !(it.extendedIncPath.equals(tmp.extendedIncPath)))
- groupItemIncludes.add(tmp.extendedIncPath)
- if (!tmp.call.isNullOrEmpty)
- groupItemCalls.add(tmp.call)
- ]
-
- // remove file extension
- val index = it.extendedIncPath.lastIndexOf('.')
- val trimmedIncPath = it.extendedIncPath.substring(0, index)
-
- outputBuffer.appendTo("INC", trimmedIncPath, "\n//Group " + group.name + "----\n")
- groupItemIncludes.forEach [ include |
- outputBuffer.appendTo("INC", trimmedIncPath, "#include \"" + include + ".h\"\n")
- ]
- outputBuffer.appendTo("INC", trimmedIncPath, "void " + it.call + ";\n")
- }
-
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/GroupSourceTransformer.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/GroupSourceTransformer.java
new file mode 100644
index 0000000..2fc792b
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/GroupSourceTransformer.java
@@ -0,0 +1,92 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 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.commons.m2t.transformers.sw;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+
+import org.eclipse.app4mc.amalthea.model.ActivityGraphItem;
+import org.eclipse.app4mc.amalthea.model.Component;
+import org.eclipse.app4mc.amalthea.model.Group;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class GroupSourceTransformer extends ActivityGraphItemTransformer {
+
+ @Inject private OutputBuffer outputBuffer;
+ @Inject private ActivityGraphItemTransformer psCallGraphItemTransformer;
+
+ public TranslationUnit transform(final Group group, final Component component) {
+ final ArrayList<?> key = CollectionLiterals.newArrayList(group, component);
+ final TranslationUnit _result;
+ synchronized (cache) {
+ if (cache.containsKey(key)) {
+ return cache.get(key);
+ }
+ TranslationUnit tu = new TranslationUnit();
+ _result = tu;
+ cache.put(key, _result);
+ }
+ _init_transform(_result, group, component);
+ return _result;
+ }
+
+ private final HashMap<ArrayList<?>, TranslationUnit> cache = CollectionLiterals.newHashMap();
+
+ private void _init_transform(final TranslationUnit it, final Group group, final Component component) {
+ it.setPath(GroupHeaderTransformer.getModuleName(group));
+ it.setCall(GroupHeaderTransformer.getFunctionDef(group));
+
+ final LinkedList<String> groupItemIncludes = new LinkedList<>();
+ final LinkedList<String> groupItemCalls = new LinkedList<>();
+
+
+ if (group != null) {
+ for (ActivityGraphItem item : group.getItems()) {
+ final TranslationUnit tmp = psCallGraphItemTransformer.transform(item);
+ if (!StringExtensions.isNullOrEmpty(tmp.getPath())) {
+ groupItemIncludes.add(tmp.getPath());
+ }
+ if (!StringExtensions.isNullOrEmpty(tmp.getCall())) {
+ groupItemCalls.add(tmp.getCall());
+ }
+ }
+ }
+
+ final int index = it.getExtendedSrcPath().lastIndexOf(".");
+ final String trimmedSrcPath = it.getExtendedSrcPath().substring(0, index);
+
+ outputBuffer.appendTo("SRC", trimmedSrcPath, (("\n//Group " + group.getName()) + "----\n"));
+
+ groupItemIncludes.forEach(include ->
+ outputBuffer.appendTo("SRC", trimmedSrcPath, "#include \"" + include + ".h\"\n"));
+
+ outputBuffer.appendTo("SRC", trimmedSrcPath, "void " + it.getCall() + "{\n");
+
+ groupItemCalls.forEach(call ->
+ outputBuffer.appendTo("SRC", trimmedSrcPath, call + ";\n"));
+
+ outputBuffer.appendTo("SRC", trimmedSrcPath, "}");
+ }
+
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/GroupSourceTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/GroupSourceTransformer.xtend
deleted file mode 100644
index c32a9d0..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/GroupSourceTransformer.xtend
+++ /dev/null
@@ -1,63 +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.transformers.sw
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import java.util.LinkedList
-import org.eclipse.app4mc.amalthea.model.Component
-import org.eclipse.app4mc.amalthea.model.Group
-import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-
-@Singleton
-class GroupSourceTransformer extends ActivityGraphItemTransformer {
-
- @Inject OutputBuffer outputBuffer
- @Inject ActivityGraphItemTransformer psCallGraphItemTransformer
-
- def create new TranslationUnit()
- transform(Group group, Component component) {
-
- it.path = GroupHeaderTransformer.getModuleName(group)
- it.call = GroupHeaderTransformer.getFunctionDef(group)
-
- val groupItemIncludes = new LinkedList<String>
- val groupItemCalls = new LinkedList<String>
- group?.items.forEach [ item |
- val tmp = psCallGraphItemTransformer.transform(item)
- if (!tmp.path.isNullOrEmpty)
- groupItemIncludes.add(tmp.path)
- if (!tmp.call.isNullOrEmpty)
- groupItemCalls.add(tmp.call)
- ]
-
- // remove file extension
- val index = it.extendedSrcPath.lastIndexOf('.')
- val trimmedSrcPath = it.extendedSrcPath.substring(0, index)
-
- outputBuffer.appendTo("SRC", trimmedSrcPath, "\n//Group " + group.name + "----\n")
- groupItemIncludes.forEach [ include |
- outputBuffer.appendTo("SRC", trimmedSrcPath, "#include \"" + include + ".h\"\n")
- ]
- // write group body
- outputBuffer.appendTo("SRC", trimmedSrcPath, "void " + it.call + "{\n")
- groupItemCalls.forEach [ call |
- outputBuffer.appendTo("SRC", trimmedSrcPath, call + ";\n")
- ]
- outputBuffer.appendTo("SRC", trimmedSrcPath, "}")
- }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/InstrumentationTransformer.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/InstrumentationTransformer.java
index 002a6af..3d4b628 100644
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/InstrumentationTransformer.java
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/InstrumentationTransformer.java
@@ -1,5 +1,6 @@
/**
- * Copyright (c) 2020-2021 Robert Bosch GmbH.
+ ********************************************************************************
+ * Copyright (c) 2021 Robert Bosch GmbH.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
@@ -9,6 +10,7 @@
*
* Contributors:
* Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
*/
package org.eclipse.app4mc.slg.commons.m2t.transformers.sw;
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/LabelAccessTransformer.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/LabelAccessTransformer.java
new file mode 100644
index 0000000..293c2e5
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/LabelAccessTransformer.java
@@ -0,0 +1,37 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 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.commons.m2t.transformers.sw;
+
+import org.eclipse.app4mc.amalthea.model.LabelAccess;
+import org.eclipse.app4mc.slg.commons.m2t.generators.LabelAccessTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.LabelTranslationUnit;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class LabelAccessTransformer {
+
+ @Inject private OutputBuffer outputBuffer;
+ @Inject private LabelTransformer labelTransformer;
+
+ public LabelAccessTranslationUnit transform(final LabelAccess labelAccess) {
+ final LabelTranslationUnit tuLabel = this.labelTransformer.transform(labelAccess.getData());
+ return new LabelAccessTranslationUnit(this.outputBuffer, tuLabel, labelAccess);
+ }
+
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/LabelAccessTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/LabelAccessTransformer.xtend
deleted file mode 100644
index 87737f1..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/LabelAccessTransformer.xtend
+++ /dev/null
@@ -1,34 +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.transformers.sw
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import org.eclipse.app4mc.amalthea.model.LabelAccess
-import org.eclipse.app4mc.slg.commons.m2t.generators.LabelAccessTranslationUnit
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-
-@Singleton
-class LabelAccessTransformer {
-
- @Inject OutputBuffer outputBuffer
- @Inject LabelTransformer labelTransformer
-
- def LabelAccessTranslationUnit transform(LabelAccess labelAccess) {
- val tuLabel = labelTransformer.transform(labelAccess.data)
- return new LabelAccessTranslationUnit(outputBuffer, tuLabel, labelAccess)
- }
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/LabelTransformer.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/LabelTransformer.java
new file mode 100644
index 0000000..995fef5
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/LabelTransformer.java
@@ -0,0 +1,66 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 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.commons.m2t.transformers.sw;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.eclipse.app4mc.amalthea.model.Label;
+import org.eclipse.app4mc.slg.commons.m2t.generators.LabelGenerator;
+import org.eclipse.app4mc.slg.commons.m2t.generators.LabelTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class LabelTransformer extends SLGBaseTransformer {
+
+ @Inject private OutputBuffer outputBuffer;
+
+ public LabelTranslationUnit transform(final Label label) {
+ final ArrayList<?> key = CollectionLiterals.newArrayList(label);
+ final LabelTranslationUnit _result;
+ synchronized (cache) {
+ if (cache.containsKey(key)) {
+ return cache.get(key);
+ }
+ LabelTranslationUnit tu = new LabelTranslationUnit(this.outputBuffer, label);
+ _result = tu;
+ cache.put(key, _result);
+ }
+ _init_transform(_result, label);
+ return _result;
+ }
+
+ private final HashMap<ArrayList<?>, LabelTranslationUnit> cache = CollectionLiterals.newHashMap();
+
+ private void _init_transform(final LabelTranslationUnit it, final Label label) {
+ }
+
+ @Override
+ public HashMap<ArrayList<?>, LabelTranslationUnit> getCache() {
+ return this.cache;
+ }
+
+ public boolean createCMake() {
+ return this.outputBuffer.appendTo("OTHER", LabelTranslationUnit.getMakeFilePathStatic(),
+ LabelGenerator.toCMake(this.getSrcFiles()));
+ }
+
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/LabelTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/LabelTransformer.xtend
deleted file mode 100644
index d130ead..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/LabelTransformer.xtend
+++ /dev/null
@@ -1,43 +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.transformers.sw
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import java.util.ArrayList
-import java.util.HashMap
-import org.eclipse.app4mc.amalthea.model.Label
-import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseTransformer
-import org.eclipse.app4mc.slg.commons.m2t.generators.LabelTranslationUnit
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-import org.eclipse.app4mc.slg.commons.m2t.generators.LabelGenerator
-
-@Singleton
-class LabelTransformer extends SLGBaseTransformer {
-
- @Inject OutputBuffer outputBuffer
-
- def create new LabelTranslationUnit(outputBuffer, label)
- transform(Label label) {
- }
-
- override HashMap<ArrayList<?>, LabelTranslationUnit> getCache() { return this._createCache_transform }
-
- def createCMake() {
- outputBuffer.appendTo("OTHER", LabelTranslationUnit.makeFilePathStatic, LabelGenerator.toCMake(getSrcFiles()))
- }
-
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/RunnableTransformer.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/RunnableTransformer.java
new file mode 100644
index 0000000..1633866
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/RunnableTransformer.java
@@ -0,0 +1,71 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 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.commons.m2t.transformers.sw;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.app4mc.slg.commons.m2t.generators.RunnableGenerator;
+import org.eclipse.app4mc.slg.commons.m2t.generators.RunnableTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class RunnableTransformer extends SLGBaseTransformer {
+
+ @Inject private OutputBuffer outputBuffer;
+ @Inject private ActivityGraphItemTransformer psCallGraphItemTransformer;
+
+ public RunnableTranslationUnit transform(final org.eclipse.app4mc.amalthea.model.Runnable runnable) {
+ final ArrayList<?> key = CollectionLiterals.newArrayList(runnable);
+ final RunnableTranslationUnit _result;
+ synchronized (cache) {
+ if (cache.containsKey(key)) {
+ return cache.get(key);
+ }
+ RunnableTranslationUnit tu = new RunnableTranslationUnit(this.outputBuffer,
+ this.psCallGraphItemTransformer, runnable);
+ _result = tu;
+ cache.put(key, _result);
+ }
+ _init_transform(_result, runnable);
+ return _result;
+ }
+
+ private final HashMap<ArrayList<?>, RunnableTranslationUnit> cache = CollectionLiterals
+ .newHashMap();
+
+ private void _init_transform(final RunnableTranslationUnit it,
+ final org.eclipse.app4mc.amalthea.model.Runnable runnable) {
+ }
+
+ @Override
+ public Map<ArrayList<?>, ? extends TranslationUnit> getCache() {
+ return this.cache;
+ }
+
+ public boolean createCMake() {
+ return this.outputBuffer.appendTo("OTHER", RunnableTranslationUnit.getMakeFilePathStatic(),
+ RunnableGenerator.toCMake(this.getSrcFiles()));
+ }
+
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/RunnableTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/RunnableTransformer.xtend
deleted file mode 100644
index e376f0b..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/RunnableTransformer.xtend
+++ /dev/null
@@ -1,42 +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.transformers.sw
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import org.eclipse.app4mc.amalthea.model.Runnable
-import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseTransformer
-import org.eclipse.app4mc.slg.commons.m2t.generators.RunnableTranslationUnit
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-import org.eclipse.app4mc.slg.commons.m2t.generators.RunnableGenerator
-
-@Singleton
-class RunnableTransformer extends SLGBaseTransformer {
-
- @Inject OutputBuffer outputBuffer
- @Inject ActivityGraphItemTransformer psCallGraphItemTransformer
-
- def create new RunnableTranslationUnit(outputBuffer, psCallGraphItemTransformer, runnable)
- transform(Runnable runnable) {
- }
-
- override getCache() { return this._createCache_transform }
-
- def createCMake() {
- outputBuffer.appendTo("OTHER", RunnableTranslationUnit.makeFilePathStatic, RunnableGenerator.toCMake(getSrcFiles))
- }
-
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TaskTransformer.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TaskTransformer.java
new file mode 100644
index 0000000..17b31fe
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TaskTransformer.java
@@ -0,0 +1,66 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 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.commons.m2t.transformers.sw;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.app4mc.amalthea.model.Component;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TaskTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class TaskTransformer extends SLGBaseTransformer {
+
+ @Inject private OutputBuffer outputBuffer;
+ @Inject private RunnableTransformer runnableTransformer;
+ @Inject private LabelTransformer labelTransformer;
+
+ public TaskTranslationUnit transform(final Task task, final Component component) {
+ final ArrayList<?> key = CollectionLiterals.newArrayList(task, component);
+ final TaskTranslationUnit _result;
+ synchronized (cache) {
+ if (cache.containsKey(key)) {
+ return cache.get(key);
+ }
+ TaskTranslationUnit _taskTranslationUnit = new TaskTranslationUnit(this.outputBuffer,
+ this.runnableTransformer, this.labelTransformer, task, component);
+ _result = _taskTranslationUnit;
+ cache.put(key, _result);
+ }
+ _init_transform(_result, task, component);
+ return _result;
+ }
+
+ private final HashMap<ArrayList<?>, TaskTranslationUnit> cache = CollectionLiterals.newHashMap();
+
+ private void _init_transform(final TaskTranslationUnit it, final Task task, final Component component) {
+ }
+
+ @Override
+ public Map<ArrayList<?>, ? extends TranslationUnit> getCache() {
+ return this.cache;
+ }
+
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TaskTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TaskTransformer.xtend
deleted file mode 100644
index 35c030a..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TaskTransformer.xtend
+++ /dev/null
@@ -1,39 +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.transformers.sw
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import org.eclipse.app4mc.amalthea.model.Component
-import org.eclipse.app4mc.amalthea.model.Task
-import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseTransformer
-import org.eclipse.app4mc.slg.commons.m2t.generators.TaskTranslationUnit
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-
-@Singleton
-class TaskTransformer extends SLGBaseTransformer {
-
- @Inject OutputBuffer outputBuffer
- @Inject RunnableTransformer runnableTransformer
- @Inject LabelTransformer labelTransformer
-
- def create new TaskTranslationUnit(outputBuffer, runnableTransformer, labelTransformer, task, component)
- transform(Task task, Component component) {
- }
-
- override getCache() { return this._createCache_transform }
-
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TicksTransformer.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TicksTransformer.java
new file mode 100644
index 0000000..fee1ec6
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TicksTransformer.java
@@ -0,0 +1,77 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 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.commons.m2t.transformers.sw;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.app4mc.amalthea.model.IDiscreteValueDeviation;
+import org.eclipse.app4mc.amalthea.model.ProcessingUnitDefinition;
+import org.eclipse.app4mc.amalthea.model.Ticks;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TicksTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TicksUtilsTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseTransformer;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.emf.common.util.EMap;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class TicksTransformer extends SLGBaseTransformer {
+
+ @Inject private OutputBuffer outputBuffer;
+ @Inject private TicksUtilsTransformer ticksUtilsTransformer;
+
+ public TicksTranslationUnit transform(final Ticks ticks) {
+ if (ticks.getDefault() != null) {
+ final TicksUtilsTranslationUnit tuTicks = ticksUtilsTransformer.generate(ticks.getDefault());
+ return new TicksTranslationUnit(outputBuffer, tuTicks, ticks, "default", ticks.getDefault());
+ }
+ return null;
+ }
+
+ public List<TicksTranslationUnit> transformAllItems(final Ticks ticks) {
+ final List<TicksTranslationUnit> result = new ArrayList<TicksTranslationUnit>();
+ final IDiscreteValueDeviation defaultTicks = ticks.getDefault();
+ if ((defaultTicks != null)) {
+ final TicksUtilsTranslationUnit tuTicks = this.ticksUtilsTransformer.generate(ticks.getDefault());
+ result.add(new TicksTranslationUnit(this.outputBuffer, tuTicks, ticks,
+ "default", ticks.getDefault()));
+ }
+ EMap<ProcessingUnitDefinition, IDiscreteValueDeviation> _extended = null;
+ if (ticks != null) {
+ _extended = ticks.getExtended();
+ }
+ final EMap<ProcessingUnitDefinition, IDiscreteValueDeviation> puExtendedMap = _extended;
+ Set<ProcessingUnitDefinition> _keySet = puExtendedMap.keySet();
+ for (final ProcessingUnitDefinition puDefinition : _keySet) {
+ {
+ final IDiscreteValueDeviation ticksValue = puExtendedMap.get(puDefinition);
+ if (((puDefinition != null) && (ticksValue != null))) {
+ final TicksUtilsTranslationUnit tuTicks_1 = this.ticksUtilsTransformer.generate(ticksValue);
+ String _name = puDefinition.getName();
+ TicksTranslationUnit _ticksTranslationUnit_1 = new TicksTranslationUnit(this.outputBuffer,
+ tuTicks_1, ticks, _name, ticksValue);
+ result.add(_ticksTranslationUnit_1);
+ }
+ }
+ }
+ return result;
+ }
+
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TicksTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TicksTransformer.xtend
deleted file mode 100644
index aa281ed..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TicksTransformer.xtend
+++ /dev/null
@@ -1,66 +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.transformers.sw
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import java.util.ArrayList
-import java.util.List
-import org.eclipse.app4mc.amalthea.model.Ticks
-import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseTransformer
-import org.eclipse.app4mc.slg.commons.m2t.generators.TicksTranslationUnit
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-
-@Singleton
-class TicksTransformer extends SLGBaseTransformer {
-
- @Inject OutputBuffer outputBuffer
- @Inject TicksUtilsTransformer ticksUtilsTransformer
-
- def TicksTranslationUnit transform(Ticks ticks) {
- if (ticks.^default !== null) {
- val tuTicks = ticksUtilsTransformer.generate(ticks.^default)
- return new TicksTranslationUnit(outputBuffer, tuTicks, ticks, "default", ticks.^default)
- }
- }
-
- def List<TicksTranslationUnit> transformAllItems(Ticks ticks) {
-
- val List<TicksTranslationUnit> result = new ArrayList
-
- val defaultTicks = ticks.^default
-
- if (defaultTicks !== null) {
- val tuTicks = ticksUtilsTransformer.generate(ticks.^default)
- result.add(new TicksTranslationUnit(outputBuffer, tuTicks, ticks, "default", ticks.^default))
- }
-
- val puExtendedMap = ticks?.extended
-
- for (puDefinition : puExtendedMap.keySet) {
- val ticksValue = puExtendedMap.get(puDefinition)
- if (puDefinition !== null && ticksValue !== null) {
-
- val tuTicks = ticksUtilsTransformer.generate(ticksValue)
- result.add(new TicksTranslationUnit(outputBuffer, tuTicks, ticks, puDefinition.name, ticksValue))
-
- }
- }
-
- return result
- }
-
-}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TicksUtilsTransformer.java b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TicksUtilsTransformer.java
new file mode 100644
index 0000000..6e81f1f
--- /dev/null
+++ b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TicksUtilsTransformer.java
@@ -0,0 +1,82 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 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.commons.m2t.transformers.sw;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.app4mc.amalthea.model.IDiscreteValueDeviation;
+import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TicksUtilsGenerator;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TicksUtilsTranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.generators.TranslationUnit;
+import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseTransformer;
+import org.eclipse.app4mc.slg.config.ConfigModel;
+import org.eclipse.app4mc.transformation.util.OutputBuffer;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class TicksUtilsTransformer extends SLGBaseTransformer {
+
+ @Inject private OutputBuffer outputBuffer;
+ @Inject private CustomObjectsStore customObjsStore;
+
+ public TicksUtilsTranslationUnit generate(final IDiscreteValueDeviation value) {
+ return this.generateIntern(value.getClass());
+ }
+
+ public TicksUtilsTranslationUnit generateIntern(final Object valueClass) {
+ final ArrayList<?> key = CollectionLiterals.newArrayList(valueClass);
+ final TicksUtilsTranslationUnit _result;
+ synchronized (cache) {
+ if (cache.containsKey(key)) {
+ return cache.get(key);
+ }
+ ConfigModel _instance = this.customObjsStore.<ConfigModel>getInstance(ConfigModel.class);
+ TicksUtilsTranslationUnit tu = new TicksUtilsTranslationUnit(this.outputBuffer,
+ _instance, valueClass);
+ _result = tu;
+ cache.put(key, _result);
+ }
+ _init_generateIntern(_result, valueClass);
+ return _result;
+ }
+
+ private final HashMap<ArrayList<?>, TicksUtilsTranslationUnit> cache = CollectionLiterals
+ .newHashMap();
+
+ private void _init_generateIntern(final TicksUtilsTranslationUnit it, final Object valueClass) {
+ }
+
+ @Override
+ public Map<ArrayList<?>, ? extends TranslationUnit> getCache() {
+ return this.cache;
+ }
+
+ public boolean write() {
+ return this.createCMake();
+ }
+
+ public boolean createCMake() {
+ return this.outputBuffer.appendTo("OTHER", TicksUtilsTranslationUnit.getMakeFilePathStatic(),
+ TicksUtilsGenerator.toCMake(this.getSrcFiles()));
+ }
+
+}
diff --git a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TicksUtilsTransformer.xtend b/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TicksUtilsTransformer.xtend
deleted file mode 100644
index b9d11fe..0000000
--- a/load_generator/commons/plugins/org.eclipse.app4mc.slg.commons.m2t/src/org/eclipse/app4mc/slg/commons/m2t/transformers/sw/TicksUtilsTransformer.xtend
+++ /dev/null
@@ -1,52 +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.transformers.sw
-
-import com.google.inject.Inject
-import com.google.inject.Singleton
-import org.eclipse.app4mc.amalthea.model.IDiscreteValueDeviation
-import org.eclipse.app4mc.slg.commons.m2t.CustomObjectsStore
-import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseTransformer
-import org.eclipse.app4mc.slg.commons.m2t.generators.TicksUtilsTranslationUnit
-import org.eclipse.app4mc.slg.config.ConfigModel
-import org.eclipse.app4mc.transformation.util.OutputBuffer
-import org.eclipse.app4mc.slg.commons.m2t.generators.TicksUtilsGenerator
-
-@Singleton
-class TicksUtilsTransformer extends SLGBaseTransformer {
-
- @Inject OutputBuffer outputBuffer
- @Inject CustomObjectsStore customObjsStore
-
- def TicksUtilsTranslationUnit generate(IDiscreteValueDeviation value) {
- return generateIntern(value.class) // hash according to class not instance
- }
-
- def create new TicksUtilsTranslationUnit(outputBuffer, customObjsStore.getInstance(ConfigModel), valueClass)
- generateIntern(Object valueClass) {
- }
-
- override getCache() { return this._createCache_generateIntern }
-
- def write() {
- createCMake()
- }
-
- def createCMake() {
- outputBuffer.appendTo("OTHER", TicksUtilsTranslationUnit.makeFilePathStatic, TicksUtilsGenerator.toCMake(getSrcFiles))
- }
-
-}