diff options
author | Henrik Rentz-Reichert | 2013-07-19 08:33:11 +0000 |
---|---|---|
committer | Henrik Rentz-Reichert | 2013-07-19 14:17:45 +0000 |
commit | cdc96c87ec214de91c55b361ed712ddc1fbc75aa (patch) | |
tree | d60791202d316e30e1782227f34575111ea70f13 /plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/OptionalActorFactoryGen.xtend | |
parent | 66e8825e8de6d01e9c182f8c6a7ec59bf2c13902 (diff) | |
download | org.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.xtend | 55 |
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 |