@@ -22,6 +22,9 @@ import rossystem.RosSystem
2222import ros.ParameterValue
2323import ros.impl.ParameterStructMemberImpl
2424import ros.Node
25+ import ros.impl.ArtifactImpl
26+ import org.eclipse.emf.ecore.EObject
27+ import ros.impl.NodeImpl
2528
2629class ComponentInterfaceCompiler {
2730 @Inject extension GeneratorHelpers
@@ -51,10 +54,8 @@ class ComponentInterfaceCompiler {
5154 boolean ArtifactSet
5255 boolean PackageSet
5356
54- String artifact_impl
55- Object artifact_name
56- String node_impl
57- String node_name
57+ ArtifactImpl artifact_impl
58+ NodeImpl node_impl
5859
5960 String param_value
6061 String value_return
@@ -102,55 +103,55 @@ ComponentInterface { name «system.name»
102103RosPublishers{
103104 «FOR pub:pubs»
104105 «val count_pub=count_pub--»
105- RosPublisher "«pub.name»" { RefPublisher "«pub.publisher.package_pub».«pub.publisher.artifact_pub ».«pub.publisher.node_pub ».«pub.publisher.name»"}«IF count_pub > 1 »,«ENDIF»
106+ RosPublisher "«pub.name»" { RefPublisher "«pub.publisher.package_pub».«pub.publisher.getArtifact ».«pub.publisher.getNode ».«pub.publisher.name»"}«IF count_pub > 1 »,«ENDIF»
106107 «ENDFOR»
107108 }
108109«ENDIF»
109110«IF !subs.empty»
110111RosSubscribers{
111112 «FOR sub:subs»
112113 «val count_sub=count_sub--»
113- RosSubscriber "«sub.name»" { RefSubscriber "«sub.subscriber.package_sub».«sub.subscriber.artifact_sub ».«sub.subscriber.node_sub ».«sub.subscriber.name»"}«IF count_sub > 1 »,«ENDIF»
114+ RosSubscriber "«sub.name»" { RefSubscriber "«sub.subscriber.package_sub».«sub.subscriber.getArtifact ».«sub.subscriber.getNode ».«sub.subscriber.name»"}«IF count_sub > 1 »,«ENDIF»
114115 «ENDFOR»
115116 }
116117«ENDIF»
117118«IF !svrs.empty»
118119RosSrvServers{
119120 «FOR svrs:svrs»
120121 «val count_srvs=count_srvs--»
121- RosServiceServer "«svrs.name»" { RefServer "«svrs.srvserver.package_srvserv».«svrs.srvserver.artifact_srvserv ».«svrs.srvserver.node_srvserv ».«svrs.srvserver.name»"}«IF count_srvs > 1 »,«ENDIF»
122+ RosServiceServer "«svrs.name»" { RefServer "«svrs.srvserver.package_srvserv».«svrs.srvserver.getArtifact ».«svrs.srvserver.getNode ».«svrs.srvserver.name»"}«IF count_srvs > 1 »,«ENDIF»
122123 «ENDFOR»
123124 }
124125«ENDIF»
125126«IF !svrc.empty»
126127RosSrvClients{
127128 «FOR svrc:svrc»
128129 «val count_srvc=count_srvc--»
129- RosServiceClient "«svrc.name»" { RefClient "«svrc.srvclient.package_srvcli».«svrc.srvclient.artifact_srvcli ».«svrc.srvclient.node_srvcli ».«svrc.srvclient.name»"}«IF count_srvc > 1 »,«ENDIF»
130+ RosServiceClient "«svrc.name»" { RefClient "«svrc.srvclient.package_srvcli».«svrc.srvclient.getArtifact ».«svrc.srvclient.getNode ».«svrc.srvclient.name»"}«IF count_srvc > 1 »,«ENDIF»
130131 «ENDFOR»
131132 }
132133«ENDIF»
133134«IF !acts.empty»
134135RosActionServers{
135136 «FOR acts:acts»
136137 «val count_acts=count_acts--»
137- RosActionServer "«acts.name»" { RefServer "«acts.actserver.package_actserver».«acts.actserver.artifact_actserver ».«acts.actserver.node_actserver ».«acts.actserver.name»"}«IF count_acts > 1 »,«ENDIF»
138+ RosActionServer "«acts.name»" { RefServer "«acts.actserver.package_actserver».«acts.actserver.getArtifact ».«acts.actserver.getNode ».«acts.actserver.name»"}«IF count_acts > 1 »,«ENDIF»
138139 «ENDFOR»
139140 }
140141«ENDIF»
141142«IF !actc.empty»
142143RosActionClients{
143144 «FOR actc:actc»
144145 «val count_actc=count_actc--»
145- RosActionClient "«actc.name»" { RefClient "«actc.actclient.package_actclient».«actc.actclient.artifact_actclient ».«actc.actclient.node_actclient ».«actc.actclient.name»"}«IF count_actc > 1 »,«ENDIF»
146+ RosActionClient "«actc.name»" { RefClient "«actc.actclient.package_actclient».«actc.actclient.getArtifact ».«actc.actclient.getNode ».«actc.actclient.name»"}«IF count_actc > 1 »,«ENDIF»
146147 «ENDFOR»
147148 }
148149«ENDIF»
149150«IF count_param>0»
150151RosParameters{
151152 «FOR param:rosparams»
152153 «val count_param=count_param--»
153- RosParameter "«compile_param_name(param.parameter,"")»" { RefParameter "«param.parameter.package_rosparam».«param.parameter.artifact_rosparam ».«param.parameter.node_rosparam ».«param.parameter.name»"«IF param.value!==null » value «compile_rosparam_value(param.value)»«ENDIF» }«IF count_param > 1»,«ENDIF»
154+ RosParameter "«compile_param_name(param.parameter,"")»" { RefParameter "«param.parameter.package_rosparam».«param.parameter.getArtifact ».«param.parameter.getNode ».«param.parameter.name»"«IF param.value!==null » value «compile_rosparam_value(param.value)»«ENDIF» }«IF count_param > 1»,«ENDIF»
154155 «ENDFOR»«FOR param:system.parameter»
155156 «val count_param=count_param--»
156157 RosParameter "«param.name»" { RefParameter "«param.name»"«IF param.value!==null » value «compile_rosparam_value(param.value)»«ENDIF» }«IF count_param > 1»,«ENDIF»
@@ -167,77 +168,25 @@ RosParameters{
167168 }
168169
169170 def compile_art (ComponentInterface component )
170- '''«IF ! (component.fromRosNode===null)»«component.fromRosNode.getArtifact_rosnode»«ELSEIF !ArtifactSet && !component.rospublisher.empty»«FOR Rospublisher:component.rospublisher»«IF !ArtifactSet»«Rospublisher.publisher.getArtifact_pub()»«ENDIF»«ENDFOR»«ELSEIF !ArtifactSet && !component.rossubscriber.empty»«FOR Rossubscriber:component.rossubscriber»«IF !ArtifactSet»«Rossubscriber.subscriber.getArtifact_sub()»«ENDIF»«ENDFOR»«ELSEIF !ArtifactSet && !component.rosserviceserver.empty»«FOR Rosserviceserver:component.rosserviceserver»«IF !ArtifactSet»«Rosserviceserver.srvserver.getArtifact_srvserv()»«ENDIF»«ENDFOR»«ELSEIF !ArtifactSet && !component.rosserviceclient.empty»«FOR Rosserviceclient:component.rosserviceclient»«IF !ArtifactSet»«Rosserviceclient.srvclient.getArtifact_srvcli()»«ENDIF»«ENDFOR»«ELSEIF !ArtifactSet && !component.rosparameter.empty»«FOR RosParameter:component.rosparameter»«IF !ArtifactSet»«RosParameter.parameter.getArtifact_rosparam()»«ENDIF»«ENDFOR»«ELSEIF !ArtifactSet && !component.rosactionserver.empty»«FOR Rosactionserver:component.rosactionserver»«IF !ArtifactSet»«Rosactionserver.actserver.getArtifact_actserver()»«ENDIF»«ENDFOR»«ELSEIF !ArtifactSet && !component.rosactionclient.empty»«FOR Rosactionclient:component.rosactionclient»«IF !ArtifactSet»«Rosactionclient.actclient.getArtifact_actclient()»«ENDIF»«ENDFOR»«ENDIF»'''
171- def getArtifact_pub (Publisher publisher ){
172- artifact_impl = publisher. eContainer. eContainer. toString;
173- return artifact_impl. getArtifact;
174- }
175- def getArtifact_sub (Subscriber subscriber ){
176- artifact_impl = subscriber. eContainer. eContainer. toString;
177- return artifact_impl. getArtifact;
178- }
179- def getArtifact_srvserv (ServiceServer serviceserver ){
180- artifact_impl = serviceserver. eContainer. eContainer. toString;
181- return artifact_impl. getArtifact;
182- }
183- def getArtifact_srvcli (ServiceClient serviceclient ){
184- artifact_impl = serviceclient. eContainer. eContainer. toString;
185- return artifact_impl. getArtifact;
186- }
187- def getArtifact_actserver (ActionServer actionserver ){
188- artifact_impl = actionserver. eContainer. eContainer. toString;
189- return artifact_impl. getArtifact;
190- }
191- def getArtifact_actclient (ActionClient actionclient ){
192- artifact_impl = actionclient. eContainer. eContainer. toString;
193- return artifact_impl. getArtifact;
194- }
195- def getArtifact_rosparam (Parameter param ){
196- artifact_impl = param. eContainer. eContainer. toString;
197- return artifact_impl. getArtifact;
198- }
199- def getArtifact_rosnode (Node node ){
200- artifact_impl = node. eContainer. toString;
201- return artifact_impl. getArtifact;
202- }
203- def getArtifact (String artifact_impl ){
204- artifact_name = artifact_impl. substring(artifact_impl. indexOf(" name" )+ 6 ,artifact_impl. length- 1 )
171+ '''«IF ! (component.fromRosNode===null)»«component.fromRosNode.getArtifactFromNode»«ELSEIF !ArtifactSet && !component.rospublisher.empty»«FOR Rospublisher:component.rospublisher»«IF !ArtifactSet»«Rospublisher.publisher.getArtifact()»«ENDIF»«ENDFOR»«ELSEIF !ArtifactSet && !component.rossubscriber.empty»«FOR Rossubscriber:component.rossubscriber»«IF !ArtifactSet»«Rossubscriber.subscriber.getArtifact()»«ENDIF»«ENDFOR»«ELSEIF !ArtifactSet && !component.rosserviceserver.empty»«FOR Rosserviceserver:component.rosserviceserver»«IF !ArtifactSet»«Rosserviceserver.srvserver.getArtifact()»«ENDIF»«ENDFOR»«ELSEIF !ArtifactSet && !component.rosserviceclient.empty»«FOR Rosserviceclient:component.rosserviceclient»«IF !ArtifactSet»«Rosserviceclient.srvclient.getArtifact()»«ENDIF»«ENDFOR»«ELSEIF !ArtifactSet && !component.rosparameter.empty»«FOR RosParameter:component.rosparameter»«IF !ArtifactSet»«RosParameter.parameter.getArtifact()»«ENDIF»«ENDFOR»«ELSEIF !ArtifactSet && !component.rosactionserver.empty»«FOR Rosactionserver:component.rosactionserver»«IF !ArtifactSet»«Rosactionserver.actserver.getArtifact()»«ENDIF»«ENDFOR»«ELSEIF !ArtifactSet && !component.rosactionclient.empty»«FOR Rosactionclient:component.rosactionclient»«IF !ArtifactSet»«Rosactionclient.actclient.getArtifact()»«ENDIF»«ENDFOR»«ENDIF»'''
172+
173+ def getArtifact (EObject interfaz ){
174+ artifact_impl = interfaz. eContainer. eContainer as ArtifactImpl ;
205175 ArtifactSet = true ;
206- return artifact_name;
176+ return artifact_impl . name
207177 }
208178
209- def getNode_pub (Publisher publisher ){
210- node_impl = publisher. eContainer. toString;
211- return node_impl. getNode;
212- }
213- def getNode_sub (Subscriber subscriber ){
214- node_impl = subscriber. eContainer. toString;
215- return node_impl. getNode;
216- }
217- def getNode_srvserv (ServiceServer serviceserver ){
218- node_impl = serviceserver. eContainer. toString;
219- return node_impl. getNode;
220- }
221- def getNode_srvcli (ServiceClient serviceclient ){
222- node_impl = serviceclient. eContainer. toString;
223- return node_impl. getNode;
224- }
225- def getNode_actserver (ActionServer actionserver ){
226- node_impl = actionserver. eContainer. toString;
227- return node_impl. getNode;
228- }
229- def getNode_actclient (ActionClient actionclient ){
230- node_impl = actionclient. eContainer. toString;
231- return node_impl. getNode;
232- }
233- def getNode_rosparam (Parameter param ){
234- node_impl = param. eContainer. toString;
235- return node_impl. getNode;
179+ def getArtifactFromNode (Node node ){
180+ artifact_impl = node. eContainer as ArtifactImpl ;
181+ ArtifactSet = true ;
182+ return artifact_impl. name
236183 }
237- def getNode (String node_impl ){
238- node_name = node_impl. substring(node_impl. indexOf(" name" )+ 6 ,node_impl. length- 1 )
239- return node_name;
184+
185+ def getNode (EObject interfaz ){
186+ node_impl = interfaz. eContainer as NodeImpl ;
187+ return node_impl. name;
240188 }
189+
241190
242191 def prefix (String NS ){
243192 if (NS == = " " ){
0 commit comments