Class | SOAP::RPC::Proxy::Operation |
In: |
lib/soap/rpc/proxy.rb
|
Parent: | Object |
attributeformdefault | [R] | |
elementformdefault | [R] | |
request_style | [R] | |
request_use | [R] | |
response_style | [R] | |
response_use | [R] | |
soapaction | [R] |
# File lib/soap/rpc/proxy.rb, line 282 282: def initialize(soapaction, param_def, opt) 283: @soapaction = soapaction 284: @request_style = opt[:request_style] 285: @response_style = opt[:response_style] 286: @request_use = opt[:request_use] 287: @response_use = opt[:response_use] 288: # set nil(unqualified) by default 289: @elementformdefault = opt[:elementformdefault] 290: @attributeformdefault = opt[:attributeformdefault] 291: check_style(@request_style) 292: check_style(@response_style) 293: check_use(@request_use) 294: check_use(@response_use) 295: if @request_style == :rpc 296: @rpc_request_qname = opt[:request_qname] 297: if @rpc_request_qname.nil? 298: raise MethodDefinitionError.new("rpc_request_qname must be given") 299: end 300: @rpc_method_factory = 301: RPC::SOAPMethodRequest.new(@rpc_request_qname, param_def, @soapaction) 302: else 303: @doc_request_qnames = [] 304: @doc_request_qualified = [] 305: @doc_response_qnames = [] 306: @doc_response_qualified = [] 307: param_def.each do |inout, paramname, typeinfo, eleinfo| 308: klass_not_used, nsdef, namedef = typeinfo 309: qualified = eleinfo 310: if namedef.nil? 311: raise MethodDefinitionError.new("qname must be given") 312: end 313: case inout 314: when SOAPMethod::IN 315: @doc_request_qnames << XSD::QName.new(nsdef, namedef) 316: @doc_request_qualified << qualified 317: when SOAPMethod::OUT 318: @doc_response_qnames << XSD::QName.new(nsdef, namedef) 319: @doc_response_qualified << qualified 320: else 321: raise MethodDefinitionError.new( 322: "illegal inout definition for document style: #{inout}") 323: end 324: end 325: end 326: end
# File lib/soap/rpc/proxy.rb, line 352 352: def raise_fault(e, mapping_registry, literal_mapping_registry) 353: if @response_style == :rpc 354: Mapping.fault2exception(e, mapping_registry) 355: else 356: Mapping.fault2exception(e, literal_mapping_registry) 357: end 358: end
# File lib/soap/rpc/proxy.rb, line 336 336: def request_body(values, mapping_registry, literal_mapping_registry, opt) 337: if @request_style == :rpc 338: request_rpc(values, mapping_registry, literal_mapping_registry, opt) 339: else 340: request_doc(values, mapping_registry, literal_mapping_registry, opt) 341: end 342: end
# File lib/soap/rpc/proxy.rb, line 328 328: def request_default_encodingstyle 329: (@request_use == :encoded) ? EncodingNamespace : LiteralNamespace 330: end
# File lib/soap/rpc/proxy.rb, line 332 332: def response_default_encodingstyle 333: (@response_use == :encoded) ? EncodingNamespace : LiteralNamespace 334: end
# File lib/soap/rpc/proxy.rb, line 344 344: def response_obj(body, mapping_registry, literal_mapping_registry, opt) 345: if @response_style == :rpc 346: response_rpc(body, mapping_registry, literal_mapping_registry, opt) 347: else 348: response_doc(body, mapping_registry, literal_mapping_registry, opt) 349: end 350: end
# File lib/soap/rpc/proxy.rb, line 362 362: def check_style(style) 363: unless [:rpc, :document].include?(style) 364: raise MethodDefinitionError.new("unknown style: #{style}") 365: end 366: end
# File lib/soap/rpc/proxy.rb, line 368 368: def check_use(use) 369: unless [:encoded, :literal].include?(use) 370: raise MethodDefinitionError.new("unknown use: #{use}") 371: end 372: end
# File lib/soap/rpc/proxy.rb, line 483 483: def create_request_obj(names, params) 484: o = Object.new 485: idx = 0 486: while idx < params.length 487: o.instance_variable_set('@' + names[idx], params[idx]) 488: idx += 1 489: end 490: o 491: end
# File lib/soap/rpc/proxy.rb, line 382 382: def request_doc(values, mapping_registry, literal_mapping_registry, opt) 383: if @request_use == :encoded 384: request_doc_enc(values, mapping_registry, opt) 385: else 386: request_doc_lit(values, literal_mapping_registry, opt) 387: end 388: end
# File lib/soap/rpc/proxy.rb, line 412 412: def request_doc_enc(values, mapping_registry, opt) 413: (0...values.size).collect { |idx| 414: ele = Mapping.obj2soap(values[idx], mapping_registry, nil, opt) 415: ele.elename = @doc_request_qnames[idx] 416: ele 417: } 418: end
# File lib/soap/rpc/proxy.rb, line 420 420: def request_doc_lit(values, mapping_registry, opt) 421: (0...values.size).collect { |idx| 422: ele = Mapping.obj2soap(values[idx], mapping_registry, 423: @doc_request_qnames[idx], opt) 424: ele.encodingstyle = LiteralNamespace 425: if ele.respond_to?(:qualified) 426: ele.qualified = @doc_request_qualified[idx] 427: end 428: ele 429: } 430: end
# File lib/soap/rpc/proxy.rb, line 374 374: def request_rpc(values, mapping_registry, literal_mapping_registry, opt) 375: if @request_use == :encoded 376: request_rpc_enc(values, mapping_registry, opt) 377: else 378: request_rpc_lit(values, literal_mapping_registry, opt) 379: end 380: end
# File lib/soap/rpc/proxy.rb, line 390 390: def request_rpc_enc(values, mapping_registry, opt) 391: method = @rpc_method_factory.dup 392: names = method.input_params 393: obj = create_request_obj(names, values) 394: soap = Mapping.obj2soap(obj, mapping_registry, @rpc_request_qname, opt) 395: method.set_param(soap) 396: method 397: end
# File lib/soap/rpc/proxy.rb, line 399 399: def request_rpc_lit(values, mapping_registry, opt) 400: method = @rpc_method_factory.dup 401: params = {} 402: idx = 0 403: method.input_params.each do |name| 404: params[name] = Mapping.obj2soap(values[idx], mapping_registry, 405: XSD::QName.new(nil, name), opt) 406: idx += 1 407: end 408: method.set_param(params) 409: method 410: end
# File lib/soap/rpc/proxy.rb, line 440 440: def response_doc(body, mapping_registry, literal_mapping_registry, opt) 441: if @response_use == :encoded 442: return *response_doc_enc(body, mapping_registry, opt) 443: else 444: return *response_doc_lit(body, literal_mapping_registry, opt) 445: end 446: end
# File lib/soap/rpc/proxy.rb, line 471 471: def response_doc_enc(body, mapping_registry, opt) 472: body.collect { |key, value| 473: Mapping.soap2obj(value, mapping_registry, nil, opt) 474: } 475: end
# File lib/soap/rpc/proxy.rb, line 477 477: def response_doc_lit(body, mapping_registry, opt) 478: body.collect { |key, value| 479: Mapping.soap2obj(value, mapping_registry) 480: } 481: end
# File lib/soap/rpc/proxy.rb, line 432 432: def response_rpc(body, mapping_registry, literal_mapping_registry, opt) 433: if @response_use == :encoded 434: response_rpc_enc(body, mapping_registry, opt) 435: else 436: response_rpc_lit(body, literal_mapping_registry, opt) 437: end 438: end
# File lib/soap/rpc/proxy.rb, line 448 448: def response_rpc_enc(body, mapping_registry, opt) 449: ret = nil 450: if body.response 451: ret = Mapping.soap2obj(body.response, mapping_registry, 452: @rpc_method_factory.retval_class_name, opt) 453: end 454: if body.outparams 455: outparams = body.outparams.collect { |outparam| 456: Mapping.soap2obj(outparam, mapping_registry, nil, opt) 457: } 458: [ret].concat(outparams) 459: else 460: ret 461: end 462: end