Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Rentz-Reichert2011-12-14 13:55:12 +0000
committerHenrik Rentz-Reichert2011-12-14 13:55:12 +0000
commitd504486648753cc2d4f75a29f15e07c6bf2c4b3f (patch)
tree2e59c25e28341f764d8b7b1cc6d704fd50ee7f17
parentc545bd542ef6826d1ddeb4fdb0f000b6e0638742 (diff)
downloadorg.eclipse.etrice-d504486648753cc2d4f75a29f15e07c6bf2c4b3f.tar.gz
org.eclipse.etrice-d504486648753cc2d4f75a29f15e07c6bf2c4b3f.tar.xz
org.eclipse.etrice-d504486648753cc2d4f75a29f15e07c6bf2c4b3f.zip
upgrade to Xtext 2.1.1
clean-up of dependencies
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/META-INF/MANIFEST.MF6
-rw-r--r--plugins/org.eclipse.etrice.core.room.ui/etrice-development.target5
-rw-r--r--plugins/org.eclipse.etrice.core.room/META-INF/MANIFEST.MF6
-rw-r--r--plugins/org.eclipse.etrice.generator.java/.classpath2
-rw-r--r--plugins/org.eclipse.etrice.generator.java/META-INF/MANIFEST.MF3
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ActorClassGen.xtend15
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend13
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.xtend18
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/MainGen.xtend12
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.xtend17
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.xtend17
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.xtend14
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StateMachineGen.xtend21
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StdExtensions.xtend21
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.xtend16
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.xtend14
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java1153
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java520
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.java267
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/MainGen.java125
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.java171
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.java599
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java1603
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StateMachineGen.java1734
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StdExtensions.java647
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.java1251
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.java303
-rw-r--r--plugins/org.eclipse.etrice.generator/META-INF/MANIFEST.MF4
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomExtensions.xtend44
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomNameProv.java18
-rw-r--r--plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/extensions/RoomExtensions.java1546
-rw-r--r--plugins/org.eclipse.etrice.ui.behavior/META-INF/MANIFEST.MF11
-rw-r--r--plugins/org.eclipse.etrice.ui.commands/META-INF/MANIFEST.MF15
-rw-r--r--plugins/org.eclipse.etrice.ui.common/META-INF/MANIFEST.MF12
-rw-r--r--plugins/org.eclipse.etrice.ui.structure/META-INF/MANIFEST.MF15
-rw-r--r--releng/org.eclipse.etrice.releng/build.rmap6
36 files changed, 5106 insertions, 5138 deletions
diff --git a/plugins/org.eclipse.etrice.core.room.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.core.room.ui/META-INF/MANIFEST.MF
index bd839c5fe..0a416c6bc 100644
--- a/plugins/org.eclipse.etrice.core.room.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.etrice.core.room.ui/META-INF/MANIFEST.MF
@@ -10,9 +10,9 @@ Require-Bundle: org.eclipse.etrice.core.room;bundle-version="0.1.0";visibility:=
org.eclipse.ui;bundle-version="3.6.0",
org.eclipse.ui.editors;bundle-version="3.5.0",
org.eclipse.ui.ide;bundle-version="3.5.0",
- org.eclipse.xtext.ui;bundle-version="2.0.0",
- org.eclipse.xtext.ui.shared;bundle-version="2.0.0",
- org.eclipse.xtext.builder;bundle-version="2.0.0",
+ org.eclipse.xtext.ui;bundle-version="2.1.1",
+ org.eclipse.xtext.ui.shared;bundle-version="2.1.1",
+ org.eclipse.xtext.builder;bundle-version="2.1.1",
org.antlr.runtime;bundle-version="3.0.0",
org.eclipse.jdt.core;bundle-version="3.6.2",
org.eclipse.jdt.launching;bundle-version="3.5.200",
diff --git a/plugins/org.eclipse.etrice.core.room.ui/etrice-development.target b/plugins/org.eclipse.etrice.core.room.ui/etrice-development.target
index b43dea8e4..515e36e0c 100644
--- a/plugins/org.eclipse.etrice.core.room.ui/etrice-development.target
+++ b/plugins/org.eclipse.etrice.core.room.ui/etrice-development.target
@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.6"?>
-<target name="eTrice development" sequenceNumber="7">
+<target name="eTrice development" sequenceNumber="10">
<locations>
-<location path="${eTriceTargetInstallationPath}\eclipse-modeling-indigo-win32\eclipse" type="Profile"/>
-<location path="${eTriceTargetInstallationPath}\extra" type="Directory"/>
+<location path="${eTriceTargetInstallationPath}\eclipse-modeling-indigo-win32\eclipse" type="Directory"/>
</locations>
<environment>
<os>win32</os>
diff --git a/plugins/org.eclipse.etrice.core.room/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.core.room/META-INF/MANIFEST.MF
index 8f2919c46..3b2fe764f 100644
--- a/plugins/org.eclipse.etrice.core.room/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.etrice.core.room/META-INF/MANIFEST.MF
@@ -5,9 +5,9 @@ Bundle-Vendor: eTrice (Incubation)
Bundle-Version: 0.1.0.qualifier
Bundle-SymbolicName: org.eclipse.etrice.core.room;singleton:=true
Bundle-ActivationPolicy: lazy
-Require-Bundle: org.eclipse.xtext;bundle-version="2.0.0",
- org.eclipse.xtext.generator;bundle-version="2.0.0";resolution:=optional,
- org.eclipse.xtext.util;bundle-version="2.0.0",
+Require-Bundle: org.eclipse.xtext;bundle-version="2.1.1",
+ org.eclipse.xtext.generator;bundle-version="2.1.1";resolution:=optional,
+ org.eclipse.xtext.util;bundle-version="2.1.1",
org.apache.commons.logging;bundle-version="1.0.4";resolution:=optional,
org.eclipse.emf.codegen.ecore;bundle-version="2.6.0";resolution:=optional,
org.eclipse.emf.mwe.utils;bundle-version="1.0.0";resolution:=optional,
diff --git a/plugins/org.eclipse.etrice.generator.java/.classpath b/plugins/org.eclipse.etrice.generator.java/.classpath
index 54357e36e..1260f31c3 100644
--- a/plugins/org.eclipse.etrice.generator.java/.classpath
+++ b/plugins/org.eclipse.etrice.generator.java/.classpath
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="xtend-gen"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="xtend-gen"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/plugins/org.eclipse.etrice.generator.java/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.generator.java/META-INF/MANIFEST.MF
index 5a2c6f4d6..09d6385d1 100644
--- a/plugins/org.eclipse.etrice.generator.java/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.etrice.generator.java/META-INF/MANIFEST.MF
@@ -12,8 +12,7 @@ Require-Bundle: org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
org.eclipse.core.runtime;bundle-version="3.6.0",
org.eclipse.ui;bundle-version="3.7.0",
org.eclipse.ui.ide;bundle-version="3.7.0",
- org.eclipse.xtext.xtend2.lib;bundle-version="2.0.0",
- org.eclipse.xtend;bundle-version="1.1.0"
+ org.eclipse.xtext.xtend2.lib;bundle-version="2.1.1"
Import-Package: org.apache.log4j
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Export-Package: org.eclipse.etrice.generator.java
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ActorClassGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ActorClassGen.xtend
index 0eaa44305..9ccaa5293 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ActorClassGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ActorClassGen.xtend
@@ -12,17 +12,16 @@
package org.eclipse.etrice.generator.java.gen
-import org.eclipse.xtext.generator.IFileSystemAccess
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess
import com.google.inject.Inject
-
-import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.*
-import static extension org.eclipse.xtext.xtend2.lib.*
-
-import org.eclipse.etrice.core.room.*
-import org.eclipse.etrice.generator.etricegen.*
+import com.google.inject.Singleton
+import org.eclipse.etrice.core.room.ActorClass
+import org.eclipse.etrice.core.room.Message
import org.eclipse.etrice.generator.base.ILogger
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass
+import org.eclipse.etrice.generator.etricegen.Root
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess
+@Singleton
class ActorClassGen {
@Inject extension JavaIoFileSystemAccess fileAccess
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend
index 63eef3d30..10eda108c 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend
@@ -12,17 +12,14 @@
package org.eclipse.etrice.generator.java.gen
-import org.eclipse.xtext.generator.IFileSystemAccess
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess
import com.google.inject.Inject
-
-import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.*
-import static extension org.eclipse.xtext.xtend2.lib.*
-
-import org.eclipse.etrice.core.room.*
-import org.eclipse.etrice.generator.etricegen.*
+import com.google.inject.Singleton
+import org.eclipse.etrice.core.room.DataClass
import org.eclipse.etrice.generator.base.ILogger
+import org.eclipse.etrice.generator.etricegen.Root
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess
+@Singleton
class DataClassGen {
@Inject extension JavaIoFileSystemAccess fileAccess
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.xtend
index 9cd3799da..13bb778ce 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.xtend
@@ -12,18 +12,18 @@
package org.eclipse.etrice.generator.java.gen
-import org.eclipse.xtext.generator.IFileSystemAccess
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess
import com.google.inject.Inject
-
-import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.*
-import static extension org.eclipse.xtext.xtend2.lib.*
-
-import org.eclipse.etrice.core.room.*
-import org.eclipse.etrice.generator.etricegen.*
-import org.eclipse.etrice.generator.base.IRoomGenerator
+import com.google.inject.Singleton
+import org.eclipse.etrice.core.room.SubSystemClass
import org.eclipse.etrice.generator.base.ILogger
+import org.eclipse.etrice.generator.base.IRoomGenerator
+import org.eclipse.etrice.generator.etricegen.ActorInstance
+import org.eclipse.etrice.generator.etricegen.Root
+import org.eclipse.etrice.generator.etricegen.StructureInstance
+import org.eclipse.etrice.generator.etricegen.SubSystemInstance
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess
+@Singleton
class InstanceDiagramGen implements IRoomGenerator {
@Inject extension JavaIoFileSystemAccess fileAccess
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/MainGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/MainGen.xtend
index d6c9734c6..b4606f980 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/MainGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/MainGen.xtend
@@ -12,16 +12,14 @@
package org.eclipse.etrice.generator.java.gen
+import com.google.inject.Inject
+import com.google.inject.Singleton
import org.eclipse.emf.ecore.resource.Resource
-import org.eclipse.xtext.generator.IGenerator
+import org.eclipse.etrice.generator.etricegen.Root
import org.eclipse.xtext.generator.IFileSystemAccess
-import com.google.inject.Inject
-
-import org.eclipse.emf.ecore.*
-
-import org.eclipse.etrice.core.room.*
-import org.eclipse.etrice.generator.etricegen.*
+import org.eclipse.xtext.generator.IGenerator
+@Singleton
class MainGen implements IGenerator {
@Inject DataClassGen dataClassGen
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.xtend
index ca0456a57..b5ed6ac46 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.xtend
@@ -12,20 +12,17 @@
package org.eclipse.etrice.generator.java.gen
-import org.eclipse.emf.ecore.resource.Resource
-import org.eclipse.xtext.generator.IGenerator
-import org.eclipse.xtext.generator.IFileSystemAccess
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess
import com.google.inject.Inject
-import java.util.*
+import com.google.inject.Singleton
import java.io.File
-
-import org.eclipse.emf.ecore.*
-
-import org.eclipse.etrice.core.room.*
-import org.eclipse.etrice.generator.etricegen.*
+import java.util.HashSet
+import java.util.Set
+import org.eclipse.emf.ecore.resource.Resource
import org.eclipse.etrice.generator.base.ILogger
+import org.eclipse.etrice.generator.etricegen.Root
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess
+@Singleton
class PrepareFileSystem {
@Inject extension StdExtensions stdExt
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.xtend
index 9d4a1a5dc..0ab551358 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.xtend
@@ -12,18 +12,15 @@
package org.eclipse.etrice.generator.java.gen
-import java.util.List
-
-import org.eclipse.xtext.generator.IFileSystemAccess
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess
import com.google.inject.Inject
+import com.google.inject.Singleton
+import java.util.List
+import org.eclipse.etrice.core.room.ActorClass
+import org.eclipse.etrice.core.room.Attribute
+import org.eclipse.etrice.core.room.DetailCode
+import org.eclipse.etrice.core.room.Operation
-import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.*
-import static extension org.eclipse.xtext.xtend2.lib.*
-
-import org.eclipse.etrice.core.room.*
-import org.eclipse.etrice.generator.etricegen.*
-
+@Singleton
class ProcedureHelpers {
@Inject extension StdExtensions stdExt
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.xtend
index 7b11ab052..f092a6361 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.xtend
@@ -12,17 +12,15 @@
package org.eclipse.etrice.generator.java.gen
-import org.eclipse.xtext.generator.IFileSystemAccess
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess
import com.google.inject.Inject
-
-import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.*
-import static extension org.eclipse.xtext.xtend2.lib.*
-
-import org.eclipse.etrice.core.room.*
-import org.eclipse.etrice.generator.etricegen.*
+import com.google.inject.Singleton
+import org.eclipse.etrice.core.room.Message
+import org.eclipse.etrice.core.room.ProtocolClass
import org.eclipse.etrice.generator.base.ILogger
+import org.eclipse.etrice.generator.etricegen.Root
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess
+@Singleton
class ProtocolClassGen {
@Inject extension JavaIoFileSystemAccess fileAccess
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StateMachineGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StateMachineGen.xtend
index 39411ae84..59ba78abc 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StateMachineGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StateMachineGen.xtend
@@ -12,22 +12,21 @@
package org.eclipse.etrice.generator.java.gen
-import org.eclipse.xtext.generator.IFileSystemAccess
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess
import com.google.inject.Inject
-import java.util.*
-
-import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.*
-import static extension org.eclipse.xtext.xtend2.lib.*
-
-import org.eclipse.etrice.core.room.*
-import org.eclipse.etrice.generator.etricegen.*
-import org.eclipse.etrice.generator.extensions.RoomNameProv
+import com.google.inject.Singleton
+import java.util.List
+import org.eclipse.etrice.core.room.ActorClass
+import org.eclipse.etrice.core.room.NonInitialTransition
+import org.eclipse.etrice.core.room.Transition
+import org.eclipse.etrice.core.room.TriggeredTransition
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass
+import org.eclipse.etrice.generator.etricegen.TransitionChain
+import static extension org.eclipse.etrice.generator.extensions.RoomNameProv.*
+@Singleton
class StateMachineGen {
@Inject extension StdExtensions stdExt
- @Inject extension RoomNameProv nameProvider
@Inject JavaGenerator javaGen
def genStateMachine(ExpandedActorClass xpac, ActorClass ac) {'''
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StdExtensions.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StdExtensions.xtend
index aebced775..e9bcafae8 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StdExtensions.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StdExtensions.xtend
@@ -18,19 +18,20 @@
package org.eclipse.etrice.generator.java.gen
import com.google.inject.Inject
-import java.util.*
-import java.io.File
-
-import org.eclipse.etrice.core.room.*
-import org.eclipse.etrice.generator.etricegen.*
+import com.google.inject.Singleton
+import org.eclipse.etrice.core.room.FreeType
+import org.eclipse.etrice.core.room.Message
+import org.eclipse.etrice.core.room.PrimitiveType
+import org.eclipse.etrice.core.room.RoomClass
+import org.eclipse.etrice.core.room.RoomModel
+import org.eclipse.etrice.core.room.Type
+import org.eclipse.etrice.core.room.TypedID
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass
+import org.eclipse.etrice.generator.etricegen.TransitionChain
import org.eclipse.etrice.generator.extensions.RoomExtensions
-import org.eclipse.emf.ecore.*
-
-import static extension org.eclipse.xtend.util.stdlib.naming
-import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.*
-import static extension org.eclipse.xtext.xtend2.lib.*
+@Singleton
class StdExtensions extends RoomExtensions {
@Inject JavaGenerator javaGen
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.xtend
index 86d01be71..2bdfed396 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.xtend
@@ -12,18 +12,18 @@
package org.eclipse.etrice.generator.java.gen
-import org.eclipse.xtext.generator.IFileSystemAccess
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess
import com.google.inject.Inject
-
-import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.*
-import static extension org.eclipse.xtext.xtend2.lib.*
-
-import org.eclipse.etrice.core.room.*
-import org.eclipse.etrice.generator.etricegen.*
+import com.google.inject.Singleton
+import org.eclipse.etrice.core.room.SubSystemClass
import org.eclipse.etrice.generator.base.ILogger
+import org.eclipse.etrice.generator.etricegen.Root
+import org.eclipse.etrice.generator.etricegen.ServiceImplInstance
+import org.eclipse.etrice.generator.etricegen.SubSystemInstance
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess
+
import static extension org.eclipse.etrice.generator.base.Indexed.*
+@Singleton
class SubSystemClassGen {
@Inject extension JavaIoFileSystemAccess fileAccess
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.xtend
index ffbb698b8..cbb782c04 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.xtend
@@ -12,16 +12,14 @@
package org.eclipse.etrice.generator.java.gen
-import org.eclipse.xtext.generator.IFileSystemAccess
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess
import com.google.inject.Inject
+import com.google.inject.Singleton
+import org.eclipse.etrice.core.room.SubSystemClass
+import org.eclipse.etrice.generator.etricegen.Root
+import org.eclipse.etrice.generator.etricegen.SubSystemInstance
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess
-import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.*
-import static extension org.eclipse.xtext.xtend2.lib.*
-
-import org.eclipse.etrice.core.room.*
-import org.eclipse.etrice.generator.etricegen.*
-
+@Singleton
class SubSystemRunnerGen {
@Inject extension JavaIoFileSystemAccess fileAccess
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java
index 04d57205b..daf9fe369 100644
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java
+++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java
@@ -1,574 +1,579 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.inject.Inject;
-import java.util.List;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.DataClass;
-import org.eclipse.etrice.core.room.DetailCode;
-import org.eclipse.etrice.core.room.Message;
-import org.eclipse.etrice.core.room.Operation;
-import org.eclipse.etrice.core.room.Port;
-import org.eclipse.etrice.core.room.ProtocolClass;
-import org.eclipse.etrice.core.room.RoomModel;
-import org.eclipse.etrice.core.room.SAPRef;
-import org.eclipse.etrice.core.room.SPPRef;
-import org.eclipse.etrice.core.room.ServiceImplementation;
-import org.eclipse.etrice.core.room.StateMachine;
-import org.eclipse.etrice.core.room.Type;
-import org.eclipse.etrice.core.room.TypedID;
-import org.eclipse.etrice.generator.base.ILogger;
-import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.generator.etricegen.Root;
-import org.eclipse.etrice.generator.java.gen.ProcedureHelpers;
-import org.eclipse.etrice.generator.java.gen.StateMachineGen;
-import org.eclipse.etrice.generator.java.gen.StdExtensions;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-import org.eclipse.xtext.xbase.lib.BooleanExtensions;
-import org.eclipse.xtext.xbase.lib.IntegerExtensions;
-import org.eclipse.xtext.xbase.lib.ObjectExtensions;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-import org.eclipse.xtext.xtend2.lib.StringConcatenation;
-
-@SuppressWarnings("all")
-public class ActorClassGen {
-
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private StdExtensions stdExt;
-
- @Inject
- private ProcedureHelpers helpers;
-
- @Inject
- private StateMachineGen stateMachineGen;
-
- @Inject
- private ILogger logger;
-
- public void doGenerate(final Root root) {
- EList<ExpandedActorClass> _xpActorClasses = root.getXpActorClasses();
- for (ExpandedActorClass xpac : _xpActorClasses) {
- {
- ActorClass _actorClass = xpac.getActorClass();
- String _generationTargetPath = this.stdExt.getGenerationTargetPath(_actorClass);
- ActorClass _actorClass_1 = xpac.getActorClass();
- String _path = this.stdExt.getPath(_actorClass_1);
- String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
- String path = _operator_plus;
- ActorClass _actorClass_2 = xpac.getActorClass();
- String _fileName = this.stdExt.getFileName(_actorClass_2);
- String file = _fileName;
- String _operator_plus_1 = StringExtensions.operator_plus("generating ActorClass implementation \'", file);
- String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'");
- String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path);
- String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'");
- this.logger.logInfo(_operator_plus_4);
- this.fileAccess.setOutputPath(path);
- ActorClass _actorClass_3 = xpac.getActorClass();
- StringConcatenation _generate = this.generate(root, xpac, _actorClass_3);
- this.fileAccess.generateFile(file, _generate);
- }
- }
- }
-
- public StringConcatenation generate(final Root root, final ExpandedActorClass xpac, final ActorClass ac) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("package ");
- String _package = this.stdExt.getPackage(ac);
- _builder.append(_package, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.messaging.Address;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.messaging.IRTObject;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.debugging.DebuggingService;");
- _builder.newLine();
- _builder.newLine();
- {
- EList<RoomModel> _referencedModels = root.getReferencedModels(ac);
- for(RoomModel model : _referencedModels) {
- _builder.append("import ");
- String _name = model.getName();
- _builder.append(_name, "");
- _builder.append(".*;");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- {
- EList<ProtocolClass> _referencedProtocols = root.getReferencedProtocols(ac);
- for(ProtocolClass pc : _referencedProtocols) {
- _builder.append("import ");
- String _package_1 = this.stdExt.getPackage(pc);
- _builder.append(_package_1, "");
- _builder.append(".");
- String _name_1 = pc.getName();
- _builder.append(_name_1, "");
- _builder.append(".*;");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- DetailCode _userCode1 = ac.getUserCode1();
- StringConcatenation _UserCode = this.helpers.UserCode(_userCode1);
- _builder.append(_UserCode, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.newLine();
- _builder.append("public ");
- {
- boolean _isAbstract = ac.isAbstract();
- if (_isAbstract) {
- _builder.append("abstract ");
- }
- }
- _builder.append("class ");
- String _name_2 = ac.getName();
- _builder.append(_name_2, "");
- _builder.append(" extends ");
- {
- ActorClass _base = ac.getBase();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
- if (_operator_notEquals) {
- ActorClass _base_1 = ac.getBase();
- String _name_3 = _base_1.getName();
- _builder.append(_name_3, "");} else {
- _builder.append("ActorClassBase");
- }
- }
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- DetailCode _userCode2 = ac.getUserCode2();
- StringConcatenation _UserCode_1 = this.helpers.UserCode(_userCode2);
- _builder.append(_UserCode_1, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("//--------------------- ports");
- _builder.newLine();
- {
- List<Port> _endPorts = this.stdExt.getEndPorts(ac);
- for(Port ep : _endPorts) {
- _builder.append("\t");
- _builder.append("protected ");
- String _portClassName = this.stdExt.getPortClassName(ep);
- _builder.append(_portClassName, " ");
- _builder.append(" ");
- String _name_4 = ep.getName();
- _builder.append(_name_4, " ");
- _builder.append(" = null;");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("//--------------------- saps");
- _builder.newLine();
- {
- EList<SAPRef> _strSAPs = ac.getStrSAPs();
- for(SAPRef sap : _strSAPs) {
- _builder.append("\t");
- _builder.append("protected ");
- String _portClassName_1 = this.stdExt.getPortClassName(sap);
- _builder.append(_portClassName_1, " ");
- _builder.append(" ");
- String _name_5 = sap.getName();
- _builder.append(_name_5, " ");
- _builder.append(" = null;");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("//--------------------- services");
- _builder.newLine();
- {
- EList<ServiceImplementation> _serviceImplementations = ac.getServiceImplementations();
- for(ServiceImplementation svc : _serviceImplementations) {
- _builder.append("\t");
- _builder.append("protected ");
- String _portClassName_2 = this.stdExt.getPortClassName(svc);
- _builder.append(_portClassName_2, " ");
- _builder.append(" ");
- SPPRef _spp = svc.getSpp();
- String _name_6 = _spp.getName();
- _builder.append(_name_6, " ");
- _builder.append(" = null;");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.append("\t");
- _builder.append("//--------------------- interface item IDs");
- _builder.newLine();
- {
- List<Port> _endPorts_1 = this.stdExt.getEndPorts(ac);
- for(Port ep_1 : _endPorts_1) {
- _builder.append("\t");
- _builder.append("protected static final int IFITEM_");
- String _name_7 = ep_1.getName();
- _builder.append(_name_7, " ");
- _builder.append(" = ");
- int _interfaceItemLocalId = xpac.getInterfaceItemLocalId(ep_1);
- int _operator_plus = IntegerExtensions.operator_plus(((Integer)_interfaceItemLocalId), ((Integer)1));
- _builder.append(_operator_plus, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- {
- EList<SAPRef> _strSAPs_1 = ac.getStrSAPs();
- for(SAPRef sap_1 : _strSAPs_1) {
- _builder.append("\t");
- _builder.append("protected static final int IFITEM_");
- String _name_8 = sap_1.getName();
- _builder.append(_name_8, " ");
- _builder.append(" = ");
- int _interfaceItemLocalId_1 = xpac.getInterfaceItemLocalId(sap_1);
- int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_interfaceItemLocalId_1), ((Integer)1));
- _builder.append(_operator_plus_1, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- {
- EList<ServiceImplementation> _serviceImplementations_1 = ac.getServiceImplementations();
- for(ServiceImplementation svc_1 : _serviceImplementations_1) {
- _builder.append("\t");
- _builder.append("protected static final int IFITEM_");
- SPPRef _spp_1 = svc_1.getSpp();
- String _name_9 = _spp_1.getName();
- _builder.append(_name_9, " ");
- _builder.append(" = ");
- SPPRef _spp_2 = svc_1.getSpp();
- int _interfaceItemLocalId_2 = xpac.getInterfaceItemLocalId(_spp_2);
- int _operator_plus_2 = IntegerExtensions.operator_plus(((Integer)_interfaceItemLocalId_2), ((Integer)1));
- _builder.append(_operator_plus_2, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- EList<Attribute> _attributes = ac.getAttributes();
- StringConcatenation _Attributes = this.helpers.Attributes(_attributes);
- _builder.append(_Attributes, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- EList<Operation> _operations = ac.getOperations();
- StringConcatenation _Operations = this.helpers.Operations(_operations);
- _builder.append(_Operations, " ");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("//--------------------- construction");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public ");
- String _name_10 = ac.getName();
- _builder.append(_name_10, " ");
- _builder.append("(IRTObject parent, String name, Address[][] port_addr, Address[][] peer_addr){");
- _builder.newLineIfNotEmpty();
- {
- ActorClass _base_2 = ac.getBase();
- boolean _operator_equals = ObjectExtensions.operator_equals(_base_2, null);
- if (_operator_equals) {
- _builder.append("\t\t");
- _builder.append("super(parent, name, port_addr[0][0], peer_addr[0][0]);");
- _builder.newLine();} else {
- _builder.append("\t\t");
- _builder.append("super(parent, name, port_addr, peer_addr);");
- _builder.newLine();
- }
- }
- _builder.append("\t\t");
- _builder.append("setClassName(\"");
- String _name_11 = ac.getName();
- _builder.append(_name_11, " ");
- _builder.append("\");");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("// initialize attributes");
- _builder.newLine();
- {
- EList<Attribute> _attributes_1 = ac.getAttributes();
- for(Attribute a : _attributes_1) {
- {
- String _defaultValueLiteral = a.getDefaultValueLiteral();
- boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_defaultValueLiteral, null);
- if (_operator_notEquals_1) {
- _builder.append("\t\t");
- String _name_12 = a.getName();
- _builder.append(_name_12, " ");
- _builder.append(" = ");
- String _defaultValueLiteral_1 = a.getDefaultValueLiteral();
- _builder.append(_defaultValueLiteral_1, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();} else {
- Type _type = a.getType();
- DataClass _type_1 = _type.getType();
- boolean _operator_notEquals_2 = ObjectExtensions.operator_notEquals(_type_1, null);
- if (_operator_notEquals_2) {
- _builder.append("\t\t");
- String _name_13 = a.getName();
- _builder.append(_name_13, " ");
- _builder.append(" = new ");
- Type _type_2 = a.getType();
- DataClass _type_3 = _type_2.getType();
- String _name_14 = _type_3.getName();
- _builder.append(_name_14, " ");
- _builder.append("();");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- }
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("// own ports");
- _builder.newLine();
- {
- List<Port> _endPorts_2 = this.stdExt.getEndPorts(ac);
- for(Port ep_2 : _endPorts_2) {
- _builder.append("\t\t");
- String _name_15 = ep_2.getName();
- _builder.append(_name_15, " ");
- _builder.append(" = new ");
- String _portClassName_3 = this.stdExt.getPortClassName(ep_2);
- _builder.append(_portClassName_3, " ");
- _builder.append("(this, \"");
- String _name_16 = ep_2.getName();
- _builder.append(_name_16, " ");
- _builder.append("\", IFITEM_");
- String _name_17 = ep_2.getName();
- _builder.append(_name_17, " ");
- _builder.append(", ");
- {
- int _multiplicity = ep_2.getMultiplicity();
- boolean _operator_equals_1 = ObjectExtensions.operator_equals(((Integer)_multiplicity), ((Integer)1));
- if (_operator_equals_1) {
- _builder.append("0, ");
- }
- }
- _builder.append("port_addr[IFITEM_");
- String _name_18 = ep_2.getName();
- _builder.append(_name_18, " ");
- _builder.append("]");
- {
- int _multiplicity_1 = ep_2.getMultiplicity();
- boolean _operator_equals_2 = ObjectExtensions.operator_equals(((Integer)_multiplicity_1), ((Integer)1));
- if (_operator_equals_2) {
- _builder.append("[0]");
- }
- }
- _builder.append(", peer_addr[IFITEM_");
- String _name_19 = ep_2.getName();
- _builder.append(_name_19, " ");
- _builder.append("]");
- {
- int _multiplicity_2 = ep_2.getMultiplicity();
- boolean _operator_equals_3 = ObjectExtensions.operator_equals(((Integer)_multiplicity_2), ((Integer)1));
- if (_operator_equals_3) {
- _builder.append("[0]");
- }
- }
- _builder.append("); ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t");
- _builder.append("// own saps");
- _builder.newLine();
- {
- EList<SAPRef> _strSAPs_2 = ac.getStrSAPs();
- for(SAPRef sap_2 : _strSAPs_2) {
- _builder.append("\t\t");
- String _name_20 = sap_2.getName();
- _builder.append(_name_20, " ");
- _builder.append(" = new ");
- String _portClassName_4 = this.stdExt.getPortClassName(sap_2);
- _builder.append(_portClassName_4, " ");
- _builder.append("(this, \"");
- String _name_21 = sap_2.getName();
- _builder.append(_name_21, " ");
- _builder.append("\", IFITEM_");
- String _name_22 = sap_2.getName();
- _builder.append(_name_22, " ");
- _builder.append(", 0, port_addr[IFITEM_");
- String _name_23 = sap_2.getName();
- _builder.append(_name_23, " ");
- _builder.append("][0], peer_addr[IFITEM_");
- String _name_24 = sap_2.getName();
- _builder.append(_name_24, " ");
- _builder.append("][0]); ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t");
- _builder.append("// own service implementations");
- _builder.newLine();
- {
- EList<ServiceImplementation> _serviceImplementations_2 = ac.getServiceImplementations();
- for(ServiceImplementation svc_2 : _serviceImplementations_2) {
- _builder.append("\t\t");
- SPPRef _spp_3 = svc_2.getSpp();
- String _name_25 = _spp_3.getName();
- _builder.append(_name_25, " ");
- _builder.append(" = new ");
- String _portClassName_5 = this.stdExt.getPortClassName(svc_2);
- _builder.append(_portClassName_5, " ");
- _builder.append("(this, \"");
- SPPRef _spp_4 = svc_2.getSpp();
- String _name_26 = _spp_4.getName();
- _builder.append(_name_26, " ");
- _builder.append("\", IFITEM_");
- SPPRef _spp_5 = svc_2.getSpp();
- String _name_27 = _spp_5.getName();
- _builder.append(_name_27, " ");
- _builder.append(", port_addr[IFITEM_");
- SPPRef _spp_6 = svc_2.getSpp();
- String _name_28 = _spp_6.getName();
- _builder.append(_name_28, " ");
- _builder.append("], peer_addr[IFITEM_");
- SPPRef _spp_7 = svc_2.getSpp();
- String _name_29 = _spp_7.getName();
- _builder.append(_name_29, " ");
- _builder.append("]); ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("//--------------------- lifecycle functions");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public void init(){");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("initUser();");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public void start(){");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("startUser();");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- {
- boolean _overridesStop = this.stdExt.overridesStop(ac);
- boolean _operator_not = BooleanExtensions.operator_not(_overridesStop);
- if (_operator_not) {
- _builder.append("\t");
- _builder.append("public void stop(){");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("stopUser();");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public void destroy(){");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("destroyUser();");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}\t");
- _builder.newLine();
- _builder.newLine();
- {
- StateMachine _stateMachine = ac.getStateMachine();
- boolean _operator_notEquals_3 = ObjectExtensions.operator_notEquals(_stateMachine, null);
- if (_operator_notEquals_3) {
- _builder.append("\t");
- StringConcatenation _genStateMachine = this.stateMachineGen.genStateMachine(xpac, ac);
- _builder.append(_genStateMachine, " ");
- _builder.newLineIfNotEmpty();} else {
- boolean _hasStateMachine = xpac.hasStateMachine();
- boolean _operator_not_1 = BooleanExtensions.operator_not(_hasStateMachine);
- if (_operator_not_1) {
- _builder.append("\t");
- _builder.append("//--------------------- no state machine");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("@Override");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public void receiveEvent(InterfaceItemBase ifitem, int evt, Object data) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("handleSystemEvent(ifitem, evt, data);");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("@Override");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public void executeInitTransition(){");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- }
- _builder.append("};");
- _builder.newLine();
- return _builder;
- }
-
- public StringConcatenation msgArgs(final Message msg) {
- StringConcatenation _builder = new StringConcatenation();
- {
- TypedID _data = msg.getData();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_data, null);
- if (_operator_notEquals) {
- TypedID _data_1 = msg.getData();
- String _defaultValue = this.stdExt.defaultValue(_data_1);
- _builder.append(_defaultValue, "");
- }
- }
- return _builder;
- }
-} \ No newline at end of file
+package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.SAPRef;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.ServiceImplementation;
+import org.eclipse.etrice.core.room.StateMachine;
+import org.eclipse.etrice.core.room.Type;
+import org.eclipse.etrice.core.room.TypedID;
+import org.eclipse.etrice.generator.base.ILogger;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.java.gen.ProcedureHelpers;
+import org.eclipse.etrice.generator.java.gen.StateMachineGen;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.xbase.lib.BooleanExtensions;
+import org.eclipse.xtext.xbase.lib.IntegerExtensions;
+import org.eclipse.xtext.xbase.lib.ObjectExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class ActorClassGen {
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ @Inject
+ private StdExtensions stdExt;
+
+ @Inject
+ private ProcedureHelpers helpers;
+
+ @Inject
+ private StateMachineGen stateMachineGen;
+
+ @Inject
+ private ILogger logger;
+
+ public void doGenerate(final Root root) {
+ EList<ExpandedActorClass> _xpActorClasses = root.getXpActorClasses();
+ for (final ExpandedActorClass xpac : _xpActorClasses) {
+ {
+ ActorClass _actorClass = xpac.getActorClass();
+ String _generationTargetPath = this.stdExt.getGenerationTargetPath(_actorClass);
+ ActorClass _actorClass_1 = xpac.getActorClass();
+ String _path = this.stdExt.getPath(_actorClass_1);
+ String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
+ String path = _operator_plus;
+ ActorClass _actorClass_2 = xpac.getActorClass();
+ String _fileName = this.stdExt.getFileName(_actorClass_2);
+ String file = _fileName;
+ String _operator_plus_1 = StringExtensions.operator_plus("generating ActorClass implementation \'", file);
+ String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'");
+ String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path);
+ String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'");
+ this.logger.logInfo(_operator_plus_4);
+ this.fileAccess.setOutputPath(path);
+ ActorClass _actorClass_3 = xpac.getActorClass();
+ StringConcatenation _generate = this.generate(root, xpac, _actorClass_3);
+ this.fileAccess.generateFile(file, _generate);
+ }
+ }
+ }
+
+ public StringConcatenation generate(final Root root, final ExpandedActorClass xpac, final ActorClass ac) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("package ");
+ String _package = this.stdExt.getPackage(ac);
+ _builder.append(_package, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.Address;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.IRTObject;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.debugging.DebuggingService;");
+ _builder.newLine();
+ _builder.newLine();
+ {
+ EList<RoomModel> _referencedModels = root.getReferencedModels(ac);
+ for(final RoomModel model : _referencedModels) {
+ _builder.append("import ");
+ String _name = model.getName();
+ _builder.append(_name, "");
+ _builder.append(".*;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ {
+ EList<ProtocolClass> _referencedProtocols = root.getReferencedProtocols(ac);
+ for(final ProtocolClass pc : _referencedProtocols) {
+ _builder.append("import ");
+ String _package_1 = this.stdExt.getPackage(pc);
+ _builder.append(_package_1, "");
+ _builder.append(".");
+ String _name_1 = pc.getName();
+ _builder.append(_name_1, "");
+ _builder.append(".*;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ DetailCode _userCode1 = ac.getUserCode1();
+ StringConcatenation _UserCode = this.helpers.UserCode(_userCode1);
+ _builder.append(_UserCode, "");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("public ");
+ {
+ boolean _isAbstract = ac.isAbstract();
+ if (_isAbstract) {
+ _builder.append("abstract ");
+ }
+ }
+ _builder.append("class ");
+ String _name_2 = ac.getName();
+ _builder.append(_name_2, "");
+ _builder.append(" extends ");
+ {
+ ActorClass _base = ac.getBase();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
+ if (_operator_notEquals) {
+ ActorClass _base_1 = ac.getBase();
+ String _name_3 = _base_1.getName();
+ _builder.append(_name_3, "");
+ } else {
+ _builder.append("ActorClassBase");
+ }
+ }
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ DetailCode _userCode2 = ac.getUserCode2();
+ StringConcatenation _UserCode_1 = this.helpers.UserCode(_userCode2);
+ _builder.append(_UserCode_1, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("//--------------------- ports");
+ _builder.newLine();
+ {
+ List<Port> _endPorts = this.stdExt.getEndPorts(ac);
+ for(final Port ep : _endPorts) {
+ _builder.append("\t");
+ _builder.append("protected ");
+ String _portClassName = this.stdExt.getPortClassName(ep);
+ _builder.append(_portClassName, " ");
+ _builder.append(" ");
+ String _name_4 = ep.getName();
+ _builder.append(_name_4, " ");
+ _builder.append(" = null;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("//--------------------- saps");
+ _builder.newLine();
+ {
+ EList<SAPRef> _strSAPs = ac.getStrSAPs();
+ for(final SAPRef sap : _strSAPs) {
+ _builder.append("\t");
+ _builder.append("protected ");
+ String _portClassName_1 = this.stdExt.getPortClassName(sap);
+ _builder.append(_portClassName_1, " ");
+ _builder.append(" ");
+ String _name_5 = sap.getName();
+ _builder.append(_name_5, " ");
+ _builder.append(" = null;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("//--------------------- services");
+ _builder.newLine();
+ {
+ EList<ServiceImplementation> _serviceImplementations = ac.getServiceImplementations();
+ for(final ServiceImplementation svc : _serviceImplementations) {
+ _builder.append("\t");
+ _builder.append("protected ");
+ String _portClassName_2 = this.stdExt.getPortClassName(svc);
+ _builder.append(_portClassName_2, " ");
+ _builder.append(" ");
+ SPPRef _spp = svc.getSpp();
+ String _name_6 = _spp.getName();
+ _builder.append(_name_6, " ");
+ _builder.append(" = null;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("//--------------------- interface item IDs");
+ _builder.newLine();
+ {
+ List<Port> _endPorts_1 = this.stdExt.getEndPorts(ac);
+ for(final Port ep_1 : _endPorts_1) {
+ _builder.append("\t");
+ _builder.append("protected static final int IFITEM_");
+ String _name_7 = ep_1.getName();
+ _builder.append(_name_7, " ");
+ _builder.append(" = ");
+ int _interfaceItemLocalId = xpac.getInterfaceItemLocalId(ep_1);
+ int _operator_plus = IntegerExtensions.operator_plus(((Integer)_interfaceItemLocalId), ((Integer)1));
+ _builder.append(_operator_plus, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ {
+ EList<SAPRef> _strSAPs_1 = ac.getStrSAPs();
+ for(final SAPRef sap_1 : _strSAPs_1) {
+ _builder.append("\t");
+ _builder.append("protected static final int IFITEM_");
+ String _name_8 = sap_1.getName();
+ _builder.append(_name_8, " ");
+ _builder.append(" = ");
+ int _interfaceItemLocalId_1 = xpac.getInterfaceItemLocalId(sap_1);
+ int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_interfaceItemLocalId_1), ((Integer)1));
+ _builder.append(_operator_plus_1, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ {
+ EList<ServiceImplementation> _serviceImplementations_1 = ac.getServiceImplementations();
+ for(final ServiceImplementation svc_1 : _serviceImplementations_1) {
+ _builder.append("\t");
+ _builder.append("protected static final int IFITEM_");
+ SPPRef _spp_1 = svc_1.getSpp();
+ String _name_9 = _spp_1.getName();
+ _builder.append(_name_9, " ");
+ _builder.append(" = ");
+ SPPRef _spp_2 = svc_1.getSpp();
+ int _interfaceItemLocalId_2 = xpac.getInterfaceItemLocalId(_spp_2);
+ int _operator_plus_2 = IntegerExtensions.operator_plus(((Integer)_interfaceItemLocalId_2), ((Integer)1));
+ _builder.append(_operator_plus_2, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ EList<Attribute> _attributes = ac.getAttributes();
+ StringConcatenation _Attributes = this.helpers.Attributes(_attributes);
+ _builder.append(_Attributes, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ EList<Operation> _operations = ac.getOperations();
+ StringConcatenation _Operations = this.helpers.Operations(_operations);
+ _builder.append(_Operations, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("//--------------------- construction");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ String _name_10 = ac.getName();
+ _builder.append(_name_10, " ");
+ _builder.append("(IRTObject parent, String name, Address[][] port_addr, Address[][] peer_addr){");
+ _builder.newLineIfNotEmpty();
+ {
+ ActorClass _base_2 = ac.getBase();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_base_2, null);
+ if (_operator_equals) {
+ _builder.append("\t\t");
+ _builder.append("super(parent, name, port_addr[0][0], peer_addr[0][0]);");
+ _builder.newLine();
+ } else {
+ _builder.append("\t\t");
+ _builder.append("super(parent, name, port_addr, peer_addr);");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("setClassName(\"");
+ String _name_11 = ac.getName();
+ _builder.append(_name_11, " ");
+ _builder.append("\");");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// initialize attributes");
+ _builder.newLine();
+ {
+ EList<Attribute> _attributes_1 = ac.getAttributes();
+ for(final Attribute a : _attributes_1) {
+ {
+ String _defaultValueLiteral = a.getDefaultValueLiteral();
+ boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_defaultValueLiteral, null);
+ if (_operator_notEquals_1) {
+ _builder.append("\t\t");
+ String _name_12 = a.getName();
+ _builder.append(_name_12, " ");
+ _builder.append(" = ");
+ String _defaultValueLiteral_1 = a.getDefaultValueLiteral();
+ _builder.append(_defaultValueLiteral_1, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ } else {
+ Type _type = a.getType();
+ DataClass _type_1 = _type.getType();
+ boolean _operator_notEquals_2 = ObjectExtensions.operator_notEquals(_type_1, null);
+ if (_operator_notEquals_2) {
+ _builder.append("\t\t");
+ String _name_13 = a.getName();
+ _builder.append(_name_13, " ");
+ _builder.append(" = new ");
+ Type _type_2 = a.getType();
+ DataClass _type_3 = _type_2.getType();
+ String _name_14 = _type_3.getName();
+ _builder.append(_name_14, " ");
+ _builder.append("();");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ }
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// own ports");
+ _builder.newLine();
+ {
+ List<Port> _endPorts_2 = this.stdExt.getEndPorts(ac);
+ for(final Port ep_2 : _endPorts_2) {
+ _builder.append("\t\t");
+ String _name_15 = ep_2.getName();
+ _builder.append(_name_15, " ");
+ _builder.append(" = new ");
+ String _portClassName_3 = this.stdExt.getPortClassName(ep_2);
+ _builder.append(_portClassName_3, " ");
+ _builder.append("(this, \"");
+ String _name_16 = ep_2.getName();
+ _builder.append(_name_16, " ");
+ _builder.append("\", IFITEM_");
+ String _name_17 = ep_2.getName();
+ _builder.append(_name_17, " ");
+ _builder.append(", ");
+ {
+ int _multiplicity = ep_2.getMultiplicity();
+ boolean _operator_equals_1 = ObjectExtensions.operator_equals(((Integer)_multiplicity), ((Integer)1));
+ if (_operator_equals_1) {
+ _builder.append("0, ");
+ }
+ }
+ _builder.append("port_addr[IFITEM_");
+ String _name_18 = ep_2.getName();
+ _builder.append(_name_18, " ");
+ _builder.append("]");
+ {
+ int _multiplicity_1 = ep_2.getMultiplicity();
+ boolean _operator_equals_2 = ObjectExtensions.operator_equals(((Integer)_multiplicity_1), ((Integer)1));
+ if (_operator_equals_2) {
+ _builder.append("[0]");
+ }
+ }
+ _builder.append(", peer_addr[IFITEM_");
+ String _name_19 = ep_2.getName();
+ _builder.append(_name_19, " ");
+ _builder.append("]");
+ {
+ int _multiplicity_2 = ep_2.getMultiplicity();
+ boolean _operator_equals_3 = ObjectExtensions.operator_equals(((Integer)_multiplicity_2), ((Integer)1));
+ if (_operator_equals_3) {
+ _builder.append("[0]");
+ }
+ }
+ _builder.append("); ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("// own saps");
+ _builder.newLine();
+ {
+ EList<SAPRef> _strSAPs_2 = ac.getStrSAPs();
+ for(final SAPRef sap_2 : _strSAPs_2) {
+ _builder.append("\t\t");
+ String _name_20 = sap_2.getName();
+ _builder.append(_name_20, " ");
+ _builder.append(" = new ");
+ String _portClassName_4 = this.stdExt.getPortClassName(sap_2);
+ _builder.append(_portClassName_4, " ");
+ _builder.append("(this, \"");
+ String _name_21 = sap_2.getName();
+ _builder.append(_name_21, " ");
+ _builder.append("\", IFITEM_");
+ String _name_22 = sap_2.getName();
+ _builder.append(_name_22, " ");
+ _builder.append(", 0, port_addr[IFITEM_");
+ String _name_23 = sap_2.getName();
+ _builder.append(_name_23, " ");
+ _builder.append("][0], peer_addr[IFITEM_");
+ String _name_24 = sap_2.getName();
+ _builder.append(_name_24, " ");
+ _builder.append("][0]); ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("// own service implementations");
+ _builder.newLine();
+ {
+ EList<ServiceImplementation> _serviceImplementations_2 = ac.getServiceImplementations();
+ for(final ServiceImplementation svc_2 : _serviceImplementations_2) {
+ _builder.append("\t\t");
+ SPPRef _spp_3 = svc_2.getSpp();
+ String _name_25 = _spp_3.getName();
+ _builder.append(_name_25, " ");
+ _builder.append(" = new ");
+ String _portClassName_5 = this.stdExt.getPortClassName(svc_2);
+ _builder.append(_portClassName_5, " ");
+ _builder.append("(this, \"");
+ SPPRef _spp_4 = svc_2.getSpp();
+ String _name_26 = _spp_4.getName();
+ _builder.append(_name_26, " ");
+ _builder.append("\", IFITEM_");
+ SPPRef _spp_5 = svc_2.getSpp();
+ String _name_27 = _spp_5.getName();
+ _builder.append(_name_27, " ");
+ _builder.append(", port_addr[IFITEM_");
+ SPPRef _spp_6 = svc_2.getSpp();
+ String _name_28 = _spp_6.getName();
+ _builder.append(_name_28, " ");
+ _builder.append("], peer_addr[IFITEM_");
+ SPPRef _spp_7 = svc_2.getSpp();
+ String _name_29 = _spp_7.getName();
+ _builder.append(_name_29, " ");
+ _builder.append("]); ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("//--------------------- lifecycle functions");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void init(){");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("initUser();");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void start(){");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("startUser();");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ {
+ boolean _overridesStop = this.stdExt.overridesStop(ac);
+ boolean _operator_not = BooleanExtensions.operator_not(_overridesStop);
+ if (_operator_not) {
+ _builder.append("\t");
+ _builder.append("public void stop(){");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("stopUser();");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void destroy(){");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("destroyUser();");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}\t");
+ _builder.newLine();
+ _builder.newLine();
+ {
+ StateMachine _stateMachine = ac.getStateMachine();
+ boolean _operator_notEquals_3 = ObjectExtensions.operator_notEquals(_stateMachine, null);
+ if (_operator_notEquals_3) {
+ _builder.append("\t");
+ StringConcatenation _genStateMachine = this.stateMachineGen.genStateMachine(xpac, ac);
+ _builder.append(_genStateMachine, " ");
+ _builder.newLineIfNotEmpty();
+ } else {
+ boolean _hasStateMachine = xpac.hasStateMachine();
+ boolean _operator_not_1 = BooleanExtensions.operator_not(_hasStateMachine);
+ if (_operator_not_1) {
+ _builder.append("\t");
+ _builder.append("//--------------------- no state machine");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("@Override");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void receiveEvent(InterfaceItemBase ifitem, int evt, Object data) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("handleSystemEvent(ifitem, evt, data);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("@Override");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void executeInitTransition(){");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ }
+ _builder.append("};");
+ _builder.newLine();
+ return _builder;
+ }
+
+ public StringConcatenation msgArgs(final Message msg) {
+ StringConcatenation _builder = new StringConcatenation();
+ {
+ TypedID _data = msg.getData();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_data, null);
+ if (_operator_notEquals) {
+ TypedID _data_1 = msg.getData();
+ String _defaultValue = this.stdExt.defaultValue(_data_1);
+ _builder.append(_defaultValue, "");
+ }
+ }
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java
index 85c8b3fd7..0cc9e7122 100644
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java
+++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java
@@ -1,258 +1,262 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.inject.Inject;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.DataClass;
-import org.eclipse.etrice.core.room.Import;
-import org.eclipse.etrice.core.room.Operation;
-import org.eclipse.etrice.core.room.RoomModel;
-import org.eclipse.etrice.core.room.Type;
-import org.eclipse.etrice.generator.base.ILogger;
-import org.eclipse.etrice.generator.etricegen.Root;
-import org.eclipse.etrice.generator.java.gen.ProcedureHelpers;
-import org.eclipse.etrice.generator.java.gen.StdExtensions;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-import org.eclipse.xtext.xbase.lib.ComparableExtensions;
-import org.eclipse.xtext.xbase.lib.ObjectExtensions;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-import org.eclipse.xtext.xtend2.lib.StringConcatenation;
-
-@SuppressWarnings("all")
-public class DataClassGen {
-
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private StdExtensions stdExt;
-
- @Inject
- private ProcedureHelpers helpers;
-
- @Inject
- private ILogger logger;
-
- public void doGenerate(final Root root) {
- EList<DataClass> _usedDataClasses = root.getUsedDataClasses();
- for (DataClass dc : _usedDataClasses) {
- {
- String _generationTargetPath = this.stdExt.getGenerationTargetPath(dc);
- String _path = this.stdExt.getPath(dc);
- String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
- String path = _operator_plus;
- String _fileName = this.stdExt.getFileName(dc);
- String file = _fileName;
- String _operator_plus_1 = StringExtensions.operator_plus("generating DataClass implementation \'", file);
- String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'");
- String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path);
- String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'");
- this.logger.logInfo(_operator_plus_4);
- this.fileAccess.setOutputPath(path);
- StringConcatenation _generate = this.generate(root, dc);
- this.fileAccess.generateFile(file, _generate);
- }
- }
- }
-
- public StringConcatenation generate(final Root root, final DataClass dc) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("package ");
- String _package = this.stdExt.getPackage(dc);
- _builder.append(_package, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- EList<RoomModel> _referencedModels = root.getReferencedModels(dc);
- EList<RoomModel> models = _referencedModels;
- _builder.newLineIfNotEmpty();
- {
- for(RoomModel model : models) {
- _builder.append("import ");
- String _name = model.getName();
- _builder.append(_name, "");
- _builder.append(".*;");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- {
- EList<Import> _imports = dc.getImports();
- int _size = _imports.size();
- boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
- if (_operator_greaterThan) {
- _builder.append("// user imports");
- _builder.newLine();
- {
- EList<Import> _imports_1 = dc.getImports();
- for(Import imp : _imports_1) {
- _builder.append("import ");
- String _importedNamespace = imp.getImportedNamespace();
- _builder.append(_importedNamespace, "");
- _builder.append(".*;");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.newLine();
- _builder.append("public class ");
- String _name_1 = dc.getName();
- _builder.append(_name_1, "");
- {
- DataClass _base = dc.getBase();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
- if (_operator_notEquals) {
- _builder.append(" extends ");
- DataClass _base_1 = dc.getBase();
- String _name_2 = _base_1.getName();
- _builder.append(_name_2, "");
- }
- }
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- EList<Attribute> _attributes = dc.getAttributes();
- StringConcatenation _Attributes = this.helpers.Attributes(_attributes);
- _builder.append(_Attributes, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- EList<Attribute> _attributes_1 = dc.getAttributes();
- StringConcatenation _AttributeSettersGetters = this.helpers.AttributeSettersGetters(_attributes_1);
- _builder.append(_AttributeSettersGetters, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- EList<Operation> _operations = dc.getOperations();
- StringConcatenation _Operations = this.helpers.Operations(_operations);
- _builder.append(_Operations, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("// default constructor");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public ");
- String _name_3 = dc.getName();
- _builder.append(_name_3, " ");
- _builder.append("() {");
- _builder.newLineIfNotEmpty();
- {
- EList<Attribute> _attributes_2 = dc.getAttributes();
- for(Attribute a : _attributes_2) {
- {
- String _defaultValueLiteral = a.getDefaultValueLiteral();
- boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_defaultValueLiteral, null);
- if (_operator_notEquals_1) {
- _builder.append("\t\t");
- {
- int _size_1 = a.getSize();
- boolean _operator_equals = ObjectExtensions.operator_equals(((Integer)_size_1), ((Integer)0));
- if (_operator_equals) {
- String _name_4 = a.getName();
- _builder.append(_name_4, " ");
- _builder.append(" = ");
- String _defaultValueLiteral_1 = a.getDefaultValueLiteral();
- _builder.append(_defaultValueLiteral_1, " ");
- _builder.append(";");
- }
- }
- _builder.newLineIfNotEmpty();} else {
- Type _type = a.getType();
- DataClass _type_1 = _type.getType();
- boolean _operator_notEquals_2 = ObjectExtensions.operator_notEquals(_type_1, null);
- if (_operator_notEquals_2) {
- _builder.append("\t\t");
- String _name_5 = a.getName();
- _builder.append(_name_5, " ");
- _builder.append(" = new ");
- Type _type_2 = a.getType();
- DataClass _type_3 = _type_2.getType();
- String _name_6 = _type_3.getName();
- _builder.append(_name_6, " ");
- _builder.append("();");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- }
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("// deep copy");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public ");
- String _name_7 = dc.getName();
- _builder.append(_name_7, " ");
- _builder.append(" deepCopy() {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- String _name_8 = dc.getName();
- _builder.append(_name_8, " ");
- _builder.append(" copy = new ");
- String _name_9 = dc.getName();
- _builder.append(_name_9, " ");
- _builder.append("();");
- _builder.newLineIfNotEmpty();
- {
- EList<Attribute> _attributes_3 = dc.getAttributes();
- for(Attribute a_1 : _attributes_3) {
- {
- Type _type_4 = a_1.getType();
- DataClass _type_5 = _type_4.getType();
- boolean _operator_notEquals_3 = ObjectExtensions.operator_notEquals(_type_5, null);
- if (_operator_notEquals_3) {
- _builder.append("\t\t");
- _builder.append("copy.");
- String _name_10 = a_1.getName();
- _builder.append(_name_10, " ");
- _builder.append(" = ");
- String _name_11 = a_1.getName();
- _builder.append(_name_11, " ");
- _builder.append(".deepCopy();");
- _builder.newLineIfNotEmpty();} else {
- _builder.append("\t\t");
- {
- int _size_2 = a_1.getSize();
- boolean _operator_equals_1 = ObjectExtensions.operator_equals(((Integer)_size_2), ((Integer)0));
- if (_operator_equals_1) {
- _builder.append("copy.");
- String _name_12 = a_1.getName();
- _builder.append(_name_12, " ");
- _builder.append(" = ");
- String _name_13 = a_1.getName();
- _builder.append(_name_13, " ");
- _builder.append(";");} else {
- _builder.append("for (int i=0;i<");
- int _size_3 = a_1.getSize();
- _builder.append(_size_3, " ");
- _builder.append(";i++){copy.");
- String _name_14 = a_1.getName();
- _builder.append(_name_14, " ");
- _builder.append("[i]=");
- String _name_15 = a_1.getName();
- _builder.append(_name_15, " ");
- _builder.append("[i];}");
- }
- }
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.append("\t\t");
- _builder.append("return copy;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("};");
- _builder.newLine();
- return _builder;
- }
-} \ No newline at end of file
+package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.Import;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.Type;
+import org.eclipse.etrice.generator.base.ILogger;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.java.gen.ProcedureHelpers;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.xbase.lib.ComparableExtensions;
+import org.eclipse.xtext.xbase.lib.ObjectExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class DataClassGen {
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ @Inject
+ private StdExtensions stdExt;
+
+ @Inject
+ private ProcedureHelpers helpers;
+
+ @Inject
+ private ILogger logger;
+
+ public void doGenerate(final Root root) {
+ EList<DataClass> _usedDataClasses = root.getUsedDataClasses();
+ for (final DataClass dc : _usedDataClasses) {
+ {
+ String _generationTargetPath = this.stdExt.getGenerationTargetPath(dc);
+ String _path = this.stdExt.getPath(dc);
+ String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
+ String path = _operator_plus;
+ String _fileName = this.stdExt.getFileName(dc);
+ String file = _fileName;
+ String _operator_plus_1 = StringExtensions.operator_plus("generating DataClass implementation \'", file);
+ String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'");
+ String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path);
+ String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'");
+ this.logger.logInfo(_operator_plus_4);
+ this.fileAccess.setOutputPath(path);
+ StringConcatenation _generate = this.generate(root, dc);
+ this.fileAccess.generateFile(file, _generate);
+ }
+ }
+ }
+
+ public StringConcatenation generate(final Root root, final DataClass dc) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("package ");
+ String _package = this.stdExt.getPackage(dc);
+ _builder.append(_package, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ EList<RoomModel> _referencedModels = root.getReferencedModels(dc);
+ EList<RoomModel> models = _referencedModels;
+ _builder.newLineIfNotEmpty();
+ {
+ for(final RoomModel model : models) {
+ _builder.append("import ");
+ String _name = model.getName();
+ _builder.append(_name, "");
+ _builder.append(".*;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ {
+ EList<Import> _imports = dc.getImports();
+ int _size = _imports.size();
+ boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
+ if (_operator_greaterThan) {
+ _builder.append("// user imports");
+ _builder.newLine();
+ {
+ EList<Import> _imports_1 = dc.getImports();
+ for(final Import imp : _imports_1) {
+ _builder.append("import ");
+ String _importedNamespace = imp.getImportedNamespace();
+ _builder.append(_importedNamespace, "");
+ _builder.append(".*;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ _builder.newLine();
+ _builder.append("public class ");
+ String _name_1 = dc.getName();
+ _builder.append(_name_1, "");
+ {
+ DataClass _base = dc.getBase();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
+ if (_operator_notEquals) {
+ _builder.append(" extends ");
+ DataClass _base_1 = dc.getBase();
+ String _name_2 = _base_1.getName();
+ _builder.append(_name_2, "");
+ }
+ }
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ EList<Attribute> _attributes = dc.getAttributes();
+ StringConcatenation _Attributes = this.helpers.Attributes(_attributes);
+ _builder.append(_Attributes, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ EList<Attribute> _attributes_1 = dc.getAttributes();
+ StringConcatenation _AttributeSettersGetters = this.helpers.AttributeSettersGetters(_attributes_1);
+ _builder.append(_AttributeSettersGetters, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ EList<Operation> _operations = dc.getOperations();
+ StringConcatenation _Operations = this.helpers.Operations(_operations);
+ _builder.append(_Operations, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("// default constructor");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ String _name_3 = dc.getName();
+ _builder.append(_name_3, " ");
+ _builder.append("() {");
+ _builder.newLineIfNotEmpty();
+ {
+ EList<Attribute> _attributes_2 = dc.getAttributes();
+ for(final Attribute a : _attributes_2) {
+ {
+ String _defaultValueLiteral = a.getDefaultValueLiteral();
+ boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_defaultValueLiteral, null);
+ if (_operator_notEquals_1) {
+ _builder.append("\t\t");
+ {
+ int _size_1 = a.getSize();
+ boolean _operator_equals = ObjectExtensions.operator_equals(((Integer)_size_1), ((Integer)0));
+ if (_operator_equals) {
+ String _name_4 = a.getName();
+ _builder.append(_name_4, " ");
+ _builder.append(" = ");
+ String _defaultValueLiteral_1 = a.getDefaultValueLiteral();
+ _builder.append(_defaultValueLiteral_1, " ");
+ _builder.append(";");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ } else {
+ Type _type = a.getType();
+ DataClass _type_1 = _type.getType();
+ boolean _operator_notEquals_2 = ObjectExtensions.operator_notEquals(_type_1, null);
+ if (_operator_notEquals_2) {
+ _builder.append("\t\t");
+ String _name_5 = a.getName();
+ _builder.append(_name_5, " ");
+ _builder.append(" = new ");
+ Type _type_2 = a.getType();
+ DataClass _type_3 = _type_2.getType();
+ String _name_6 = _type_3.getName();
+ _builder.append(_name_6, " ");
+ _builder.append("();");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ }
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("// deep copy");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ String _name_7 = dc.getName();
+ _builder.append(_name_7, " ");
+ _builder.append(" deepCopy() {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ String _name_8 = dc.getName();
+ _builder.append(_name_8, " ");
+ _builder.append(" copy = new ");
+ String _name_9 = dc.getName();
+ _builder.append(_name_9, " ");
+ _builder.append("();");
+ _builder.newLineIfNotEmpty();
+ {
+ EList<Attribute> _attributes_3 = dc.getAttributes();
+ for(final Attribute a_1 : _attributes_3) {
+ {
+ Type _type_4 = a_1.getType();
+ DataClass _type_5 = _type_4.getType();
+ boolean _operator_notEquals_3 = ObjectExtensions.operator_notEquals(_type_5, null);
+ if (_operator_notEquals_3) {
+ _builder.append("\t\t");
+ _builder.append("copy.");
+ String _name_10 = a_1.getName();
+ _builder.append(_name_10, " ");
+ _builder.append(" = ");
+ String _name_11 = a_1.getName();
+ _builder.append(_name_11, " ");
+ _builder.append(".deepCopy();");
+ _builder.newLineIfNotEmpty();
+ } else {
+ _builder.append("\t\t");
+ {
+ int _size_2 = a_1.getSize();
+ boolean _operator_equals_1 = ObjectExtensions.operator_equals(((Integer)_size_2), ((Integer)0));
+ if (_operator_equals_1) {
+ _builder.append("copy.");
+ String _name_12 = a_1.getName();
+ _builder.append(_name_12, " ");
+ _builder.append(" = ");
+ String _name_13 = a_1.getName();
+ _builder.append(_name_13, " ");
+ _builder.append(";");
+ } else {
+ _builder.append("for (int i=0;i<");
+ int _size_3 = a_1.getSize();
+ _builder.append(_size_3, " ");
+ _builder.append(";i++){copy.");
+ String _name_14 = a_1.getName();
+ _builder.append(_name_14, " ");
+ _builder.append("[i]=");
+ String _name_15 = a_1.getName();
+ _builder.append(_name_15, " ");
+ _builder.append("[i];}");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("return copy;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("};");
+ _builder.newLine();
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.java
index ace9cac8b..d8d550da8 100644
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.java
+++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.java
@@ -1,133 +1,134 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.inject.Inject;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.SubSystemClass;
-import org.eclipse.etrice.generator.base.ILogger;
-import org.eclipse.etrice.generator.base.IRoomGenerator;
-import org.eclipse.etrice.generator.etricegen.ActorInstance;
-import org.eclipse.etrice.generator.etricegen.Root;
-import org.eclipse.etrice.generator.etricegen.StructureInstance;
-import org.eclipse.etrice.generator.etricegen.SubSystemInstance;
-import org.eclipse.etrice.generator.java.gen.StdExtensions;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-import org.eclipse.xtext.xtend2.lib.StringConcatenation;
-
-@SuppressWarnings("all")
-public class InstanceDiagramGen implements IRoomGenerator {
-
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private StdExtensions stdExt;
-
- @Inject
- private ILogger logger;
-
- public void doGenerate(final Root root) {
- EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances();
- for (SubSystemInstance sc : _subSystemInstances) {
- {
- SubSystemClass _subSystemClass = sc.getSubSystemClass();
- String _generationTargetPath = this.stdExt.getGenerationTargetPath(_subSystemClass);
- SubSystemClass _subSystemClass_1 = sc.getSubSystemClass();
- String _path = this.stdExt.getPath(_subSystemClass_1);
- String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
- String path = _operator_plus;
- SubSystemClass _subSystemClass_2 = sc.getSubSystemClass();
- String _name = _subSystemClass_2.getName();
- String _operator_plus_1 = StringExtensions.operator_plus(_name, ".dot");
- String file = _operator_plus_1;
- String _operator_plus_2 = StringExtensions.operator_plus("generating instance diagram: \'", file);
- String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, "\' in \'");
- String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, path);
- String _operator_plus_5 = StringExtensions.operator_plus(_operator_plus_4, "\'");
- this.logger.logInfo(_operator_plus_5);
- this.fileAccess.setOutputPath(path);
- SubSystemClass _subSystemClass_3 = sc.getSubSystemClass();
- StringConcatenation _generate = this.generate(root, sc, _subSystemClass_3);
- this.fileAccess.generateFile(file, _generate);
- }
- }
- }
-
- public StringConcatenation generate(final Root root, final SubSystemInstance ssc, final SubSystemClass cc) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("digraph ");
- String _name = ssc.getName();
- _builder.append(_name, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("rankdir=LR;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("node [shape=box];");
- _builder.newLine();
- _builder.append("\t");
- String _path = this.stdExt.getPath(cc);
- String _pathName = this.stdExt.getPathName(_path);
- _builder.append(_pathName, " ");
- _builder.append(" [label=\"");
- String _name_1 = cc.getName();
- _builder.append(_name_1, " ");
- _builder.append("\\n(");
- String _name_2 = ssc.getName();
- _builder.append(_name_2, " ");
- _builder.append(")\" style=filled color=yellow];");
- _builder.newLineIfNotEmpty();
- {
- EList<ActorInstance> _instances = ssc.getInstances();
- for(ActorInstance ai : _instances) {
- _builder.append("\t");
- StringConcatenation _instance = this.instance(ai);
- _builder.append(_instance, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("}");
- _builder.newLine();
- return _builder;
- }
-
- public StringConcatenation instance(final ActorInstance ai) {
- StringConcatenation _builder = new StringConcatenation();
- EObject _eContainer = ai.eContainer();
- StructureInstance parent = ((StructureInstance) _eContainer);
- _builder.newLineIfNotEmpty();
- String _path = ai.getPath();
- String _pathName = this.stdExt.getPathName(_path);
- _builder.append(_pathName, "");
- _builder.append(" [label=\"");
- String _name = ai.getName();
- _builder.append(_name, "");
- _builder.append("\\n(");
- ActorClass _actorClass = ai.getActorClass();
- String _name_1 = _actorClass.getName();
- _builder.append(_name_1, "");
- _builder.append(")\"];");
- _builder.newLineIfNotEmpty();
- String _path_1 = parent.getPath();
- String _pathName_1 = this.stdExt.getPathName(_path_1);
- _builder.append(_pathName_1, "");
- _builder.append(" -> ");
- String _path_2 = ai.getPath();
- String _pathName_2 = this.stdExt.getPathName(_path_2);
- _builder.append(_pathName_2, "");
- _builder.append("; ");
- _builder.newLineIfNotEmpty();
- {
- EList<ActorInstance> _instances = ai.getInstances();
- for(ActorInstance sub_ai : _instances) {
- StringConcatenation _instance = this.instance(sub_ai);
- _builder.append(_instance, "");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-} \ No newline at end of file
+package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.generator.base.ILogger;
+import org.eclipse.etrice.generator.base.IRoomGenerator;
+import org.eclipse.etrice.generator.etricegen.ActorInstance;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.etricegen.StructureInstance;
+import org.eclipse.etrice.generator.etricegen.SubSystemInstance;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class InstanceDiagramGen implements IRoomGenerator {
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ @Inject
+ private StdExtensions stdExt;
+
+ @Inject
+ private ILogger logger;
+
+ public void doGenerate(final Root root) {
+ EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances();
+ for (final SubSystemInstance sc : _subSystemInstances) {
+ {
+ SubSystemClass _subSystemClass = sc.getSubSystemClass();
+ String _generationTargetPath = this.stdExt.getGenerationTargetPath(_subSystemClass);
+ SubSystemClass _subSystemClass_1 = sc.getSubSystemClass();
+ String _path = this.stdExt.getPath(_subSystemClass_1);
+ String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
+ String path = _operator_plus;
+ SubSystemClass _subSystemClass_2 = sc.getSubSystemClass();
+ String _name = _subSystemClass_2.getName();
+ String _operator_plus_1 = StringExtensions.operator_plus(_name, ".dot");
+ String file = _operator_plus_1;
+ String _operator_plus_2 = StringExtensions.operator_plus("generating instance diagram: \'", file);
+ String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, "\' in \'");
+ String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, path);
+ String _operator_plus_5 = StringExtensions.operator_plus(_operator_plus_4, "\'");
+ this.logger.logInfo(_operator_plus_5);
+ this.fileAccess.setOutputPath(path);
+ SubSystemClass _subSystemClass_3 = sc.getSubSystemClass();
+ StringConcatenation _generate = this.generate(root, sc, _subSystemClass_3);
+ this.fileAccess.generateFile(file, _generate);
+ }
+ }
+ }
+
+ public StringConcatenation generate(final Root root, final SubSystemInstance ssc, final SubSystemClass cc) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("digraph ");
+ String _name = ssc.getName();
+ _builder.append(_name, "");
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("rankdir=LR;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("node [shape=box];");
+ _builder.newLine();
+ _builder.append("\t");
+ String _path = this.stdExt.getPath(cc);
+ String _pathName = this.stdExt.getPathName(_path);
+ _builder.append(_pathName, " ");
+ _builder.append(" [label=\"");
+ String _name_1 = cc.getName();
+ _builder.append(_name_1, " ");
+ _builder.append("\\n(");
+ String _name_2 = ssc.getName();
+ _builder.append(_name_2, " ");
+ _builder.append(")\" style=filled color=yellow];");
+ _builder.newLineIfNotEmpty();
+ {
+ EList<ActorInstance> _instances = ssc.getInstances();
+ for(final ActorInstance ai : _instances) {
+ _builder.append("\t");
+ StringConcatenation _instance = this.instance(ai);
+ _builder.append(_instance, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("}");
+ _builder.newLine();
+ return _builder;
+ }
+
+ public StringConcatenation instance(final ActorInstance ai) {
+ StringConcatenation _builder = new StringConcatenation();
+ EObject _eContainer = ai.eContainer();
+ StructureInstance parent = ((StructureInstance) _eContainer);
+ _builder.newLineIfNotEmpty();
+ String _path = ai.getPath();
+ String _pathName = this.stdExt.getPathName(_path);
+ _builder.append(_pathName, "");
+ _builder.append(" [label=\"");
+ String _name = ai.getName();
+ _builder.append(_name, "");
+ _builder.append("\\n(");
+ ActorClass _actorClass = ai.getActorClass();
+ String _name_1 = _actorClass.getName();
+ _builder.append(_name_1, "");
+ _builder.append(")\"];");
+ _builder.newLineIfNotEmpty();
+ String _path_1 = parent.getPath();
+ String _pathName_1 = this.stdExt.getPathName(_path_1);
+ _builder.append(_pathName_1, "");
+ _builder.append(" -> ");
+ String _path_2 = ai.getPath();
+ String _pathName_2 = this.stdExt.getPathName(_path_2);
+ _builder.append(_pathName_2, "");
+ _builder.append("; ");
+ _builder.newLineIfNotEmpty();
+ {
+ EList<ActorInstance> _instances = ai.getInstances();
+ for(final ActorInstance sub_ai : _instances) {
+ StringConcatenation _instance = this.instance(sub_ai);
+ _builder.append(_instance, "");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/MainGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/MainGen.java
index 1cea86fda..9a8780627 100644
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/MainGen.java
+++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/MainGen.java
@@ -1,64 +1,61 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.inject.Inject;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.etrice.generator.etricegen.Root;
-import org.eclipse.etrice.generator.java.gen.ActorClassGen;
-import org.eclipse.etrice.generator.java.gen.DataClassGen;
-import org.eclipse.etrice.generator.java.gen.PrepareFileSystem;
-import org.eclipse.etrice.generator.java.gen.ProtocolClassGen;
-import org.eclipse.etrice.generator.java.gen.SubSystemClassGen;
-import org.eclipse.etrice.generator.java.gen.SubSystemRunnerGen;
-import org.eclipse.xtext.generator.IFileSystemAccess;
-import org.eclipse.xtext.generator.IGenerator;
-import org.eclipse.xtext.xbase.lib.BooleanExtensions;
-
-@SuppressWarnings("all")
-public class MainGen implements IGenerator {
-
- @Inject
- private DataClassGen dataClassGen;
-
- @Inject
- private ProtocolClassGen protocolClassGen;
-
- @Inject
- private ActorClassGen actorClassGen;
-
- @Inject
- private SubSystemClassGen subsystemClassGen;
-
- @Inject
- private SubSystemRunnerGen subsystemRunnerGen;
-
- @Inject
- private PrepareFileSystem prepFS;
-
- public void doGenerate(final Resource resource, final IFileSystemAccess fsa) {
- {
- this.prepFS.prepare(resource);
- EList<EObject> _contents = resource.getContents();
- for (EObject e : _contents) {
- if ((e instanceof org.eclipse.etrice.generator.etricegen.Root)) {
- this.doGenerate(((Root) e));
- }
- }
- }
- }
-
- public void doGenerate(final Root e) {
- {
- this.dataClassGen.doGenerate(e);
- this.protocolClassGen.doGenerate(e);
- this.actorClassGen.doGenerate(e);
- this.subsystemClassGen.doGenerate(e);
- boolean _isLibrary = e.isLibrary();
- boolean _operator_not = BooleanExtensions.operator_not(_isLibrary);
- if (_operator_not) {
- this.subsystemRunnerGen.doGenerate(e);
- }
- }
- }
-} \ No newline at end of file
+package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.java.gen.ActorClassGen;
+import org.eclipse.etrice.generator.java.gen.DataClassGen;
+import org.eclipse.etrice.generator.java.gen.PrepareFileSystem;
+import org.eclipse.etrice.generator.java.gen.ProtocolClassGen;
+import org.eclipse.etrice.generator.java.gen.SubSystemClassGen;
+import org.eclipse.etrice.generator.java.gen.SubSystemRunnerGen;
+import org.eclipse.xtext.generator.IFileSystemAccess;
+import org.eclipse.xtext.generator.IGenerator;
+import org.eclipse.xtext.xbase.lib.BooleanExtensions;
+
+@SuppressWarnings("all")
+@Singleton
+public class MainGen implements IGenerator {
+ @Inject
+ private DataClassGen dataClassGen;
+
+ @Inject
+ private ProtocolClassGen protocolClassGen;
+
+ @Inject
+ private ActorClassGen actorClassGen;
+
+ @Inject
+ private SubSystemClassGen subsystemClassGen;
+
+ @Inject
+ private SubSystemRunnerGen subsystemRunnerGen;
+
+ @Inject
+ private PrepareFileSystem prepFS;
+
+ public void doGenerate(final Resource resource, final IFileSystemAccess fsa) {
+ this.prepFS.prepare(resource);
+ EList<EObject> _contents = resource.getContents();
+ for (final EObject e : _contents) {
+ if ((e instanceof Root)) {
+ this.doGenerate(((Root) e));
+ }
+ }
+ }
+
+ public void doGenerate(final Root e) {
+ this.dataClassGen.doGenerate(e);
+ this.protocolClassGen.doGenerate(e);
+ this.actorClassGen.doGenerate(e);
+ this.subsystemClassGen.doGenerate(e);
+ boolean _isLibrary = e.isLibrary();
+ boolean _operator_not = BooleanExtensions.operator_not(_isLibrary);
+ if (_operator_not) {
+ this.subsystemRunnerGen.doGenerate(e);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.java
index 8827e80ed..6b694ed7c 100644
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.java
+++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.java
@@ -1,86 +1,85 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.inject.Inject;
-import java.io.File;
-import java.util.HashSet;
-import java.util.Set;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.etrice.core.room.RoomModel;
-import org.eclipse.etrice.generator.base.ILogger;
-import org.eclipse.etrice.generator.etricegen.Root;
-import org.eclipse.etrice.generator.java.gen.StdExtensions;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-import org.eclipse.xtext.xtend2.lib.StringConcatenation;
-
-@SuppressWarnings("all")
-public class PrepareFileSystem {
-
- @Inject
- private StdExtensions stdExt;
-
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private ILogger logger;
-
- public void prepare(final Resource resource) {
- {
- HashSet<String> _hashSet = new HashSet<String>();
- Set<String> pathes = _hashSet;
- EList<EObject> _contents = resource.getContents();
- for (EObject e : _contents) {
- if ((e instanceof org.eclipse.etrice.generator.etricegen.Root)) {
- EList<RoomModel> _usedRoomModels = ((Root) e).getUsedRoomModels();
- for (RoomModel mdl : _usedRoomModels) {
- String _generationTargetPath = this.stdExt.getGenerationTargetPath(mdl);
- pathes.add(_generationTargetPath);
- }
- }
- }
- for (String path : pathes) {
- {
- String _operator_plus = StringExtensions.operator_plus("clearing ", path);
- this.logger.logInfo(_operator_plus);
- File _file = new File(path);
- File f = _file;
- this.eraseContents(f);
- this.fileAccess.setOutputPath(path);
- StringConcatenation _readmeText = this.readmeText();
- this.fileAccess.generateFile("readme.txt", _readmeText);
- }
- }
- }
- }
-
- public void eraseContents(final File f) {
- boolean _isDirectory = f.isDirectory();
- if (_isDirectory) {
- {
- File[] _listFiles = f.listFiles();
- File[] children = _listFiles;
- for (File child : children) {
- {
- this.eraseContents(child);
- child.delete();
- }
- }
- }
- }
- }
-
- public StringConcatenation readmeText() {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("This directory is an eTrice code generation target.");
- _builder.newLine();
- _builder.append("It will be erased every time the generator is executed.");
- _builder.newLine();
- _builder.newLine();
- _builder.append("DO NOT PLACE OTHER FILES HERE!");
- _builder.newLine();
- return _builder;
- }
-} \ No newline at end of file
+package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.generator.base.ILogger;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class PrepareFileSystem {
+ @Inject
+ private StdExtensions stdExt;
+
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ @Inject
+ private ILogger logger;
+
+ public void prepare(final Resource resource) {
+ HashSet<String> _hashSet = new HashSet<String>();
+ Set<String> pathes = _hashSet;
+ EList<EObject> _contents = resource.getContents();
+ for (final EObject e : _contents) {
+ if ((e instanceof Root)) {
+ EList<RoomModel> _usedRoomModels = ((Root) e).getUsedRoomModels();
+ for (final RoomModel mdl : _usedRoomModels) {
+ String _generationTargetPath = this.stdExt.getGenerationTargetPath(mdl);
+ pathes.add(_generationTargetPath);
+ }
+ }
+ }
+ for (final String path : pathes) {
+ {
+ String _operator_plus = StringExtensions.operator_plus("clearing ", path);
+ this.logger.logInfo(_operator_plus);
+ File _file = new File(path);
+ File f = _file;
+ this.eraseContents(f);
+ this.fileAccess.setOutputPath(path);
+ StringConcatenation _readmeText = this.readmeText();
+ this.fileAccess.generateFile("readme.txt", _readmeText);
+ }
+ }
+ }
+
+ public void eraseContents(final File f) {
+ boolean _isDirectory = f.isDirectory();
+ if (_isDirectory) {
+ {
+ File[] _listFiles = f.listFiles();
+ File[] children = _listFiles;
+ for (final File child : children) {
+ {
+ this.eraseContents(child);
+ child.delete();
+ }
+ }
+ }
+ }
+ }
+
+ public StringConcatenation readmeText() {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("This directory is an eTrice code generation target.");
+ _builder.newLine();
+ _builder.append("It will be erased every time the generator is executed.");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("DO NOT PLACE OTHER FILES HERE!");
+ _builder.newLine();
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.java
index afdb5bce7..8dc9f347c 100644
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.java
+++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.java
@@ -1,296 +1,303 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.inject.Inject;
-import java.util.List;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.DetailCode;
-import org.eclipse.etrice.core.room.ExternalPort;
-import org.eclipse.etrice.core.room.FreeType;
-import org.eclipse.etrice.core.room.FreeTypedID;
-import org.eclipse.etrice.core.room.Operation;
-import org.eclipse.etrice.core.room.Port;
-import org.eclipse.etrice.core.room.ProtocolClass;
-import org.eclipse.etrice.core.room.Type;
-import org.eclipse.etrice.generator.java.gen.StdExtensions;
-import org.eclipse.xtext.xbase.lib.ComparableExtensions;
-import org.eclipse.xtext.xbase.lib.ObjectExtensions;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-import org.eclipse.xtext.xtend2.lib.StringConcatenation;
-
-@SuppressWarnings("all")
-public class ProcedureHelpers {
-
- @Inject
- private StdExtensions stdExt;
-
- public StringConcatenation ActorClassPortIF(final ActorClass ac) {
- StringConcatenation _builder = new StringConcatenation();
- {
- EList<ExternalPort> _extPorts = ac.getExtPorts();
- int _size = _extPorts.size();
- boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
- if (_operator_greaterThan) {
- _builder.append("implements");
- }
- }
- _builder.newLineIfNotEmpty();
- {
- EList<ExternalPort> _extPorts_1 = ac.getExtPorts();
- for(ExternalPort ep : _extPorts_1) {
- _builder.append("public ");
- Port _ifport = ep.getIfport();
- ProtocolClass _protocol = _ifport.getProtocol();
- String _name = _protocol.getName();
- _builder.append(_name, "");
- {
- Port _ifport_1 = ep.getIfport();
- boolean _isConjugated = _ifport_1.isConjugated();
- boolean _operator_equals = ObjectExtensions.operator_equals(((Boolean)_isConjugated), ((Boolean)true));
- if (_operator_equals) {
- _builder.append("Conj");
- }
- }
- _builder.append("Port ");
- Port _ifport_2 = ep.getIfport();
- String _name_1 = _ifport_2.getName();
- _builder.append(_name_1, "");
- _builder.append(" = null; ");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- public StringConcatenation UserCode(final DetailCode dc) {
- StringConcatenation _builder = new StringConcatenation();
- {
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(dc, null);
- if (_operator_notEquals) {
- _builder.append("//--------------------- begin user code");
- _builder.newLine();
- _builder.append("\t");
- {
- EList<String> _commands = dc.getCommands();
- for(String command : _commands) {
- _builder.append("\t");
- _builder.append(command, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- }
- }
- _builder.append("//--------------------- end user code");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- public StringConcatenation Attributes(final List<Attribute> attribs) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("//--------------------- attributes");
- _builder.newLine();
- {
- for(Attribute attribute : attribs) {
- {
- int _size = attribute.getSize();
- boolean _operator_equals = ObjectExtensions.operator_equals(((Integer)_size), ((Integer)0));
- if (_operator_equals) {
- _builder.append("protected ");
- {
- Type _type = attribute.getType();
- String _ext = _type.getExt();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_ext, null);
- if (_operator_notEquals) {
- Type _type_1 = attribute.getType();
- String _ext_1 = _type_1.getExt();
- _builder.append(_ext_1, "");} else {
- Type _type_2 = attribute.getType();
- String _typeName = this.stdExt.typeName(_type_2);
- _builder.append(_typeName, "");
- }
- }
- _builder.append(" ");
- String _name = attribute.getName();
- _builder.append(_name, "");
- _builder.append(";");} else {
- _builder.append("protected ");
- Type _type_3 = attribute.getType();
- String _typeName_1 = this.stdExt.typeName(_type_3);
- _builder.append(_typeName_1, "");
- _builder.append("[] ");
- String _name_1 = attribute.getName();
- _builder.append(_name_1, "");
- {
- String _defaultValueLiteral = attribute.getDefaultValueLiteral();
- boolean _operator_equals_1 = ObjectExtensions.operator_equals(_defaultValueLiteral, null);
- if (_operator_equals_1) {
- _builder.append(" =new ");
- Type _type_4 = attribute.getType();
- String _typeName_2 = this.stdExt.typeName(_type_4);
- _builder.append(_typeName_2, "");
- _builder.append("[");
- int _size_1 = attribute.getSize();
- _builder.append(_size_1, "");
- _builder.append("];");} else {
- _builder.append(" = ");
- String _defaultValueLiteral_1 = attribute.getDefaultValueLiteral();
- _builder.append(_defaultValueLiteral_1, "");
- _builder.append(";");
- }
- }
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- return _builder;
- }
-
- public StringConcatenation AttributeSettersGetters(final List<Attribute> attribs) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("//--------------------- attribute setters and getters");
- _builder.newLine();
- {
- for(Attribute attribute : attribs) {
- _builder.append("public void set");
- String _name = attribute.getName();
- String _firstUpper = StringExtensions.toFirstUpper(_name);
- _builder.append(_firstUpper, "");
- _builder.append(" (");
- {
- Type _type = attribute.getType();
- String _ext = _type.getExt();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_ext, null);
- if (_operator_notEquals) {
- _builder.append(" ");
- Type _type_1 = attribute.getType();
- String _ext_1 = _type_1.getExt();
- _builder.append(_ext_1, "");} else {
- Type _type_2 = attribute.getType();
- String _typeName = this.stdExt.typeName(_type_2);
- _builder.append(_typeName, "");
- }
- }
- {
- int _size = attribute.getSize();
- boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(((Integer)_size), ((Integer)0));
- if (_operator_notEquals_1) {
- _builder.append("[]");
- }
- }
- _builder.append(" ");
- String _name_1 = attribute.getName();
- _builder.append(_name_1, "");
- _builder.append(") {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t ");
- _builder.append("this.");
- String _name_2 = attribute.getName();
- _builder.append(_name_2, " ");
- _builder.append(" = ");
- String _name_3 = attribute.getName();
- _builder.append(_name_3, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- _builder.append("public ");
- {
- Type _type_3 = attribute.getType();
- String _ext_2 = _type_3.getExt();
- boolean _operator_notEquals_2 = ObjectExtensions.operator_notEquals(_ext_2, null);
- if (_operator_notEquals_2) {
- _builder.append(" ");
- Type _type_4 = attribute.getType();
- String _ext_3 = _type_4.getExt();
- _builder.append(_ext_3, "");} else {
- Type _type_5 = attribute.getType();
- String _typeName_1 = this.stdExt.typeName(_type_5);
- _builder.append(_typeName_1, "");
- }
- }
- {
- int _size_1 = attribute.getSize();
- boolean _operator_notEquals_3 = ObjectExtensions.operator_notEquals(((Integer)_size_1), ((Integer)0));
- if (_operator_notEquals_3) {
- _builder.append("[]");
- }
- }
- _builder.append(" get");
- String _name_4 = attribute.getName();
- String _firstUpper_1 = StringExtensions.toFirstUpper(_name_4);
- _builder.append(_firstUpper_1, "");
- _builder.append(" () {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("return ");
- String _name_5 = attribute.getName();
- _builder.append(_name_5, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- }
- }
- _builder.newLineIfNotEmpty();
- return _builder;
- }
-
- public StringConcatenation Operations(final List<Operation> operations) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("//--------------------- operations");
- _builder.newLine();
- {
- for(Operation operation : operations) {
- _builder.append("public ");
- {
- FreeType _returntype = operation.getReturntype();
- boolean _operator_equals = ObjectExtensions.operator_equals(_returntype, null);
- if (_operator_equals) {
- _builder.append("void");} else {
- FreeType _returntype_1 = operation.getReturntype();
- String _freeTypeName = this.stdExt.freeTypeName(_returntype_1);
- _builder.append(_freeTypeName, "");
- }
- }
- _builder.append(" ");
- String _name = operation.getName();
- _builder.append(_name, "");
- _builder.append(" (");
- {
- EList<FreeTypedID> _arguments = operation.getArguments();
- boolean hasAnyElements = false;
- for(FreeTypedID argument : _arguments) {
- if (!hasAnyElements) {
- hasAnyElements = true;
- } else {
- _builder.appendImmediate(", ", "");
- }
- FreeType _type = argument.getType();
- String _freeTypeName_1 = this.stdExt.freeTypeName(_type);
- _builder.append(_freeTypeName_1, "");
- _builder.append(" ");
- String _name_1 = argument.getName();
- _builder.append(_name_1, "");
- }
- }
- _builder.append("){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- {
- DetailCode _detailCode = operation.getDetailCode();
- EList<String> _commands = _detailCode.getCommands();
- for(String command : _commands) {
- _builder.append("\t");
- _builder.append(command, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("}");
- }
- }
- _builder.newLineIfNotEmpty();
- return _builder;
- }
-} \ No newline at end of file
+package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.ExternalPort;
+import org.eclipse.etrice.core.room.FreeType;
+import org.eclipse.etrice.core.room.FreeTypedID;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.Type;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.xbase.lib.ComparableExtensions;
+import org.eclipse.xtext.xbase.lib.ObjectExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class ProcedureHelpers {
+ @Inject
+ private StdExtensions stdExt;
+
+ public StringConcatenation ActorClassPortIF(final ActorClass ac) {
+ StringConcatenation _builder = new StringConcatenation();
+ {
+ EList<ExternalPort> _extPorts = ac.getExtPorts();
+ int _size = _extPorts.size();
+ boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
+ if (_operator_greaterThan) {
+ _builder.append("implements");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ {
+ EList<ExternalPort> _extPorts_1 = ac.getExtPorts();
+ for(final ExternalPort ep : _extPorts_1) {
+ _builder.append("public ");
+ Port _ifport = ep.getIfport();
+ ProtocolClass _protocol = _ifport.getProtocol();
+ String _name = _protocol.getName();
+ _builder.append(_name, "");
+ {
+ Port _ifport_1 = ep.getIfport();
+ boolean _isConjugated = _ifport_1.isConjugated();
+ boolean _operator_equals = ObjectExtensions.operator_equals(((Boolean)_isConjugated), ((Boolean)true));
+ if (_operator_equals) {
+ _builder.append("Conj");
+ }
+ }
+ _builder.append("Port ");
+ Port _ifport_2 = ep.getIfport();
+ String _name_1 = _ifport_2.getName();
+ _builder.append(_name_1, "");
+ _builder.append(" = null; ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ return _builder;
+ }
+
+ public StringConcatenation UserCode(final DetailCode dc) {
+ StringConcatenation _builder = new StringConcatenation();
+ {
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(dc, null);
+ if (_operator_notEquals) {
+ _builder.append("//--------------------- begin user code");
+ _builder.newLine();
+ _builder.append("\t");
+ {
+ EList<String> _commands = dc.getCommands();
+ for(final String command : _commands) {
+ _builder.append("\t");
+ _builder.append(command, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ }
+ }
+ _builder.append("//--------------------- end user code");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ return _builder;
+ }
+
+ public StringConcatenation Attributes(final List<Attribute> attribs) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("//--------------------- attributes");
+ _builder.newLine();
+ {
+ for(final Attribute attribute : attribs) {
+ {
+ int _size = attribute.getSize();
+ boolean _operator_equals = ObjectExtensions.operator_equals(((Integer)_size), ((Integer)0));
+ if (_operator_equals) {
+ _builder.append("protected ");
+ {
+ Type _type = attribute.getType();
+ String _ext = _type.getExt();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_ext, null);
+ if (_operator_notEquals) {
+ Type _type_1 = attribute.getType();
+ String _ext_1 = _type_1.getExt();
+ _builder.append(_ext_1, "");
+ } else {
+ Type _type_2 = attribute.getType();
+ String _typeName = this.stdExt.typeName(_type_2);
+ _builder.append(_typeName, "");
+ }
+ }
+ _builder.append(" ");
+ String _name = attribute.getName();
+ _builder.append(_name, "");
+ _builder.append(";");
+ } else {
+ _builder.append("protected ");
+ Type _type_3 = attribute.getType();
+ String _typeName_1 = this.stdExt.typeName(_type_3);
+ _builder.append(_typeName_1, "");
+ _builder.append("[] ");
+ String _name_1 = attribute.getName();
+ _builder.append(_name_1, "");
+ {
+ String _defaultValueLiteral = attribute.getDefaultValueLiteral();
+ boolean _operator_equals_1 = ObjectExtensions.operator_equals(_defaultValueLiteral, null);
+ if (_operator_equals_1) {
+ _builder.append(" =new ");
+ Type _type_4 = attribute.getType();
+ String _typeName_2 = this.stdExt.typeName(_type_4);
+ _builder.append(_typeName_2, "");
+ _builder.append("[");
+ int _size_1 = attribute.getSize();
+ _builder.append(_size_1, "");
+ _builder.append("];");
+ } else {
+ _builder.append(" = ");
+ String _defaultValueLiteral_1 = attribute.getDefaultValueLiteral();
+ _builder.append(_defaultValueLiteral_1, "");
+ _builder.append(";");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ return _builder;
+ }
+
+ public StringConcatenation AttributeSettersGetters(final List<Attribute> attribs) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("//--------------------- attribute setters and getters");
+ _builder.newLine();
+ {
+ for(final Attribute attribute : attribs) {
+ _builder.append("public void set");
+ String _name = attribute.getName();
+ String _firstUpper = StringExtensions.toFirstUpper(_name);
+ _builder.append(_firstUpper, "");
+ _builder.append(" (");
+ {
+ Type _type = attribute.getType();
+ String _ext = _type.getExt();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_ext, null);
+ if (_operator_notEquals) {
+ _builder.append(" ");
+ Type _type_1 = attribute.getType();
+ String _ext_1 = _type_1.getExt();
+ _builder.append(_ext_1, "");
+ } else {
+ Type _type_2 = attribute.getType();
+ String _typeName = this.stdExt.typeName(_type_2);
+ _builder.append(_typeName, "");
+ }
+ }
+ {
+ int _size = attribute.getSize();
+ boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(((Integer)_size), ((Integer)0));
+ if (_operator_notEquals_1) {
+ _builder.append("[]");
+ }
+ }
+ _builder.append(" ");
+ String _name_1 = attribute.getName();
+ _builder.append(_name_1, "");
+ _builder.append(") {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t ");
+ _builder.append("this.");
+ String _name_2 = attribute.getName();
+ _builder.append(_name_2, " ");
+ _builder.append(" = ");
+ String _name_3 = attribute.getName();
+ _builder.append(_name_3, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("public ");
+ {
+ Type _type_3 = attribute.getType();
+ String _ext_2 = _type_3.getExt();
+ boolean _operator_notEquals_2 = ObjectExtensions.operator_notEquals(_ext_2, null);
+ if (_operator_notEquals_2) {
+ _builder.append(" ");
+ Type _type_4 = attribute.getType();
+ String _ext_3 = _type_4.getExt();
+ _builder.append(_ext_3, "");
+ } else {
+ Type _type_5 = attribute.getType();
+ String _typeName_1 = this.stdExt.typeName(_type_5);
+ _builder.append(_typeName_1, "");
+ }
+ }
+ {
+ int _size_1 = attribute.getSize();
+ boolean _operator_notEquals_3 = ObjectExtensions.operator_notEquals(((Integer)_size_1), ((Integer)0));
+ if (_operator_notEquals_3) {
+ _builder.append("[]");
+ }
+ }
+ _builder.append(" get");
+ String _name_4 = attribute.getName();
+ String _firstUpper_1 = StringExtensions.toFirstUpper(_name_4);
+ _builder.append(_firstUpper_1, "");
+ _builder.append(" () {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("return ");
+ String _name_5 = attribute.getName();
+ _builder.append(_name_5, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ return _builder;
+ }
+
+ public StringConcatenation Operations(final List<Operation> operations) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("//--------------------- operations");
+ _builder.newLine();
+ {
+ for(final Operation operation : operations) {
+ _builder.append("public ");
+ {
+ FreeType _returntype = operation.getReturntype();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_returntype, null);
+ if (_operator_equals) {
+ _builder.append("void");
+ } else {
+ FreeType _returntype_1 = operation.getReturntype();
+ String _freeTypeName = this.stdExt.freeTypeName(_returntype_1);
+ _builder.append(_freeTypeName, "");
+ }
+ }
+ _builder.append(" ");
+ String _name = operation.getName();
+ _builder.append(_name, "");
+ _builder.append(" (");
+ {
+ EList<FreeTypedID> _arguments = operation.getArguments();
+ boolean hasAnyElements = false;
+ for(final FreeTypedID argument : _arguments) {
+ if (!hasAnyElements) {
+ hasAnyElements = true;
+ } else {
+ _builder.appendImmediate(", ", "");
+ }
+ FreeType _type = argument.getType();
+ String _freeTypeName_1 = this.stdExt.freeTypeName(_type);
+ _builder.append(_freeTypeName_1, "");
+ _builder.append(" ");
+ String _name_1 = argument.getName();
+ _builder.append(_name_1, "");
+ }
+ }
+ _builder.append("){");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ {
+ DetailCode _detailCode = operation.getDetailCode();
+ EList<String> _commands = _detailCode.getCommands();
+ for(final String command : _commands) {
+ _builder.append("\t");
+ _builder.append(command, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("}");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java
index 49188f100..276f36a36 100644
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java
+++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java
@@ -1,799 +1,804 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.inject.Inject;
-import java.util.List;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.DataClass;
-import org.eclipse.etrice.core.room.DetailCode;
-import org.eclipse.etrice.core.room.Message;
-import org.eclipse.etrice.core.room.MessageHandler;
-import org.eclipse.etrice.core.room.Operation;
-import org.eclipse.etrice.core.room.PortClass;
-import org.eclipse.etrice.core.room.ProtocolClass;
-import org.eclipse.etrice.core.room.RoomModel;
-import org.eclipse.etrice.core.room.Type;
-import org.eclipse.etrice.core.room.TypedID;
-import org.eclipse.etrice.generator.base.ILogger;
-import org.eclipse.etrice.generator.etricegen.Root;
-import org.eclipse.etrice.generator.java.gen.ProcedureHelpers;
-import org.eclipse.etrice.generator.java.gen.StdExtensions;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-import org.eclipse.xtext.xbase.lib.BooleanExtensions;
-import org.eclipse.xtext.xbase.lib.IntegerExtensions;
-import org.eclipse.xtext.xbase.lib.ObjectExtensions;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-import org.eclipse.xtext.xtend2.lib.StringConcatenation;
-
-@SuppressWarnings("all")
-public class ProtocolClassGen {
-
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private StdExtensions stdExt;
-
- @Inject
- private ProcedureHelpers helpers;
-
- @Inject
- private ILogger logger;
-
- public void doGenerate(final Root root) {
- EList<ProtocolClass> _usedProtocolClasses = root.getUsedProtocolClasses();
- for (ProtocolClass pc : _usedProtocolClasses) {
- {
- String _generationTargetPath = this.stdExt.getGenerationTargetPath(pc);
- String _path = this.stdExt.getPath(pc);
- String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
- String path = _operator_plus;
- String _fileName = this.stdExt.getFileName(pc);
- String file = _fileName;
- String _operator_plus_1 = StringExtensions.operator_plus("generating ProtocolClass implementation \'", file);
- String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'");
- String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path);
- String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'");
- this.logger.logInfo(_operator_plus_4);
- this.fileAccess.setOutputPath(path);
- StringConcatenation _generate = this.generate(root, pc);
- this.fileAccess.generateFile(file, _generate);
- }
- }
- }
-
- public StringConcatenation generate(final Root root, final ProtocolClass pc) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("package ");
- String _package = this.stdExt.getPackage(pc);
- _builder.append(_package, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("import java.util.ArrayList;");
- _builder.newLine();
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.messaging.Address;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.messaging.Message;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.modelbase.*;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.debugging.DebuggingService;");
- _builder.newLine();
- _builder.newLine();
- DetailCode _userCode1 = pc.getUserCode1();
- StringConcatenation _UserCode = this.helpers.UserCode(_userCode1);
- _builder.append(_UserCode, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- EList<RoomModel> _referencedModels = root.getReferencedModels(pc);
- EList<RoomModel> models = _referencedModels;
- _builder.newLineIfNotEmpty();
- {
- for(RoomModel model : models) {
- _builder.append("import ");
- String _name = model.getName();
- _builder.append(_name, "");
- _builder.append(".*;");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.append("public class ");
- String _name_1 = pc.getName();
- _builder.append(_name_1, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("// message IDs");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("// TODO: separate class for message IDs: class MSG{public static volatile int MSG_MIN = 0; ...} -> better structure");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("// error if msgID <= MSG_MIN");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public static final int MSG_MIN = 0; ");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("//IDs for outgoing messages");
- _builder.newLine();
- {
- List<Message> _allOutgoingMessages = this.stdExt.getAllOutgoingMessages(pc);
- for(Message message : _allOutgoingMessages) {
- _builder.append("\t");
- _builder.append("public static final int OUT_");
- String _name_2 = message.getName();
- _builder.append(_name_2, " ");
- _builder.append(" = ");
- List<Message> _allOutgoingMessages_1 = this.stdExt.getAllOutgoingMessages(pc);
- int _indexOf = _allOutgoingMessages_1.indexOf(message);
- int _operator_plus = IntegerExtensions.operator_plus(((Integer)_indexOf), ((Integer)1));
- _builder.append(_operator_plus, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("//IDs for incoming messages");
- _builder.newLine();
- {
- List<Message> _allIncomingMessages = this.stdExt.getAllIncomingMessages(pc);
- for(Message message_1 : _allIncomingMessages) {
- _builder.append("\t");
- _builder.append("public static final int IN_");
- String _name_3 = message_1.getName();
- _builder.append(_name_3, " ");
- _builder.append(" = ");
- List<Message> _allIncomingMessages_1 = this.stdExt.getAllIncomingMessages(pc);
- int _indexOf_1 = _allIncomingMessages_1.indexOf(message_1);
- List<Message> _allOutgoingMessages_2 = this.stdExt.getAllOutgoingMessages(pc);
- int _size = _allOutgoingMessages_2.size();
- int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_indexOf_1), ((Integer)_size));
- int _operator_plus_2 = IntegerExtensions.operator_plus(((Integer)_operator_plus_1), ((Integer)1));
- _builder.append(_operator_plus_2, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("//error if msgID >= MSG_MAX");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public static final int MSG_MAX = ");
- List<Message> _allOutgoingMessages_3 = this.stdExt.getAllOutgoingMessages(pc);
- int _size_1 = _allOutgoingMessages_3.size();
- List<Message> _allIncomingMessages_2 = this.stdExt.getAllIncomingMessages(pc);
- int _size_2 = _allIncomingMessages_2.size();
- int _operator_plus_3 = IntegerExtensions.operator_plus(((Integer)_size_1), ((Integer)_size_2));
- int _operator_plus_4 = IntegerExtensions.operator_plus(((Integer)_operator_plus_3), ((Integer)1));
- _builder.append(_operator_plus_4, " ");
- _builder.append("; ");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- DetailCode _userCode2 = pc.getUserCode2();
- StringConcatenation _UserCode_1 = this.helpers.UserCode(_userCode2);
- _builder.append(_UserCode_1, " ");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("private static String messageStrings[] = {\"MIN\", ");
- {
- List<Message> _allOutgoingMessages_4 = this.stdExt.getAllOutgoingMessages(pc);
- for(Message m : _allOutgoingMessages_4) {
- _builder.append("\"");
- String _name_4 = m.getName();
- _builder.append(_name_4, " ");
- _builder.append("\",");
- }
- }
- _builder.append(" ");
- {
- List<Message> _allIncomingMessages_3 = this.stdExt.getAllIncomingMessages(pc);
- for(Message m_1 : _allIncomingMessages_3) {
- _builder.append("\"");
- String _name_5 = m_1.getName();
- _builder.append(_name_5, " ");
- _builder.append("\",");
- }
- }
- _builder.append("\"MAX\"};");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public String getMessageString(int msg_id) {");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("if (msg_id<0 || msg_id>MSG_MAX+1){");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("// id out of range");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("return \"Message ID out of range\";");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("else{");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("return messageStrings[msg_id];");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t");
- StringConcatenation _portClass = this.portClass(pc, ((Boolean)false));
- _builder.append(_portClass, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- StringConcatenation _portClass_1 = this.portClass(pc, ((Boolean)true));
- _builder.append(_portClass_1, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- return _builder;
- }
-
- public StringConcatenation portClass(final ProtocolClass pc, final Boolean conj) {
- StringConcatenation _builder = new StringConcatenation();
- String _portClassName = this.stdExt.getPortClassName(pc, conj);
- String name = _portClassName;
- _builder.newLineIfNotEmpty();
- PortClass _portClass = this.stdExt.getPortClass(pc, conj);
- PortClass pclass = _portClass;
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("// port class");
- _builder.newLine();
- _builder.append("static public class ");
- _builder.append(name, "");
- _builder.append(" extends PortBase {");
- _builder.newLineIfNotEmpty();
- {
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(pclass, null);
- if (_operator_notEquals) {
- _builder.append("\t");
- DetailCode _userCode = pclass.getUserCode();
- StringConcatenation _UserCode = this.helpers.UserCode(_userCode);
- _builder.append(_UserCode, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("// constructors");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public ");
- _builder.append(name, " ");
- _builder.append("(IEventReceiver actor, String name, int localId, Address addr, Address peerAddress) {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("super(actor, name, localId, 0, addr, peerAddress);");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("DebuggingService.getInstance().addPortInstance(this);");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public ");
- _builder.append(name, " ");
- _builder.append("(IEventReceiver actor, String name, int localId, int idx, Address addr, Address peerAddress) {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("super(actor, name, localId, idx, addr, peerAddress);");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("DebuggingService.getInstance().addPortInstance(this);");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("@Override");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public void receive(Message m) {");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("if (!(m instanceof EventMessage))");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("return;");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("EventMessage msg = (EventMessage) m;");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("if (msg.getEvtId() <= 0 || msg.getEvtId() >= MSG_MAX)");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("System.out.println(\"unknown\");");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("else {");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("if (messageStrings[msg.getEvtId()] != \"timerTick\"){");
- _builder.newLine();
- _builder.append("\t\t\t\t\t");
- _builder.append("// TODOTS: model switch for activation");
- _builder.newLine();
- _builder.append("\t\t\t\t\t");
- _builder.append("DebuggingService.getInstance().addMessageAsyncIn(getPeerAddress(), getAddress(), messageStrings[msg.getEvtId()]);");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("}");
- _builder.newLine();
- {
- boolean _handlesReceive = this.stdExt.handlesReceive(pc, conj);
- if (_handlesReceive) {
- _builder.append("\t\t\t\t");
- _builder.append("switch (msg.getEvtId()) {");
- _builder.newLine();
- {
- List<MessageHandler> _receiveHandlers = this.stdExt.getReceiveHandlers(pc, conj);
- for(MessageHandler hdlr : _receiveHandlers) {
- _builder.append("\t\t\t\t");
- _builder.append("\t");
- _builder.append("case ");
- Message _msg = hdlr.getMsg();
- String _codeName = this.stdExt.getCodeName(_msg);
- _builder.append(_codeName, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t\t");
- _builder.append("\t");
- _builder.append("{");
- _builder.newLine();
- {
- DetailCode _detailCode = hdlr.getDetailCode();
- EList<String> _commands = _detailCode.getCommands();
- for(String command : _commands) {
- _builder.append("\t\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append(command, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t\t\t");
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("\t");
- _builder.append("break;");
- _builder.newLine();
- }
- }
- _builder.append("\t\t\t\t");
- _builder.append("\t");
- _builder.append("default:");
- _builder.newLine();
- }
- }
- _builder.append("\t\t\t\t\t");
- _builder.append("if (msg instanceof EventWithDataMessage)");
- _builder.newLine();
- _builder.append("\t\t\t\t\t\t");
- _builder.append("getActor().receiveEvent(this, msg.getEvtId(), ((EventWithDataMessage)msg).getData());");
- _builder.newLine();
- _builder.append("\t\t\t\t\t");
- _builder.append("else");
- _builder.newLine();
- _builder.append("\t\t\t\t\t\t");
- _builder.append("getActor().receiveEvent(this, msg.getEvtId(), null);");
- _builder.newLine();
- {
- boolean _handlesReceive_1 = this.stdExt.handlesReceive(pc, conj);
- if (_handlesReceive_1) {
- _builder.append("\t\t\t\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- _builder.append("\t\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- {
- boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(pclass, null);
- if (_operator_notEquals_1) {
- _builder.append("\t");
- EList<Attribute> _attributes = pclass.getAttributes();
- StringConcatenation _Attributes = this.helpers.Attributes(_attributes);
- _builder.append(_Attributes, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- EList<Operation> _operations = pclass.getOperations();
- StringConcatenation _Operations = this.helpers.Operations(_operations);
- _builder.append(_Operations, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("// sent messages");
- _builder.newLine();
- {
- List<Message> _outgoing = this.stdExt.getOutgoing(pc, conj);
- for(Message m : _outgoing) {
- _builder.append("\t");
- StringConcatenation _sendMessage = this.sendMessage(m, conj);
- _builder.append(_sendMessage, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("// replicated port class");
- _builder.newLine();
- _builder.append("static public class ");
- _builder.append(name, "");
- _builder.append("Repl {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("private ArrayList<");
- _builder.append(name, " ");
- _builder.append("> ports;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("private int replication;");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public ");
- _builder.append(name, " ");
- _builder.append("Repl(IEventReceiver actor, String name, int localId, Address[] addr,");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("Address[] peerAddress) {");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("replication = addr.length;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("ports = new ArrayList<");
- String _name = pc.getName();
- _builder.append(_name, " ");
- _builder.append(".");
- _builder.append(name, " ");
- _builder.append(">(replication);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("for (int i=0; i<replication; ++i) {");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("ports.add(new ");
- _builder.append(name, " ");
- _builder.append("(");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t\t\t");
- _builder.append("actor, name+i, localId, i, addr[i], peerAddress[i]));");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public int getReplication() {");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("return replication;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public int getIndexOf(InterfaceItemBase ifitem){");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("return ifitem.getIdx();");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public ");
- _builder.append(name, " ");
- _builder.append(" get(int i) {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("return ports.get(i);");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- {
- if (conj) {
- _builder.append("\t");
- _builder.append("// incoming messages");
- _builder.newLine();
- {
- List<Message> _allIncomingMessages = this.stdExt.getAllIncomingMessages(pc);
- for(Message m_1 : _allIncomingMessages) {
- _builder.append("\t");
- StringConcatenation _messageSignature = this.messageSignature(m_1);
- _builder.append(_messageSignature, " ");
- _builder.append("{");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("for (int i=0; i<replication; ++i) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t\t");
- _builder.append("ports.get(i).");
- StringConcatenation _messageCall = this.messageCall(m_1);
- _builder.append(_messageCall, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- }
- }} else {
- _builder.append("\t");
- _builder.append("// outgoing messages");
- _builder.newLine();
- {
- List<Message> _allOutgoingMessages = this.stdExt.getAllOutgoingMessages(pc);
- for(Message m_2 : _allOutgoingMessages) {
- _builder.append("\t");
- StringConcatenation _messageSignature_1 = this.messageSignature(m_2);
- _builder.append(_messageSignature_1, " ");
- _builder.append("{");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("for (int i=0; i<replication; ++i) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t\t");
- _builder.append("ports.get(i).");
- StringConcatenation _messageCall_1 = this.messageCall(m_2);
- _builder.append(_messageCall_1, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- }
- }
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("// interface for port class");
- _builder.newLine();
- _builder.append("public interface I");
- _builder.append(name, "");
- _builder.append("{");
- _builder.newLineIfNotEmpty();
- {
- if (conj) {
- _builder.append("\t");
- _builder.append("// outgoing messages");
- _builder.newLine();
- _builder.append("\t");
- {
- List<Message> _allOutgoingMessages_1 = this.stdExt.getAllOutgoingMessages(pc);
- for(Message m_3 : _allOutgoingMessages_1) {
- _builder.append(" ");
- StringConcatenation _messageSignature_2 = this.messageSignature(m_3);
- _builder.append(_messageSignature_2, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }} else {
- _builder.append("\t");
- _builder.append("// incoming messages");
- _builder.newLine();
- _builder.append("\t");
- {
- List<Message> _allIncomingMessages_1 = this.stdExt.getAllIncomingMessages(pc);
- for(Message m_4 : _allIncomingMessages_1) {
- _builder.append(" ");
- StringConcatenation _messageSignature_3 = this.messageSignature(m_4);
- _builder.append(_messageSignature_3, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.append("}");
- _builder.newLine();
- return _builder;
- }
-
- public StringConcatenation messageSignature(final Message m) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("public void ");
- String _name = m.getName();
- _builder.append(_name, "");
- _builder.append(" (");
- {
- TypedID _data = m.getData();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_data, null);
- if (_operator_notEquals) {
- TypedID _data_1 = m.getData();
- Type _type = _data_1.getType();
- String _typeName = this.stdExt.typeName(_type);
- _builder.append(_typeName, "");
- _builder.append(" ");
- TypedID _data_2 = m.getData();
- String _name_1 = _data_2.getName();
- _builder.append(_name_1, "");
- }
- }
- _builder.append(")");
- _builder.newLineIfNotEmpty();
- return _builder;
- }
-
- public StringConcatenation messageCall(final Message m) {
- StringConcatenation _builder = new StringConcatenation();
- String _name = m.getName();
- _builder.append(_name, "");
- _builder.append("(");
- {
- TypedID _data = m.getData();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_data, null);
- if (_operator_notEquals) {
- _builder.append(" ");
- TypedID _data_1 = m.getData();
- String _name_1 = _data_1.getName();
- _builder.append(_name_1, "");
- }
- }
- _builder.append(")");
- _builder.newLineIfNotEmpty();
- return _builder;
- }
-
- public StringConcatenation sendMessage(final Message m, final boolean conj) {
- StringConcatenation _builder = new StringConcatenation();
- String _xifexpression = null;
- if (conj) {
- _xifexpression = "IN";
- } else {
- _xifexpression = "OUT";
- }
- String dir = _xifexpression;
- _builder.newLineIfNotEmpty();
- MessageHandler _sendHandler = this.stdExt.getSendHandler(m, conj);
- MessageHandler hdlr = _sendHandler;
- _builder.newLineIfNotEmpty();
- StringConcatenation _messageSignature = this.messageSignature(m);
- _builder.append(_messageSignature, "");
- _builder.append("{");
- _builder.newLineIfNotEmpty();
- {
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(hdlr, null);
- if (_operator_notEquals) {
- _builder.append("\t");
- {
- DetailCode _detailCode = hdlr.getDetailCode();
- EList<String> _commands = _detailCode.getCommands();
- for(String command : _commands) {
- _builder.append("\t");
- _builder.append(command, " ");
- _builder.newLineIfNotEmpty();
- }
- }} else {
- _builder.append("\t");
- _builder.append("if (messageStrings[ ");
- _builder.append(dir, " ");
- _builder.append("_");
- String _name = m.getName();
- _builder.append(_name, " ");
- _builder.append("] != \"timerTick\"){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("// TODOTS: model switch for activation");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[");
- _builder.append(dir, " ");
- _builder.append("_");
- String _name_1 = m.getName();
- _builder.append(_name_1, " ");
- _builder.append("]);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("if (getPeerAddress()!=null)");
- _builder.newLine();
- _builder.append("\t");
- {
- TypedID _data = m.getData();
- boolean _operator_equals = ObjectExtensions.operator_equals(_data, null);
- if (_operator_equals) {
- _builder.append("getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), ");
- _builder.append(dir, " ");
- _builder.append("_");
- String _name_2 = m.getName();
- _builder.append(_name_2, " ");
- _builder.append("));");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");} else {
- _builder.append("getPeerMsgReceiver().receive(new EventWithDataMessage(getPeerAddress(), ");
- _builder.append(dir, " ");
- _builder.append("_");
- String _name_3 = m.getName();
- _builder.append(_name_3, " ");
- _builder.append(", ");
- TypedID _data_1 = m.getData();
- String _name_4 = _data_1.getName();
- _builder.append(_name_4, " ");
- {
- boolean _operator_and = false;
- TypedID _data_2 = m.getData();
- Type _type = _data_2.getType();
- boolean _isRef = _type.isRef();
- boolean _operator_not = BooleanExtensions.operator_not(_isRef);
- if (!_operator_not) {
- _operator_and = false;
- } else {
- TypedID _data_3 = m.getData();
- Type _type_1 = _data_3.getType();
- DataClass _type_2 = _type_1.getType();
- boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_type_2, null);
- _operator_and = BooleanExtensions.operator_and(_operator_not, _operator_notEquals_1);
- }
- if (_operator_and) {
- _builder.append(".deepCopy()");
- }
- }
- _builder.append("));");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.append("}");
- _builder.newLine();
- return _builder;
- }
-} \ No newline at end of file
+package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.MessageHandler;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.PortClass;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.Type;
+import org.eclipse.etrice.core.room.TypedID;
+import org.eclipse.etrice.generator.base.ILogger;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.java.gen.ProcedureHelpers;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.xbase.lib.BooleanExtensions;
+import org.eclipse.xtext.xbase.lib.IntegerExtensions;
+import org.eclipse.xtext.xbase.lib.ObjectExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class ProtocolClassGen {
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ @Inject
+ private StdExtensions stdExt;
+
+ @Inject
+ private ProcedureHelpers helpers;
+
+ @Inject
+ private ILogger logger;
+
+ public void doGenerate(final Root root) {
+ EList<ProtocolClass> _usedProtocolClasses = root.getUsedProtocolClasses();
+ for (final ProtocolClass pc : _usedProtocolClasses) {
+ {
+ String _generationTargetPath = this.stdExt.getGenerationTargetPath(pc);
+ String _path = this.stdExt.getPath(pc);
+ String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
+ String path = _operator_plus;
+ String _fileName = this.stdExt.getFileName(pc);
+ String file = _fileName;
+ String _operator_plus_1 = StringExtensions.operator_plus("generating ProtocolClass implementation \'", file);
+ String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'");
+ String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path);
+ String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'");
+ this.logger.logInfo(_operator_plus_4);
+ this.fileAccess.setOutputPath(path);
+ StringConcatenation _generate = this.generate(root, pc);
+ this.fileAccess.generateFile(file, _generate);
+ }
+ }
+ }
+
+ public StringConcatenation generate(final Root root, final ProtocolClass pc) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("package ");
+ String _package = this.stdExt.getPackage(pc);
+ _builder.append(_package, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("import java.util.ArrayList;");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.Address;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.Message;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.*;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.debugging.DebuggingService;");
+ _builder.newLine();
+ _builder.newLine();
+ DetailCode _userCode1 = pc.getUserCode1();
+ StringConcatenation _UserCode = this.helpers.UserCode(_userCode1);
+ _builder.append(_UserCode, "");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ EList<RoomModel> _referencedModels = root.getReferencedModels(pc);
+ EList<RoomModel> models = _referencedModels;
+ _builder.newLineIfNotEmpty();
+ {
+ for(final RoomModel model : models) {
+ _builder.append("import ");
+ String _name = model.getName();
+ _builder.append(_name, "");
+ _builder.append(".*;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ _builder.append("public class ");
+ String _name_1 = pc.getName();
+ _builder.append(_name_1, "");
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("// message IDs");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("// TODO: separate class for message IDs: class MSG{public static volatile int MSG_MIN = 0; ...} -> better structure");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("// error if msgID <= MSG_MIN");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public static final int MSG_MIN = 0; ");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("//IDs for outgoing messages");
+ _builder.newLine();
+ {
+ List<Message> _allOutgoingMessages = this.stdExt.getAllOutgoingMessages(pc);
+ for(final Message message : _allOutgoingMessages) {
+ _builder.append("\t");
+ _builder.append("public static final int OUT_");
+ String _name_2 = message.getName();
+ _builder.append(_name_2, " ");
+ _builder.append(" = ");
+ List<Message> _allOutgoingMessages_1 = this.stdExt.getAllOutgoingMessages(pc);
+ int _indexOf = _allOutgoingMessages_1.indexOf(message);
+ int _operator_plus = IntegerExtensions.operator_plus(((Integer)_indexOf), ((Integer)1));
+ _builder.append(_operator_plus, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("//IDs for incoming messages");
+ _builder.newLine();
+ {
+ List<Message> _allIncomingMessages = this.stdExt.getAllIncomingMessages(pc);
+ for(final Message message_1 : _allIncomingMessages) {
+ _builder.append("\t");
+ _builder.append("public static final int IN_");
+ String _name_3 = message_1.getName();
+ _builder.append(_name_3, " ");
+ _builder.append(" = ");
+ List<Message> _allIncomingMessages_1 = this.stdExt.getAllIncomingMessages(pc);
+ int _indexOf_1 = _allIncomingMessages_1.indexOf(message_1);
+ List<Message> _allOutgoingMessages_2 = this.stdExt.getAllOutgoingMessages(pc);
+ int _size = _allOutgoingMessages_2.size();
+ int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_indexOf_1), ((Integer)_size));
+ int _operator_plus_2 = IntegerExtensions.operator_plus(((Integer)_operator_plus_1), ((Integer)1));
+ _builder.append(_operator_plus_2, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("//error if msgID >= MSG_MAX");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public static final int MSG_MAX = ");
+ List<Message> _allOutgoingMessages_3 = this.stdExt.getAllOutgoingMessages(pc);
+ int _size_1 = _allOutgoingMessages_3.size();
+ List<Message> _allIncomingMessages_2 = this.stdExt.getAllIncomingMessages(pc);
+ int _size_2 = _allIncomingMessages_2.size();
+ int _operator_plus_3 = IntegerExtensions.operator_plus(((Integer)_size_1), ((Integer)_size_2));
+ int _operator_plus_4 = IntegerExtensions.operator_plus(((Integer)_operator_plus_3), ((Integer)1));
+ _builder.append(_operator_plus_4, " ");
+ _builder.append("; ");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ DetailCode _userCode2 = pc.getUserCode2();
+ StringConcatenation _UserCode_1 = this.helpers.UserCode(_userCode2);
+ _builder.append(_UserCode_1, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("private static String messageStrings[] = {\"MIN\", ");
+ {
+ List<Message> _allOutgoingMessages_4 = this.stdExt.getAllOutgoingMessages(pc);
+ for(final Message m : _allOutgoingMessages_4) {
+ _builder.append("\"");
+ String _name_4 = m.getName();
+ _builder.append(_name_4, " ");
+ _builder.append("\",");
+ }
+ }
+ _builder.append(" ");
+ {
+ List<Message> _allIncomingMessages_3 = this.stdExt.getAllIncomingMessages(pc);
+ for(final Message m_1 : _allIncomingMessages_3) {
+ _builder.append("\"");
+ String _name_5 = m_1.getName();
+ _builder.append(_name_5, " ");
+ _builder.append("\",");
+ }
+ }
+ _builder.append("\"MAX\"};");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public String getMessageString(int msg_id) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("if (msg_id<0 || msg_id>MSG_MAX+1){");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("// id out of range");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("return \"Message ID out of range\";");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("else{");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("return messageStrings[msg_id];");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t");
+ StringConcatenation _portClass = this.portClass(pc, ((Boolean)false));
+ _builder.append(_portClass, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ StringConcatenation _portClass_1 = this.portClass(pc, ((Boolean)true));
+ _builder.append(_portClass_1, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ _builder.newLine();
+ return _builder;
+ }
+
+ public StringConcatenation portClass(final ProtocolClass pc, final Boolean conj) {
+ StringConcatenation _builder = new StringConcatenation();
+ String _portClassName = this.stdExt.getPortClassName(pc, conj);
+ String name = _portClassName;
+ _builder.newLineIfNotEmpty();
+ PortClass _portClass = this.stdExt.getPortClass(pc, conj);
+ PortClass pclass = _portClass;
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("// port class");
+ _builder.newLine();
+ _builder.append("static public class ");
+ _builder.append(name, "");
+ _builder.append(" extends PortBase {");
+ _builder.newLineIfNotEmpty();
+ {
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(pclass, null);
+ if (_operator_notEquals) {
+ _builder.append("\t");
+ DetailCode _userCode = pclass.getUserCode();
+ StringConcatenation _UserCode = this.helpers.UserCode(_userCode);
+ _builder.append(_UserCode, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("// constructors");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ _builder.append(name, " ");
+ _builder.append("(IEventReceiver actor, String name, int localId, Address addr, Address peerAddress) {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("super(actor, name, localId, 0, addr, peerAddress);");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("DebuggingService.getInstance().addPortInstance(this);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ _builder.append(name, " ");
+ _builder.append("(IEventReceiver actor, String name, int localId, int idx, Address addr, Address peerAddress) {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("super(actor, name, localId, idx, addr, peerAddress);");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("DebuggingService.getInstance().addPortInstance(this);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("@Override");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void receive(Message m) {");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("if (!(m instanceof EventMessage))");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("return;");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("EventMessage msg = (EventMessage) m;");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("if (msg.getEvtId() <= 0 || msg.getEvtId() >= MSG_MAX)");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("System.out.println(\"unknown\");");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("else {");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("if (messageStrings[msg.getEvtId()] != \"timerTick\"){");
+ _builder.newLine();
+ _builder.append("\t\t\t\t\t");
+ _builder.append("// TODOTS: model switch for activation");
+ _builder.newLine();
+ _builder.append("\t\t\t\t\t");
+ _builder.append("DebuggingService.getInstance().addMessageAsyncIn(getPeerAddress(), getAddress(), messageStrings[msg.getEvtId()]);");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ {
+ boolean _handlesReceive = this.stdExt.handlesReceive(pc, conj);
+ if (_handlesReceive) {
+ _builder.append("\t\t\t\t");
+ _builder.append("switch (msg.getEvtId()) {");
+ _builder.newLine();
+ {
+ List<MessageHandler> _receiveHandlers = this.stdExt.getReceiveHandlers(pc, conj);
+ for(final MessageHandler hdlr : _receiveHandlers) {
+ _builder.append("\t\t\t\t");
+ _builder.append("\t");
+ _builder.append("case ");
+ Message _msg = hdlr.getMsg();
+ String _codeName = this.stdExt.getCodeName(_msg);
+ _builder.append(_codeName, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t\t");
+ _builder.append("\t");
+ _builder.append("{");
+ _builder.newLine();
+ {
+ DetailCode _detailCode = hdlr.getDetailCode();
+ EList<String> _commands = _detailCode.getCommands();
+ for(final String command : _commands) {
+ _builder.append("\t\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append(command, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t\t\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t\t\t");
+ _builder.append("\t");
+ _builder.append("default:");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t\t\t\t");
+ _builder.append("if (msg instanceof EventWithDataMessage)");
+ _builder.newLine();
+ _builder.append("\t\t\t\t\t\t");
+ _builder.append("getActor().receiveEvent(this, msg.getEvtId(), ((EventWithDataMessage)msg).getData());");
+ _builder.newLine();
+ _builder.append("\t\t\t\t\t");
+ _builder.append("else");
+ _builder.newLine();
+ _builder.append("\t\t\t\t\t\t");
+ _builder.append("getActor().receiveEvent(this, msg.getEvtId(), null);");
+ _builder.newLine();
+ {
+ boolean _handlesReceive_1 = this.stdExt.handlesReceive(pc, conj);
+ if (_handlesReceive_1) {
+ _builder.append("\t\t\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ {
+ boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(pclass, null);
+ if (_operator_notEquals_1) {
+ _builder.append("\t");
+ EList<Attribute> _attributes = pclass.getAttributes();
+ StringConcatenation _Attributes = this.helpers.Attributes(_attributes);
+ _builder.append(_Attributes, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ EList<Operation> _operations = pclass.getOperations();
+ StringConcatenation _Operations = this.helpers.Operations(_operations);
+ _builder.append(_Operations, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("// sent messages");
+ _builder.newLine();
+ {
+ List<Message> _outgoing = this.stdExt.getOutgoing(pc, conj);
+ for(final Message m : _outgoing) {
+ _builder.append("\t");
+ StringConcatenation _sendMessage = this.sendMessage(m, conj);
+ _builder.append(_sendMessage, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("// replicated port class");
+ _builder.newLine();
+ _builder.append("static public class ");
+ _builder.append(name, "");
+ _builder.append("Repl {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("private ArrayList<");
+ _builder.append(name, " ");
+ _builder.append("> ports;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("private int replication;");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ _builder.append(name, " ");
+ _builder.append("Repl(IEventReceiver actor, String name, int localId, Address[] addr,");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("Address[] peerAddress) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("replication = addr.length;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("ports = new ArrayList<");
+ String _name = pc.getName();
+ _builder.append(_name, " ");
+ _builder.append(".");
+ _builder.append(name, " ");
+ _builder.append(">(replication);");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("for (int i=0; i<replication; ++i) {");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("ports.add(new ");
+ _builder.append(name, " ");
+ _builder.append("(");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t\t\t");
+ _builder.append("actor, name+i, localId, i, addr[i], peerAddress[i]));");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public int getReplication() {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("return replication;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public int getIndexOf(InterfaceItemBase ifitem){");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("return ifitem.getIdx();");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ _builder.append(name, " ");
+ _builder.append(" get(int i) {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("return ports.get(i);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ {
+ if (conj) {
+ _builder.append("\t");
+ _builder.append("// incoming messages");
+ _builder.newLine();
+ {
+ List<Message> _allIncomingMessages = this.stdExt.getAllIncomingMessages(pc);
+ for(final Message m_1 : _allIncomingMessages) {
+ _builder.append("\t");
+ StringConcatenation _messageSignature = this.messageSignature(m_1);
+ _builder.append(_messageSignature, " ");
+ _builder.append("{");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("for (int i=0; i<replication; ++i) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("\t\t");
+ _builder.append("ports.get(i).");
+ StringConcatenation _messageCall = this.messageCall(m_1);
+ _builder.append(_messageCall, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ } else {
+ _builder.append("\t");
+ _builder.append("// outgoing messages");
+ _builder.newLine();
+ {
+ List<Message> _allOutgoingMessages = this.stdExt.getAllOutgoingMessages(pc);
+ for(final Message m_2 : _allOutgoingMessages) {
+ _builder.append("\t");
+ StringConcatenation _messageSignature_1 = this.messageSignature(m_2);
+ _builder.append(_messageSignature_1, " ");
+ _builder.append("{");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("for (int i=0; i<replication; ++i) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("\t\t");
+ _builder.append("ports.get(i).");
+ StringConcatenation _messageCall_1 = this.messageCall(m_2);
+ _builder.append(_messageCall_1, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ }
+ }
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("// interface for port class");
+ _builder.newLine();
+ _builder.append("public interface I");
+ _builder.append(name, "");
+ _builder.append("{");
+ _builder.newLineIfNotEmpty();
+ {
+ if (conj) {
+ _builder.append("\t");
+ _builder.append("// outgoing messages");
+ _builder.newLine();
+ _builder.append("\t");
+ {
+ List<Message> _allOutgoingMessages_1 = this.stdExt.getAllOutgoingMessages(pc);
+ for(final Message m_3 : _allOutgoingMessages_1) {
+ _builder.append(" ");
+ StringConcatenation _messageSignature_2 = this.messageSignature(m_3);
+ _builder.append(_messageSignature_2, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ } else {
+ _builder.append("\t");
+ _builder.append("// incoming messages");
+ _builder.newLine();
+ _builder.append("\t");
+ {
+ List<Message> _allIncomingMessages_1 = this.stdExt.getAllIncomingMessages(pc);
+ for(final Message m_4 : _allIncomingMessages_1) {
+ _builder.append(" ");
+ StringConcatenation _messageSignature_3 = this.messageSignature(m_4);
+ _builder.append(_messageSignature_3, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ _builder.append("}");
+ _builder.newLine();
+ return _builder;
+ }
+
+ public StringConcatenation messageSignature(final Message m) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("public void ");
+ String _name = m.getName();
+ _builder.append(_name, "");
+ _builder.append(" (");
+ {
+ TypedID _data = m.getData();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_data, null);
+ if (_operator_notEquals) {
+ TypedID _data_1 = m.getData();
+ Type _type = _data_1.getType();
+ String _typeName = this.stdExt.typeName(_type);
+ _builder.append(_typeName, "");
+ _builder.append(" ");
+ TypedID _data_2 = m.getData();
+ String _name_1 = _data_2.getName();
+ _builder.append(_name_1, "");
+ }
+ }
+ _builder.append(")");
+ _builder.newLineIfNotEmpty();
+ return _builder;
+ }
+
+ public StringConcatenation messageCall(final Message m) {
+ StringConcatenation _builder = new StringConcatenation();
+ String _name = m.getName();
+ _builder.append(_name, "");
+ _builder.append("(");
+ {
+ TypedID _data = m.getData();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_data, null);
+ if (_operator_notEquals) {
+ _builder.append(" ");
+ TypedID _data_1 = m.getData();
+ String _name_1 = _data_1.getName();
+ _builder.append(_name_1, "");
+ }
+ }
+ _builder.append(")");
+ _builder.newLineIfNotEmpty();
+ return _builder;
+ }
+
+ public StringConcatenation sendMessage(final Message m, final boolean conj) {
+ StringConcatenation _builder = new StringConcatenation();
+ String _xifexpression = null;
+ if (conj) {
+ _xifexpression = "IN";
+ } else {
+ _xifexpression = "OUT";
+ }
+ String dir = _xifexpression;
+ _builder.newLineIfNotEmpty();
+ MessageHandler _sendHandler = this.stdExt.getSendHandler(m, conj);
+ MessageHandler hdlr = _sendHandler;
+ _builder.newLineIfNotEmpty();
+ StringConcatenation _messageSignature = this.messageSignature(m);
+ _builder.append(_messageSignature, "");
+ _builder.append("{");
+ _builder.newLineIfNotEmpty();
+ {
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(hdlr, null);
+ if (_operator_notEquals) {
+ _builder.append("\t");
+ {
+ DetailCode _detailCode = hdlr.getDetailCode();
+ EList<String> _commands = _detailCode.getCommands();
+ for(final String command : _commands) {
+ _builder.append("\t");
+ _builder.append(command, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ } else {
+ _builder.append("\t");
+ _builder.append("if (messageStrings[ ");
+ _builder.append(dir, " ");
+ _builder.append("_");
+ String _name = m.getName();
+ _builder.append(_name, " ");
+ _builder.append("] != \"timerTick\"){");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("// TODOTS: model switch for activation");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[");
+ _builder.append(dir, " ");
+ _builder.append("_");
+ String _name_1 = m.getName();
+ _builder.append(_name_1, " ");
+ _builder.append("]);");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("if (getPeerAddress()!=null)");
+ _builder.newLine();
+ _builder.append("\t");
+ {
+ TypedID _data = m.getData();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_data, null);
+ if (_operator_equals) {
+ _builder.append("getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), ");
+ _builder.append(dir, " ");
+ _builder.append("_");
+ String _name_2 = m.getName();
+ _builder.append(_name_2, " ");
+ _builder.append("));");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ } else {
+ _builder.append("getPeerMsgReceiver().receive(new EventWithDataMessage(getPeerAddress(), ");
+ _builder.append(dir, " ");
+ _builder.append("_");
+ String _name_3 = m.getName();
+ _builder.append(_name_3, " ");
+ _builder.append(", ");
+ TypedID _data_1 = m.getData();
+ String _name_4 = _data_1.getName();
+ _builder.append(_name_4, " ");
+ {
+ boolean _operator_and = false;
+ TypedID _data_2 = m.getData();
+ Type _type = _data_2.getType();
+ boolean _isRef = _type.isRef();
+ boolean _operator_not = BooleanExtensions.operator_not(_isRef);
+ if (!_operator_not) {
+ _operator_and = false;
+ } else {
+ TypedID _data_3 = m.getData();
+ Type _type_1 = _data_3.getType();
+ DataClass _type_2 = _type_1.getType();
+ boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_type_2, null);
+ _operator_and = BooleanExtensions.operator_and(_operator_not, _operator_notEquals_1);
+ }
+ if (_operator_and) {
+ _builder.append(".deepCopy()");
+ }
+ }
+ _builder.append("));");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ _builder.append("}");
+ _builder.newLine();
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StateMachineGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StateMachineGen.java
index 14a2026a7..327ef8ac6 100644
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StateMachineGen.java
+++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StateMachineGen.java
@@ -1,870 +1,864 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.inject.Inject;
-import java.util.List;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.DetailCode;
-import org.eclipse.etrice.core.room.Guard;
-import org.eclipse.etrice.core.room.InterfaceItem;
-import org.eclipse.etrice.core.room.Message;
-import org.eclipse.etrice.core.room.MessageFromIf;
-import org.eclipse.etrice.core.room.State;
-import org.eclipse.etrice.core.room.StateGraph;
-import org.eclipse.etrice.core.room.StateMachine;
-import org.eclipse.etrice.core.room.Transition;
-import org.eclipse.etrice.core.room.Trigger;
-import org.eclipse.etrice.core.room.TriggeredTransition;
-import org.eclipse.etrice.generator.etricegen.ActiveTrigger;
-import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.generator.etricegen.TransitionChain;
-import org.eclipse.etrice.generator.extensions.RoomNameProv;
-import org.eclipse.etrice.generator.java.gen.JavaGenerator;
-import org.eclipse.etrice.generator.java.gen.StdExtensions;
-import org.eclipse.xtext.xbase.lib.BooleanExtensions;
-import org.eclipse.xtext.xbase.lib.Functions.Function1;
-import org.eclipse.xtext.xbase.lib.IntegerExtensions;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-import org.eclipse.xtext.xtend2.lib.StringConcatenation;
-
-@SuppressWarnings("all")
-public class StateMachineGen {
-
- @Inject
- private StdExtensions stdExt;
-
- @Inject
- private RoomNameProv nameProvider;
-
- @Inject
- private JavaGenerator javaGen;
-
- public StringConcatenation genStateMachine(final ExpandedActorClass xpac, final ActorClass ac) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("//******************************************");
- _builder.newLine();
- _builder.append("// START of generated code for FSM");
- _builder.newLine();
- _builder.append("//******************************************");
- _builder.newLine();
- _builder.newLine();
- _builder.append("// State IDs for FSM");
- _builder.newLine();
- int _numberOfInheritedBaseStates = this.stdExt.getNumberOfInheritedBaseStates(ac);
- int offset = _numberOfInheritedBaseStates;
- _builder.newLineIfNotEmpty();
- StateMachine _stateMachine = ac.getStateMachine();
- List<State> _baseStateList = this.stdExt.getBaseStateList(_stateMachine);
- List<State> baseStates = _baseStateList;
- _builder.newLineIfNotEmpty();
- {
- for(State state : baseStates) {
- _builder.append("protected static final int ");
- String _stateId = this.nameProvider.getStateId(state);
- _builder.append(_stateId, "");
- _builder.append(" = ");
- int _indexOf = baseStates.indexOf(state);
- int _operator_plus = IntegerExtensions.operator_plus(((Integer)_indexOf), ((Integer)2));
- int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_operator_plus), ((Integer)offset));
- _builder.append(_operator_plus_1, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("protected static final String stateStrings[] = {\"<no state>\",\"<top>\",");
- {
- List<State> _allBaseStates = this.stdExt.getAllBaseStates(ac);
- boolean hasAnyElements = false;
- for(State state_1 : _allBaseStates) {
- if (!hasAnyElements) {
- hasAnyElements = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- _builder.append("\"");
- String _statePathName = this.nameProvider.getStatePathName(state_1);
- _builder.append(_statePathName, " ");
- _builder.append("\"");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- }
- }
- _builder.append("};");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("// history");
- _builder.newLine();
- _builder.append("// TODOHRR: history defined in ActorClassBase, init in constructor");
- _builder.newLine();
- _builder.append("//\t\thistory = new int[5];");
- _builder.newLine();
- _builder.append("//\t\tfor (int i = 0; i < history.length; i++) {");
- _builder.newLine();
- _builder.append("//\t\t\thistory[i] = NO_STATE;");
- _builder.newLine();
- _builder.append("//\t\t}");
- _builder.newLine();
- _builder.append("protected int history[] = {NO_STATE,NO_STATE");
- {
- List<State> _allBaseStates_1 = this.stdExt.getAllBaseStates(ac);
- for(State state_2 : _allBaseStates_1) {
- _builder.append(",NO_STATE");
- }
- }
- _builder.append("};");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- EList<TransitionChain> _ownTransitionChains = xpac.getOwnTransitionChains();
- List<TransitionChain> chains = _ownTransitionChains;
- _builder.newLineIfNotEmpty();
- EList<TransitionChain> _transitionChains = xpac.getTransitionChains();
- int _size = _transitionChains.size();
- int _size_1 = chains.size();
- int _operator_minus = IntegerExtensions.operator_minus(((Integer)_size), ((Integer)_size_1));
- int offset_tc = _operator_minus;
- _builder.newLineIfNotEmpty();
- _builder.append("// transition chains");
- _builder.newLine();
- {
- for(TransitionChain tc : chains) {
- _builder.append("protected static final int ");
- String _chainId = this.nameProvider.getChainId(tc);
- _builder.append(_chainId, "");
- _builder.append(" = ");
- int _indexOf_1 = chains.indexOf(tc);
- int _operator_plus_2 = IntegerExtensions.operator_plus(((Integer)_indexOf_1), ((Integer)1));
- int _operator_plus_3 = IntegerExtensions.operator_plus(((Integer)_operator_plus_2), ((Integer)offset_tc));
- _builder.append(_operator_plus_3, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- EList<MessageFromIf> _ownTriggers = xpac.getOwnTriggers();
- EList<MessageFromIf> triggers = _ownTriggers;
- _builder.newLineIfNotEmpty();
- _builder.append("// triggers for FSM");
- _builder.newLine();
- {
- for(MessageFromIf mif : triggers) {
- _builder.append("protected static final int ");
- String _triggerCodeName = xpac.getTriggerCodeName(mif);
- _builder.append(_triggerCodeName, "");
- _builder.append(" = IFITEM_");
- InterfaceItem _from = mif.getFrom();
- String _name = _from.getName();
- _builder.append(_name, "");
- _builder.append(" + EVT_SHIFT*");
- String _messageID = xpac.getMessageID(mif);
- _builder.append(_messageID, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.append("// receiveEvent contains the main implementation of the FSM");
- _builder.newLine();
- _builder.append("@Override");
- _builder.newLine();
- _builder.append("public void receiveEvent(InterfaceItemBase ifitem, int evt, Object generic_data) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("int trigger = ifitem.getLocalId() + EVT_SHIFT*evt;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("int chain = NOT_CAUGHT;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("int catching_state = NO_STATE;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("boolean is_handler = false;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("boolean skip_entry = false;");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("if (!handleSystemEvent(ifitem, evt, generic_data)) {");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("switch (state) {");
- _builder.newLine();
- {
- StateMachine _stateMachine_1 = xpac.getStateMachine();
- List<State> _leafStateList = this.stdExt.getLeafStateList(_stateMachine_1);
- for(State state_3 : _leafStateList) {
- _builder.append("\t\t\t");
- _builder.append("case ");
- String _stateId_1 = this.nameProvider.getStateId(state_3);
- _builder.append(_stateId_1, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- EList<ActiveTrigger> _activeTriggers = xpac.getActiveTriggers(state_3);
- EList<ActiveTrigger> atlist = _activeTriggers;
- _builder.newLineIfNotEmpty();
- {
- boolean _isEmpty = atlist.isEmpty();
- boolean _operator_not = BooleanExtensions.operator_not(_isEmpty);
- if (_operator_not) {
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("switch(trigger) {");
- _builder.newLine();
- {
- for(ActiveTrigger at : atlist) {
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("case ");
- String _trigger = at.getTrigger();
- String _triggerCodeName_1 = xpac.getTriggerCodeName(_trigger);
- _builder.append(_triggerCodeName_1, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- boolean _hasGuard = this.stdExt.hasGuard(xpac, at);
- boolean needData = _hasGuard;
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- {
- if (needData) {
- _builder.append("{ ");
- Message _msg = at.getMsg();
- String _typedDataDefinition = this.stdExt.getTypedDataDefinition(_msg);
- _builder.append(_typedDataDefinition, " ");
- }
- }
- _builder.newLineIfNotEmpty();
- {
- EList<TriggeredTransition> _transitions = at.getTransitions();
- boolean hasAnyElements_1 = false;
- for(TriggeredTransition tt : _transitions) {
- if (!hasAnyElements_1) {
- hasAnyElements_1 = true;
- } else {
- _builder.appendImmediate(" else ", " ");
- }
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- TransitionChain _chain = xpac.getChain(tt);
- TransitionChain chain = _chain;
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- Transition _transition = chain.getTransition();
- String _trigger_1 = at.getTrigger();
- StringConcatenation _guard = this.guard(_transition, _trigger_1, xpac);
- _builder.append(_guard, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("{");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("chain = ");
- String _chainId_1 = this.nameProvider.getChainId(chain);
- _builder.append(_chainId_1, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("catching_state = ");
- String _contextId = this.stdExt.getContextId(chain);
- _builder.append(_contextId, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- {
- boolean _isHandler = chain.isHandler();
- if (_isHandler) {
- _builder.append("is_handler = true;");
- }
- }
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- {
- boolean _isSkipEntry = chain.isSkipEntry();
- if (_isSkipEntry) {
- _builder.append("skip_entry = true;");
- }
- }
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- {
- if (needData) {
- _builder.append("}");
- }
- }
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("break;");
- _builder.newLine();
- }
- }
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("break;");
- _builder.newLine();
- }
- }
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("if (chain != NOT_CAUGHT) {");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("exitTo(state, catching_state, is_handler);");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("int next = executeTransitionChain(chain, ifitem, generic_data);");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("next = enterHistory(next, is_handler, skip_entry);");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("setState(next);");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("private void setState(int new_state) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("DebuggingService.getInstance().addActorState(this,stateStrings[new_state]);");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("if (stateStrings[new_state]!=\"Idle\") {");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("// TODOTS: model switch for activation");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("System.out.println(getInstancePath() + \" -> \" + stateStrings[new_state]);");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("this.state = new_state;");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("@Override");
- _builder.newLine();
- _builder.append("public void executeInitTransition() {");
- _builder.newLine();
- _builder.append("\t");
- StateMachine _stateMachine_2 = xpac.getStateMachine();
- Transition _initTransition = this.stdExt.getInitTransition(_stateMachine_2);
- Transition initt = _initTransition;
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("int chain = ");
- TransitionChain _chain_1 = xpac.getChain(initt);
- String _chainId_2 = this.nameProvider.getChainId(_chain_1);
- _builder.append(_chainId_2, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("int next = executeTransitionChain(chain, null, null);");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("next = enterHistory(next, false, false);");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("setState(next);");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("/**");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* calls exit codes while exiting from the current state to one of its");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* parent states while remembering the history");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* @param current - the current state");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* @param to - the final parent state");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* @param handler - entry and exit codes are called only if not handler (for handler TransitionPoints)");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.append("private void exitTo(int current, int to, boolean handler) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("while (current!=to) {");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("switch (current) {");
- _builder.newLine();
- {
- StateMachine _stateMachine_3 = xpac.getStateMachine();
- List<State> _baseStateList_1 = this.stdExt.getBaseStateList(_stateMachine_3);
- for(State state_4 : _baseStateList_1) {
- _builder.append("\t\t\t");
- _builder.append("case ");
- String _stateId_2 = this.nameProvider.getStateId(state_4);
- _builder.append(_stateId_2, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- {
- boolean _hasExitCode = this.stdExt.hasExitCode(state_4);
- if (_hasExitCode) {
- _builder.append("if (!handler) ");
- String _exitCodeOperationName = this.nameProvider.getExitCodeOperationName(state_4);
- _builder.append(_exitCodeOperationName, " ");
- _builder.append("();");
- }
- }
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("history[");
- String _parentStateId = this.nameProvider.getParentStateId(state_4);
- _builder.append(_parentStateId, " ");
- _builder.append("] = ");
- String _stateId_3 = this.nameProvider.getStateId(state_4);
- _builder.append(_stateId_3, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("current = ");
- String _parentStateId_1 = this.nameProvider.getParentStateId(state_4);
- _builder.append(_parentStateId_1, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("break;");
- _builder.newLine();
- }
- }
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.append("/**");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* calls action, entry and exit codes along a transition chain. The generic data are cast to typed data");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* matching the trigger of this chain. The ID of the final state is returned");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* @param chain - the chain ID");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* @param generic_data - the generic data pointer");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* @return the ID of the final state");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.append("private int executeTransitionChain(int chain, InterfaceItemBase ifitem, Object generic_data) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("switch (chain) {");
- _builder.newLine();
- _builder.append("\t\t");
- EList<TransitionChain> _transitionChains_1 = xpac.getTransitionChains();
- EList<TransitionChain> allchains = _transitionChains_1;
- _builder.newLineIfNotEmpty();
- {
- for(TransitionChain tc_1 : allchains) {
- _builder.append("\t\t");
- _builder.append("case ");
- String _chainId_3 = this.nameProvider.getChainId(tc_1);
- _builder.append(_chainId_3, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("{");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("\t");
- String _executeChainCode = this.stdExt.getExecuteChainCode(xpac, tc_1);
- _builder.append(_executeChainCode, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("return NO_STATE;");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.append("/**");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* calls entry codes while entering a state\'s history. The ID of the final leaf state is returned");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* @param state - the state which is entered");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* @param handler - entry code is executed if not handler");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* @return - the ID of the final leaf state");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.append("private int enterHistory(int state, boolean handler, boolean skip_entry) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("while (true) {");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("switch (state) {");
- _builder.newLine();
- {
- StateMachine _stateMachine_4 = xpac.getStateMachine();
- List<State> _baseStateList_2 = this.stdExt.getBaseStateList(_stateMachine_4);
- for(State state_5 : _baseStateList_2) {
- _builder.append("\t\t\t");
- _builder.append("case ");
- String _stateId_4 = this.nameProvider.getStateId(state_5);
- _builder.append(_stateId_4, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- {
- boolean _hasEntryCode = this.stdExt.hasEntryCode(state_5);
- if (_hasEntryCode) {
- _builder.append("if (!(skip_entry || handler)) ");
- String _entryCodeOperationName = this.nameProvider.getEntryCodeOperationName(state_5);
- _builder.append(_entryCodeOperationName, " ");
- _builder.append("();");
- }
- }
- _builder.newLineIfNotEmpty();
- {
- boolean _isLeaf = this.stdExt.isLeaf(state_5);
- if (_isLeaf) {
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("// in leaf state: return state id");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("return ");
- String _stateId_5 = this.nameProvider.getStateId(state_5);
- _builder.append(_stateId_5, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();} else {
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("// state has a sub graph");
- _builder.newLine();
- {
- StateGraph _subgraph = state_5.getSubgraph();
- boolean _hasInitTransition = this.stdExt.hasInitTransition(_subgraph);
- if (_hasInitTransition) {
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("// with init transition");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("if (history[");
- String _stateId_6 = this.nameProvider.getStateId(state_5);
- _builder.append(_stateId_6, " ");
- _builder.append("]==NO_STATE) {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- StateGraph _subgraph_1 = state_5.getSubgraph();
- Transition _initTransition_1 = this.stdExt.getInitTransition(_subgraph_1);
- Transition sub_initt = _initTransition_1;
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("state = executeTransitionChain(");
- TransitionChain _chain_2 = xpac.getChain(sub_initt);
- String _chainId_4 = this.nameProvider.getChainId(_chain_2);
- _builder.append(_chainId_4, " ");
- _builder.append(", null, null);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("else {");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("state = history[");
- String _stateId_7 = this.nameProvider.getStateId(state_5);
- _builder.append(_stateId_7, " ");
- _builder.append("];");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();} else {
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("// without init transition");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("state = history[");
- String _stateId_8 = this.nameProvider.getStateId(state_5);
- _builder.append(_stateId_8, " ");
- _builder.append("];");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("break;");
- _builder.newLine();
- }
- }
- }
- }
- _builder.append("\t\t\t");
- _builder.append("case STATE_TOP:");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("state = history[STATE_TOP];");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("break;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("skip_entry = false;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("//return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true)");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("//*** Entry and Exit Codes");
- _builder.newLine();
- {
- StateMachine _stateMachine_5 = xpac.getStateMachine();
- List<State> _stateList = this.stdExt.getStateList(_stateMachine_5);
- for(State state_6 : _stateList) {
- {
- boolean _isOwnObject = xpac.isOwnObject(state_6);
- if (_isOwnObject) {
- {
- boolean _hasEntryCode_1 = this.stdExt.hasEntryCode(state_6);
- if (_hasEntryCode_1) {
- _builder.append("protected void ");
- String _entryCodeOperationName_1 = this.nameProvider.getEntryCodeOperationName(state_6);
- _builder.append(_entryCodeOperationName_1, "");
- _builder.append("() {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- String _entryCode = this.stdExt.getEntryCode(xpac, state_6);
- _builder.append(_entryCode, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- }
- }
- {
- boolean _hasExitCode_1 = this.stdExt.hasExitCode(state_6);
- if (_hasExitCode_1) {
- _builder.append("protected void ");
- String _exitCodeOperationName_1 = this.nameProvider.getExitCodeOperationName(state_6);
- _builder.append(_exitCodeOperationName_1, "");
- _builder.append("() {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- String _exitCode = this.stdExt.getExitCode(xpac, state_6);
- _builder.append(_exitCode, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- }
- }
- }
- }
- }
- }
- _builder.newLine();
- _builder.append("//*** Action Codes");
- _builder.newLine();
- {
- StateMachine _stateMachine_6 = xpac.getStateMachine();
- List<Transition> _transitionList = this.stdExt.getTransitionList(_stateMachine_6);
- for(Transition tr : _transitionList) {
- {
- boolean _operator_and = false;
- boolean _isOwnObject_1 = xpac.isOwnObject(tr);
- if (!_isOwnObject_1) {
- _operator_and = false;
- } else {
- boolean _hasActionCode = this.stdExt.hasActionCode(tr);
- _operator_and = BooleanExtensions.operator_and(_isOwnObject_1, _hasActionCode);
- }
- if (_operator_and) {
- _builder.append("protected void ");
- String _actionCodeOperationName = this.nameProvider.getActionCodeOperationName(tr);
- _builder.append(_actionCodeOperationName, "");
- _builder.append("(");
- {
- if ((tr instanceof org.eclipse.etrice.core.room.NonInitialTransition)) {
- _builder.append("InterfaceItemBase ifitem");
- String _argumentList = this.javaGen.getArgumentList(xpac, tr);
- _builder.append(_argumentList, "");
- }
- }
- _builder.append(") {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- String _actionCode = this.stdExt.getActionCode(xpac, tr);
- _builder.append(_actionCode, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- }
- }
- }
- }
- _builder.append("\t ");
- _builder.newLine();
- _builder.append("//******************************************");
- _builder.newLine();
- _builder.append("// END of generated code for FSM");
- _builder.newLine();
- _builder.append("//******************************************");
- _builder.newLine();
- return _builder;
- }
-
- protected StringConcatenation _guard(final TriggeredTransition tt, final String trigger, final ExpandedActorClass ac) {
- StringConcatenation _builder = new StringConcatenation();
- EList<Trigger> _triggers = tt.getTriggers();
- final Function1<Trigger,Boolean> _function = new Function1<Trigger,Boolean>() {
- public Boolean apply(final Trigger e) {
- boolean _isMatching = ac.isMatching(e, trigger);
- return ((Boolean)_isMatching);
- }
- };
- Trigger _findFirst = IterableExtensions.<Trigger>findFirst(_triggers, _function);
- Trigger tr = _findFirst;
- _builder.newLineIfNotEmpty();
- {
- boolean _hasGuard = this.stdExt.hasGuard(tr);
- if (_hasGuard) {
- _builder.append("if (");
- Guard _guard = tr.getGuard();
- DetailCode _guard_1 = _guard.getGuard();
- String _code = ac.getCode(_guard_1);
- _builder.append(_code, "");
- _builder.append(")");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- protected StringConcatenation _guard(final Transition t, final String trigger, final ExpandedActorClass ac) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("/* error */");
- _builder.newLine();
- return _builder;
- }
-
- public StringConcatenation guard(final Transition tt, final String trigger, final ExpandedActorClass ac) {
- if ((tt instanceof TriggeredTransition)
- && (trigger instanceof String)
- && (ac instanceof ExpandedActorClass)) {
- return _guard((TriggeredTransition)tt, (String)trigger, (ExpandedActorClass)ac);
- } else if ((tt instanceof Transition)
- && (trigger instanceof String)
- && (ac instanceof ExpandedActorClass)) {
- return _guard((Transition)tt, (String)trigger, (ExpandedActorClass)ac);
- } else {
- throw new IllegalArgumentException("Unhandled parameter types: " +
- java.util.Arrays.<Object>asList(tt, trigger, ac).toString());
- }
- }
-} \ No newline at end of file
+package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.Guard;
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.MessageFromIf;
+import org.eclipse.etrice.core.room.NonInitialTransition;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.StateGraph;
+import org.eclipse.etrice.core.room.StateMachine;
+import org.eclipse.etrice.core.room.Transition;
+import org.eclipse.etrice.core.room.Trigger;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+import org.eclipse.etrice.generator.etricegen.ActiveTrigger;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.TransitionChain;
+import org.eclipse.etrice.generator.extensions.RoomNameProv;
+import org.eclipse.etrice.generator.java.gen.JavaGenerator;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.xbase.lib.BooleanExtensions;
+import org.eclipse.xtext.xbase.lib.Functions.Function1;
+import org.eclipse.xtext.xbase.lib.IntegerExtensions;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class StateMachineGen {
+ @Inject
+ private StdExtensions stdExt;
+
+ @Inject
+ private JavaGenerator javaGen;
+
+ public StringConcatenation genStateMachine(final ExpandedActorClass xpac, final ActorClass ac) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("//******************************************");
+ _builder.newLine();
+ _builder.append("// START of generated code for FSM");
+ _builder.newLine();
+ _builder.append("//******************************************");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("// State IDs for FSM");
+ _builder.newLine();
+ int _numberOfInheritedBaseStates = this.stdExt.getNumberOfInheritedBaseStates(ac);
+ int offset = _numberOfInheritedBaseStates;
+ _builder.newLineIfNotEmpty();
+ StateMachine _stateMachine = ac.getStateMachine();
+ List<State> _baseStateList = this.stdExt.getBaseStateList(_stateMachine);
+ List<State> baseStates = _baseStateList;
+ _builder.newLineIfNotEmpty();
+ {
+ for(final State state : baseStates) {
+ _builder.append("protected static final int ");
+ String _stateId = this.stdExt.getStateId(state);
+ _builder.append(_stateId, "");
+ _builder.append(" = ");
+ int _indexOf = baseStates.indexOf(state);
+ int _operator_plus = IntegerExtensions.operator_plus(((Integer)_indexOf), ((Integer)2));
+ int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_operator_plus), ((Integer)offset));
+ _builder.append(_operator_plus_1, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("protected static final String stateStrings[] = {\"<no state>\",\"<top>\",");
+ {
+ List<State> _allBaseStates = this.stdExt.getAllBaseStates(ac);
+ boolean hasAnyElements = false;
+ for(final State state_1 : _allBaseStates) {
+ if (!hasAnyElements) {
+ hasAnyElements = true;
+ } else {
+ _builder.appendImmediate(",", " ");
+ }
+ _builder.append("\"");
+ String _statePathName = this.stdExt.getStatePathName(state_1);
+ _builder.append(_statePathName, " ");
+ _builder.append("\"");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ }
+ }
+ _builder.append("};");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("// history");
+ _builder.newLine();
+ _builder.append("// TODOHRR: history defined in ActorClassBase, init in constructor");
+ _builder.newLine();
+ _builder.append("//\t\thistory = new int[5];");
+ _builder.newLine();
+ _builder.append("//\t\tfor (int i = 0; i < history.length; i++) {");
+ _builder.newLine();
+ _builder.append("//\t\t\thistory[i] = NO_STATE;");
+ _builder.newLine();
+ _builder.append("//\t\t}");
+ _builder.newLine();
+ _builder.append("protected int history[] = {NO_STATE,NO_STATE");
+ {
+ List<State> _allBaseStates_1 = this.stdExt.getAllBaseStates(ac);
+ for(final State state_2 : _allBaseStates_1) {
+ _builder.append(",NO_STATE");
+ }
+ }
+ _builder.append("};");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ EList<TransitionChain> _ownTransitionChains = xpac.getOwnTransitionChains();
+ List<TransitionChain> chains = _ownTransitionChains;
+ _builder.newLineIfNotEmpty();
+ EList<TransitionChain> _transitionChains = xpac.getTransitionChains();
+ int _size = _transitionChains.size();
+ int _size_1 = chains.size();
+ int _operator_minus = IntegerExtensions.operator_minus(((Integer)_size), ((Integer)_size_1));
+ int offset_tc = _operator_minus;
+ _builder.newLineIfNotEmpty();
+ _builder.append("// transition chains");
+ _builder.newLine();
+ {
+ for(final TransitionChain tc : chains) {
+ _builder.append("protected static final int ");
+ String _chainId = this.stdExt.getChainId(tc);
+ _builder.append(_chainId, "");
+ _builder.append(" = ");
+ int _indexOf_1 = chains.indexOf(tc);
+ int _operator_plus_2 = IntegerExtensions.operator_plus(((Integer)_indexOf_1), ((Integer)1));
+ int _operator_plus_3 = IntegerExtensions.operator_plus(((Integer)_operator_plus_2), ((Integer)offset_tc));
+ _builder.append(_operator_plus_3, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ EList<MessageFromIf> _ownTriggers = xpac.getOwnTriggers();
+ EList<MessageFromIf> triggers = _ownTriggers;
+ _builder.newLineIfNotEmpty();
+ _builder.append("// triggers for FSM");
+ _builder.newLine();
+ {
+ for(final MessageFromIf mif : triggers) {
+ _builder.append("protected static final int ");
+ String _triggerCodeName = xpac.getTriggerCodeName(mif);
+ _builder.append(_triggerCodeName, "");
+ _builder.append(" = IFITEM_");
+ InterfaceItem _from = mif.getFrom();
+ String _name = _from.getName();
+ _builder.append(_name, "");
+ _builder.append(" + EVT_SHIFT*");
+ String _messageID = xpac.getMessageID(mif);
+ _builder.append(_messageID, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ _builder.append("// receiveEvent contains the main implementation of the FSM");
+ _builder.newLine();
+ _builder.append("@Override");
+ _builder.newLine();
+ _builder.append("public void receiveEvent(InterfaceItemBase ifitem, int evt, Object generic_data) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("int trigger = ifitem.getLocalId() + EVT_SHIFT*evt;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("int chain = NOT_CAUGHT;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("int catching_state = NO_STATE;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("boolean is_handler = false;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("boolean skip_entry = false;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("if (!handleSystemEvent(ifitem, evt, generic_data)) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("switch (state) {");
+ _builder.newLine();
+ {
+ StateMachine _stateMachine_1 = xpac.getStateMachine();
+ List<State> _leafStateList = this.stdExt.getLeafStateList(_stateMachine_1);
+ for(final State state_3 : _leafStateList) {
+ _builder.append("\t\t\t");
+ _builder.append("case ");
+ String _stateId_1 = this.stdExt.getStateId(state_3);
+ _builder.append(_stateId_1, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ EList<ActiveTrigger> _activeTriggers = xpac.getActiveTriggers(state_3);
+ EList<ActiveTrigger> atlist = _activeTriggers;
+ _builder.newLineIfNotEmpty();
+ {
+ boolean _isEmpty = atlist.isEmpty();
+ boolean _operator_not = BooleanExtensions.operator_not(_isEmpty);
+ if (_operator_not) {
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("switch(trigger) {");
+ _builder.newLine();
+ {
+ for(final ActiveTrigger at : atlist) {
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("case ");
+ String _trigger = at.getTrigger();
+ String _triggerCodeName_1 = xpac.getTriggerCodeName(_trigger);
+ _builder.append(_triggerCodeName_1, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ boolean _hasGuard = this.stdExt.hasGuard(xpac, at);
+ boolean needData = _hasGuard;
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ {
+ if (needData) {
+ _builder.append("{ ");
+ Message _msg = at.getMsg();
+ String _typedDataDefinition = this.stdExt.getTypedDataDefinition(_msg);
+ _builder.append(_typedDataDefinition, " ");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ {
+ EList<TriggeredTransition> _transitions = at.getTransitions();
+ boolean hasAnyElements_1 = false;
+ for(final TriggeredTransition tt : _transitions) {
+ if (!hasAnyElements_1) {
+ hasAnyElements_1 = true;
+ } else {
+ _builder.appendImmediate(" else ", " ");
+ }
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ TransitionChain _chain = xpac.getChain(tt);
+ TransitionChain chain = _chain;
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ Transition _transition = chain.getTransition();
+ String _trigger_1 = at.getTrigger();
+ StringConcatenation _guard = this.guard(_transition, _trigger_1, xpac);
+ _builder.append(_guard, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("{");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("chain = ");
+ String _chainId_1 = this.stdExt.getChainId(chain);
+ _builder.append(_chainId_1, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("catching_state = ");
+ String _contextId = this.stdExt.getContextId(chain);
+ _builder.append(_contextId, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ {
+ boolean _isHandler = chain.isHandler();
+ if (_isHandler) {
+ _builder.append("is_handler = true;");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ {
+ boolean _isSkipEntry = chain.isSkipEntry();
+ if (_isSkipEntry) {
+ _builder.append("skip_entry = true;");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ {
+ if (needData) {
+ _builder.append("}");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("if (chain != NOT_CAUGHT) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("exitTo(state, catching_state, is_handler);");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("int next = executeTransitionChain(chain, ifitem, generic_data);");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("next = enterHistory(next, is_handler, skip_entry);");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("setState(next);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("private void setState(int new_state) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("DebuggingService.getInstance().addActorState(this,stateStrings[new_state]);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("if (stateStrings[new_state]!=\"Idle\") {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// TODOTS: model switch for activation");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("System.out.println(getInstancePath() + \" -> \" + stateStrings[new_state]);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("this.state = new_state;");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("@Override");
+ _builder.newLine();
+ _builder.append("public void executeInitTransition() {");
+ _builder.newLine();
+ _builder.append("\t");
+ StateMachine _stateMachine_2 = xpac.getStateMachine();
+ Transition _initTransition = this.stdExt.getInitTransition(_stateMachine_2);
+ Transition initt = _initTransition;
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("int chain = ");
+ TransitionChain _chain_1 = xpac.getChain(initt);
+ String _chainId_2 = this.stdExt.getChainId(_chain_1);
+ _builder.append(_chainId_2, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("int next = executeTransitionChain(chain, null, null);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("next = enterHistory(next, false, false);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("setState(next);");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("/**");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* calls exit codes while exiting from the current state to one of its");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* parent states while remembering the history");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @param current - the current state");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @param to - the final parent state");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @param handler - entry and exit codes are called only if not handler (for handler TransitionPoints)");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("*/");
+ _builder.newLine();
+ _builder.append("private void exitTo(int current, int to, boolean handler) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("while (current!=to) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("switch (current) {");
+ _builder.newLine();
+ {
+ StateMachine _stateMachine_3 = xpac.getStateMachine();
+ List<State> _baseStateList_1 = this.stdExt.getBaseStateList(_stateMachine_3);
+ for(final State state_4 : _baseStateList_1) {
+ _builder.append("\t\t\t");
+ _builder.append("case ");
+ String _stateId_2 = this.stdExt.getStateId(state_4);
+ _builder.append(_stateId_2, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ {
+ boolean _hasExitCode = this.stdExt.hasExitCode(state_4);
+ if (_hasExitCode) {
+ _builder.append("if (!handler) ");
+ String _exitCodeOperationName = RoomNameProv.getExitCodeOperationName(state_4);
+ _builder.append(_exitCodeOperationName, " ");
+ _builder.append("();");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("history[");
+ String _parentStateId = RoomNameProv.getParentStateId(state_4);
+ _builder.append(_parentStateId, " ");
+ _builder.append("] = ");
+ String _stateId_3 = this.stdExt.getStateId(state_4);
+ _builder.append(_stateId_3, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("current = ");
+ String _parentStateId_1 = RoomNameProv.getParentStateId(state_4);
+ _builder.append(_parentStateId_1, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("/**");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* calls action, entry and exit codes along a transition chain. The generic data are cast to typed data");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* matching the trigger of this chain. The ID of the final state is returned");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @param chain - the chain ID");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @param generic_data - the generic data pointer");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @return the ID of the final state");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("*/");
+ _builder.newLine();
+ _builder.append("private int executeTransitionChain(int chain, InterfaceItemBase ifitem, Object generic_data) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("switch (chain) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ EList<TransitionChain> _transitionChains_1 = xpac.getTransitionChains();
+ EList<TransitionChain> allchains = _transitionChains_1;
+ _builder.newLineIfNotEmpty();
+ {
+ for(final TransitionChain tc_1 : allchains) {
+ _builder.append("\t\t");
+ _builder.append("case ");
+ String _chainId_3 = this.stdExt.getChainId(tc_1);
+ _builder.append(_chainId_3, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("{");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ String _executeChainCode = this.stdExt.getExecuteChainCode(xpac, tc_1);
+ _builder.append(_executeChainCode, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("return NO_STATE;");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("/**");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* calls entry codes while entering a state\'s history. The ID of the final leaf state is returned");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @param state - the state which is entered");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @param handler - entry code is executed if not handler");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @return - the ID of the final leaf state");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("*/");
+ _builder.newLine();
+ _builder.append("private int enterHistory(int state, boolean handler, boolean skip_entry) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("while (true) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("switch (state) {");
+ _builder.newLine();
+ {
+ StateMachine _stateMachine_4 = xpac.getStateMachine();
+ List<State> _baseStateList_2 = this.stdExt.getBaseStateList(_stateMachine_4);
+ for(final State state_5 : _baseStateList_2) {
+ _builder.append("\t\t\t");
+ _builder.append("case ");
+ String _stateId_4 = this.stdExt.getStateId(state_5);
+ _builder.append(_stateId_4, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ {
+ boolean _hasEntryCode = this.stdExt.hasEntryCode(state_5);
+ if (_hasEntryCode) {
+ _builder.append("if (!(skip_entry || handler)) ");
+ String _entryCodeOperationName = RoomNameProv.getEntryCodeOperationName(state_5);
+ _builder.append(_entryCodeOperationName, " ");
+ _builder.append("();");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ {
+ boolean _isLeaf = this.stdExt.isLeaf(state_5);
+ if (_isLeaf) {
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("// in leaf state: return state id");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("return ");
+ String _stateId_5 = this.stdExt.getStateId(state_5);
+ _builder.append(_stateId_5, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ } else {
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("// state has a sub graph");
+ _builder.newLine();
+ {
+ StateGraph _subgraph = state_5.getSubgraph();
+ boolean _hasInitTransition = this.stdExt.hasInitTransition(_subgraph);
+ if (_hasInitTransition) {
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("// with init transition");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("if (history[");
+ String _stateId_6 = this.stdExt.getStateId(state_5);
+ _builder.append(_stateId_6, " ");
+ _builder.append("]==NO_STATE) {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ StateGraph _subgraph_1 = state_5.getSubgraph();
+ Transition _initTransition_1 = this.stdExt.getInitTransition(_subgraph_1);
+ Transition sub_initt = _initTransition_1;
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("state = executeTransitionChain(");
+ TransitionChain _chain_2 = xpac.getChain(sub_initt);
+ String _chainId_4 = this.stdExt.getChainId(_chain_2);
+ _builder.append(_chainId_4, " ");
+ _builder.append(", null, null);");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("else {");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("state = history[");
+ String _stateId_7 = this.stdExt.getStateId(state_5);
+ _builder.append(_stateId_7, " ");
+ _builder.append("];");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ } else {
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("// without init transition");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("state = history[");
+ String _stateId_8 = this.stdExt.getStateId(state_5);
+ _builder.append(_stateId_8, " ");
+ _builder.append("];");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
+ }
+ }
+ }
+ }
+ _builder.append("\t\t\t");
+ _builder.append("case STATE_TOP:");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("state = history[STATE_TOP];");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("break;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("skip_entry = false;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("//return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true)");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("//*** Entry and Exit Codes");
+ _builder.newLine();
+ {
+ StateMachine _stateMachine_5 = xpac.getStateMachine();
+ List<State> _stateList = this.stdExt.getStateList(_stateMachine_5);
+ for(final State state_6 : _stateList) {
+ {
+ boolean _isOwnObject = xpac.isOwnObject(state_6);
+ if (_isOwnObject) {
+ {
+ boolean _hasEntryCode_1 = this.stdExt.hasEntryCode(state_6);
+ if (_hasEntryCode_1) {
+ _builder.append("protected void ");
+ String _entryCodeOperationName_1 = RoomNameProv.getEntryCodeOperationName(state_6);
+ _builder.append(_entryCodeOperationName_1, "");
+ _builder.append("() {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ String _entryCode = this.stdExt.getEntryCode(xpac, state_6);
+ _builder.append(_entryCode, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ {
+ boolean _hasExitCode_1 = this.stdExt.hasExitCode(state_6);
+ if (_hasExitCode_1) {
+ _builder.append("protected void ");
+ String _exitCodeOperationName_1 = RoomNameProv.getExitCodeOperationName(state_6);
+ _builder.append(_exitCodeOperationName_1, "");
+ _builder.append("() {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ String _exitCode = this.stdExt.getExitCode(xpac, state_6);
+ _builder.append(_exitCode, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ }
+ }
+ }
+ }
+ _builder.newLine();
+ _builder.append("//*** Action Codes");
+ _builder.newLine();
+ {
+ StateMachine _stateMachine_6 = xpac.getStateMachine();
+ List<Transition> _transitionList = this.stdExt.getTransitionList(_stateMachine_6);
+ for(final Transition tr : _transitionList) {
+ {
+ boolean _operator_and = false;
+ boolean _isOwnObject_1 = xpac.isOwnObject(tr);
+ if (!_isOwnObject_1) {
+ _operator_and = false;
+ } else {
+ boolean _hasActionCode = this.stdExt.hasActionCode(tr);
+ _operator_and = BooleanExtensions.operator_and(_isOwnObject_1, _hasActionCode);
+ }
+ if (_operator_and) {
+ _builder.append("protected void ");
+ String _actionCodeOperationName = RoomNameProv.getActionCodeOperationName(tr);
+ _builder.append(_actionCodeOperationName, "");
+ _builder.append("(");
+ {
+ if ((tr instanceof NonInitialTransition)) {
+ _builder.append("InterfaceItemBase ifitem");
+ String _argumentList = this.javaGen.getArgumentList(xpac, tr);
+ _builder.append(_argumentList, "");
+ }
+ }
+ _builder.append(") {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ String _actionCode = this.stdExt.getActionCode(xpac, tr);
+ _builder.append(_actionCode, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ }
+ }
+ _builder.append("\t ");
+ _builder.newLine();
+ _builder.append("//******************************************");
+ _builder.newLine();
+ _builder.append("// END of generated code for FSM");
+ _builder.newLine();
+ _builder.append("//******************************************");
+ _builder.newLine();
+ return _builder;
+ }
+
+ protected StringConcatenation _guard(final TriggeredTransition tt, final String trigger, final ExpandedActorClass ac) {
+ StringConcatenation _builder = new StringConcatenation();
+ EList<Trigger> _triggers = tt.getTriggers();
+ final Function1<Trigger,Boolean> _function = new Function1<Trigger,Boolean>() {
+ public Boolean apply(final Trigger e) {
+ boolean _isMatching = ac.isMatching(e, trigger);
+ return ((Boolean)_isMatching);
+ }
+ };
+ Trigger _findFirst = IterableExtensions.<Trigger>findFirst(_triggers, _function);
+ Trigger tr = _findFirst;
+ _builder.newLineIfNotEmpty();
+ {
+ boolean _hasGuard = this.stdExt.hasGuard(tr);
+ if (_hasGuard) {
+ _builder.append("if (");
+ Guard _guard = tr.getGuard();
+ DetailCode _guard_1 = _guard.getGuard();
+ String _code = ac.getCode(_guard_1);
+ _builder.append(_code, "");
+ _builder.append(")");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ return _builder;
+ }
+
+ protected StringConcatenation _guard(final Transition t, final String trigger, final ExpandedActorClass ac) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("/* error */");
+ _builder.newLine();
+ return _builder;
+ }
+
+ public StringConcatenation guard(final Transition tt, final String trigger, final ExpandedActorClass ac) {
+ if (tt instanceof TriggeredTransition) {
+ return _guard((TriggeredTransition)tt, trigger, ac);
+ } else {
+ return _guard(tt, trigger, ac);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StdExtensions.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StdExtensions.java
index cc8f9f5de..16e65c317 100644
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StdExtensions.java
+++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StdExtensions.java
@@ -1,323 +1,324 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.inject.Inject;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.etrice.core.room.DataClass;
-import org.eclipse.etrice.core.room.FreeType;
-import org.eclipse.etrice.core.room.Message;
-import org.eclipse.etrice.core.room.PrimitiveType;
-import org.eclipse.etrice.core.room.RoomClass;
-import org.eclipse.etrice.core.room.RoomModel;
-import org.eclipse.etrice.core.room.Type;
-import org.eclipse.etrice.core.room.TypedID;
-import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.generator.etricegen.TransitionChain;
-import org.eclipse.etrice.generator.extensions.RoomExtensions;
-import org.eclipse.etrice.generator.java.gen.JavaGenerator;
-import org.eclipse.xtext.xbase.lib.ObjectExtensions;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-
-@SuppressWarnings("all")
-public class StdExtensions extends RoomExtensions {
-
- @Inject
- private JavaGenerator javaGen;
-
- public String getPackage(final RoomClass rc) {
- EObject _eContainer = rc.eContainer();
- String _name = ((RoomModel) _eContainer).getName();
- return _name;
- }
-
- public String getPathFromPackage(final String packageName) {
- String _replaceAll = packageName.replaceAll("\\.", "/");
- String _operator_plus = StringExtensions.operator_plus(_replaceAll, "/");
- return _operator_plus;
- }
-
- public String getPath(final RoomClass rc) {
- String _package = this.getPackage(rc);
- String _pathFromPackage = this.getPathFromPackage(_package);
- return _pathFromPackage;
- }
-
- public String getFileName(final RoomClass rc) {
- String _name = rc.getName();
- String _operator_plus = StringExtensions.operator_plus(_name, ".java");
- return _operator_plus;
- }
-
- public String toJavaType(final PrimitiveType prim) {
- String _switchResult = null;
- String _string = prim.toString();
- final String __valOfSwitchOver = _string;
- boolean matched = false;
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint8")) {
- matched=true;
- _switchResult = "undefined_type";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint16")) {
- matched=true;
- _switchResult = "undefined_type";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint32")) {
- matched=true;
- _switchResult = "undefined_type";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int8")) {
- matched=true;
- _switchResult = "byte";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int16")) {
- matched=true;
- _switchResult = "short";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int32")) {
- matched=true;
- _switchResult = "int";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"float32")) {
- matched=true;
- _switchResult = "float";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"float64")) {
- matched=true;
- _switchResult = "double";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"string")) {
- matched=true;
- _switchResult = "String";
- }
- }
- if (!matched) {
- String _string_1 = prim.toString();
- _switchResult = _string_1;
- }
- return _switchResult;
- }
-
- public String toJavaObjectType(final PrimitiveType prim) {
- String _switchResult = null;
- String _string = prim.toString();
- final String __valOfSwitchOver = _string;
- boolean matched = false;
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint8")) {
- matched=true;
- _switchResult = "undefined_type";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint16")) {
- matched=true;
- _switchResult = "undefined_type";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint32")) {
- matched=true;
- _switchResult = "undefined_type";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int8")) {
- matched=true;
- _switchResult = "Byte";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int16")) {
- matched=true;
- _switchResult = "Short";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int32")) {
- matched=true;
- _switchResult = "Integer";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"float32")) {
- matched=true;
- _switchResult = "Float";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"float64")) {
- matched=true;
- _switchResult = "Double";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"string")) {
- matched=true;
- _switchResult = "String";
- }
- }
- if (!matched) {
- String _string_1 = prim.toString();
- _switchResult = _string_1;
- }
- return _switchResult;
- }
-
- public String typeName(final Type type) {
- String _xifexpression = null;
- DataClass _type = type.getType();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type, null);
- if (_operator_notEquals) {
- DataClass _type_1 = type.getType();
- String _name = _type_1.getName();
- return _name;
- } else {
- PrimitiveType _prim = type.getPrim();
- String _javaType = this.toJavaType(_prim);
- _xifexpression = _javaType;
- }
- return _xifexpression;
- }
-
- public String freeTypeName(final FreeType type) {
- String _xifexpression = null;
- String _type = type.getType();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type, null);
- if (_operator_notEquals) {
- String _type_1 = type.getType();
- return _type_1;
- } else {
- PrimitiveType _prim = type.getPrim();
- String _javaType = this.toJavaType(_prim);
- _xifexpression = _javaType;
- }
- return _xifexpression;
- }
-
- public String typeObjectName(final Type type) {
- String _xifexpression = null;
- DataClass _type = type.getType();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type, null);
- if (_operator_notEquals) {
- DataClass _type_1 = type.getType();
- String _name = _type_1.getName();
- return _name;
- } else {
- PrimitiveType _prim = type.getPrim();
- String _javaObjectType = this.toJavaObjectType(_prim);
- _xifexpression = _javaObjectType;
- }
- return _xifexpression;
- }
-
- public String defaultValue(final PrimitiveType prim) {
- String _switchResult = null;
- String _string = prim.toString();
- final String __valOfSwitchOver = _string;
- boolean matched = false;
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint8")) {
- matched=true;
- _switchResult = "0";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint16")) {
- matched=true;
- _switchResult = "0";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint32")) {
- matched=true;
- _switchResult = "0";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int8")) {
- matched=true;
- _switchResult = "0";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int16")) {
- matched=true;
- _switchResult = "0";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int32")) {
- matched=true;
- _switchResult = "0";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"float32")) {
- matched=true;
- _switchResult = "0.0";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"float64")) {
- matched=true;
- _switchResult = "0.0";
- }
- }
- if (!matched) {
- if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"string")) {
- matched=true;
- _switchResult = "\"\"";
- }
- }
- if (!matched) {
- String _string_1 = prim.toString();
- _switchResult = _string_1;
- }
- return _switchResult;
- }
-
- public String defaultValue(final TypedID a) {
- Type _type = a.getType();
- DataClass _type_1 = _type.getType();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type_1, null);
- if (_operator_notEquals) {
- Type _type_2 = a.getType();
- DataClass _type_3 = _type_2.getType();
- String _name = _type_3.getName();
- String _operator_plus = StringExtensions.operator_plus("new ", _name);
- String _operator_plus_1 = StringExtensions.operator_plus(_operator_plus, "()");
- return _operator_plus_1;
- } else {
- Type _type_4 = a.getType();
- PrimitiveType _prim = _type_4.getPrim();
- String _defaultValue = this.defaultValue(_prim);
- return _defaultValue;
- }
- }
-
- public String getTypedDataDefinition(final Message m) {
- String _typedData = this.javaGen.getTypedData(m);
- return _typedData;
- }
-
- public String getExecuteChainCode(final ExpandedActorClass ac, final TransitionChain tc) {
- String _executeChain = this.javaGen.getExecuteChain(ac, tc);
- return _executeChain;
- }
-} \ No newline at end of file
+package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.FreeType;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.PrimitiveType;
+import org.eclipse.etrice.core.room.RoomClass;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.Type;
+import org.eclipse.etrice.core.room.TypedID;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.TransitionChain;
+import org.eclipse.etrice.generator.extensions.RoomExtensions;
+import org.eclipse.etrice.generator.java.gen.JavaGenerator;
+import org.eclipse.xtext.xbase.lib.ObjectExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+
+@SuppressWarnings("all")
+@Singleton
+public class StdExtensions extends RoomExtensions {
+ @Inject
+ private JavaGenerator javaGen;
+
+ public String getPackage(final RoomClass rc) {
+ EObject _eContainer = rc.eContainer();
+ String _name = ((RoomModel) _eContainer).getName();
+ return _name;
+ }
+
+ public String getPathFromPackage(final String packageName) {
+ String _replaceAll = packageName.replaceAll("\\.", "/");
+ String _operator_plus = StringExtensions.operator_plus(_replaceAll, "/");
+ return _operator_plus;
+ }
+
+ public String getPath(final RoomClass rc) {
+ String _package = this.getPackage(rc);
+ String _pathFromPackage = this.getPathFromPackage(_package);
+ return _pathFromPackage;
+ }
+
+ public String getFileName(final RoomClass rc) {
+ String _name = rc.getName();
+ String _operator_plus = StringExtensions.operator_plus(_name, ".java");
+ return _operator_plus;
+ }
+
+ public String toJavaType(final PrimitiveType prim) {
+ String _switchResult = null;
+ String _string = prim.toString();
+ final String __valOfSwitchOver = _string;
+ boolean matched = false;
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint8")) {
+ matched=true;
+ _switchResult = "undefined_type";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint16")) {
+ matched=true;
+ _switchResult = "undefined_type";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint32")) {
+ matched=true;
+ _switchResult = "undefined_type";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int8")) {
+ matched=true;
+ _switchResult = "byte";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int16")) {
+ matched=true;
+ _switchResult = "short";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int32")) {
+ matched=true;
+ _switchResult = "int";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"float32")) {
+ matched=true;
+ _switchResult = "float";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"float64")) {
+ matched=true;
+ _switchResult = "double";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"string")) {
+ matched=true;
+ _switchResult = "String";
+ }
+ }
+ if (!matched) {
+ String _string_1 = prim.toString();
+ _switchResult = _string_1;
+ }
+ return _switchResult;
+ }
+
+ public String toJavaObjectType(final PrimitiveType prim) {
+ String _switchResult = null;
+ String _string = prim.toString();
+ final String __valOfSwitchOver = _string;
+ boolean matched = false;
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint8")) {
+ matched=true;
+ _switchResult = "undefined_type";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint16")) {
+ matched=true;
+ _switchResult = "undefined_type";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint32")) {
+ matched=true;
+ _switchResult = "undefined_type";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int8")) {
+ matched=true;
+ _switchResult = "Byte";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int16")) {
+ matched=true;
+ _switchResult = "Short";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int32")) {
+ matched=true;
+ _switchResult = "Integer";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"float32")) {
+ matched=true;
+ _switchResult = "Float";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"float64")) {
+ matched=true;
+ _switchResult = "Double";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"string")) {
+ matched=true;
+ _switchResult = "String";
+ }
+ }
+ if (!matched) {
+ String _string_1 = prim.toString();
+ _switchResult = _string_1;
+ }
+ return _switchResult;
+ }
+
+ public String typeName(final Type type) {
+ String _xifexpression = null;
+ DataClass _type = type.getType();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type, null);
+ if (_operator_notEquals) {
+ DataClass _type_1 = type.getType();
+ String _name = _type_1.getName();
+ return _name;
+ } else {
+ PrimitiveType _prim = type.getPrim();
+ String _javaType = this.toJavaType(_prim);
+ _xifexpression = _javaType;
+ }
+ return _xifexpression;
+ }
+
+ public String freeTypeName(final FreeType type) {
+ String _xifexpression = null;
+ String _type = type.getType();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type, null);
+ if (_operator_notEquals) {
+ String _type_1 = type.getType();
+ return _type_1;
+ } else {
+ PrimitiveType _prim = type.getPrim();
+ String _javaType = this.toJavaType(_prim);
+ _xifexpression = _javaType;
+ }
+ return _xifexpression;
+ }
+
+ public String typeObjectName(final Type type) {
+ String _xifexpression = null;
+ DataClass _type = type.getType();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type, null);
+ if (_operator_notEquals) {
+ DataClass _type_1 = type.getType();
+ String _name = _type_1.getName();
+ return _name;
+ } else {
+ PrimitiveType _prim = type.getPrim();
+ String _javaObjectType = this.toJavaObjectType(_prim);
+ _xifexpression = _javaObjectType;
+ }
+ return _xifexpression;
+ }
+
+ public String defaultValue(final PrimitiveType prim) {
+ String _switchResult = null;
+ String _string = prim.toString();
+ final String __valOfSwitchOver = _string;
+ boolean matched = false;
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint8")) {
+ matched=true;
+ _switchResult = "0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint16")) {
+ matched=true;
+ _switchResult = "0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint32")) {
+ matched=true;
+ _switchResult = "0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int8")) {
+ matched=true;
+ _switchResult = "0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int16")) {
+ matched=true;
+ _switchResult = "0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int32")) {
+ matched=true;
+ _switchResult = "0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"float32")) {
+ matched=true;
+ _switchResult = "0.0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"float64")) {
+ matched=true;
+ _switchResult = "0.0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"string")) {
+ matched=true;
+ _switchResult = "\"\"";
+ }
+ }
+ if (!matched) {
+ String _string_1 = prim.toString();
+ _switchResult = _string_1;
+ }
+ return _switchResult;
+ }
+
+ public String defaultValue(final TypedID a) {
+ Type _type = a.getType();
+ DataClass _type_1 = _type.getType();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type_1, null);
+ if (_operator_notEquals) {
+ Type _type_2 = a.getType();
+ DataClass _type_3 = _type_2.getType();
+ String _name = _type_3.getName();
+ String _operator_plus = StringExtensions.operator_plus("new ", _name);
+ String _operator_plus_1 = StringExtensions.operator_plus(_operator_plus, "()");
+ return _operator_plus_1;
+ } else {
+ Type _type_4 = a.getType();
+ PrimitiveType _prim = _type_4.getPrim();
+ String _defaultValue = this.defaultValue(_prim);
+ return _defaultValue;
+ }
+ }
+
+ public String getTypedDataDefinition(final Message m) {
+ String _typedData = this.javaGen.getTypedData(m);
+ return _typedData;
+ }
+
+ public String getExecuteChainCode(final ExpandedActorClass ac, final TransitionChain tc) {
+ String _executeChain = this.javaGen.getExecuteChain(ac, tc);
+ return _executeChain;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.java
index 92d8c7872..2df9ebab2 100644
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.java
+++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.java
@@ -1,622 +1,629 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.inject.Inject;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.DetailCode;
-import org.eclipse.etrice.core.room.LogicalThread;
-import org.eclipse.etrice.core.room.RoomModel;
-import org.eclipse.etrice.core.room.SubSystemClass;
-import org.eclipse.etrice.generator.base.ILogger;
-import org.eclipse.etrice.generator.base.Indexed;
-import org.eclipse.etrice.generator.etricegen.ActorInstance;
-import org.eclipse.etrice.generator.etricegen.InterfaceItemInstance;
-import org.eclipse.etrice.generator.etricegen.Root;
-import org.eclipse.etrice.generator.etricegen.SubSystemInstance;
-import org.eclipse.etrice.generator.java.gen.ProcedureHelpers;
-import org.eclipse.etrice.generator.java.gen.StdExtensions;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-import org.eclipse.xtext.xbase.lib.BooleanExtensions;
-import org.eclipse.xtext.xbase.lib.ComparableExtensions;
-import org.eclipse.xtext.xbase.lib.IntegerExtensions;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-import org.eclipse.xtext.xtend2.lib.StringConcatenation;
-
-@SuppressWarnings("all")
-public class SubSystemClassGen {
-
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private StdExtensions stdExt;
-
- @Inject
- private ProcedureHelpers helpers;
-
- @Inject
- private ILogger logger;
-
- public void doGenerate(final Root root) {
- EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances();
- for (SubSystemInstance ssi : _subSystemInstances) {
- {
- SubSystemClass _subSystemClass = ssi.getSubSystemClass();
- String _generationTargetPath = this.stdExt.getGenerationTargetPath(_subSystemClass);
- SubSystemClass _subSystemClass_1 = ssi.getSubSystemClass();
- String _path = this.stdExt.getPath(_subSystemClass_1);
- String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
- String path = _operator_plus;
- SubSystemClass _subSystemClass_2 = ssi.getSubSystemClass();
- String _fileName = this.stdExt.getFileName(_subSystemClass_2);
- String file = _fileName;
- String _operator_plus_1 = StringExtensions.operator_plus("generating SubSystemClass implementation: \'", file);
- String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'");
- String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path);
- String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'");
- this.logger.logInfo(_operator_plus_4);
- this.fileAccess.setOutputPath(path);
- SubSystemClass _subSystemClass_3 = ssi.getSubSystemClass();
- StringConcatenation _generate = this.generate(root, ssi, _subSystemClass_3);
- this.fileAccess.generateFile(file, _generate);
- }
- }
- }
-
- public StringConcatenation generate(final Root root, final SubSystemInstance comp, final SubSystemClass cc) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("package ");
- String _package = this.stdExt.getPackage(cc);
- _builder.append(_package, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.messaging.MessageService;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.messaging.RTServices;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.messaging.Address;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.messaging.IRTObject;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.messaging.RTSystemServicesProtocol.*;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;");
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;");
- _builder.newLine();
- _builder.newLine();
- EList<RoomModel> _referencedModels = root.getReferencedModels(cc);
- EList<RoomModel> models = _referencedModels;
- _builder.newLineIfNotEmpty();
- {
- for(RoomModel model : models) {
- _builder.append("import ");
- String _name = model.getName();
- _builder.append(_name, "");
- _builder.append(".*;");
- }
- }
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.newLine();
- DetailCode _userCode1 = cc.getUserCode1();
- StringConcatenation _UserCode = this.helpers.UserCode(_userCode1);
- _builder.append(_UserCode, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("public class ");
- String _name_1 = comp.getName();
- _builder.append(_name_1, "");
- _builder.append(" extends SubSystemClassBase{");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- DetailCode _userCode2 = cc.getUserCode2();
- StringConcatenation _UserCode_1 = this.helpers.UserCode(_userCode2);
- _builder.append(_UserCode_1, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public ");
- String _name_2 = comp.getName();
- _builder.append(_name_2, " ");
- _builder.append("(IRTObject parent, String name) {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("super(parent, name);");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("@Override");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public void receiveEvent(InterfaceItemBase ifitem, int evt, Object data){");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("@Override\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public void instantiateMessageServices(){");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("RTServices.getInstance().getMsgSvcCtrl().addMsgSvc(new MessageService(this, new Address(0, 0, 0),\"MessageService_Main\"));");
- _builder.newLine();
- {
- EList<LogicalThread> _threads = cc.getThreads();
- for(LogicalThread thread : _threads) {
- _builder.append("\t\t");
- _builder.append("RTServices.getInstance().getMsgSvcCtrl().addMsgSvc(new MessageService(this, new Address(0, ");
- EList<LogicalThread> _threads_1 = cc.getThreads();
- int _indexOf = _threads_1.indexOf(thread);
- int _operator_plus = IntegerExtensions.operator_plus(((Integer)_indexOf), ((Integer)1));
- _builder.append(_operator_plus, " ");
- _builder.append(", 0),\"MessageService_");
- String _name_3 = thread.getName();
- _builder.append(_name_3, " ");
- _builder.append("\", ");
- int _prio = thread.getPrio();
- _builder.append(_prio, " ");
- _builder.append("));");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("@Override");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public void instantiateActors(){");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("// all addresses");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("// Addresses for the Subsystem Systemport");
- _builder.newLine();
- {
- EList<ActorInstance> _allContainedInstances = comp.getAllContainedInstances();
- int _maxObjId = comp.getMaxObjId();
- Iterable<Indexed<ActorInstance>> _indexed = Indexed.<ActorInstance>indexed(_allContainedInstances, _maxObjId);
- for(Indexed<ActorInstance> ai : _indexed) {
- _builder.append("\t\t");
- _builder.append("Address addr_item_SystemPort_");
- EList<ActorInstance> _allContainedInstances_1 = comp.getAllContainedInstances();
- ActorInstance _value = ai.getValue();
- int _indexOf_1 = _allContainedInstances_1.indexOf(_value);
- _builder.append(_indexOf_1, " ");
- _builder.append(" = new Address(0,0,");
- int _index1 = ai.getIndex1();
- _builder.append(_index1, " ");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t");
- _builder.newLine();
- {
- EList<ActorInstance> _allContainedInstances_2 = comp.getAllContainedInstances();
- for(ActorInstance ai_1 : _allContainedInstances_2) {
- _builder.append("\t\t");
- _builder.append("// actor instance ");
- String _path = ai_1.getPath();
- _builder.append(_path, " ");
- _builder.append(" itself => Systemport Address");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("// TODOTJ: For each Actor, multiple addresses should be generated (actor?, systemport, debugport)");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("Address addr_item_");
- String _path_1 = ai_1.getPath();
- String _pathName = this.stdExt.getPathName(_path_1);
- _builder.append(_pathName, " ");
- _builder.append(" = new Address(0,");
- int _threadId = ai_1.getThreadId();
- _builder.append(_threadId, " ");
- _builder.append(",");
- int _objId = ai_1.getObjId();
- _builder.append(_objId, " ");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("// interface items of ");
- String _path_2 = ai_1.getPath();
- _builder.append(_path_2, " ");
- _builder.newLineIfNotEmpty();
- {
- EList<InterfaceItemInstance> _orderedIfItemInstances = ai_1.getOrderedIfItemInstances();
- for(InterfaceItemInstance pi : _orderedIfItemInstances) {
- {
- boolean _operator_or = false;
- if ((pi instanceof org.eclipse.etrice.generator.etricegen.ServiceImplInstance)) {
- _operator_or = true;
- } else {
- EList<InterfaceItemInstance> _peers = pi.getPeers();
- int _size = _peers.size();
- boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)1));
- _operator_or = BooleanExtensions.operator_or((pi instanceof org.eclipse.etrice.generator.etricegen.ServiceImplInstance), _operator_greaterThan);
- }
- if (_operator_or) {
- {
- EList<InterfaceItemInstance> _peers_1 = pi.getPeers();
- for(InterfaceItemInstance peer : _peers_1) {
- _builder.append("\t\t");
- EList<InterfaceItemInstance> _peers_2 = pi.getPeers();
- int _indexOf_2 = _peers_2.indexOf(peer);
- int i = _indexOf_2;
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("Address addr_item_");
- String _path_3 = pi.getPath();
- String _pathName_1 = this.stdExt.getPathName(_path_3);
- _builder.append(_pathName_1, " ");
- _builder.append("_");
- _builder.append(i, " ");
- _builder.append(" = new Address(0,");
- int _threadId_1 = pi.getThreadId();
- _builder.append(_threadId_1, " ");
- _builder.append(",");
- int _objId_1 = pi.getObjId();
- int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_objId_1), ((Integer)i));
- _builder.append(_operator_plus_1, " ");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- }
- }} else {
- _builder.append("\t\t");
- _builder.append("Address addr_item_");
- String _path_4 = pi.getPath();
- String _pathName_2 = this.stdExt.getPathName(_path_4);
- _builder.append(_pathName_2, " ");
- _builder.append(" = new Address(0,");
- int _threadId_2 = ai_1.getThreadId();
- _builder.append(_threadId_2, " ");
- _builder.append(",");
- int _objId_2 = pi.getObjId();
- _builder.append(_objId_2, " ");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- }
- }
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("// instantiate all actor instances");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("instances = new ActorClassBase[");
- EList<ActorInstance> _allContainedInstances_3 = comp.getAllContainedInstances();
- int _size_1 = _allContainedInstances_3.size();
- _builder.append(_size_1, " ");
- _builder.append("];");
- _builder.newLineIfNotEmpty();
- {
- EList<ActorInstance> _allContainedInstances_4 = comp.getAllContainedInstances();
- for(ActorInstance ai_2 : _allContainedInstances_4) {
- _builder.append("\t\t");
- _builder.append("instances[");
- EList<ActorInstance> _allContainedInstances_5 = comp.getAllContainedInstances();
- int _indexOf_3 = _allContainedInstances_5.indexOf(ai_2);
- _builder.append(_indexOf_3, " ");
- _builder.append("] = new ");
- ActorClass _actorClass = ai_2.getActorClass();
- String _name_4 = _actorClass.getName();
- _builder.append(_name_4, " ");
- _builder.append("(");
- _builder.newLineIfNotEmpty();
- {
- EObject _eContainer = ai_2.eContainer();
- if ((_eContainer instanceof org.eclipse.etrice.generator.etricegen.SubSystemInstance)) {
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("this,");
- _builder.newLine();} else {
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("instances[");
- EList<ActorInstance> _allContainedInstances_6 = comp.getAllContainedInstances();
- EObject _eContainer_1 = ai_2.eContainer();
- int _indexOf_4 = _allContainedInstances_6.indexOf(_eContainer_1);
- _builder.append(_indexOf_4, " ");
- _builder.append("],");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("\"");
- String _name_5 = ai_2.getName();
- _builder.append(_name_5, " ");
- _builder.append("\",");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("// own interface item addresses");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("new Address[][] {{addr_item_");
- String _path_5 = ai_2.getPath();
- String _pathName_3 = this.stdExt.getPathName(_path_5);
- _builder.append(_pathName_3, " ");
- _builder.append("}");
- {
- EList<InterfaceItemInstance> _orderedIfItemInstances_1 = ai_2.getOrderedIfItemInstances();
- boolean _isEmpty = _orderedIfItemInstances_1.isEmpty();
- boolean _operator_not = BooleanExtensions.operator_not(_isEmpty);
- if (_operator_not) {
- _builder.append(",");
- }
- }
- _builder.newLineIfNotEmpty();
- {
- EList<InterfaceItemInstance> _orderedIfItemInstances_2 = ai_2.getOrderedIfItemInstances();
- boolean hasAnyElements = false;
- for(InterfaceItemInstance pi_1 : _orderedIfItemInstances_2) {
- if (!hasAnyElements) {
- hasAnyElements = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("{");
- _builder.newLine();
- {
- boolean _operator_or_1 = false;
- if ((pi_1 instanceof org.eclipse.etrice.generator.etricegen.ServiceImplInstance)) {
- _operator_or_1 = true;
- } else {
- EList<InterfaceItemInstance> _peers_3 = pi_1.getPeers();
- int _size_2 = _peers_3.size();
- boolean _operator_greaterThan_1 = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size_2), ((Integer)1));
- _operator_or_1 = BooleanExtensions.operator_or((pi_1 instanceof org.eclipse.etrice.generator.etricegen.ServiceImplInstance), _operator_greaterThan_1);
- }
- if (_operator_or_1) {
- {
- EList<InterfaceItemInstance> _peers_4 = pi_1.getPeers();
- boolean hasAnyElements_1 = false;
- for(InterfaceItemInstance peer_1 : _peers_4) {
- if (!hasAnyElements_1) {
- hasAnyElements_1 = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("addr_item_");
- String _path_6 = pi_1.getPath();
- String _pathName_4 = this.stdExt.getPathName(_path_6);
- _builder.append(_pathName_4, " ");
- _builder.append("_");
- EList<InterfaceItemInstance> _peers_5 = pi_1.getPeers();
- int _indexOf_5 = _peers_5.indexOf(peer_1);
- _builder.append(_indexOf_5, " ");
- _builder.newLineIfNotEmpty();
- }
- }} else {
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("addr_item_");
- String _path_7 = pi_1.getPath();
- String _pathName_5 = this.stdExt.getPathName(_path_7);
- _builder.append(_pathName_5, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("},");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("// peer interface item addresses");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("new Address[][] {{addr_item_SystemPort_");
- EList<ActorInstance> _allContainedInstances_7 = comp.getAllContainedInstances();
- int _indexOf_6 = _allContainedInstances_7.indexOf(ai_2);
- _builder.append(_indexOf_6, " ");
- _builder.append("}");
- {
- EList<InterfaceItemInstance> _orderedIfItemInstances_3 = ai_2.getOrderedIfItemInstances();
- boolean _isEmpty_1 = _orderedIfItemInstances_3.isEmpty();
- boolean _operator_not_1 = BooleanExtensions.operator_not(_isEmpty_1);
- if (_operator_not_1) {
- _builder.append(",");
- }
- }
- _builder.newLineIfNotEmpty();
- {
- EList<InterfaceItemInstance> _orderedIfItemInstances_4 = ai_2.getOrderedIfItemInstances();
- boolean hasAnyElements_2 = false;
- for(InterfaceItemInstance pi_2 : _orderedIfItemInstances_4) {
- if (!hasAnyElements_2) {
- hasAnyElements_2 = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- _builder.append("\t\t");
- _builder.append("\t\t");
- _builder.append("{");
- _builder.newLine();
- {
- boolean _operator_and = false;
- boolean _operator_not_2 = BooleanExtensions.operator_not((pi_2 instanceof org.eclipse.etrice.generator.etricegen.ServiceImplInstance));
- if (!_operator_not_2) {
- _operator_and = false;
- } else {
- EList<InterfaceItemInstance> _peers_6 = pi_2.getPeers();
- boolean _isEmpty_2 = _peers_6.isEmpty();
- _operator_and = BooleanExtensions.operator_and(_operator_not_2, _isEmpty_2);
- }
- if (_operator_and) {
- _builder.append("\t\t");
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("null");
- _builder.newLine();} else {
- {
- EList<InterfaceItemInstance> _peers_7 = pi_2.getPeers();
- boolean hasAnyElements_3 = false;
- for(InterfaceItemInstance pp : _peers_7) {
- if (!hasAnyElements_3) {
- hasAnyElements_3 = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- {
- boolean _operator_or_2 = false;
- if ((pp instanceof org.eclipse.etrice.generator.etricegen.ServiceImplInstance)) {
- _operator_or_2 = true;
- } else {
- EList<InterfaceItemInstance> _peers_8 = pp.getPeers();
- int _size_3 = _peers_8.size();
- boolean _operator_greaterThan_2 = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size_3), ((Integer)1));
- _operator_or_2 = BooleanExtensions.operator_or((pp instanceof org.eclipse.etrice.generator.etricegen.ServiceImplInstance), _operator_greaterThan_2);
- }
- if (_operator_or_2) {
- _builder.append("\t\t");
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("addr_item_");
- String _path_8 = pp.getPath();
- String _pathName_6 = this.stdExt.getPathName(_path_8);
- _builder.append(_pathName_6, " ");
- _builder.append("_");
- EList<InterfaceItemInstance> _peers_9 = pp.getPeers();
- int _indexOf_7 = _peers_9.indexOf(pi_2);
- _builder.append(_indexOf_7, " ");
- _builder.newLineIfNotEmpty();} else {
- _builder.append("\t\t");
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("addr_item_");
- String _path_9 = pp.getPath();
- String _pathName_7 = this.stdExt.getPathName(_path_9);
- _builder.append(_pathName_7, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- }
- }
- _builder.append("\t\t");
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("); ");
- _builder.newLine();
- }
- }
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("// create the subsystem system port\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("RTSystemPort = new RTSystemServicesProtocolConjPortRepl(this, \"RTSystemPort\",");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("0, //local ID");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("// own addresses");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("new Address[]{");
- _builder.newLine();
- {
- EList<ActorInstance> _allContainedInstances_8 = comp.getAllContainedInstances();
- boolean hasAnyElements_4 = false;
- for(ActorInstance ai_3 : _allContainedInstances_8) {
- if (!hasAnyElements_4) {
- hasAnyElements_4 = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- _builder.append("\t\t\t\t\t");
- _builder.append("addr_item_SystemPort_");
- EList<ActorInstance> _allContainedInstances_9 = comp.getAllContainedInstances();
- int _indexOf_8 = _allContainedInstances_9.indexOf(ai_3);
- _builder.append(_indexOf_8, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t\t\t");
- _builder.append("},");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("// peer addresses");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("new Address[]{");
- _builder.newLine();
- {
- EList<ActorInstance> _allContainedInstances_10 = comp.getAllContainedInstances();
- boolean hasAnyElements_5 = false;
- for(ActorInstance ai_4 : _allContainedInstances_10) {
- if (!hasAnyElements_5) {
- hasAnyElements_5 = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- _builder.append("\t\t\t\t\t");
- _builder.append("addr_item_");
- String _path_10 = ai_4.getPath();
- String _pathName_8 = this.stdExt.getPathName(_path_10);
- _builder.append(_pathName_8, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t\t\t");
- _builder.append("});");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("};");
- _builder.newLine();
- return _builder;
- }
-} \ No newline at end of file
+package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.LogicalThread;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.generator.base.ILogger;
+import org.eclipse.etrice.generator.base.Indexed;
+import org.eclipse.etrice.generator.etricegen.ActorInstance;
+import org.eclipse.etrice.generator.etricegen.InterfaceItemInstance;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.etricegen.ServiceImplInstance;
+import org.eclipse.etrice.generator.etricegen.SubSystemInstance;
+import org.eclipse.etrice.generator.java.gen.ProcedureHelpers;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.xbase.lib.BooleanExtensions;
+import org.eclipse.xtext.xbase.lib.ComparableExtensions;
+import org.eclipse.xtext.xbase.lib.IntegerExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class SubSystemClassGen {
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ @Inject
+ private StdExtensions stdExt;
+
+ @Inject
+ private ProcedureHelpers helpers;
+
+ @Inject
+ private ILogger logger;
+
+ public void doGenerate(final Root root) {
+ EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances();
+ for (final SubSystemInstance ssi : _subSystemInstances) {
+ {
+ SubSystemClass _subSystemClass = ssi.getSubSystemClass();
+ String _generationTargetPath = this.stdExt.getGenerationTargetPath(_subSystemClass);
+ SubSystemClass _subSystemClass_1 = ssi.getSubSystemClass();
+ String _path = this.stdExt.getPath(_subSystemClass_1);
+ String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
+ String path = _operator_plus;
+ SubSystemClass _subSystemClass_2 = ssi.getSubSystemClass();
+ String _fileName = this.stdExt.getFileName(_subSystemClass_2);
+ String file = _fileName;
+ String _operator_plus_1 = StringExtensions.operator_plus("generating SubSystemClass implementation: \'", file);
+ String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'");
+ String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path);
+ String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'");
+ this.logger.logInfo(_operator_plus_4);
+ this.fileAccess.setOutputPath(path);
+ SubSystemClass _subSystemClass_3 = ssi.getSubSystemClass();
+ StringConcatenation _generate = this.generate(root, ssi, _subSystemClass_3);
+ this.fileAccess.generateFile(file, _generate);
+ }
+ }
+ }
+
+ public StringConcatenation generate(final Root root, final SubSystemInstance comp, final SubSystemClass cc) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("package ");
+ String _package = this.stdExt.getPackage(cc);
+ _builder.append(_package, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.MessageService;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.RTServices;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.Address;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.IRTObject;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.RTSystemServicesProtocol.*;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;");
+ _builder.newLine();
+ _builder.newLine();
+ EList<RoomModel> _referencedModels = root.getReferencedModels(cc);
+ EList<RoomModel> models = _referencedModels;
+ _builder.newLineIfNotEmpty();
+ {
+ for(final RoomModel model : models) {
+ _builder.append("import ");
+ String _name = model.getName();
+ _builder.append(_name, "");
+ _builder.append(".*;");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.newLine();
+ DetailCode _userCode1 = cc.getUserCode1();
+ StringConcatenation _UserCode = this.helpers.UserCode(_userCode1);
+ _builder.append(_UserCode, "");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("public class ");
+ String _name_1 = comp.getName();
+ _builder.append(_name_1, "");
+ _builder.append(" extends SubSystemClassBase{");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ DetailCode _userCode2 = cc.getUserCode2();
+ StringConcatenation _UserCode_1 = this.helpers.UserCode(_userCode2);
+ _builder.append(_UserCode_1, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ String _name_2 = comp.getName();
+ _builder.append(_name_2, " ");
+ _builder.append("(IRTObject parent, String name) {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("super(parent, name);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("@Override");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void receiveEvent(InterfaceItemBase ifitem, int evt, Object data){");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("@Override\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void instantiateMessageServices(){");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("RTServices.getInstance().getMsgSvcCtrl().addMsgSvc(new MessageService(this, new Address(0, 0, 0),\"MessageService_Main\"));");
+ _builder.newLine();
+ {
+ EList<LogicalThread> _threads = cc.getThreads();
+ for(final LogicalThread thread : _threads) {
+ _builder.append("\t\t");
+ _builder.append("RTServices.getInstance().getMsgSvcCtrl().addMsgSvc(new MessageService(this, new Address(0, ");
+ EList<LogicalThread> _threads_1 = cc.getThreads();
+ int _indexOf = _threads_1.indexOf(thread);
+ int _operator_plus = IntegerExtensions.operator_plus(((Integer)_indexOf), ((Integer)1));
+ _builder.append(_operator_plus, " ");
+ _builder.append(", 0),\"MessageService_");
+ String _name_3 = thread.getName();
+ _builder.append(_name_3, " ");
+ _builder.append("\", ");
+ int _prio = thread.getPrio();
+ _builder.append(_prio, " ");
+ _builder.append("));");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("@Override");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void instantiateActors(){");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// all addresses");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// Addresses for the Subsystem Systemport");
+ _builder.newLine();
+ {
+ EList<ActorInstance> _allContainedInstances = comp.getAllContainedInstances();
+ int _maxObjId = comp.getMaxObjId();
+ Iterable<Indexed<ActorInstance>> _indexed = Indexed.<ActorInstance>indexed(_allContainedInstances, _maxObjId);
+ for(final Indexed<ActorInstance> ai : _indexed) {
+ _builder.append("\t\t");
+ _builder.append("Address addr_item_SystemPort_");
+ EList<ActorInstance> _allContainedInstances_1 = comp.getAllContainedInstances();
+ ActorInstance _value = ai.getValue();
+ int _indexOf_1 = _allContainedInstances_1.indexOf(_value);
+ _builder.append(_indexOf_1, " ");
+ _builder.append(" = new Address(0,0,");
+ int _index1 = ai.getIndex1();
+ _builder.append(_index1, " ");
+ _builder.append(");");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.newLine();
+ {
+ EList<ActorInstance> _allContainedInstances_2 = comp.getAllContainedInstances();
+ for(final ActorInstance ai_1 : _allContainedInstances_2) {
+ _builder.append("\t\t");
+ _builder.append("// actor instance ");
+ String _path = ai_1.getPath();
+ _builder.append(_path, " ");
+ _builder.append(" itself => Systemport Address");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("// TODOTJ: For each Actor, multiple addresses should be generated (actor?, systemport, debugport)");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("Address addr_item_");
+ String _path_1 = ai_1.getPath();
+ String _pathName = this.stdExt.getPathName(_path_1);
+ _builder.append(_pathName, " ");
+ _builder.append(" = new Address(0,");
+ int _threadId = ai_1.getThreadId();
+ _builder.append(_threadId, " ");
+ _builder.append(",");
+ int _objId = ai_1.getObjId();
+ _builder.append(_objId, " ");
+ _builder.append(");");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("// interface items of ");
+ String _path_2 = ai_1.getPath();
+ _builder.append(_path_2, " ");
+ _builder.newLineIfNotEmpty();
+ {
+ EList<InterfaceItemInstance> _orderedIfItemInstances = ai_1.getOrderedIfItemInstances();
+ for(final InterfaceItemInstance pi : _orderedIfItemInstances) {
+ {
+ boolean _operator_or = false;
+ if ((pi instanceof ServiceImplInstance)) {
+ _operator_or = true;
+ } else {
+ EList<InterfaceItemInstance> _peers = pi.getPeers();
+ int _size = _peers.size();
+ boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)1));
+ _operator_or = BooleanExtensions.operator_or((pi instanceof ServiceImplInstance), _operator_greaterThan);
+ }
+ if (_operator_or) {
+ {
+ EList<InterfaceItemInstance> _peers_1 = pi.getPeers();
+ for(final InterfaceItemInstance peer : _peers_1) {
+ _builder.append("\t\t");
+ EList<InterfaceItemInstance> _peers_2 = pi.getPeers();
+ int _indexOf_2 = _peers_2.indexOf(peer);
+ int i = _indexOf_2;
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("Address addr_item_");
+ String _path_3 = pi.getPath();
+ String _pathName_1 = this.stdExt.getPathName(_path_3);
+ _builder.append(_pathName_1, " ");
+ _builder.append("_");
+ _builder.append(i, " ");
+ _builder.append(" = new Address(0,");
+ int _threadId_1 = pi.getThreadId();
+ _builder.append(_threadId_1, " ");
+ _builder.append(",");
+ int _objId_1 = pi.getObjId();
+ int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_objId_1), ((Integer)i));
+ _builder.append(_operator_plus_1, " ");
+ _builder.append(");");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ } else {
+ _builder.append("\t\t");
+ _builder.append("Address addr_item_");
+ String _path_4 = pi.getPath();
+ String _pathName_2 = this.stdExt.getPathName(_path_4);
+ _builder.append(_pathName_2, " ");
+ _builder.append(" = new Address(0,");
+ int _threadId_2 = ai_1.getThreadId();
+ _builder.append(_threadId_2, " ");
+ _builder.append(",");
+ int _objId_2 = pi.getObjId();
+ _builder.append(_objId_2, " ");
+ _builder.append(");");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ }
+ }
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// instantiate all actor instances");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("instances = new ActorClassBase[");
+ EList<ActorInstance> _allContainedInstances_3 = comp.getAllContainedInstances();
+ int _size_1 = _allContainedInstances_3.size();
+ _builder.append(_size_1, " ");
+ _builder.append("];");
+ _builder.newLineIfNotEmpty();
+ {
+ EList<ActorInstance> _allContainedInstances_4 = comp.getAllContainedInstances();
+ for(final ActorInstance ai_2 : _allContainedInstances_4) {
+ _builder.append("\t\t");
+ _builder.append("instances[");
+ EList<ActorInstance> _allContainedInstances_5 = comp.getAllContainedInstances();
+ int _indexOf_3 = _allContainedInstances_5.indexOf(ai_2);
+ _builder.append(_indexOf_3, " ");
+ _builder.append("] = new ");
+ ActorClass _actorClass = ai_2.getActorClass();
+ String _name_4 = _actorClass.getName();
+ _builder.append(_name_4, " ");
+ _builder.append("(");
+ _builder.newLineIfNotEmpty();
+ {
+ EObject _eContainer = ai_2.eContainer();
+ if ((_eContainer instanceof SubSystemInstance)) {
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("this,");
+ _builder.newLine();
+ } else {
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("instances[");
+ EList<ActorInstance> _allContainedInstances_6 = comp.getAllContainedInstances();
+ EObject _eContainer_1 = ai_2.eContainer();
+ int _indexOf_4 = _allContainedInstances_6.indexOf(_eContainer_1);
+ _builder.append(_indexOf_4, " ");
+ _builder.append("],");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("\"");
+ String _name_5 = ai_2.getName();
+ _builder.append(_name_5, " ");
+ _builder.append("\",");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("// own interface item addresses");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("new Address[][] {{addr_item_");
+ String _path_5 = ai_2.getPath();
+ String _pathName_3 = this.stdExt.getPathName(_path_5);
+ _builder.append(_pathName_3, " ");
+ _builder.append("}");
+ {
+ EList<InterfaceItemInstance> _orderedIfItemInstances_1 = ai_2.getOrderedIfItemInstances();
+ boolean _isEmpty = _orderedIfItemInstances_1.isEmpty();
+ boolean _operator_not = BooleanExtensions.operator_not(_isEmpty);
+ if (_operator_not) {
+ _builder.append(",");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ {
+ EList<InterfaceItemInstance> _orderedIfItemInstances_2 = ai_2.getOrderedIfItemInstances();
+ boolean hasAnyElements = false;
+ for(final InterfaceItemInstance pi_1 : _orderedIfItemInstances_2) {
+ if (!hasAnyElements) {
+ hasAnyElements = true;
+ } else {
+ _builder.appendImmediate(",", " ");
+ }
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("{");
+ _builder.newLine();
+ {
+ boolean _operator_or_1 = false;
+ if ((pi_1 instanceof ServiceImplInstance)) {
+ _operator_or_1 = true;
+ } else {
+ EList<InterfaceItemInstance> _peers_3 = pi_1.getPeers();
+ int _size_2 = _peers_3.size();
+ boolean _operator_greaterThan_1 = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size_2), ((Integer)1));
+ _operator_or_1 = BooleanExtensions.operator_or((pi_1 instanceof ServiceImplInstance), _operator_greaterThan_1);
+ }
+ if (_operator_or_1) {
+ {
+ EList<InterfaceItemInstance> _peers_4 = pi_1.getPeers();
+ boolean hasAnyElements_1 = false;
+ for(final InterfaceItemInstance peer_1 : _peers_4) {
+ if (!hasAnyElements_1) {
+ hasAnyElements_1 = true;
+ } else {
+ _builder.appendImmediate(",", " ");
+ }
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("addr_item_");
+ String _path_6 = pi_1.getPath();
+ String _pathName_4 = this.stdExt.getPathName(_path_6);
+ _builder.append(_pathName_4, " ");
+ _builder.append("_");
+ EList<InterfaceItemInstance> _peers_5 = pi_1.getPeers();
+ int _indexOf_5 = _peers_5.indexOf(peer_1);
+ _builder.append(_indexOf_5, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ } else {
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("addr_item_");
+ String _path_7 = pi_1.getPath();
+ String _pathName_5 = this.stdExt.getPathName(_path_7);
+ _builder.append(_pathName_5, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("},");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("// peer interface item addresses");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("new Address[][] {{addr_item_SystemPort_");
+ EList<ActorInstance> _allContainedInstances_7 = comp.getAllContainedInstances();
+ int _indexOf_6 = _allContainedInstances_7.indexOf(ai_2);
+ _builder.append(_indexOf_6, " ");
+ _builder.append("}");
+ {
+ EList<InterfaceItemInstance> _orderedIfItemInstances_3 = ai_2.getOrderedIfItemInstances();
+ boolean _isEmpty_1 = _orderedIfItemInstances_3.isEmpty();
+ boolean _operator_not_1 = BooleanExtensions.operator_not(_isEmpty_1);
+ if (_operator_not_1) {
+ _builder.append(",");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ {
+ EList<InterfaceItemInstance> _orderedIfItemInstances_4 = ai_2.getOrderedIfItemInstances();
+ boolean hasAnyElements_2 = false;
+ for(final InterfaceItemInstance pi_2 : _orderedIfItemInstances_4) {
+ if (!hasAnyElements_2) {
+ hasAnyElements_2 = true;
+ } else {
+ _builder.appendImmediate(",", " ");
+ }
+ _builder.append("\t\t");
+ _builder.append("\t\t");
+ _builder.append("{");
+ _builder.newLine();
+ {
+ boolean _operator_and = false;
+ boolean _operator_not_2 = BooleanExtensions.operator_not((pi_2 instanceof ServiceImplInstance));
+ if (!_operator_not_2) {
+ _operator_and = false;
+ } else {
+ EList<InterfaceItemInstance> _peers_6 = pi_2.getPeers();
+ boolean _isEmpty_2 = _peers_6.isEmpty();
+ _operator_and = BooleanExtensions.operator_and(_operator_not_2, _isEmpty_2);
+ }
+ if (_operator_and) {
+ _builder.append("\t\t");
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("null");
+ _builder.newLine();
+ } else {
+ {
+ EList<InterfaceItemInstance> _peers_7 = pi_2.getPeers();
+ boolean hasAnyElements_3 = false;
+ for(final InterfaceItemInstance pp : _peers_7) {
+ if (!hasAnyElements_3) {
+ hasAnyElements_3 = true;
+ } else {
+ _builder.appendImmediate(",", " ");
+ }
+ {
+ boolean _operator_or_2 = false;
+ if ((pp instanceof ServiceImplInstance)) {
+ _operator_or_2 = true;
+ } else {
+ EList<InterfaceItemInstance> _peers_8 = pp.getPeers();
+ int _size_3 = _peers_8.size();
+ boolean _operator_greaterThan_2 = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size_3), ((Integer)1));
+ _operator_or_2 = BooleanExtensions.operator_or((pp instanceof ServiceImplInstance), _operator_greaterThan_2);
+ }
+ if (_operator_or_2) {
+ _builder.append("\t\t");
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("addr_item_");
+ String _path_8 = pp.getPath();
+ String _pathName_6 = this.stdExt.getPathName(_path_8);
+ _builder.append(_pathName_6, " ");
+ _builder.append("_");
+ EList<InterfaceItemInstance> _peers_9 = pp.getPeers();
+ int _indexOf_7 = _peers_9.indexOf(pi_2);
+ _builder.append(_indexOf_7, " ");
+ _builder.newLineIfNotEmpty();
+ } else {
+ _builder.append("\t\t");
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("addr_item_");
+ String _path_9 = pp.getPath();
+ String _pathName_7 = this.stdExt.getPathName(_path_9);
+ _builder.append(_pathName_7, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("); ");
+ _builder.newLine();
+ }
+ }
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// create the subsystem system port\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("RTSystemPort = new RTSystemServicesProtocolConjPortRepl(this, \"RTSystemPort\",");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("0, //local ID");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("// own addresses");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("new Address[]{");
+ _builder.newLine();
+ {
+ EList<ActorInstance> _allContainedInstances_8 = comp.getAllContainedInstances();
+ boolean hasAnyElements_4 = false;
+ for(final ActorInstance ai_3 : _allContainedInstances_8) {
+ if (!hasAnyElements_4) {
+ hasAnyElements_4 = true;
+ } else {
+ _builder.appendImmediate(",", " ");
+ }
+ _builder.append("\t\t\t\t\t");
+ _builder.append("addr_item_SystemPort_");
+ EList<ActorInstance> _allContainedInstances_9 = comp.getAllContainedInstances();
+ int _indexOf_8 = _allContainedInstances_9.indexOf(ai_3);
+ _builder.append(_indexOf_8, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t\t\t");
+ _builder.append("},");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("// peer addresses");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("new Address[]{");
+ _builder.newLine();
+ {
+ EList<ActorInstance> _allContainedInstances_10 = comp.getAllContainedInstances();
+ boolean hasAnyElements_5 = false;
+ for(final ActorInstance ai_4 : _allContainedInstances_10) {
+ if (!hasAnyElements_5) {
+ hasAnyElements_5 = true;
+ } else {
+ _builder.appendImmediate(",", " ");
+ }
+ _builder.append("\t\t\t\t\t");
+ _builder.append("addr_item_");
+ String _path_10 = ai_4.getPath();
+ String _pathName_8 = this.stdExt.getPathName(_path_10);
+ _builder.append(_pathName_8, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t\t\t");
+ _builder.append("});");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("};");
+ _builder.newLine();
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.java
index 906d97460..a7e2fff32 100644
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.java
+++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.java
@@ -1,151 +1,152 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.inject.Inject;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.etrice.core.room.SubSystemClass;
-import org.eclipse.etrice.generator.etricegen.Root;
-import org.eclipse.etrice.generator.etricegen.SubSystemInstance;
-import org.eclipse.etrice.generator.java.gen.StdExtensions;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-import org.eclipse.xtext.xtend2.lib.StringConcatenation;
-
-@SuppressWarnings("all")
-public class SubSystemRunnerGen {
-
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private StdExtensions stdExt;
-
- public void doGenerate(final Root root) {
- EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances();
- for (SubSystemInstance sc : _subSystemInstances) {
- {
- SubSystemClass _subSystemClass = sc.getSubSystemClass();
- String _generationTargetPath = this.stdExt.getGenerationTargetPath(_subSystemClass);
- SubSystemClass _subSystemClass_1 = sc.getSubSystemClass();
- String _path = this.stdExt.getPath(_subSystemClass_1);
- String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
- this.fileAccess.setOutputPath(_operator_plus);
- String _name = sc.getName();
- String _operator_plus_1 = StringExtensions.operator_plus(_name, "Runner.java");
- SubSystemClass _subSystemClass_2 = sc.getSubSystemClass();
- StringConcatenation _generate = this.generate(root, sc, _subSystemClass_2);
- this.fileAccess.generateFile(_operator_plus_1, _generate);
- }
- }
- }
-
- public StringConcatenation generate(final Root root, final SubSystemInstance ssc, final SubSystemClass cc) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("/**");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* @author generated by eTrice");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* this class contains the main function running component ");
- String _name = ssc.getName();
- _builder.append(_name, " ");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("* it instantiates ");
- String _name_1 = ssc.getName();
- _builder.append(_name_1, " ");
- _builder.append(" and starts and ends the lifecycle");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.newLine();
- _builder.append("package ");
- String _package = this.stdExt.getPackage(cc);
- _builder.append(_package, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("import org.eclipse.etrice.runtime.java.modelbase.SubSystemRunnerBase;");
- _builder.newLine();
- _builder.newLine();
- _builder.append("class ");
- String _name_2 = ssc.getName();
- String _operator_plus = StringExtensions.operator_plus(_name_2, "Runner");
- _builder.append(_operator_plus, "");
- _builder.append(" extends SubSystemRunnerBase {");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("static ");
- String _name_3 = ssc.getName();
- _builder.append(_name_3, " ");
- _builder.append(" main_component = new ");
- String _name_4 = ssc.getName();
- _builder.append(_name_4, " ");
- _builder.append("(null, \"");
- String _name_5 = ssc.getName();
- _builder.append(_name_5, " ");
- _builder.append("\");");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("/**");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* main function");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* creates component and starts and stops the lifecycle");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public static void main(String[] args) {");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("System.out.println(\"*** T H E B E G I N ***\");");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("main_component.init(); // lifecycle init");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("main_component.start(); // lifecycle start");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("// application runs until quit ");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("waitForQuit();");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("// end the lifecycle");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("main_component.stop(); // lifecycle stop");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("main_component.destroy(); // lifecycle destroy");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("System.out.println(\"*** T H E E N D ***\");");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("};");
- _builder.newLine();
- return _builder;
- }
-} \ No newline at end of file
+package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.etricegen.SubSystemInstance;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class SubSystemRunnerGen {
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ @Inject
+ private StdExtensions stdExt;
+
+ public void doGenerate(final Root root) {
+ EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances();
+ for (final SubSystemInstance sc : _subSystemInstances) {
+ {
+ SubSystemClass _subSystemClass = sc.getSubSystemClass();
+ String _generationTargetPath = this.stdExt.getGenerationTargetPath(_subSystemClass);
+ SubSystemClass _subSystemClass_1 = sc.getSubSystemClass();
+ String _path = this.stdExt.getPath(_subSystemClass_1);
+ String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
+ this.fileAccess.setOutputPath(_operator_plus);
+ String _name = sc.getName();
+ String _operator_plus_1 = StringExtensions.operator_plus(_name, "Runner.java");
+ SubSystemClass _subSystemClass_2 = sc.getSubSystemClass();
+ StringConcatenation _generate = this.generate(root, sc, _subSystemClass_2);
+ this.fileAccess.generateFile(_operator_plus_1, _generate);
+ }
+ }
+ }
+
+ public StringConcatenation generate(final Root root, final SubSystemInstance ssc, final SubSystemClass cc) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("/**");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @author generated by eTrice");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("*");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* this class contains the main function running component ");
+ String _name = ssc.getName();
+ _builder.append(_name, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append(" ");
+ _builder.append("* it instantiates ");
+ String _name_1 = ssc.getName();
+ _builder.append(_name_1, " ");
+ _builder.append(" and starts and ends the lifecycle");
+ _builder.newLineIfNotEmpty();
+ _builder.append(" ");
+ _builder.append("*/");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("package ");
+ String _package = this.stdExt.getPackage(cc);
+ _builder.append(_package, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.SubSystemRunnerBase;");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("class ");
+ String _name_2 = ssc.getName();
+ String _operator_plus = StringExtensions.operator_plus(_name_2, "Runner");
+ _builder.append(_operator_plus, "");
+ _builder.append(" extends SubSystemRunnerBase {");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("static ");
+ String _name_3 = ssc.getName();
+ _builder.append(_name_3, " ");
+ _builder.append(" main_component = new ");
+ String _name_4 = ssc.getName();
+ _builder.append(_name_4, " ");
+ _builder.append("(null, \"");
+ String _name_5 = ssc.getName();
+ _builder.append(_name_5, " ");
+ _builder.append("\");");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("/**");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* main function");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* creates component and starts and stops the lifecycle");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("*/");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public static void main(String[] args) {");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("System.out.println(\"*** T H E B E G I N ***\");");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("main_component.init(); // lifecycle init");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("main_component.start(); // lifecycle start");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// application runs until quit ");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("waitForQuit();");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// end the lifecycle");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("main_component.stop(); // lifecycle stop");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("main_component.destroy(); // lifecycle destroy");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("System.out.println(\"*** T H E E N D ***\");");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("};");
+ _builder.newLine();
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.generator/META-INF/MANIFEST.MF
index 86c874b75..6ab44def5 100644
--- a/plugins/org.eclipse.etrice.generator/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.etrice.generator/META-INF/MANIFEST.MF
@@ -34,6 +34,6 @@ Require-Bundle: org.eclipse.etrice.core.room;bundle-version="0.1.0",
org.eclipse.emf.ecore;bundle-version="2.6.0";visibility:=reexport,
org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
org.eclipse.core.resources;bundle-version="3.7.100",
- org.eclipse.xtext.generator;bundle-version="2.0.0",
- org.eclipse.xtext;bundle-version="2.0.0"
+ org.eclipse.xtext.generator;bundle-version="2.1.1",
+ org.eclipse.xtext;bundle-version="2.1.1"
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomExtensions.xtend b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomExtensions.xtend
index 7ef8b27fc..bf6b3e4f8 100644
--- a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomExtensions.xtend
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomExtensions.xtend
@@ -16,18 +16,34 @@
package org.eclipse.etrice.generator.extensions
-import org.eclipse.etrice.core.room.*
-import org.eclipse.etrice.generator.etricegen.*
-import org.eclipse.emf.ecore.*
-import java.util.*
-import java.io.File
-
-import static extension org.eclipse.xtend.util.stdlib.naming
-import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.*
-import static extension org.eclipse.xtext.xtend2.lib.*
-
import com.google.inject.Inject
-
+import com.google.inject.Singleton
+import java.io.File
+import java.util.ArrayList
+import java.util.List
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.etrice.core.room.ActorClass
+import org.eclipse.etrice.core.room.BaseState
+import org.eclipse.etrice.core.room.ExternalPort
+import org.eclipse.etrice.core.room.InitialTransition
+import org.eclipse.etrice.core.room.Message
+import org.eclipse.etrice.core.room.MessageHandler
+import org.eclipse.etrice.core.room.Port
+import org.eclipse.etrice.core.room.PortClass
+import org.eclipse.etrice.core.room.ProtocolClass
+import org.eclipse.etrice.core.room.RefinedState
+import org.eclipse.etrice.core.room.SAPRef
+import org.eclipse.etrice.core.room.ServiceImplementation
+import org.eclipse.etrice.core.room.State
+import org.eclipse.etrice.core.room.StateGraph
+import org.eclipse.etrice.core.room.Transition
+import org.eclipse.etrice.core.room.Trigger
+import org.eclipse.etrice.generator.etricegen.ActiveTrigger
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass
+import org.eclipse.etrice.generator.etricegen.TransitionChain
+import static extension org.eclipse.etrice.generator.extensions.RoomNameProv.*
+
+@Singleton
class RoomExtensions {
// for the time being we need a delegate to the static methods of the RoomNameProvider
@@ -314,15 +330,15 @@ class RoomExtensions {
}
def String getStateId(State s) {
- return nameProvider.getStateId(s)
+ return getStateId(s)
}
def String getStatePathName(State s) {
- return nameProvider.getStatePathName(s);
+ return getStatePathName(s);
}
def String getChainId(TransitionChain t) {
- return nameProvider.getChainId(t)
+ return getChainId(t)
}
def boolean hasGuard(Trigger tr) {
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomNameProv.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomNameProv.java
index 9799bfc00..bbf7b74e7 100644
--- a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomNameProv.java
+++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomNameProv.java
@@ -24,45 +24,45 @@ import org.eclipse.etrice.generator.etricegen.TransitionChain;
*/
public class RoomNameProv {
- public String getActionCodeOperationName(Transition t) {
+ public static String getActionCodeOperationName(Transition t) {
return "action_"+RoomNameProvider.getFullPath(t);
}
- public String getEntryCodeOperationName(State s) {
+ public static String getEntryCodeOperationName(State s) {
return "entry_"+getStatePathName(s);
}
- public String getExitCodeOperationName(State s) {
+ public static String getExitCodeOperationName(State s) {
return "exit_"+getStatePathName(s);
}
- public String getChainId(TransitionChain tc) {
+ public static String getChainId(TransitionChain tc) {
return "CHAIN_"+RoomNameProvider.getFullPath(tc.getTransition());
}
- public boolean isTopLevel(StateGraphNode s) {
+ public static boolean isTopLevel(StateGraphNode s) {
return !(s.eContainer().eContainer() instanceof State);
}
- public State getParentState(StateGraphNode s) {
+ public static State getParentState(StateGraphNode s) {
if (isTopLevel(s))
return null;
else
return (State) s.eContainer().eContainer();
}
- public String getStatePathName(State s) {
+ public static String getStatePathName(State s) {
return RoomNameProvider.getFullPath(s);
}
- public String getStateId(State s) {
+ public static String getStateId(State s) {
if (s==null)
return "STATE_"+RoomNameProvider.getStateName(s);
else
return "STATE_"+RoomNameProvider.getFullPath(s);
}
- public String getParentStateId(State s) {
+ public static String getParentStateId(State s) {
return getStateId(getParentState(s));
}
diff --git a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/extensions/RoomExtensions.java b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/extensions/RoomExtensions.java
index dfaadef34..1defa39c0 100644
--- a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/extensions/RoomExtensions.java
+++ b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/extensions/RoomExtensions.java
@@ -1,786 +1,760 @@
-package org.eclipse.etrice.generator.extensions;
-
-import com.google.inject.Inject;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.DetailCode;
-import org.eclipse.etrice.core.room.ExternalPort;
-import org.eclipse.etrice.core.room.FreeType;
-import org.eclipse.etrice.core.room.FreeTypedID;
-import org.eclipse.etrice.core.room.Guard;
-import org.eclipse.etrice.core.room.Message;
-import org.eclipse.etrice.core.room.MessageHandler;
-import org.eclipse.etrice.core.room.Operation;
-import org.eclipse.etrice.core.room.Port;
-import org.eclipse.etrice.core.room.PortClass;
-import org.eclipse.etrice.core.room.ProtocolClass;
-import org.eclipse.etrice.core.room.SAPRef;
-import org.eclipse.etrice.core.room.SPPRef;
-import org.eclipse.etrice.core.room.ServiceImplementation;
-import org.eclipse.etrice.core.room.State;
-import org.eclipse.etrice.core.room.StateGraph;
-import org.eclipse.etrice.core.room.StateMachine;
-import org.eclipse.etrice.core.room.Transition;
-import org.eclipse.etrice.core.room.Trigger;
-import org.eclipse.etrice.core.room.TriggeredTransition;
-import org.eclipse.etrice.generator.etricegen.ActiveTrigger;
-import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.generator.etricegen.TransitionChain;
-import org.eclipse.etrice.generator.extensions.RoomNameProv;
-import org.eclipse.xtext.xbase.lib.BooleanExtensions;
-import org.eclipse.xtext.xbase.lib.ComparableExtensions;
-import org.eclipse.xtext.xbase.lib.Functions.Function1;
-import org.eclipse.xtext.xbase.lib.IntegerExtensions;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-import org.eclipse.xtext.xbase.lib.ObjectExtensions;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-
-@SuppressWarnings("all")
-public class RoomExtensions {
-
- @Inject
- private RoomNameProv nameProvider;
-
- public <T> List<T> union(final List<T> l1, final List<T> l2) {
- {
- ArrayList<T> _arrayList = new ArrayList<T>();
- ArrayList<T> ret = _arrayList;
- ret.addAll(l1);
- ret.addAll(l2);
- return ret;
- }
- }
-
- public List<Port> punion(final List<Port> in1, final List<ExternalPort> in2) {
- {
- ArrayList<Port> _arrayList = new ArrayList<Port>();
- ArrayList<Port> ret = _arrayList;
- for (ExternalPort ele : in2) {
- Port _ifport = ele.getIfport();
- ret.add(_ifport);
- }
- ret.addAll(in1);
- return ret;
- }
- }
-
- public String getGenerationPathSegment() {
- return "/src-gen/";
- }
-
- public String getModelPath(final EObject e) {
- {
- Resource _eResource = e.eResource();
- Resource res = _eResource;
- boolean _operator_equals = ObjectExtensions.operator_equals(res, null);
- if (_operator_equals) {
- return "";
- } else {
- URI _uRI = res.getURI();
- String _fileString = _uRI.toFileString();
- return _fileString;
- }
- }
- }
-
- public String getProjectPath(final EObject e) {
- {
- Resource _eResource = e.eResource();
- Resource res = _eResource;
- boolean _operator_equals = ObjectExtensions.operator_equals(res, null);
- if (_operator_equals) {
- return "";
- } else {
- {
- File _file = new File("");
- File tmpf = _file;
- URI _uRI = res.getURI();
- String _fileString = _uRI.toFileString();
- File _file_1 = new File(_fileString);
- tmpf = _file_1;
- boolean _isFile = tmpf.isFile();
- boolean _operator_not = BooleanExtensions.operator_not(_isFile);
- if (_operator_not) {
- return "";
- }
- boolean isProject = false;
- Boolean _xdowhileexpression;
- do {
- {
- File _parentFile = tmpf.getParentFile();
- tmpf = _parentFile;
- String[] _list = tmpf.list();
- String[] contents = _list;
- for (String f : contents) {
- boolean _equals = f.equals(".project");
- if (_equals) {
- isProject = true;
- }
- }
- }
- boolean _operator_and = false;
- boolean _operator_not_1 = BooleanExtensions.operator_not(isProject);
- if (!_operator_not_1) {
- _operator_and = false;
- } else {
- File _parentFile_1 = tmpf.getParentFile();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_parentFile_1, null);
- _operator_and = BooleanExtensions.operator_and(_operator_not_1, _operator_notEquals);
- }
- _xdowhileexpression = _operator_and;
- } while(_xdowhileexpression);
- String _absolutePath = tmpf.getAbsolutePath();
- return _absolutePath;
- }
- }
- }
- }
-
- public String getGenerationTargetPath(final EObject e) {
- String _projectPath = this.getProjectPath(e);
- String _generationPathSegment = this.getGenerationPathSegment();
- String _operator_plus = StringExtensions.operator_plus(_projectPath, _generationPathSegment);
- return _operator_plus;
- }
-
- public List<Port> getEndPorts(final ActorClass ac) {
- EList<Port> _intPorts = ac.getIntPorts();
- EList<ExternalPort> _extPorts = ac.getExtPorts();
- List<Port> _punion = this.punion(_intPorts, _extPorts);
- return _punion;
- }
-
- public String getPathName(final String path) {
- String _replaceAll = path.replaceAll("/", "_");
- return _replaceAll;
- }
-
- public String getPortClassName(final ProtocolClass p, final boolean conj) {
- {
- String _name = p.getName();
- String ret = _name;
- if (conj) {
- String _operator_plus = StringExtensions.operator_plus(ret, "ConjPort");
- ret = _operator_plus;
- } else {
- String _operator_plus_1 = StringExtensions.operator_plus(ret, "Port");
- ret = _operator_plus_1;
- }
- return ret;
- }
- }
-
- public String getPortClassName(final Port p) {
- {
- ProtocolClass _protocol = p.getProtocol();
- boolean _isConjugated = p.isConjugated();
- String _portClassName = this.getPortClassName(_protocol, _isConjugated);
- String ret = _portClassName;
- boolean _isReplicated = p.isReplicated();
- if (_isReplicated) {
- String _operator_plus = StringExtensions.operator_plus(ret, "Repl");
- ret = _operator_plus;
- }
- return ret;
- }
- }
-
- public String getPortClassName(final ExternalPort p) {
- Port _ifport = p.getIfport();
- String _portClassName = this.getPortClassName(_ifport);
- return _portClassName;
- }
-
- public String getPortClassName(final SAPRef sap) {
- ProtocolClass _protocol = sap.getProtocol();
- String _portClassName = this.getPortClassName(_protocol, true);
- return _portClassName;
- }
-
- public String getPortClassName(final ServiceImplementation svc) {
- SPPRef _spp = svc.getSpp();
- ProtocolClass _protocol = _spp.getProtocol();
- String _portClassName = this.getPortClassName(_protocol, false);
- String _operator_plus = StringExtensions.operator_plus(_portClassName, "Repl");
- return _operator_plus;
- }
-
- public List<Message> getAllIncomingMessages(final ProtocolClass pc) {
- ProtocolClass _base = pc.getBase();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
- if (_operator_notEquals) {
- ProtocolClass _base_1 = pc.getBase();
- List<Message> _allIncomingMessages = this.getAllIncomingMessages(_base_1);
- EList<Message> _incomingMessages = pc.getIncomingMessages();
- List<Message> _union = this.union(_allIncomingMessages, _incomingMessages);
- return _union;
- } else {
- EList<Message> _incomingMessages_1 = pc.getIncomingMessages();
- return _incomingMessages_1;
- }
- }
-
- public List<Message> getAllOutgoingMessages(final ProtocolClass pc) {
- EList<Message> _xifexpression = null;
- ProtocolClass _base = pc.getBase();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
- if (_operator_notEquals) {
- ProtocolClass _base_1 = pc.getBase();
- List<Message> _allOutgoingMessages = this.getAllOutgoingMessages(_base_1);
- EList<Message> _outgoingMessages = pc.getOutgoingMessages();
- List<Message> _union = this.union(_allOutgoingMessages, _outgoingMessages);
- return _union;
- } else {
- EList<Message> _outgoingMessages_1 = pc.getOutgoingMessages();
- _xifexpression = _outgoingMessages_1;
- }
- return _xifexpression;
- }
-
- public List<Message> getIncoming(final ProtocolClass pc, final boolean conj) {
- if (conj) {
- List<Message> _allOutgoingMessages = this.getAllOutgoingMessages(pc);
- return _allOutgoingMessages;
- } else {
- List<Message> _allIncomingMessages = this.getAllIncomingMessages(pc);
- return _allIncomingMessages;
- }
- }
-
- public List<Message> getOutgoing(final ProtocolClass pc, final boolean conj) {
- if (conj) {
- List<Message> _allIncomingMessages = this.getAllIncomingMessages(pc);
- return _allIncomingMessages;
- } else {
- List<Message> _allOutgoingMessages = this.getAllOutgoingMessages(pc);
- return _allOutgoingMessages;
- }
- }
-
- public PortClass getPortClass(final ProtocolClass pc, final boolean conj) {
- if (conj) {
- PortClass _conjugate = pc.getConjugate();
- return _conjugate;
- } else {
- PortClass _regular = pc.getRegular();
- return _regular;
- }
- }
-
- public boolean handlesSend(final ProtocolClass pc, final boolean conj) {
- {
- PortClass _portClass = this.getPortClass(pc, conj);
- boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null);
- if (_operator_equals) {
- return false;
- } else {
- PortClass _portClass_1 = this.getPortClass(pc, conj);
- EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers();
- for (MessageHandler hdlr : _msgHandlers) {
- List<Message> _outgoing = this.getOutgoing(pc, conj);
- Message _msg = hdlr.getMsg();
- boolean _contains = _outgoing.contains(_msg);
- if (_contains) {
- return true;
- }
- }
- }
- return false;
- }
- }
-
- public boolean handlesReceive(final ProtocolClass pc, final boolean conj) {
- {
- PortClass _portClass = this.getPortClass(pc, conj);
- boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null);
- if (_operator_equals) {
- return false;
- } else {
- PortClass _portClass_1 = this.getPortClass(pc, conj);
- EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers();
- for (MessageHandler hdlr : _msgHandlers) {
- List<Message> _incoming = this.getIncoming(pc, conj);
- Message _msg = hdlr.getMsg();
- boolean _contains = _incoming.contains(_msg);
- if (_contains) {
- return true;
- }
- }
- }
- return false;
- }
- }
-
- public List<MessageHandler> getReceiveHandlers(final ProtocolClass pc, final boolean conj) {
- PortClass _portClass = this.getPortClass(pc, conj);
- boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null);
- if (_operator_equals) {
- ArrayList<MessageHandler> _arrayList = new ArrayList<MessageHandler>();
- return _arrayList;
- } else {
- {
- ArrayList<MessageHandler> _arrayList_1 = new ArrayList<MessageHandler>();
- ArrayList<MessageHandler> res = _arrayList_1;
- PortClass _portClass_1 = this.getPortClass(pc, conj);
- EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers();
- for (MessageHandler hdlr : _msgHandlers) {
- List<Message> _incoming = this.getIncoming(pc, conj);
- Message _msg = hdlr.getMsg();
- boolean _contains = _incoming.contains(_msg);
- if (_contains) {
- res.add(hdlr);
- }
- }
- return res;
- }
- }
- }
-
- public List<MessageHandler> getSendHandlers(final ProtocolClass pc, final boolean conj) {
- PortClass _portClass = this.getPortClass(pc, conj);
- boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null);
- if (_operator_equals) {
- ArrayList<MessageHandler> _arrayList = new ArrayList<MessageHandler>();
- return _arrayList;
- } else {
- {
- ArrayList<MessageHandler> _arrayList_1 = new ArrayList<MessageHandler>();
- ArrayList<MessageHandler> res = _arrayList_1;
- PortClass _portClass_1 = this.getPortClass(pc, conj);
- EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers();
- for (MessageHandler hdlr : _msgHandlers) {
- List<Message> _outgoing = this.getOutgoing(pc, conj);
- Message _msg = hdlr.getMsg();
- boolean _contains = _outgoing.contains(_msg);
- if (_contains) {
- res.add(hdlr);
- }
- }
- return res;
- }
- }
- }
-
- public MessageHandler getSendHandler(final Message m, final boolean conj) {
- EObject _eContainer = m.eContainer();
- List<MessageHandler> _sendHandlers = this.getSendHandlers(((ProtocolClass) _eContainer), conj);
- final Function1<MessageHandler,Boolean> _function = new Function1<MessageHandler,Boolean>() {
- public Boolean apply(final MessageHandler e) {
- Message _msg = e.getMsg();
- boolean _operator_equals = ObjectExtensions.operator_equals(_msg, m);
- return ((Boolean)_operator_equals);
- }
- };
- MessageHandler _findFirst = IterableExtensions.<MessageHandler>findFirst(_sendHandlers, _function);
- return _findFirst;
- }
-
- public boolean isIncoming(final Message m) {
- EObject _eContainer = m.eContainer();
- List<Message> _allIncomingMessages = this.getAllIncomingMessages(((ProtocolClass) _eContainer));
- boolean _contains = _allIncomingMessages.contains(m);
- return _contains;
- }
-
- public String getCodeName(final Message m) {
- boolean _isIncoming = this.isIncoming(m);
- if (_isIncoming) {
- String _name = m.getName();
- String _operator_plus = StringExtensions.operator_plus("IN_", _name);
- return _operator_plus;
- } else {
- String _name_1 = m.getName();
- String _operator_plus_1 = StringExtensions.operator_plus("OUT_", _name_1);
- return _operator_plus_1;
- }
- }
-
- public boolean isLeaf(final State s) {
- StateGraph _subgraph = s.getSubgraph();
- boolean _operator_equals = ObjectExtensions.operator_equals(_subgraph, null);
- return _operator_equals;
- }
-
- public List<State> getLeafStateList(final StateGraph sg) {
- {
- ArrayList<State> _arrayList = new ArrayList<State>();
- ArrayList<State> res = _arrayList;
- EList<State> _states = sg.getStates();
- for (State s : _states) {
- List<State> _leafStateList = this.getLeafStateList(s);
- res.addAll(_leafStateList);
- }
- return res;
- }
- }
-
- public List<State> getLeafStateList(final State s) {
- boolean _isLeaf = this.isLeaf(s);
- if (_isLeaf) {
- {
- ArrayList<State> _arrayList = new ArrayList<State>();
- ArrayList<State> res = _arrayList;
- res.add(s);
- return res;
- }
- } else {
- StateGraph _subgraph = s.getSubgraph();
- List<State> _leafStateList = this.getLeafStateList(_subgraph);
- return _leafStateList;
- }
- }
-
- public List<State> getStateList(final StateGraph sg) {
- {
- ArrayList<State> _arrayList = new ArrayList<State>();
- ArrayList<State> ret = _arrayList;
- EList<State> _states = sg.getStates();
- for (State e : _states) {
- {
- ret.add(e);
- StateGraph _subgraph = e.getSubgraph();
- StateGraph tmp = _subgraph;
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(tmp, null);
- if (_operator_notEquals) {
- StateGraph _subgraph_1 = e.getSubgraph();
- List<State> _stateList = this.getStateList(_subgraph_1);
- ret.addAll(_stateList);
- }
- }
- }
- return ret;
- }
- }
-
- public List<State> getBaseStateList(final StateGraph sg) {
- {
- ArrayList<State> _arrayList = new ArrayList<State>();
- ArrayList<State> ret = _arrayList;
- List<State> _stateList = this.getStateList(sg);
- for (State e : _stateList) {
- if ((e instanceof org.eclipse.etrice.core.room.BaseState)) {
- ret.add(e);
- }
- }
- return ret;
- }
- }
-
- public List<State> getAllBaseStates(final ActorClass ac) {
- List<State> _xifexpression = null;
- ActorClass _base = ac.getBase();
- boolean _operator_equals = ObjectExtensions.operator_equals(_base, null);
- if (_operator_equals) {
- StateMachine _stateMachine = ac.getStateMachine();
- List<State> _baseStateList = this.getBaseStateList(_stateMachine);
- return _baseStateList;
- } else {
- ActorClass _base_1 = ac.getBase();
- List<State> _allBaseStates = this.getAllBaseStates(_base_1);
- StateMachine _stateMachine_1 = ac.getStateMachine();
- List<State> _baseStateList_1 = this.getBaseStateList(_stateMachine_1);
- List<State> _union = this.union(_allBaseStates, _baseStateList_1);
- _xifexpression = _union;
- }
- return _xifexpression;
- }
-
- public boolean overridesStop(final ActorClass ac) {
- boolean _operator_or = false;
- EList<Operation> _operations = ac.getOperations();
- final Function1<Operation,Boolean> _function = new Function1<Operation,Boolean>() {
- public Boolean apply(final Operation e) {
- boolean _operator_and = false;
- boolean _operator_and_1 = false;
- String _name = e.getName();
- boolean _operator_equals = ObjectExtensions.operator_equals(_name, "stop");
- if (!_operator_equals) {
- _operator_and_1 = false;
- } else {
- EList<FreeTypedID> _arguments = e.getArguments();
- boolean _isEmpty = _arguments.isEmpty();
- _operator_and_1 = BooleanExtensions.operator_and(_operator_equals, _isEmpty);
- }
- if (!_operator_and_1) {
- _operator_and = false;
- } else {
- FreeType _returntype = e.getReturntype();
- boolean _operator_equals_1 = ObjectExtensions.operator_equals(_returntype, null);
- _operator_and = BooleanExtensions.operator_and(_operator_and_1, _operator_equals_1);
- }
- return ((Boolean)_operator_and);
- }
- };
- boolean _exists = IterableExtensions.<Operation>exists(_operations, _function);
- if (_exists) {
- _operator_or = true;
- } else {
- boolean _operator_and_2 = false;
- ActorClass _base = ac.getBase();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
- if (!_operator_notEquals) {
- _operator_and_2 = false;
- } else {
- ActorClass _base_1 = ac.getBase();
- boolean _overridesStop = this.overridesStop(_base_1);
- _operator_and_2 = BooleanExtensions.operator_and(_operator_notEquals, _overridesStop);
- }
- _operator_or = BooleanExtensions.operator_or(_exists, _operator_and_2);
- }
- return _operator_or;
- }
-
- public int getNumberOfInheritedStates(final ActorClass ac) {
- ActorClass _base = ac.getBase();
- boolean _operator_equals = ObjectExtensions.operator_equals(_base, null);
- if (_operator_equals) {
- return 0;
- } else {
- ActorClass _base_1 = ac.getBase();
- StateMachine _stateMachine = _base_1.getStateMachine();
- List<State> _stateList = this.getStateList(_stateMachine);
- int _size = _stateList.size();
- ActorClass _base_2 = ac.getBase();
- int _numberOfInheritedStates = this.getNumberOfInheritedStates(_base_2);
- int _operator_plus = IntegerExtensions.operator_plus(((Integer)_size), ((Integer)_numberOfInheritedStates));
- return _operator_plus;
- }
- }
-
- public int getNumberOfInheritedBaseStates(final ActorClass ac) {
- ActorClass _base = ac.getBase();
- boolean _operator_equals = ObjectExtensions.operator_equals(_base, null);
- if (_operator_equals) {
- return 0;
- } else {
- ActorClass _base_1 = ac.getBase();
- StateMachine _stateMachine = _base_1.getStateMachine();
- List<State> _baseStateList = this.getBaseStateList(_stateMachine);
- int _size = _baseStateList.size();
- ActorClass _base_2 = ac.getBase();
- int _numberOfInheritedBaseStates = this.getNumberOfInheritedBaseStates(_base_2);
- int _operator_plus = IntegerExtensions.operator_plus(((Integer)_size), ((Integer)_numberOfInheritedBaseStates));
- return _operator_plus;
- }
- }
-
- public String getStateId(final State s) {
- String _stateId = this.nameProvider.getStateId(s);
- return _stateId;
- }
-
- public String getStatePathName(final State s) {
- String _statePathName = this.nameProvider.getStatePathName(s);
- return _statePathName;
- }
-
- public String getChainId(final TransitionChain t) {
- String _chainId = this.nameProvider.getChainId(t);
- return _chainId;
- }
-
- public boolean hasGuard(final Trigger tr) {
- boolean _operator_and = false;
- boolean _operator_and_1 = false;
- Guard _guard = tr.getGuard();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_guard, null);
- if (!_operator_notEquals) {
- _operator_and_1 = false;
- } else {
- Guard _guard_1 = tr.getGuard();
- DetailCode _guard_2 = _guard_1.getGuard();
- boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_guard_2, null);
- _operator_and_1 = BooleanExtensions.operator_and(_operator_notEquals, _operator_notEquals_1);
- }
- if (!_operator_and_1) {
- _operator_and = false;
- } else {
- Guard _guard_3 = tr.getGuard();
- DetailCode _guard_4 = _guard_3.getGuard();
- EList<String> _commands = _guard_4.getCommands();
- int _size = _commands.size();
- boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
- _operator_and = BooleanExtensions.operator_and(_operator_and_1, _operator_greaterThan);
- }
- return _operator_and;
- }
-
- public boolean hasGuard(final ExpandedActorClass ac, final ActiveTrigger at) {
- {
- boolean hasGuard = false;
- EList<TriggeredTransition> _transitions = at.getTransitions();
- for (TriggeredTransition t : _transitions) {
- EList<Trigger> _triggers = t.getTriggers();
- final Function1<Trigger,Boolean> _function = new Function1<Trigger,Boolean>() {
- public Boolean apply(final Trigger e) {
- boolean _operator_and = false;
- String _trigger = at.getTrigger();
- boolean _isMatching = ac.isMatching(e, _trigger);
- if (!_isMatching) {
- _operator_and = false;
- } else {
- boolean _hasGuard = RoomExtensions.this.hasGuard(e);
- _operator_and = BooleanExtensions.operator_and(_isMatching, _hasGuard);
- }
- return ((Boolean)_operator_and);
- }
- };
- boolean _exists = IterableExtensions.<Trigger>exists(_triggers, _function);
- if (_exists) {
- hasGuard = true;
- }
- }
- return hasGuard;
- }
- }
-
- public boolean hasEntryCode(final State s) {
- boolean _operator_and = false;
- DetailCode _entryCode = s.getEntryCode();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_entryCode, null);
- if (!_operator_notEquals) {
- _operator_and = false;
- } else {
- DetailCode _entryCode_1 = s.getEntryCode();
- EList<String> _commands = _entryCode_1.getCommands();
- int _size = _commands.size();
- boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
- _operator_and = BooleanExtensions.operator_and(_operator_notEquals, _operator_greaterThan);
- }
- return _operator_and;
- }
-
- public boolean hasExitCode(final State s) {
- boolean _operator_and = false;
- DetailCode _exitCode = s.getExitCode();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_exitCode, null);
- if (!_operator_notEquals) {
- _operator_and = false;
- } else {
- DetailCode _exitCode_1 = s.getExitCode();
- EList<String> _commands = _exitCode_1.getCommands();
- int _size = _commands.size();
- boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
- _operator_and = BooleanExtensions.operator_and(_operator_notEquals, _operator_greaterThan);
- }
- return _operator_and;
- }
-
- public String getEntryCode(final ExpandedActorClass ac, final State s) {
- if ((s instanceof org.eclipse.etrice.core.room.RefinedState)) {
- String _entryCodeOperationName = this.nameProvider.getEntryCodeOperationName(s);
- String _operator_plus = StringExtensions.operator_plus("super.", _entryCodeOperationName);
- String _operator_plus_1 = StringExtensions.operator_plus(_operator_plus, "();\n");
- DetailCode _entryCode = s.getEntryCode();
- String _code = ac.getCode(_entryCode);
- String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, _code);
- return _operator_plus_2;
- } else {
- DetailCode _entryCode_1 = s.getEntryCode();
- String _code_1 = ac.getCode(_entryCode_1);
- return _code_1;
- }
- }
-
- public String getExitCode(final ExpandedActorClass ac, final State s) {
- String _xifexpression = null;
- if ((s instanceof org.eclipse.etrice.core.room.RefinedState)) {
- DetailCode _exitCode = s.getExitCode();
- String _code = ac.getCode(_exitCode);
- String _operator_plus = StringExtensions.operator_plus(_code, "super.");
- String _entryCodeOperationName = this.nameProvider.getEntryCodeOperationName(s);
- String _operator_plus_1 = StringExtensions.operator_plus(_operator_plus, _entryCodeOperationName);
- String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "();\n");
- return _operator_plus_2;
- } else {
- DetailCode _exitCode_1 = s.getExitCode();
- String _code_1 = ac.getCode(_exitCode_1);
- _xifexpression = _code_1;
- }
- return _xifexpression;
- }
-
- public boolean hasActionCode(final Transition t) {
- boolean _operator_and = false;
- DetailCode _action = t.getAction();
- boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_action, null);
- if (!_operator_notEquals) {
- _operator_and = false;
- } else {
- DetailCode _action_1 = t.getAction();
- EList<String> _commands = _action_1.getCommands();
- int _size = _commands.size();
- boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
- _operator_and = BooleanExtensions.operator_and(_operator_notEquals, _operator_greaterThan);
- }
- return _operator_and;
- }
-
- public String getActionCode(final ExpandedActorClass ac, final Transition t) {
- DetailCode _action = t.getAction();
- String _code = ac.getCode(_action);
- return _code;
- }
-
- public String getContextId(final TransitionChain tc) {
- State _stateContext = tc.getStateContext();
- String _stateId = this.nameProvider.getStateId(_stateContext);
- return _stateId;
- }
-
- public Transition getInitTransition(final StateGraph sg) {
- {
- EList<Transition> _transitions = sg.getTransitions();
- for (Transition tr : _transitions) {
- if ((tr instanceof org.eclipse.etrice.core.room.InitialTransition)) {
- return tr;
- }
- }
- return null;
- }
- }
-
- public boolean hasInitTransition(final StateGraph sg) {
- {
- EList<Transition> _transitions = sg.getTransitions();
- for (Transition tr : _transitions) {
- if ((tr instanceof org.eclipse.etrice.core.room.InitialTransition)) {
- return true;
- }
- }
- return false;
- }
- }
-
- public List<Transition> getTransitionList(final State s) {
- boolean _isLeaf = this.isLeaf(s);
- if (_isLeaf) {
- ArrayList<Transition> _arrayList = new ArrayList<Transition>();
- return _arrayList;
- } else {
- StateGraph _subgraph = s.getSubgraph();
- List<Transition> _transitionList = this.getTransitionList(_subgraph);
- return _transitionList;
- }
- }
-
- public List<Transition> getTransitionList(final StateGraph sg) {
- {
- EList<Transition> _transitions = sg.getTransitions();
- ArrayList<Transition> _arrayList = new ArrayList<Transition>(_transitions);
- ArrayList<Transition> res = _arrayList;
- EList<State> _states = sg.getStates();
- for (State s : _states) {
- List<Transition> _transitionList = this.getTransitionList(s);
- res.addAll(_transitionList);
- }
- return res;
- }
- }
-} \ No newline at end of file
+package org.eclipse.etrice.generator.extensions;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.BaseState;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.ExternalPort;
+import org.eclipse.etrice.core.room.FreeType;
+import org.eclipse.etrice.core.room.FreeTypedID;
+import org.eclipse.etrice.core.room.Guard;
+import org.eclipse.etrice.core.room.InitialTransition;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.MessageHandler;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.PortClass;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RefinedState;
+import org.eclipse.etrice.core.room.SAPRef;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.ServiceImplementation;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.StateGraph;
+import org.eclipse.etrice.core.room.StateMachine;
+import org.eclipse.etrice.core.room.Transition;
+import org.eclipse.etrice.core.room.Trigger;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+import org.eclipse.etrice.generator.etricegen.ActiveTrigger;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.TransitionChain;
+import org.eclipse.etrice.generator.extensions.RoomNameProv;
+import org.eclipse.xtext.xbase.lib.BooleanExtensions;
+import org.eclipse.xtext.xbase.lib.ComparableExtensions;
+import org.eclipse.xtext.xbase.lib.Functions.Function1;
+import org.eclipse.xtext.xbase.lib.IntegerExtensions;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.eclipse.xtext.xbase.lib.ObjectExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+
+@SuppressWarnings("all")
+@Singleton
+public class RoomExtensions {
+ @Inject
+ private RoomNameProv nameProvider;
+
+ public <T extends Object> List<T> union(final List<T> l1, final List<T> l2) {
+ ArrayList<T> _arrayList = new ArrayList<T>();
+ ArrayList<T> ret = _arrayList;
+ ret.addAll(l1);
+ ret.addAll(l2);
+ return ret;
+ }
+
+ public List<Port> punion(final List<Port> in1, final List<ExternalPort> in2) {
+ ArrayList<Port> _arrayList = new ArrayList<Port>();
+ ArrayList<Port> ret = _arrayList;
+ for (final ExternalPort ele : in2) {
+ Port _ifport = ele.getIfport();
+ ret.add(_ifport);
+ }
+ ret.addAll(in1);
+ return ret;
+ }
+
+ public String getGenerationPathSegment() {
+ return "/src-gen/";
+ }
+
+ public String getModelPath(final EObject e) {
+ Resource _eResource = e.eResource();
+ Resource res = _eResource;
+ boolean _operator_equals = ObjectExtensions.operator_equals(res, null);
+ if (_operator_equals) {
+ return "";
+ } else {
+ URI _uRI = res.getURI();
+ String _fileString = _uRI.toFileString();
+ return _fileString;
+ }
+ }
+
+ public String getProjectPath(final EObject e) {
+ Resource _eResource = e.eResource();
+ Resource res = _eResource;
+ boolean _operator_equals = ObjectExtensions.operator_equals(res, null);
+ if (_operator_equals) {
+ return "";
+ } else {
+ {
+ File _file = new File("");
+ File tmpf = _file;
+ URI _uRI = res.getURI();
+ String _fileString = _uRI.toFileString();
+ File _file_1 = new File(_fileString);
+ tmpf = _file_1;
+ boolean _isFile = tmpf.isFile();
+ boolean _operator_not = BooleanExtensions.operator_not(_isFile);
+ if (_operator_not) {
+ return "";
+ }
+ boolean isProject = false;
+ Boolean _xdowhileexpression;
+ do {
+ {
+ File _parentFile = tmpf.getParentFile();
+ tmpf = _parentFile;
+ String[] _list = tmpf.list();
+ String[] contents = _list;
+ for (final String f : contents) {
+ boolean _equals = f.equals(".project");
+ if (_equals) {
+ isProject = true;
+ }
+ }
+ }
+ boolean _operator_and = false;
+ boolean _operator_not_1 = BooleanExtensions.operator_not(isProject);
+ if (!_operator_not_1) {
+ _operator_and = false;
+ } else {
+ File _parentFile_1 = tmpf.getParentFile();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_parentFile_1, null);
+ _operator_and = BooleanExtensions.operator_and(_operator_not_1, _operator_notEquals);
+ }
+ _xdowhileexpression = _operator_and;
+ } while(_xdowhileexpression);
+ String _absolutePath = tmpf.getAbsolutePath();
+ return _absolutePath;
+ }
+ }
+ }
+
+ public String getGenerationTargetPath(final EObject e) {
+ String _projectPath = this.getProjectPath(e);
+ String _generationPathSegment = this.getGenerationPathSegment();
+ String _operator_plus = StringExtensions.operator_plus(_projectPath, _generationPathSegment);
+ return _operator_plus;
+ }
+
+ public List<Port> getEndPorts(final ActorClass ac) {
+ EList<Port> _intPorts = ac.getIntPorts();
+ EList<ExternalPort> _extPorts = ac.getExtPorts();
+ List<Port> _punion = this.punion(_intPorts, _extPorts);
+ return _punion;
+ }
+
+ public String getPathName(final String path) {
+ String _replaceAll = path.replaceAll("/", "_");
+ return _replaceAll;
+ }
+
+ public String getPortClassName(final ProtocolClass p, final boolean conj) {
+ String _name = p.getName();
+ String ret = _name;
+ if (conj) {
+ String _operator_plus = StringExtensions.operator_plus(ret, "ConjPort");
+ ret = _operator_plus;
+ } else {
+ String _operator_plus_1 = StringExtensions.operator_plus(ret, "Port");
+ ret = _operator_plus_1;
+ }
+ return ret;
+ }
+
+ public String getPortClassName(final Port p) {
+ ProtocolClass _protocol = p.getProtocol();
+ boolean _isConjugated = p.isConjugated();
+ String _portClassName = this.getPortClassName(_protocol, _isConjugated);
+ String ret = _portClassName;
+ boolean _isReplicated = p.isReplicated();
+ if (_isReplicated) {
+ String _operator_plus = StringExtensions.operator_plus(ret, "Repl");
+ ret = _operator_plus;
+ }
+ return ret;
+ }
+
+ public String getPortClassName(final ExternalPort p) {
+ Port _ifport = p.getIfport();
+ String _portClassName = this.getPortClassName(_ifport);
+ return _portClassName;
+ }
+
+ public String getPortClassName(final SAPRef sap) {
+ ProtocolClass _protocol = sap.getProtocol();
+ String _portClassName = this.getPortClassName(_protocol, true);
+ return _portClassName;
+ }
+
+ public String getPortClassName(final ServiceImplementation svc) {
+ SPPRef _spp = svc.getSpp();
+ ProtocolClass _protocol = _spp.getProtocol();
+ String _portClassName = this.getPortClassName(_protocol, false);
+ String _operator_plus = StringExtensions.operator_plus(_portClassName, "Repl");
+ return _operator_plus;
+ }
+
+ public List<Message> getAllIncomingMessages(final ProtocolClass pc) {
+ ProtocolClass _base = pc.getBase();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
+ if (_operator_notEquals) {
+ ProtocolClass _base_1 = pc.getBase();
+ List<Message> _allIncomingMessages = this.getAllIncomingMessages(_base_1);
+ EList<Message> _incomingMessages = pc.getIncomingMessages();
+ List<Message> _union = this.<Message>union(_allIncomingMessages, _incomingMessages);
+ return _union;
+ } else {
+ EList<Message> _incomingMessages_1 = pc.getIncomingMessages();
+ return _incomingMessages_1;
+ }
+ }
+
+ public List<Message> getAllOutgoingMessages(final ProtocolClass pc) {
+ EList<Message> _xifexpression = null;
+ ProtocolClass _base = pc.getBase();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
+ if (_operator_notEquals) {
+ ProtocolClass _base_1 = pc.getBase();
+ List<Message> _allOutgoingMessages = this.getAllOutgoingMessages(_base_1);
+ EList<Message> _outgoingMessages = pc.getOutgoingMessages();
+ List<Message> _union = this.<Message>union(_allOutgoingMessages, _outgoingMessages);
+ return _union;
+ } else {
+ EList<Message> _outgoingMessages_1 = pc.getOutgoingMessages();
+ _xifexpression = _outgoingMessages_1;
+ }
+ return _xifexpression;
+ }
+
+ public List<Message> getIncoming(final ProtocolClass pc, final boolean conj) {
+ if (conj) {
+ List<Message> _allOutgoingMessages = this.getAllOutgoingMessages(pc);
+ return _allOutgoingMessages;
+ } else {
+ List<Message> _allIncomingMessages = this.getAllIncomingMessages(pc);
+ return _allIncomingMessages;
+ }
+ }
+
+ public List<Message> getOutgoing(final ProtocolClass pc, final boolean conj) {
+ if (conj) {
+ List<Message> _allIncomingMessages = this.getAllIncomingMessages(pc);
+ return _allIncomingMessages;
+ } else {
+ List<Message> _allOutgoingMessages = this.getAllOutgoingMessages(pc);
+ return _allOutgoingMessages;
+ }
+ }
+
+ public PortClass getPortClass(final ProtocolClass pc, final boolean conj) {
+ if (conj) {
+ PortClass _conjugate = pc.getConjugate();
+ return _conjugate;
+ } else {
+ PortClass _regular = pc.getRegular();
+ return _regular;
+ }
+ }
+
+ public boolean handlesSend(final ProtocolClass pc, final boolean conj) {
+ PortClass _portClass = this.getPortClass(pc, conj);
+ boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null);
+ if (_operator_equals) {
+ return false;
+ } else {
+ PortClass _portClass_1 = this.getPortClass(pc, conj);
+ EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers();
+ for (final MessageHandler hdlr : _msgHandlers) {
+ List<Message> _outgoing = this.getOutgoing(pc, conj);
+ Message _msg = hdlr.getMsg();
+ boolean _contains = _outgoing.contains(_msg);
+ if (_contains) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public boolean handlesReceive(final ProtocolClass pc, final boolean conj) {
+ PortClass _portClass = this.getPortClass(pc, conj);
+ boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null);
+ if (_operator_equals) {
+ return false;
+ } else {
+ PortClass _portClass_1 = this.getPortClass(pc, conj);
+ EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers();
+ for (final MessageHandler hdlr : _msgHandlers) {
+ List<Message> _incoming = this.getIncoming(pc, conj);
+ Message _msg = hdlr.getMsg();
+ boolean _contains = _incoming.contains(_msg);
+ if (_contains) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public List<MessageHandler> getReceiveHandlers(final ProtocolClass pc, final boolean conj) {
+ PortClass _portClass = this.getPortClass(pc, conj);
+ boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null);
+ if (_operator_equals) {
+ ArrayList<MessageHandler> _arrayList = new ArrayList<MessageHandler>();
+ return _arrayList;
+ } else {
+ {
+ ArrayList<MessageHandler> _arrayList_1 = new ArrayList<MessageHandler>();
+ ArrayList<MessageHandler> res = _arrayList_1;
+ PortClass _portClass_1 = this.getPortClass(pc, conj);
+ EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers();
+ for (final MessageHandler hdlr : _msgHandlers) {
+ List<Message> _incoming = this.getIncoming(pc, conj);
+ Message _msg = hdlr.getMsg();
+ boolean _contains = _incoming.contains(_msg);
+ if (_contains) {
+ res.add(hdlr);
+ }
+ }
+ return res;
+ }
+ }
+ }
+
+ public List<MessageHandler> getSendHandlers(final ProtocolClass pc, final boolean conj) {
+ PortClass _portClass = this.getPortClass(pc, conj);
+ boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null);
+ if (_operator_equals) {
+ ArrayList<MessageHandler> _arrayList = new ArrayList<MessageHandler>();
+ return _arrayList;
+ } else {
+ {
+ ArrayList<MessageHandler> _arrayList_1 = new ArrayList<MessageHandler>();
+ ArrayList<MessageHandler> res = _arrayList_1;
+ PortClass _portClass_1 = this.getPortClass(pc, conj);
+ EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers();
+ for (final MessageHandler hdlr : _msgHandlers) {
+ List<Message> _outgoing = this.getOutgoing(pc, conj);
+ Message _msg = hdlr.getMsg();
+ boolean _contains = _outgoing.contains(_msg);
+ if (_contains) {
+ res.add(hdlr);
+ }
+ }
+ return res;
+ }
+ }
+ }
+
+ public MessageHandler getSendHandler(final Message m, final boolean conj) {
+ EObject _eContainer = m.eContainer();
+ List<MessageHandler> _sendHandlers = this.getSendHandlers(((ProtocolClass) _eContainer), conj);
+ final Function1<MessageHandler,Boolean> _function = new Function1<MessageHandler,Boolean>() {
+ public Boolean apply(final MessageHandler e) {
+ Message _msg = e.getMsg();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_msg, m);
+ return ((Boolean)_operator_equals);
+ }
+ };
+ MessageHandler _findFirst = IterableExtensions.<MessageHandler>findFirst(_sendHandlers, _function);
+ return _findFirst;
+ }
+
+ public boolean isIncoming(final Message m) {
+ EObject _eContainer = m.eContainer();
+ List<Message> _allIncomingMessages = this.getAllIncomingMessages(((ProtocolClass) _eContainer));
+ boolean _contains = _allIncomingMessages.contains(m);
+ return _contains;
+ }
+
+ public String getCodeName(final Message m) {
+ boolean _isIncoming = this.isIncoming(m);
+ if (_isIncoming) {
+ String _name = m.getName();
+ String _operator_plus = StringExtensions.operator_plus("IN_", _name);
+ return _operator_plus;
+ } else {
+ String _name_1 = m.getName();
+ String _operator_plus_1 = StringExtensions.operator_plus("OUT_", _name_1);
+ return _operator_plus_1;
+ }
+ }
+
+ public boolean isLeaf(final State s) {
+ StateGraph _subgraph = s.getSubgraph();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_subgraph, null);
+ return _operator_equals;
+ }
+
+ public List<State> getLeafStateList(final StateGraph sg) {
+ ArrayList<State> _arrayList = new ArrayList<State>();
+ ArrayList<State> res = _arrayList;
+ EList<State> _states = sg.getStates();
+ for (final State s : _states) {
+ List<State> _leafStateList = this.getLeafStateList(s);
+ res.addAll(_leafStateList);
+ }
+ return res;
+ }
+
+ public List<State> getLeafStateList(final State s) {
+ boolean _isLeaf = this.isLeaf(s);
+ if (_isLeaf) {
+ {
+ ArrayList<State> _arrayList = new ArrayList<State>();
+ ArrayList<State> res = _arrayList;
+ res.add(s);
+ return res;
+ }
+ } else {
+ StateGraph _subgraph = s.getSubgraph();
+ List<State> _leafStateList = this.getLeafStateList(_subgraph);
+ return _leafStateList;
+ }
+ }
+
+ public List<State> getStateList(final StateGraph sg) {
+ ArrayList<State> _arrayList = new ArrayList<State>();
+ ArrayList<State> ret = _arrayList;
+ EList<State> _states = sg.getStates();
+ for (final State e : _states) {
+ {
+ ret.add(e);
+ StateGraph _subgraph = e.getSubgraph();
+ StateGraph tmp = _subgraph;
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(tmp, null);
+ if (_operator_notEquals) {
+ StateGraph _subgraph_1 = e.getSubgraph();
+ List<State> _stateList = this.getStateList(_subgraph_1);
+ ret.addAll(_stateList);
+ }
+ }
+ }
+ return ret;
+ }
+
+ public List<State> getBaseStateList(final StateGraph sg) {
+ ArrayList<State> _arrayList = new ArrayList<State>();
+ ArrayList<State> ret = _arrayList;
+ List<State> _stateList = this.getStateList(sg);
+ for (final State e : _stateList) {
+ if ((e instanceof BaseState)) {
+ ret.add(e);
+ }
+ }
+ return ret;
+ }
+
+ public List<State> getAllBaseStates(final ActorClass ac) {
+ List<State> _xifexpression = null;
+ ActorClass _base = ac.getBase();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_base, null);
+ if (_operator_equals) {
+ StateMachine _stateMachine = ac.getStateMachine();
+ List<State> _baseStateList = this.getBaseStateList(_stateMachine);
+ return _baseStateList;
+ } else {
+ ActorClass _base_1 = ac.getBase();
+ List<State> _allBaseStates = this.getAllBaseStates(_base_1);
+ StateMachine _stateMachine_1 = ac.getStateMachine();
+ List<State> _baseStateList_1 = this.getBaseStateList(_stateMachine_1);
+ List<State> _union = this.<State>union(_allBaseStates, _baseStateList_1);
+ _xifexpression = _union;
+ }
+ return _xifexpression;
+ }
+
+ public boolean overridesStop(final ActorClass ac) {
+ boolean _operator_or = false;
+ EList<Operation> _operations = ac.getOperations();
+ final Function1<Operation,Boolean> _function = new Function1<Operation,Boolean>() {
+ public Boolean apply(final Operation e) {
+ boolean _operator_and = false;
+ boolean _operator_and_1 = false;
+ String _name = e.getName();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_name, "stop");
+ if (!_operator_equals) {
+ _operator_and_1 = false;
+ } else {
+ EList<FreeTypedID> _arguments = e.getArguments();
+ boolean _isEmpty = _arguments.isEmpty();
+ _operator_and_1 = BooleanExtensions.operator_and(_operator_equals, _isEmpty);
+ }
+ if (!_operator_and_1) {
+ _operator_and = false;
+ } else {
+ FreeType _returntype = e.getReturntype();
+ boolean _operator_equals_1 = ObjectExtensions.operator_equals(_returntype, null);
+ _operator_and = BooleanExtensions.operator_and(_operator_and_1, _operator_equals_1);
+ }
+ return ((Boolean)_operator_and);
+ }
+ };
+ boolean _exists = IterableExtensions.<Operation>exists(_operations, _function);
+ if (_exists) {
+ _operator_or = true;
+ } else {
+ boolean _operator_and = false;
+ ActorClass _base = ac.getBase();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
+ if (!_operator_notEquals) {
+ _operator_and = false;
+ } else {
+ ActorClass _base_1 = ac.getBase();
+ boolean _overridesStop = this.overridesStop(_base_1);
+ _operator_and = BooleanExtensions.operator_and(_operator_notEquals, _overridesStop);
+ }
+ _operator_or = BooleanExtensions.operator_or(_exists, _operator_and);
+ }
+ return _operator_or;
+ }
+
+ public int getNumberOfInheritedStates(final ActorClass ac) {
+ ActorClass _base = ac.getBase();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_base, null);
+ if (_operator_equals) {
+ return 0;
+ } else {
+ ActorClass _base_1 = ac.getBase();
+ StateMachine _stateMachine = _base_1.getStateMachine();
+ List<State> _stateList = this.getStateList(_stateMachine);
+ int _size = _stateList.size();
+ ActorClass _base_2 = ac.getBase();
+ int _numberOfInheritedStates = this.getNumberOfInheritedStates(_base_2);
+ int _operator_plus = IntegerExtensions.operator_plus(((Integer)_size), ((Integer)_numberOfInheritedStates));
+ return _operator_plus;
+ }
+ }
+
+ public int getNumberOfInheritedBaseStates(final ActorClass ac) {
+ ActorClass _base = ac.getBase();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_base, null);
+ if (_operator_equals) {
+ return 0;
+ } else {
+ ActorClass _base_1 = ac.getBase();
+ StateMachine _stateMachine = _base_1.getStateMachine();
+ List<State> _baseStateList = this.getBaseStateList(_stateMachine);
+ int _size = _baseStateList.size();
+ ActorClass _base_2 = ac.getBase();
+ int _numberOfInheritedBaseStates = this.getNumberOfInheritedBaseStates(_base_2);
+ int _operator_plus = IntegerExtensions.operator_plus(((Integer)_size), ((Integer)_numberOfInheritedBaseStates));
+ return _operator_plus;
+ }
+ }
+
+ public String getStateId(final State s) {
+ String _stateId = this.getStateId(s);
+ return _stateId;
+ }
+
+ public String getStatePathName(final State s) {
+ String _statePathName = this.getStatePathName(s);
+ return _statePathName;
+ }
+
+ public String getChainId(final TransitionChain t) {
+ String _chainId = this.getChainId(t);
+ return _chainId;
+ }
+
+ public boolean hasGuard(final Trigger tr) {
+ boolean _operator_and = false;
+ boolean _operator_and_1 = false;
+ Guard _guard = tr.getGuard();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_guard, null);
+ if (!_operator_notEquals) {
+ _operator_and_1 = false;
+ } else {
+ Guard _guard_1 = tr.getGuard();
+ DetailCode _guard_2 = _guard_1.getGuard();
+ boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_guard_2, null);
+ _operator_and_1 = BooleanExtensions.operator_and(_operator_notEquals, _operator_notEquals_1);
+ }
+ if (!_operator_and_1) {
+ _operator_and = false;
+ } else {
+ Guard _guard_3 = tr.getGuard();
+ DetailCode _guard_4 = _guard_3.getGuard();
+ EList<String> _commands = _guard_4.getCommands();
+ int _size = _commands.size();
+ boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
+ _operator_and = BooleanExtensions.operator_and(_operator_and_1, _operator_greaterThan);
+ }
+ return _operator_and;
+ }
+
+ public boolean hasGuard(final ExpandedActorClass ac, final ActiveTrigger at) {
+ boolean hasGuard = false;
+ EList<TriggeredTransition> _transitions = at.getTransitions();
+ for (final TriggeredTransition t : _transitions) {
+ EList<Trigger> _triggers = t.getTriggers();
+ final Function1<Trigger,Boolean> _function = new Function1<Trigger,Boolean>() {
+ public Boolean apply(final Trigger e) {
+ boolean _operator_and = false;
+ String _trigger = at.getTrigger();
+ boolean _isMatching = ac.isMatching(e, _trigger);
+ if (!_isMatching) {
+ _operator_and = false;
+ } else {
+ boolean _hasGuard = RoomExtensions.this.hasGuard(e);
+ _operator_and = BooleanExtensions.operator_and(_isMatching, _hasGuard);
+ }
+ return ((Boolean)_operator_and);
+ }
+ };
+ boolean _exists = IterableExtensions.<Trigger>exists(_triggers, _function);
+ if (_exists) {
+ hasGuard = true;
+ }
+ }
+ return hasGuard;
+ }
+
+ public boolean hasEntryCode(final State s) {
+ boolean _operator_and = false;
+ DetailCode _entryCode = s.getEntryCode();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_entryCode, null);
+ if (!_operator_notEquals) {
+ _operator_and = false;
+ } else {
+ DetailCode _entryCode_1 = s.getEntryCode();
+ EList<String> _commands = _entryCode_1.getCommands();
+ int _size = _commands.size();
+ boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
+ _operator_and = BooleanExtensions.operator_and(_operator_notEquals, _operator_greaterThan);
+ }
+ return _operator_and;
+ }
+
+ public boolean hasExitCode(final State s) {
+ boolean _operator_and = false;
+ DetailCode _exitCode = s.getExitCode();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_exitCode, null);
+ if (!_operator_notEquals) {
+ _operator_and = false;
+ } else {
+ DetailCode _exitCode_1 = s.getExitCode();
+ EList<String> _commands = _exitCode_1.getCommands();
+ int _size = _commands.size();
+ boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
+ _operator_and = BooleanExtensions.operator_and(_operator_notEquals, _operator_greaterThan);
+ }
+ return _operator_and;
+ }
+
+ public String getEntryCode(final ExpandedActorClass ac, final State s) {
+ if ((s instanceof RefinedState)) {
+ String _entryCodeOperationName = RoomNameProv.getEntryCodeOperationName(s);
+ String _operator_plus = StringExtensions.operator_plus("super.", _entryCodeOperationName);
+ String _operator_plus_1 = StringExtensions.operator_plus(_operator_plus, "();\n");
+ DetailCode _entryCode = s.getEntryCode();
+ String _code = ac.getCode(_entryCode);
+ String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, _code);
+ return _operator_plus_2;
+ } else {
+ DetailCode _entryCode_1 = s.getEntryCode();
+ String _code_1 = ac.getCode(_entryCode_1);
+ return _code_1;
+ }
+ }
+
+ public String getExitCode(final ExpandedActorClass ac, final State s) {
+ String _xifexpression = null;
+ if ((s instanceof RefinedState)) {
+ DetailCode _exitCode = s.getExitCode();
+ String _code = ac.getCode(_exitCode);
+ String _operator_plus = StringExtensions.operator_plus(_code, "super.");
+ String _entryCodeOperationName = RoomNameProv.getEntryCodeOperationName(s);
+ String _operator_plus_1 = StringExtensions.operator_plus(_operator_plus, _entryCodeOperationName);
+ String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "();\n");
+ return _operator_plus_2;
+ } else {
+ DetailCode _exitCode_1 = s.getExitCode();
+ String _code_1 = ac.getCode(_exitCode_1);
+ _xifexpression = _code_1;
+ }
+ return _xifexpression;
+ }
+
+ public boolean hasActionCode(final Transition t) {
+ boolean _operator_and = false;
+ DetailCode _action = t.getAction();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_action, null);
+ if (!_operator_notEquals) {
+ _operator_and = false;
+ } else {
+ DetailCode _action_1 = t.getAction();
+ EList<String> _commands = _action_1.getCommands();
+ int _size = _commands.size();
+ boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
+ _operator_and = BooleanExtensions.operator_and(_operator_notEquals, _operator_greaterThan);
+ }
+ return _operator_and;
+ }
+
+ public String getActionCode(final ExpandedActorClass ac, final Transition t) {
+ DetailCode _action = t.getAction();
+ String _code = ac.getCode(_action);
+ return _code;
+ }
+
+ public String getContextId(final TransitionChain tc) {
+ State _stateContext = tc.getStateContext();
+ String _stateId = this.getStateId(_stateContext);
+ return _stateId;
+ }
+
+ public Transition getInitTransition(final StateGraph sg) {
+ EList<Transition> _transitions = sg.getTransitions();
+ for (final Transition tr : _transitions) {
+ if ((tr instanceof InitialTransition)) {
+ return tr;
+ }
+ }
+ return null;
+ }
+
+ public boolean hasInitTransition(final StateGraph sg) {
+ EList<Transition> _transitions = sg.getTransitions();
+ for (final Transition tr : _transitions) {
+ if ((tr instanceof InitialTransition)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public List<Transition> getTransitionList(final State s) {
+ boolean _isLeaf = this.isLeaf(s);
+ if (_isLeaf) {
+ ArrayList<Transition> _arrayList = new ArrayList<Transition>();
+ return _arrayList;
+ } else {
+ StateGraph _subgraph = s.getSubgraph();
+ List<Transition> _transitionList = this.getTransitionList(_subgraph);
+ return _transitionList;
+ }
+ }
+
+ public List<Transition> getTransitionList(final StateGraph sg) {
+ EList<Transition> _transitions = sg.getTransitions();
+ ArrayList<Transition> _arrayList = new ArrayList<Transition>(_transitions);
+ ArrayList<Transition> res = _arrayList;
+ EList<State> _states = sg.getStates();
+ for (final State s : _states) {
+ List<Transition> _transitionList = this.getTransitionList(s);
+ res.addAll(_transitionList);
+ }
+ return res;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.behavior/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.ui.behavior/META-INF/MANIFEST.MF
index d41aa0225..65c65629a 100644
--- a/plugins/org.eclipse.etrice.ui.behavior/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.etrice.ui.behavior/META-INF/MANIFEST.MF
@@ -4,23 +4,14 @@ Bundle-Name: Actor Behavior Diagram Editor
Bundle-SymbolicName: org.eclipse.etrice.ui.behavior;singleton:=true
Bundle-Version: 0.1.0.qualifier
Bundle-Activator: org.eclipse.etrice.ui.behavior.Activator
-Require-Bundle: org.eclipse.etrice.core.room;bundle-version="0.1.0",
- org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
+Require-Bundle: org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
org.eclipse.etrice.ui.common;bundle-version="0.1.0",
org.eclipse.graphiti;bundle-version="0.8.0",
org.eclipse.graphiti.ui;bundle-version="0.8.0",
- org.eclipse.ui;bundle-version="3.6.0",
- org.eclipse.ui.ide;bundle-version="3.6.0",
- org.eclipse.ui.forms;bundle-version="3.5.0",
org.eclipse.ui.views.properties.tabbed;bundle-version="3.5.100",
- org.eclipse.jface.databinding;bundle-version="1.4.0",
org.eclipse.core.databinding;bundle-version="1.3.100",
- org.eclipse.core.databinding.property;bundle-version="1.3.0",
- org.eclipse.core.databinding.beans;bundle-version="1.2.100",
org.eclipse.gef;bundle-version="3.6.1",
- org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
org.eclipse.emf.transaction;bundle-version="1.4.0",
- org.eclipse.xtext;bundle-version="2.0.0",
org.eclipse.xtext.ui;bundle-version="2.0.0",
org.eclipse.xtext.ui.shared;bundle-version="2.0.0"
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.etrice.ui.commands/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.ui.commands/META-INF/MANIFEST.MF
index 980a0aa4c..260b2026c 100644
--- a/plugins/org.eclipse.etrice.ui.commands/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.etrice.ui.commands/META-INF/MANIFEST.MF
@@ -5,19 +5,14 @@ Bundle-SymbolicName: org.eclipse.etrice.ui.commands; singleton:=true
Bundle-Version: 0.1.0.qualifier
Bundle-Activator: org.eclipse.etrice.ui.commands.Activator
Bundle-Vendor: eTrice (Incubation)
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.etrice.core.room;bundle-version="0.1.0",
- org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
+Require-Bundle: org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
+ org.eclipse.etrice.ui.common;bundle-version="0.1.0",
org.eclipse.etrice.ui.structure;bundle-version="0.1.0",
org.eclipse.etrice.ui.behavior;bundle-version="0.1.0",
- org.eclipse.etrice.ui.common;bundle-version="0.1.0",
org.eclipse.graphiti;bundle-version="0.8.0",
- org.eclipse.graphiti.ui;bundle-version="0.8.0",
- org.eclipse.emf.edit;bundle-version="2.6.0",
- org.eclipse.emf.edit.ui;bundle-version="2.6.0",
org.eclipse.ui.views.properties.tabbed;bundle-version="3.5.100",
- org.eclipse.gef;bundle-version="3.6.1",
- org.eclipse.xtext.ui;bundle-version="2.0.0"
+ org.eclipse.xtext.ui;bundle-version="2.1.1",
+ org.eclipse.graphiti.ui;bundle-version="0.8.0",
+ org.eclipse.gef;bundle-version="3.7.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.etrice.ui.common/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.ui.common/META-INF/MANIFEST.MF
index 3811d8452..a7b16603a 100644
--- a/plugins/org.eclipse.etrice.ui.common/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.etrice.ui.common/META-INF/MANIFEST.MF
@@ -7,24 +7,16 @@ Bundle-Vendor: eTrice (Incubation)
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.eclipse.core.databinding;bundle-version="1.3.100",
org.eclipse.core.databinding.beans;bundle-version="1.2.100",
- org.eclipse.core.runtime;bundle-version="3.6.0",
- org.eclipse.emf.ecore;bundle-version="2.6.0",
org.eclipse.jface.databinding;bundle-version="1.4.0",
- org.eclipse.jface;bundle-version="3.6.0",
- org.eclipse.ui.forms;bundle-version="3.5.0",
- org.eclipse.core.resources;bundle-version="3.6.0",
org.eclipse.emf.transaction;bundle-version="1.4.0",
- org.eclipse.etrice.core.room;bundle-version="0.1.0",
org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
org.eclipse.graphiti;bundle-version="0.8.0",
- org.eclipse.ui;bundle-version="3.6.1",
org.eclipse.ui.ide;bundle-version="3.6.0",
org.eclipse.graphiti.ui;bundle-version="0.7.0",
org.eclipse.gef;bundle-version="3.6.1",
org.eclipse.ui.views.properties.tabbed;bundle-version="3.5.100",
- org.eclipse.xtext;bundle-version="2.0.0",
- org.eclipse.xtext.ui;bundle-version="2.0.0",
- org.eclipse.xtext.ui.shared;bundle-version="2.0.0"
+ org.eclipse.xtext.ui;bundle-version="2.1.1",
+ org.eclipse.xtext.ui.shared;bundle-version="2.1.1"
Export-Package: org.eclipse.etrice.ui.common,
org.eclipse.etrice.ui.common.commands,
org.eclipse.etrice.ui.common.dialogs,
diff --git a/plugins/org.eclipse.etrice.ui.structure/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.ui.structure/META-INF/MANIFEST.MF
index 7f2e34f0e..4bd79a36b 100644
--- a/plugins/org.eclipse.etrice.ui.structure/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.etrice.ui.structure/META-INF/MANIFEST.MF
@@ -5,26 +5,17 @@ Bundle-SymbolicName: org.eclipse.etrice.ui.structure;singleton:=true
Bundle-Version: 0.1.0.qualifier
Bundle-Activator: org.eclipse.etrice.ui.structure.Activator
Bundle-Vendor: eTrice (Incubation)
-Require-Bundle: org.eclipse.etrice.core.room;bundle-version="0.1.0",
- org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
+Require-Bundle: org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
org.eclipse.etrice.ui.common;bundle-version="0.1.0",
org.eclipse.etrice.ui.behavior;bundle-version="0.1.0",
org.eclipse.graphiti;bundle-version="0.8.0",
org.eclipse.graphiti.ui;bundle-version="0.8.0",
- org.eclipse.ui;bundle-version="3.6.0",
- org.eclipse.ui.ide;bundle-version="3.6.0",
- org.eclipse.ui.forms;bundle-version="3.5.0",
org.eclipse.ui.views.properties.tabbed;bundle-version="3.5.100",
- org.eclipse.jface.databinding;bundle-version="1.4.0",
org.eclipse.core.databinding;bundle-version="1.3.100",
- org.eclipse.core.databinding.property;bundle-version="1.3.0",
- org.eclipse.core.databinding.beans;bundle-version="1.2.100",
org.eclipse.gef;bundle-version="3.6.1",
- org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
org.eclipse.emf.transaction;bundle-version="1.4.0",
- org.eclipse.xtext;bundle-version="2.0.0",
- org.eclipse.xtext.ui;bundle-version="2.0.0",
- org.eclipse.xtext.ui.shared;bundle-version="2.0.0"
+ org.eclipse.xtext.ui;bundle-version="2.1.1",
+ org.eclipse.xtext.ui.shared;bundle-version="2.1.1"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.etrice.ui.structure,
diff --git a/releng/org.eclipse.etrice.releng/build.rmap b/releng/org.eclipse.etrice.releng/build.rmap
index a9f300f7c..d5f8199d6 100644
--- a/releng/org.eclipse.etrice.releng/build.rmap
+++ b/releng/org.eclipse.etrice.releng/build.rmap
@@ -98,6 +98,12 @@
<bc:propertyRef key="eclipse.downloads"/>
</rm:uri>
</rm:provider>
+ <rm:provider componentTypes="eclipse.feature,osgi.bundle" resolutionFilter="(|(build.type=M)(build.type=R)(build.type=S))" readerType="p2" mutable="false">
+ <rm:property key="buckminster.mutable" value="false"/>
+ <rm:uri format="{0}/modeling/tmf/xtext/updates/composite/releases/">
+ <bc:propertyRef key="eclipse.downloads"/>
+ </rm:uri>
+ </rm:provider>
</rm:searchPath>
<rm:searchPath name="eclipse.license">
<rm:provider componentTypes="eclipse.feature" readerType="cvs">

Back to the top