Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Rentz-Reichert2013-07-19 08:33:11 +0000
committerHenrik Rentz-Reichert2013-07-19 14:17:45 +0000
commitcdc96c87ec214de91c55b361ed712ddc1fbc75aa (patch)
treed60791202d316e30e1782227f34575111ea70f13 /plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/OptionalActorFactoryGen.xtend
parent66e8825e8de6d01e9c182f8c6a7ec59bf2c13902 (diff)
downloadorg.eclipse.etrice-cdc96c87ec214de91c55b361ed712ddc1fbc75aa.tar.gz
org.eclipse.etrice-cdc96c87ec214de91c55b361ed712ddc1fbc75aa.tar.xz
org.eclipse.etrice-cdc96c87ec214de91c55b361ed712ddc1fbc75aa.zip
[runtime.java][generator.java] bug 413297: [runtime.java][generator.java] Let Java generator and and runtime support dynamic actors
https://bugs.eclipse.org/bugs/show_bug.cgi?id=413297
Diffstat (limited to 'plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/OptionalActorFactoryGen.xtend')
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/OptionalActorFactoryGen.xtend55
1 files changed, 55 insertions, 0 deletions
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/OptionalActorFactoryGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/OptionalActorFactoryGen.xtend
new file mode 100644
index 000000000..ec61ea0a8
--- /dev/null
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/OptionalActorFactoryGen.xtend
@@ -0,0 +1,55 @@
+package org.eclipse.etrice.generator.java.gen
+
+import com.google.inject.Inject
+import org.eclipse.etrice.generator.base.IGeneratorFileIo
+import org.eclipse.etrice.generator.generic.RoomExtensions
+import org.eclipse.etrice.core.genmodel.etricegen.Root
+import org.eclipse.etrice.core.genmodel.etricegen.OptionalActorInstance
+
+class OptionalActorFactoryGen {
+
+ @Inject IGeneratorFileIo fileIO
+ @Inject extension JavaExtensions
+ @Inject extension RoomExtensions
+
+ def doGenerate(Root root) {
+ for (oi: root.optionalInstances) {
+ val ac = oi.actorClass
+ val path = ac.generationTargetPath+ac.path
+ val infopath = ac.generationInfoPath+ac.path
+ val file = ac.getJavaFactoryFileName
+ fileIO.generateFile("generating ActorClass Interface implementation", path, infopath, file, root.generate(oi))
+ }
+ }
+
+ def generate(Root root, OptionalActorInstance oi) {
+ val ac = oi.actorClass
+ val clsname = ac.javaFactoryName
+ '''
+ package «ac.package»;
+
+ import «ac.package».«ac.name»;
+ import org.eclipse.etrice.runtime.java.modelbase.OptionalActorInterfaceBase;
+ import org.eclipse.etrice.runtime.java.modelbase.IOptionalActorFactory;
+ import org.eclipse.etrice.runtime.java.modelbase.PathToPeers;
+
+ public class «clsname» implements IOptionalActorFactory {
+
+ private PathToPeers path2peers = new PathToPeers();
+
+ public «ac.name» create(OptionalActorInterfaceBase ai, String name) {
+ // set port mappings of this sub tree
+ «FOR pi : oi.ports»
+ «IF pi.peers.size>0»
+ path2peers.put("«pi.path»", «FOR peer : pi.peers SEPARATOR ","»"«peer.path»"«ENDFOR»);
+ «ENDIF»
+ «ENDFOR»
+ ai.setPath2peers(path2peers);
+
+ // instantiate sub tree
+ return new «ac.name»(ai, ai.getName());
+ }
+ }
+ '''
+ }
+} \ No newline at end of file

Back to the top