@@ -208,15 +208,27 @@ class Server extends Base {
208
208
Object . keys ( body ) [ 1 ] : Object . keys ( body ) [ 0 ] ) ;
209
209
var pair = binding . topElements [ messageElemName ] ;
210
210
211
- self . emit ( 'request' , obj , pair . operationName ) ;
211
+ var operationName , outputName ;
212
+
213
+ var operations = binding . operations ;
214
+ for ( var name in operations ) {
215
+ if ( operations [ name ] . input . message . parts . body . element . $name === messageElemName ) {
216
+ operationName = operations [ name ] . $name ;
217
+ outputName = operations [ name ] . output . message . parts . body . element . $name ;
218
+ break ;
219
+ }
220
+ }
221
+
222
+ console . log ( operationName ) ;
223
+ self . emit ( 'request' , obj , operationName ) ;
212
224
if ( headers )
213
- self . emit ( 'headers' , headers , pair . operationName ) ;
225
+ self . emit ( 'headers' , headers , operationName ) ;
214
226
215
227
self . _executeMethod ( {
216
228
serviceName : serviceName ,
217
229
portName : portName ,
218
- operationName : pair . operationName ,
219
- outputName : pair . outputName ,
230
+ operationName : operationName ,
231
+ outputName : outputName ,
220
232
args : body [ messageElemName ] ,
221
233
headers : headers ,
222
234
style : 'document' ,
@@ -268,12 +280,25 @@ class Server extends Base {
268
280
if ( style === 'rpc' ) {
269
281
body = self . wsdl . objectToRpcXML ( outputName , result , '' , self . wsdl . definitions . $targetNamespace ) ;
270
282
} else {
271
- var element = self . wsdl . definitions . services [ serviceName ]
272
- . ports [ portName ] . binding . operations [ operationName ] . output ;
273
- body = self . wsdl . objectToDocumentXML ( outputName , result ,
274
- element . targetNSAlias , element . targetNamespace ) ;
283
+
284
+ var operation = self . wsdl . definitions . services [ serviceName ]
285
+ . ports [ portName ] . binding . operations [ operationName ] ;
286
+ var element = operation . output ;
287
+ // self.wsdl.objectToDocumentXML(outputName, result, element.targetNSAlias, element.targetNamespace);
288
+
289
+ var operationDescriptor = operation . describe ( self . wsdl . definitions ) ;
290
+ var outputBodyDescriptor = operationDescriptor . output . body ;
291
+
292
+ var nsContext = self . createNamespaceContext ( element . targetNSAlias , element . targetNamespace ) ;
293
+ self . xmlHandler . jsonToXml ( env . body , nsContext , outputBodyDescriptor , result ) ;
294
+
295
+ var message = env . body . toString ( { pretty : true } ) ;
296
+ var xml = env . doc . end ( { pretty : true } ) ;
297
+
275
298
}
276
- callback ( self . _envelope ( body , includeTimestamp ) ) ;
299
+ //callback(self._envelope(env, includeTimestamp));
300
+ callback ( xml ) ;
301
+
277
302
}
278
303
279
304
if ( ! self . wsdl . definitions . services [ serviceName ] . ports [ portName ]
0 commit comments