Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeGen.java')
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeGen.java214
1 files changed, 98 insertions, 116 deletions
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeGen.java
index e1e0cae2d..74ca694f3 100644
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeGen.java
+++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeGen.java
@@ -17,6 +17,7 @@ import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -34,13 +35,16 @@ import org.eclipse.etrice.core.genmodel.etricegen.AbstractInstance;
import org.eclipse.etrice.core.genmodel.etricegen.ActorInstance;
import org.eclipse.etrice.core.genmodel.etricegen.ActorInterfaceInstance;
import org.eclipse.etrice.core.genmodel.etricegen.IDiagnostician;
+import org.eclipse.etrice.core.genmodel.etricegen.InstanceBase;
import org.eclipse.etrice.core.genmodel.etricegen.InterfaceItemInstance;
import org.eclipse.etrice.core.genmodel.etricegen.OptionalActorInstance;
-import org.eclipse.etrice.core.genmodel.etricegen.PortInstance;
import org.eclipse.etrice.core.genmodel.etricegen.Root;
import org.eclipse.etrice.core.genmodel.etricegen.ServiceImplInstance;
import org.eclipse.etrice.core.genmodel.etricegen.StructureInstance;
import org.eclipse.etrice.core.genmodel.etricegen.SubSystemInstance;
+import org.eclipse.etrice.core.genmodel.etricegen.Wire;
+import org.eclipse.etrice.core.genmodel.etricegen.WiredStructureClass;
+import org.eclipse.etrice.core.genmodel.etricegen.WiredSubSystemClass;
import org.eclipse.etrice.core.room.ActorClass;
import org.eclipse.etrice.core.room.ActorRef;
import org.eclipse.etrice.core.room.CommunicationType;
@@ -65,6 +69,7 @@ import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.eclipse.xtext.xbase.lib.IteratorExtensions;
import org.eclipse.xtext.xbase.lib.ListExtensions;
+import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
@Singleton
@SuppressWarnings("all")
@@ -97,6 +102,22 @@ public class NodeGen {
private IDiagnostician diagnostician;
public void doGenerate(final Root root) {
+ HashMap<SubSystemClass,WiredSubSystemClass> _hashMap = new HashMap<SubSystemClass, WiredSubSystemClass>();
+ final HashMap<SubSystemClass,WiredSubSystemClass> sscc2wired = _hashMap;
+ EList<WiredStructureClass> _wiredInstances = root.getWiredInstances();
+ final Function1<WiredStructureClass,Boolean> _function = new Function1<WiredStructureClass,Boolean>() {
+ public Boolean apply(final WiredStructureClass w) {
+ return Boolean.valueOf((w instanceof WiredSubSystemClass));
+ }
+ };
+ Iterable<WiredStructureClass> _filter = IterableExtensions.<WiredStructureClass>filter(_wiredInstances, _function);
+ final Procedure1<WiredStructureClass> _function_1 = new Procedure1<WiredStructureClass>() {
+ public void apply(final WiredStructureClass w) {
+ SubSystemClass _subSystemClass = ((WiredSubSystemClass) w).getSubSystemClass();
+ sscc2wired.put(_subSystemClass, ((WiredSubSystemClass) w));
+ }
+ };
+ IterableExtensions.<WiredStructureClass>forEach(_filter, _function_1);
Collection<NodeRef> _nodeRefs = ETMapUtil.getNodeRefs();
for (final NodeRef nr : _nodeRefs) {
List<String> _subSystemInstancePaths = ETMapUtil.getSubSystemInstancePaths(nr);
@@ -105,14 +126,16 @@ public class NodeGen {
StructureInstance _instance = root.getInstance(instpath);
final SubSystemInstance ssi = ((SubSystemInstance) _instance);
SubSystemClass _subSystemClass = ssi.getSubSystemClass();
- String _generationTargetPath = this._roomExtensions.getGenerationTargetPath(_subSystemClass);
+ final WiredSubSystemClass wired = sscc2wired.get(_subSystemClass);
SubSystemClass _subSystemClass_1 = ssi.getSubSystemClass();
- String _path = this._roomExtensions.getPath(_subSystemClass_1);
- final String path = (_generationTargetPath + _path);
+ String _generationTargetPath = this._roomExtensions.getGenerationTargetPath(_subSystemClass_1);
SubSystemClass _subSystemClass_2 = ssi.getSubSystemClass();
- String _generationInfoPath = this._roomExtensions.getGenerationInfoPath(_subSystemClass_2);
+ String _path = this._roomExtensions.getPath(_subSystemClass_2);
+ final String path = (_generationTargetPath + _path);
SubSystemClass _subSystemClass_3 = ssi.getSubSystemClass();
- String _path_1 = this._roomExtensions.getPath(_subSystemClass_3);
+ String _generationInfoPath = this._roomExtensions.getGenerationInfoPath(_subSystemClass_3);
+ SubSystemClass _subSystemClass_4 = ssi.getSubSystemClass();
+ String _path_1 = this._roomExtensions.getPath(_subSystemClass_4);
final String infopath = (_generationInfoPath + _path_1);
final String file = this._javaExtensions.getJavaFileName(nr, ssi);
this.checkDataPorts(ssi);
@@ -123,14 +146,14 @@ public class NodeGen {
for (final PhysicalThread thread : _threads) {
{
EList<ActorInstance> _allContainedInstances = ssi.getAllContainedInstances();
- final Function1<ActorInstance,Boolean> _function = new Function1<ActorInstance,Boolean>() {
+ final Function1<ActorInstance,Boolean> _function_2 = new Function1<ActorInstance,Boolean>() {
public Boolean apply(final ActorInstance ai) {
PhysicalThread _physicalThread = ETMapUtil.getPhysicalThread(ai);
boolean _equals = Objects.equal(_physicalThread, thread);
return Boolean.valueOf(_equals);
}
};
- final Iterable<ActorInstance> instancesOnThread = IterableExtensions.<ActorInstance>filter(_allContainedInstances, _function);
+ final Iterable<ActorInstance> instancesOnThread = IterableExtensions.<ActorInstance>filter(_allContainedInstances, _function_2);
boolean _isEmpty = IterableExtensions.isEmpty(instancesOnThread);
boolean _not = (!_isEmpty);
if (_not) {
@@ -138,7 +161,7 @@ public class NodeGen {
}
}
}
- CharSequence _generate = this.generate(root, ssi, usedThreads);
+ CharSequence _generate = this.generate(root, ssi, wired, usedThreads);
this.fileIO.generateFile("generating Node implementation", path, infopath, file, _generate);
boolean _hasVariableService = this.dataConfigExt.hasVariableService(ssi);
if (_hasVariableService) {
@@ -185,7 +208,7 @@ public class NodeGen {
return result;
}
- public CharSequence generate(final Root root, final SubSystemInstance comp, final HashSet<PhysicalThread> usedThreads) {
+ public CharSequence generate(final Root root, final SubSystemInstance comp, final WiredSubSystemClass wired, final HashSet<PhysicalThread> usedThreads) {
CharSequence _xblockexpression = null;
{
final SubSystemClass cc = comp.getSubSystemClass();
@@ -231,6 +254,8 @@ public class NodeGen {
_builder.newLine();
_builder.append("import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;");
_builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.DataPortBase;");
+ _builder.newLine();
_builder.append("import org.eclipse.etrice.runtime.java.modelbase.OptionalActorInterfaceBase;");
_builder.newLine();
_builder.append("import org.eclipse.etrice.runtime.java.modelbase.IOptionalActorFactory;");
@@ -400,92 +425,6 @@ public class NodeGen {
_builder.newLineIfNotEmpty();
}
}
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("// port to peer port mappings");
- _builder.newLine();
- {
- BasicEList<AbstractInstance> _allSubInstances = this._roomExtensions.getAllSubInstances(comp);
- for(final AbstractInstance ai_1 : _allSubInstances) {
- _builder.append("\t\t");
- EList<? extends InterfaceItemInstance> _xifexpression = null;
- if ((ai_1 instanceof ActorInstance)) {
- EList<InterfaceItemInstance> _orderedIfItemInstances = ((ActorInstance) ai_1).getOrderedIfItemInstances();
- _xifexpression = _orderedIfItemInstances;
- } else {
- EList<PortInstance> _ports = ai_1.getPorts();
- _xifexpression = _ports;
- }
- final EList<? extends InterfaceItemInstance> ports = _xifexpression;
- _builder.newLineIfNotEmpty();
- {
- for(final InterfaceItemInstance pi : ports) {
- {
- EList<InterfaceItemInstance> _peers = pi.getPeers();
- int _size = _peers.size();
- boolean _greaterThan = (_size > 0);
- if (_greaterThan) {
- _builder.append("\t\t");
- _builder.append("addPathToPeers(\"");
- String _path_1 = pi.getPath();
- _builder.append(_path_1, " ");
- _builder.append("\", ");
- {
- EList<InterfaceItemInstance> _peers_1 = pi.getPeers();
- boolean _hasElements = false;
- for(final InterfaceItemInstance peer : _peers_1) {
- if (!_hasElements) {
- _hasElements = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- _builder.append("\"");
- String _path_2 = peer.getPath();
- _builder.append(_path_2, " ");
- _builder.append("\"");
- }
- }
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.append("\t\t");
- EList<ServiceImplInstance> _xifexpression_1 = null;
- if ((ai_1 instanceof ActorInterfaceInstance)) {
- EList<ServiceImplInstance> _providedServices = ((ActorInterfaceInstance) ai_1).getProvidedServices();
- _xifexpression_1 = _providedServices;
- } else {
- _xifexpression_1 = null;
- }
- final EList<ServiceImplInstance> services = _xifexpression_1;
- _builder.newLineIfNotEmpty();
- {
- boolean _notEquals = (!Objects.equal(services, null));
- if (_notEquals) {
- {
- for(final ServiceImplInstance svc : services) {
- _builder.append("\t\t");
- _builder.append("addPathToPeers(\"");
- String _path_3 = ai_1.getPath();
- _builder.append(_path_3, " ");
- _builder.append("/");
- ProtocolClass _protocol = svc.getProtocol();
- String _fullyQualifiedName = this._roomExtensions.getFullyQualifiedName(_protocol);
- _builder.append(_fullyQualifiedName, " ");
- _builder.append("\", \"");
- String _path_4 = svc.getPath();
- _builder.append(_path_4, " ");
- _builder.append("\");");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- }
- }
_builder.newLine();
_builder.append("\t\t");
_builder.append("// sub actors");
@@ -495,8 +434,8 @@ public class NodeGen {
for(final ActorRef sub : _actorRefs) {
{
int _multiplicity = sub.getMultiplicity();
- boolean _greaterThan_1 = (_multiplicity > 1);
- if (_greaterThan_1) {
+ boolean _greaterThan = (_multiplicity > 1);
+ if (_greaterThan) {
_builder.append("\t\t");
_builder.append("for (int i=0; i<");
int _multiplicity_1 = sub.getMultiplicity();
@@ -560,16 +499,16 @@ public class NodeGen {
_builder.append("\t\t");
_builder.newLine();
_builder.append("\t\t");
- _builder.append("// wire optional actor interfaces with services");
+ _builder.append("// create service brokers in optional actor interfaces");
_builder.newLine();
{
- BasicEList<AbstractInstance> _allSubInstances_1 = this._roomExtensions.getAllSubInstances(comp);
+ BasicEList<AbstractInstance> _allSubInstances = this._roomExtensions.getAllSubInstances(comp);
final Function1<AbstractInstance,Boolean> _function_1 = new Function1<AbstractInstance,Boolean>() {
public Boolean apply(final AbstractInstance inst) {
return Boolean.valueOf((inst instanceof ActorInterfaceInstance));
}
};
- Iterable<AbstractInstance> _filter = IterableExtensions.<AbstractInstance>filter(_allSubInstances_1, _function_1);
+ Iterable<AbstractInstance> _filter = IterableExtensions.<AbstractInstance>filter(_allSubInstances, _function_1);
final Function1<AbstractInstance,ActorInterfaceInstance> _function_2 = new Function1<AbstractInstance,ActorInterfaceInstance>() {
public ActorInterfaceInstance apply(final AbstractInstance inst) {
return ((ActorInterfaceInstance) inst);
@@ -583,21 +522,35 @@ public class NodeGen {
_builder.append("\t\t");
_builder.append("\t");
_builder.append("OptionalActorInterfaceBase oai = (OptionalActorInterfaceBase) getObject(\"");
- String _path_5 = aii.getPath();
- _builder.append(_path_5, " ");
+ String _path_1 = aii.getPath();
+ _builder.append(_path_1, " ");
_builder.append("\");");
_builder.newLineIfNotEmpty();
{
- EList<ServiceImplInstance> _providedServices_1 = aii.getProvidedServices();
- for(final ServiceImplInstance svc_1 : _providedServices_1) {
+ EList<ServiceImplInstance> _providedServices = aii.getProvidedServices();
+ for(final ServiceImplInstance svc : _providedServices) {
_builder.append("\t\t");
_builder.append("\t");
_builder.append("new InterfaceItemBroker(oai, \"");
- ProtocolClass _protocol_1 = svc_1.getProtocol();
- String _fullyQualifiedName_1 = this._roomExtensions.getFullyQualifiedName(_protocol_1);
- _builder.append(_fullyQualifiedName_1, " ");
+ ProtocolClass _protocol = svc.getProtocol();
+ String _fullyQualifiedName = this._roomExtensions.getFullyQualifiedName(_protocol);
+ _builder.append(_fullyQualifiedName, " ");
_builder.append("\", 0);");
_builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("InterfaceItemBase.connect(this, \"");
+ String _path_2 = svc.getPath();
+ _builder.append(_path_2, " ");
+ _builder.append("\", \"");
+ String _path_3 = aii.getPath();
+ String _plus = (_path_3 + Character.valueOf(InstanceBase.pathDelim));
+ ProtocolClass _protocol_1 = svc.getProtocol();
+ String _fullyQualifiedName_1 = this._roomExtensions.getFullyQualifiedName(_protocol_1);
+ String _plus_1 = (_plus + _fullyQualifiedName_1);
+ _builder.append(_plus_1, " ");
+ _builder.append("\");");
+ _builder.newLineIfNotEmpty();
}
}
_builder.append("\t\t");
@@ -608,33 +561,62 @@ public class NodeGen {
_builder.append("\t\t");
_builder.newLine();
_builder.append("\t\t");
+ _builder.append("// wiring");
+ _builder.newLine();
+ {
+ EList<Wire> _wires = wired.getWires();
+ for(final Wire wire : _wires) {
+ _builder.append("\t\t");
+ String _xifexpression = null;
+ boolean _isDataDriven = wire.isDataDriven();
+ if (_isDataDriven) {
+ _xifexpression = "DataPortBase";
+ } else {
+ _xifexpression = "InterfaceItemBase";
+ }
+ _builder.append(_xifexpression, " ");
+ _builder.append(".connect(this, \"");
+ EList<String> _path1 = wire.getPath1();
+ String _join = IterableExtensions.join(_path1, "/");
+ _builder.append(_join, " ");
+ _builder.append("\", \"");
+ EList<String> _path2 = wire.getPath2();
+ String _join_1 = IterableExtensions.join(_path2, "/");
+ _builder.append(_join_1, " ");
+ _builder.append("\");");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t");
_builder.append("// apply instance attribute configurations");
_builder.newLine();
{
EList<ActorInstance> _allContainedInstances_1 = comp.getAllContainedInstances();
- for(final ActorInstance ai_2 : _allContainedInstances_1) {
+ for(final ActorInstance ai_1 : _allContainedInstances_1) {
_builder.append("\t\t");
- final CharSequence cfg = this.configGenAddon.genActorInstanceConfig(ai_2, "inst");
+ final CharSequence cfg = this.configGenAddon.genActorInstanceConfig(ai_1, "inst");
_builder.newLineIfNotEmpty();
{
int _length = cfg.length();
- boolean _greaterThan_2 = (_length > 0);
- if (_greaterThan_2) {
+ boolean _greaterThan_1 = (_length > 0);
+ if (_greaterThan_1) {
_builder.append("\t\t");
_builder.append("{");
_builder.newLine();
_builder.append("\t\t");
_builder.append("\t");
- ActorClass _actorClass = ai_2.getActorClass();
+ ActorClass _actorClass = ai_1.getActorClass();
String _name_11 = _actorClass.getName();
_builder.append(_name_11, " ");
_builder.append(" inst = (");
- ActorClass _actorClass_1 = ai_2.getActorClass();
+ ActorClass _actorClass_1 = ai_1.getActorClass();
String _name_12 = _actorClass_1.getName();
_builder.append(_name_12, " ");
_builder.append(") getObject(\"");
- String _path_6 = ai_2.getPath();
- _builder.append(_path_6, " ");
+ String _path_4 = ai_1.getPath();
+ _builder.append(_path_4, " ");
_builder.append("\");");
_builder.newLineIfNotEmpty();
_builder.append("\t\t");

Back to the top