From 7cd802923e7efb64bad5fd23250b711ddc4c0c94 Mon Sep 17 00:00:00 2001 From: Henrik Rentz-Reichert Date: Fri, 10 Apr 2015 08:54:04 +0200 Subject: refactorings for abstract FSM interface Change-Id: I527dc0c2a00d40873385e707e279254114d7a998 --- .../src/org/eclipse/etrice/generator/java/Main.java | 2 ++ .../eclipse/etrice/generator/java/gen/ActorClassGen.xtend | 12 ++++++++---- .../etrice/generator/java/gen/JavaExtensions.xtend | 15 +++++++++++---- .../generator/java/gen/OptionalActorInterfaceGen.xtend | 4 ++-- .../etrice/generator/java/gen/StateMachineGen.xtend | 7 ++++--- 5 files changed, 27 insertions(+), 13 deletions(-) (limited to 'plugins/org.eclipse.etrice.generator.java/src/org') diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/Main.java b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/Main.java index 240d0218b..fb70a68f0 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/Main.java +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/Main.java @@ -28,7 +28,9 @@ import org.eclipse.etrice.generator.java.setup.GeneratorModule; import org.eclipse.xtext.scoping.impl.ImportUriResolver; import com.google.inject.Inject; +import com.google.inject.Singleton; +@Singleton public class Main extends AbstractGenerator { public static final String OPTION_GEN_PERSIST = "-persistable"; 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 6784d6deb..cb5ee8dc6 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 @@ -159,17 +159,17 @@ class ActorClassGen extends GenericActorClassGenerator { // own ports «FOR ep : ac.getEndPorts()» - «ep.name» = new «ep.getPortClassName()»(this, "«ep.name»", IFITEM_«ep.name»); + «ep.name» = new «ep.getPortClassName()»(this, "«ep.name»", «ep.ifItemId»); «ENDFOR» // own saps «FOR sap : ac.serviceAccessPoints» - «sap.name» = new «sap.getPortClassName()»(this, "«sap.name»", IFITEM_«sap.name», 0); + «sap.name» = new «sap.getPortClassName()»(this, "«sap.name»", «sap.ifItemId», 0); «ENDFOR» // own service implementations «FOR svc : ac.serviceImplementations» - «svc.spp.name» = new «svc.getPortClassName()»(this, "«svc.spp.name»", IFITEM_«svc.spp.name»); + «svc.spp.name» = new «svc.getPortClassName()»(this, "«svc.spp.name»", «svc.spp.ifItemId»); «ENDFOR» // sub actors @@ -314,7 +314,11 @@ class ActorClassGen extends GenericActorClassGenerator { «IF ac.commType == ComponentCommunicationType::ASYNCHRONOUS || ac.commType == ComponentCommunicationType::DATA_DRIVEN» @Override public void receive(Message msg) { - receiveEvent(«IF ac.commType == ComponentCommunicationType::ASYNCHRONOUS»null, -1, null«ENDIF»); + «IF ac.commType == ComponentCommunicationType::ASYNCHRONOUS» + receiveEvent(null, -1, null); + «ELSE» + receiveEventInternal(); + «ENDIF» } «ENDIF» diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaExtensions.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaExtensions.xtend index c14b479c1..73541613b 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaExtensions.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaExtensions.xtend @@ -36,14 +36,20 @@ import org.eclipse.etrice.core.room.ActorClass import org.eclipse.etrice.core.room.EnumerationType import org.eclipse.etrice.core.room.EnumLiteral +import org.eclipse.emf.ecore.EObject @Singleton class JavaExtensions implements ILanguageExtension { @Inject TypeHelpers typeHelpers - override String getTypedDataDefinition(Message m) { - generateArglistAndTypedData(m.data).get(1) + override String getTypedDataDefinition(EObject msg) { + if (msg instanceof Message) { + generateArglistAndTypedData((msg as Message).data).get(1) + } + else { + "" + } } def String getJavaFileName(RoomClass rc) {rc.name+".java"} @@ -243,10 +249,11 @@ class JavaExtensions implements ILanguageExtension { dv } - override generateArglistAndTypedData(VarDecl data) { - if (data==null) + override generateArglistAndTypedData(EObject d) { + if (d==null || !(d instanceof VarDecl)) return newArrayList("", "", "") + val data = d as VarDecl var typeName = data.refType.type.getName(); var castTypeName = typeName; if (data.refType.type instanceof PrimitiveType) { diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/OptionalActorInterfaceGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/OptionalActorInterfaceGen.xtend index ac3824d78..95a8bc9ad 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/OptionalActorInterfaceGen.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/OptionalActorInterfaceGen.xtend @@ -69,9 +69,9 @@ class OptionalActorInterfaceGen extends GenericActorClassGenerator { «FOR ep : ac.allInterfacePorts» «IF ep.replicated» - «ep.name» = new ReplicatedInterfaceItemBroker(this, "«ep.name»", IFITEM_«ep.name»); + «ep.name» = new ReplicatedInterfaceItemBroker(this, "«ep.name»", «ep.ifItemId»); «ELSE» - «ep.name» = new InterfaceItemBroker(this, "«ep.name»", IFITEM_«ep.name»); + «ep.name» = new InterfaceItemBroker(this, "«ep.name»", «ep.ifItemId»); «ENDIF» «ENDFOR» } 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 46497c5fc..ca73c5612 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 @@ -18,19 +18,20 @@ import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass import org.eclipse.etrice.core.fsm.fSM.State import org.eclipse.etrice.generator.generic.GenericStateMachineGenerator import org.eclipse.etrice.generator.java.Main +import org.eclipse.etrice.core.genmodel.fsm.fsmgen.ExpandedModelComponent @Singleton class StateMachineGen extends GenericStateMachineGenerator { - override genExtra(ExpandedActorClass xpac) { + override genExtra(ExpandedModelComponent xpac) { val states = new ArrayList() - var ac = xpac.actorClass + var ac = xpac.modelComponent // it is crucial that we obey the order that is used for state IDs // that means we have to collect base classes first and each base class list with leaf states last while (ac!=null) { states.addAll(0, ac.allBaseStates.leafStatesLast) - ac = ac.actorBase + ac = ac.base } ''' «IF Main::settings.generateMSCInstrumentation || Main::settings.generateWithVerboseOutput» -- cgit v1.2.3