Skip to content

Commit 5960dba

Browse files
rashmihuntRaymond Feng
authored and
Raymond Feng
committedAug 17, 2016
Fixed null arg passing in client._invoke(), fixed server.js logic to derive operationName, outputName and fixed server-options-test to pass srapper oject in the request
1 parent d5f9bd1 commit 5960dba

File tree

4 files changed

+36
-12
lines changed

4 files changed

+36
-12
lines changed
 

‎.DS_Store

8 KB
Binary file not shown.

‎src/client.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,7 @@ class Client extends Base {
186186
}
187187
}
188188

189-
xmlHandler.jsonToXml(soapBodyElement, nsContext, inputBodyDescriptor,
190-
null, args);
189+
xmlHandler.jsonToXml(soapBodyElement, nsContext, inputBodyDescriptor, args);
191190

192191
if (self.security && self.security.postProcess) {
193192
self.security.postProcess(envelope.header, envelope.body);

‎src/server.js

+34-9
Original file line numberDiff line numberDiff line change
@@ -208,15 +208,27 @@ class Server extends Base {
208208
Object.keys(body)[1] : Object.keys(body)[0]);
209209
var pair = binding.topElements[messageElemName];
210210

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);
212224
if (headers)
213-
self.emit('headers', headers, pair.operationName);
225+
self.emit('headers', headers, operationName);
214226

215227
self._executeMethod({
216228
serviceName: serviceName,
217229
portName: portName,
218-
operationName: pair.operationName,
219-
outputName: pair.outputName,
230+
operationName: operationName,
231+
outputName: outputName,
220232
args: body[messageElemName],
221233
headers: headers,
222234
style: 'document',
@@ -268,12 +280,25 @@ class Server extends Base {
268280
if (style === 'rpc') {
269281
body = self.wsdl.objectToRpcXML(outputName, result, '', self.wsdl.definitions.$targetNamespace);
270282
} 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+
275298
}
276-
callback(self._envelope(body, includeTimestamp));
299+
//callback(self._envelope(env, includeTimestamp));
300+
callback(xml);
301+
277302
}
278303

279304
if (!self.wsdl.definitions.services[serviceName].ports[portName]

‎test/server-options-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ describe('SOAP Server with Options', function() {
176176

177177
soap.createClient(test.baseUrl + '/stockquote?wsdl', function(err, client) {
178178
assert.ok(!err);
179-
client.GetLastTradePrice({ tickerSymbol: 'xml response' }, function(err, response, body) {
179+
client.GetLastTradePrice({TradePriceRequest: { tickerSymbol: 'xml response' }}, function(err, response, body) {
180180
assert.ok(!err);
181181
assert.strictEqual(body, responseData);
182182
done();

0 commit comments

Comments
 (0)
Please sign in to comment.