Changeset 1597
- Timestamp:
- 07/25/05 00:01:57 (3 years ago)
- Files:
-
- trunk/lib/soap/mapping/factory.rb (modified) (2 diffs)
- trunk/lib/soap/mapping/mapping.rb (modified) (2 diffs)
- trunk/lib/soap/mapping/wsdlencodedregistry.rb (modified) (1 diff)
- trunk/lib/soap/mapping/wsdlliteralregistry.rb (modified) (1 diff)
- trunk/lib/soap/rpc/proxy.rb (modified) (13 diffs)
- trunk/lib/soap/rpc/router.rb (modified) (12 diffs)
- trunk/lib/soap/rpc/soaplet.rb (modified) (1 diff)
- trunk/test/interopR2/client.rb (modified) (1 diff)
- trunk/test/interopR2/clientSOAP4R.rb (modified) (2 diffs)
- trunk/test/soap/ssl/test_ssl.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/mapping/factory.rb
r1547 r1597 88 88 end 89 89 begin 90 unless XSD::Charset.is_ces(obj, $KCODE) 91 return nil 92 end 93 encoded = XSD::Charset.encoding_conv(obj, $KCODE, XSD::Charset.encoding) 90 unless XSD::Charset.is_ces(obj, Thread.current[:SOAPExternalCES]) 91 return nil 92 end 93 encoded = XSD::Charset.encoding_conv(obj, 94 Thread.current[:SOAPExternalCES], XSD::Charset.encoding) 94 95 soap_obj = soap_class.new(encoded) 95 96 rescue XSD::ValueSpaceError … … 102 103 def soap2obj(obj_class, node, info, map) 103 104 obj = Mapping.create_empty_object(obj_class) 104 decoded = XSD::Charset.encoding_conv(node.data, XSD::Charset.encoding, $KCODE) 105 decoded = XSD::Charset.encoding_conv(node.data, XSD::Charset.encoding, 106 Thread.current[:SOAPExternalCES]) 105 107 obj.replace(decoded) 106 108 mark_unmarshalled_obj(node, obj) trunk/lib/soap/mapping/mapping.rb
r1590 r1597 21 21 22 22 23 # TraverseSupport breaks Thread.current[:SOAPMarshalDataKey]. 23 # TraverseSupport breaks following thread variables. 24 # Thread.current[:SOAPMarshalDataKey] 25 # Thread.current[:SOAPExternalCES] 24 26 module TraverseSupport 25 27 def mark_marshalled_obj(obj, soap_obj) … … 36 38 37 39 38 def self.obj2soap(obj, registry = nil, type = nil) 39 registry ||= Mapping::DefaultRegistry 40 Thread.current[:SOAPMarshalDataKey] = {} 41 soap_obj = _obj2soap(obj, registry, type) 42 Thread.current[:SOAPMarshalDataKey] = nil 40 EMPTY_OPT = {} 41 def self.obj2soap(obj, registry = nil, type = nil, opt = EMPTY_OPT) 42 registry ||= Mapping::DefaultRegistry 43 prekey = Thread.current[:SOAPMarshalDataKey] 44 preces = Thread.current[:SOAPExternalCES] 45 begin 46 Thread.current[:SOAPMarshalDataKey] = {} 47 Thread.current[:SOAPExternalCES] = opt[:external_ces] || $KCODE 48 soap_obj = _obj2soap(obj, registry, type) 49 ensure 50 Thread.current[:SOAPMarshalDataKey] = prekey 51 Thread.current[:SOAPExternalCES] = preces 52 end 43 53 soap_obj 44 54 end 45 55 46 def self.soap2obj(node, registry = nil, klass = nil) 47 registry ||= Mapping::DefaultRegistry 48 Thread.current[:SOAPMarshalDataKey] = {} 49 obj = _soap2obj(node, registry, klass) 50 Thread.current[:SOAPMarshalDataKey] = nil 56 def self.soap2obj(node, registry = nil, klass = nil, opt = EMPTY_OPT) 57 registry ||= Mapping::DefaultRegistry 58 prekey = Thread.current[:SOAPMarshalDataKey] 59 preces = Thread.current[:SOAPExternalCES] 60 begin 61 Thread.current[:SOAPMarshalDataKey] = {} 62 Thread.current[:SOAPExternalCES] = opt[:external_ces] || $KCODE 63 obj = _soap2obj(node, registry, klass) 64 ensure 65 Thread.current[:SOAPMarshalDataKey] = prekey 66 Thread.current[:SOAPExternalCES] = preces 67 end 51 68 obj 52 69 end 53 70 54 def self.ary2soap(ary, type_ns = XSD::Namespace, typename = XSD::AnyTypeLiteral, registry = nil )71 def self.ary2soap(ary, type_ns = XSD::Namespace, typename = XSD::AnyTypeLiteral, registry = nil, opt = EMPTY_OPT) 55 72 registry ||= Mapping::DefaultRegistry 56 73 type = XSD::QName.new(type_ns, typename) 57 74 soap_ary = SOAPArray.new(ValueArrayName, 1, type) 58 Thread.current[:SOAPMarshalDataKey] = {} 59 ary.each do |ele| 60 soap_ary.add(_obj2soap(ele, registry, type)) 61 end 62 Thread.current[:SOAPMarshalDataKey] = nil 75 prekey = Thread.current[:SOAPMarshalDataKey] 76 preces = Thread.current[:SOAPExternalCES] 77 begin 78 Thread.current[:SOAPMarshalDataKey] = {} 79 Thread.current[:SOAPExternalCES] = opt[:external_ces] || $KCODE 80 ary.each do |ele| 81 soap_ary.add(_obj2soap(ele, registry, type)) 82 end 83 ensure 84 Thread.current[:SOAPMarshalDataKey] = prekey 85 Thread.current[:SOAPExternalCES] = preces 86 end 63 87 soap_ary 64 88 end 65 89 66 def self.ary2md(ary, rank, type_ns = XSD::Namespace, typename = XSD::AnyTypeLiteral, registry = nil )90 def self.ary2md(ary, rank, type_ns = XSD::Namespace, typename = XSD::AnyTypeLiteral, registry = nil, opt = EMPTY_OPT) 67 91 registry ||= Mapping::DefaultRegistry 68 92 type = XSD::QName.new(type_ns, typename) 69 93 md_ary = SOAPArray.new(ValueArrayName, rank, type) 70 Thread.current[:SOAPMarshalDataKey] = {} 71 add_md_ary(md_ary, ary, [], registry) 72 Thread.current[:SOAPMarshalDataKey] = nil 94 prekey = Thread.current[:SOAPMarshalDataKey] 95 preces = Thread.current[:SOAPExternalCES] 96 begin 97 Thread.current[:SOAPMarshalDataKey] = {} 98 Thread.current[:SOAPExternalCES] = opt[:external_ces] || $KCODE 99 add_md_ary(md_ary, ary, [], registry) 100 ensure 101 Thread.current[:SOAPMarshalDataKey] = prekey 102 Thread.current[:SOAPExternalCES] = preces 103 end 73 104 md_ary 74 105 end trunk/lib/soap/mapping/wsdlencodedregistry.rb
r1581 r1597 150 150 soap_obj = nil 151 151 if type <= XSD::XSDString 152 soap_obj = type.new(XSD::Charset.is_ces(obj, $KCODE) ? 153 XSD::Charset.encoding_conv(obj, $KCODE, XSD::Charset.encoding) : obj) 152 str = XSD::Charset.encoding_conv(obj, Thread.current[:SOAPExternalCES], 153 XSD::Charset.encoding) 154 soap_obj = type.new(str) 154 155 mark_marshalled_obj(obj, soap_obj) 155 156 else trunk/lib/soap/mapping/wsdlliteralregistry.rb
r1584 r1597 239 239 soap_obj = nil 240 240 if type <= XSD::XSDString 241 soap_obj = type.new(XSD::Charset.is_ces(obj, $KCODE) ? 242 XSD::Charset.encoding_conv(obj, $KCODE, XSD::Charset.encoding) : obj) 241 str = XSD::Charset.encoding_conv(obj, Thread.current[:SOAPExternalCES], 242 XSD::Charset.encoding) 243 soap_obj = type.new(str) 243 244 else 244 245 soap_obj = type.new(obj) trunk/lib/soap/rpc/proxy.rb
r1588 r1597 110 110 111 111 def invoke(req_header, req_body, opt = nil) 112 opt ||= create_ options112 opt ||= create_encoding_opt 113 113 route(req_header, req_body, opt, opt) 114 114 end … … 118 118 raise MethodDefinitionError, "method: #{name} not defined" 119 119 end 120 mapping_opt = create_mapping_opt 120 121 req_header = create_request_header 121 122 req_body = SOAPBody.new( 122 op_info.request_body(params, @mapping_registry, @literal_mapping_registry) 123 op_info.request_body(params, @mapping_registry, 124 @literal_mapping_registry, mapping_opt) 123 125 ) 124 reqopt = create_ options(126 reqopt = create_encoding_opt( 125 127 :soapaction => op_info.soapaction || @soapaction, 126 128 :envelopenamespace => @options["soap.envelope.requestnamespace"], … … 129 131 :attributeformdefault => op_info.attributeformdefault 130 132 ) 131 resopt = create_ options(133 resopt = create_encoding_opt( 132 134 :envelopenamespace => @options["soap.envelope.responsenamespace"], 133 135 :default_encodingstyle => op_info.response_default_encodingstyle, … … 143 145 op_info.raise_fault(e, @mapping_registry, @literal_mapping_registry) 144 146 end 145 op_info.response_obj(env.body, @mapping_registry, @literal_mapping_registry) 147 op_info.response_obj(env.body, @mapping_registry, 148 @literal_mapping_registry, mapping_opt) 146 149 end 147 150 … … 246 249 end 247 250 248 def create_ options(hash = nil)251 def create_encoding_opt(hash = nil) 249 252 opt = {} 250 253 opt[:default_encodingstyle] = @default_encodingstyle … … 252 255 opt[:generate_explicit_type] = @generate_explicit_type 253 256 opt[:no_indent] = @options["soap.envelope.no_indent"] 257 opt.update(hash) if hash 258 opt 259 end 260 261 def create_mapping_opt(hash = nil) 262 opt = { 263 :external_ces => @options["soap.mapping.external_ces"] 264 } 254 265 opt.update(hash) if hash 255 266 opt … … 319 330 end 320 331 321 def request_body(values, mapping_registry, literal_mapping_registry )332 def request_body(values, mapping_registry, literal_mapping_registry, opt) 322 333 if @request_style == :rpc 323 request_rpc(values, mapping_registry, literal_mapping_registry )324 else 325 request_doc(values, mapping_registry, literal_mapping_registry )326 end 327 end 328 329 def response_obj(body, mapping_registry, literal_mapping_registry )334 request_rpc(values, mapping_registry, literal_mapping_registry, opt) 335 else 336 request_doc(values, mapping_registry, literal_mapping_registry, opt) 337 end 338 end 339 340 def response_obj(body, mapping_registry, literal_mapping_registry, opt) 330 341 if @response_style == :rpc 331 response_rpc(body, mapping_registry, literal_mapping_registry )332 else 333 response_doc(body, mapping_registry, literal_mapping_registry )342 response_rpc(body, mapping_registry, literal_mapping_registry, opt) 343 else 344 response_doc(body, mapping_registry, literal_mapping_registry, opt) 334 345 end 335 346 end … … 357 368 end 358 369 359 def request_rpc(values, mapping_registry, literal_mapping_registry )370 def request_rpc(values, mapping_registry, literal_mapping_registry, opt) 360 371 if @request_use == :encoded 361 request_rpc_enc(values, mapping_registry )362 else 363 request_rpc_lit(values, literal_mapping_registry )364 end 365 end 366 367 def request_doc(values, mapping_registry, literal_mapping_registry )372 request_rpc_enc(values, mapping_registry, opt) 373 else 374 request_rpc_lit(values, literal_mapping_registry, opt) 375 end 376 end 377 378 def request_doc(values, mapping_registry, literal_mapping_registry, opt) 368 379 if @request_use == :encoded 369 request_doc_enc(values, mapping_registry )370 else 371 request_doc_lit(values, literal_mapping_registry )372 end 373 end 374 375 def request_rpc_enc(values, mapping_registry )380 request_doc_enc(values, mapping_registry, opt) 381 else 382 request_doc_lit(values, literal_mapping_registry, opt) 383 end 384 end 385 386 def request_rpc_enc(values, mapping_registry, opt) 376 387 method = @rpc_method_factory.dup 377 388 names = method.input_params 378 389 obj = create_request_obj(names, values) 379 soap = Mapping.obj2soap(obj, mapping_registry, @rpc_request_qname )390 soap = Mapping.obj2soap(obj, mapping_registry, @rpc_request_qname, opt) 380 391 method.set_param(soap) 381 392 method 382 393 end 383 394 384 def request_rpc_lit(values, mapping_registry )395 def request_rpc_lit(values, mapping_registry, opt) 385 396 method = @rpc_method_factory.dup 386 397 params = {} … … 388 399 method.input_params.each do |name| 389 400 params[name] = Mapping.obj2soap(values[idx], mapping_registry, 390 XSD::QName.new(nil, name) )401 XSD::QName.new(nil, name), opt) 391 402 idx += 1 392 403 end … … 395 406 end 396 407 397 def request_doc_enc(values, mapping_registry )408 def request_doc_enc(values, mapping_registry, opt) 398 409 (0...values.size).collect { |idx| 399 ele = Mapping.obj2soap(values[idx], mapping_registry )410 ele = Mapping.obj2soap(values[idx], mapping_registry, nil, opt) 400 411 ele.elename = @doc_request_qnames[idx] 401 412 ele … … 403 414 end 404 415 405 def request_doc_lit(values, mapping_registry )416 def request_doc_lit(values, mapping_registry, opt) 406 417 (0...values.size).collect { |idx| 407 418 ele = Mapping.obj2soap(values[idx], mapping_registry, 408 @doc_request_qnames[idx] )419 @doc_request_qnames[idx], opt) 409 420 ele.encodingstyle = LiteralNamespace 410 421 if ele.respond_to?(:qualified) … … 415 426 end 416 427 417 def response_rpc(body, mapping_registry, literal_mapping_registry )428 def response_rpc(body, mapping_registry, literal_mapping_registry, opt) 418 429 if @response_use == :encoded 419 response_rpc_enc(body, mapping_registry )420 else 421 response_rpc_lit(body, literal_mapping_registry )422 end 423 end 424 425 def response_doc(body, mapping_registry, literal_mapping_registry )430 response_rpc_enc(body, mapping_registry, opt) 431 else 432 response_rpc_lit(body, literal_mapping_registry, opt) 433 end 434 end 435 436 def response_doc(body, mapping_registry, literal_mapping_registry, opt) 426 437 if @response_use == :encoded 427 return *response_doc_enc(body, mapping_registry )428 else 429 return *response_doc_lit(body, literal_mapping_registry )430 end 431 end 432 433 def response_rpc_enc(body, mapping_registry )438 return *response_doc_enc(body, mapping_registry, opt) 439 else 440 return *response_doc_lit(body, literal_mapping_registry, opt) 441 end 442 end 443 444 def response_rpc_enc(body, mapping_registry, opt) 434 445 ret = nil 435 446 if body.response 436 447 ret = Mapping.soap2obj(body.response, mapping_registry, 437 @rpc_method_factory.retval_class_name )448 @rpc_method_factory.retval_class_name, opt) 438 449 end 439 450 if body.outparams 440 451 outparams = body.outparams.collect { |outparam| 441 Mapping.soap2obj(outparam, mapping_registry )452 Mapping.soap2obj(outparam, mapping_registry, nil, opt) 442 453 } 443 454 [ret].concat(outparams) … … 447 458 end 448 459 449 def response_rpc_lit(body, mapping_registry )460 def response_rpc_lit(body, mapping_registry, opt) 450 461 body.root_node.collect { |key, value| 451 462 Mapping.soap2obj(value, mapping_registry, 452 @rpc_method_factory.retval_class_name )463 @rpc_method_factory.retval_class_name, opt) 453 464 } 454 465 end 455 466 456 def response_doc_enc(body, mapping_registry )467 def response_doc_enc(body, mapping_registry, opt) 457 468 body.collect { |key, value| 458 Mapping.soap2obj(value, mapping_registry )469 Mapping.soap2obj(value, mapping_registry, nil, opt) 459 470 } 460 471 end 461 472 462 def response_doc_lit(body, mapping_registry )473 def response_doc_lit(body, mapping_registry, opt) 463 474 body.collect { |key, value| 464 475 Mapping.soap2obj(value, mapping_registry) trunk/lib/soap/rpc/router.rb
r1584 r1597 29 29 attr_accessor :literal_mapping_registry 30 30 attr_accessor :generate_explicit_type 31 attr_accessor :external_ces 31 32 32 33 def initialize(actor) … … 36 37 @literal_mapping_registry = ::SOAP::Mapping::WSDLLiteralRegistry.new 37 38 @generate_explicit_type = true 39 @external_ces = nil 38 40 @operation_by_soapaction = {} 39 41 @operation_by_qname = {} … … 164 166 begin 165 167 soap_response = 166 op.call(env.body, @mapping_registry, @literal_mapping_registry) 168 op.call(env.body, @mapping_registry, @literal_mapping_registry, 169 create_mapping_opt) 167 170 default_encodingstyle = op.response_default_encodingstyle 168 171 rescue Exception … … 323 326 SOAPString.new(@actor), 324 327 Mapping.obj2soap(detail, @mapping_registry)) 328 end 329 330 def create_mapping_opt 331 { :external_ces => @external_ces } 325 332 end 326 333 … … 351 358 else 352 359 @doc_request_qnames = [] 360 @doc_request_qualified = [] 353 361 @doc_response_qnames = [] 354 param_def.each do |inout, paramname, typeinfo| 362 @doc_response_qualified = [] 363 param_def.each do |inout, paramname, typeinfo, eleinfo| 355 364 klass, nsdef, namedef = typeinfo 365 qualified = eleinfo 356 366 case inout 357 367 when SOAPMethod::IN 358 368 @doc_request_qnames << XSD::QName.new(nsdef, namedef) 369 @doc_request_qualified << qualified 359 370 when SOAPMethod::OUT 360 371 @doc_response_qnames << XSD::QName.new(nsdef, namedef) 372 @doc_response_qualified << qualified 361 373 else 362 374 raise ArgumentError.new( … … 375 387 end 376 388 377 def call(body, mapping_registry, literal_mapping_registry )389 def call(body, mapping_registry, literal_mapping_registry, opt) 378 390 if @request_style == :rpc 379 values = request_rpc(body, mapping_registry, literal_mapping_registry) 380 else 381 values = request_document(body, mapping_registry, literal_mapping_registry) 391 values = request_rpc(body, mapping_registry, literal_mapping_registry, 392 opt) 393 else 394 values = request_document(body, mapping_registry, 395 literal_mapping_registry, opt) 382 396 end 383 397 result = receiver.method(@name.intern).call(*values) 384 398 return result if result.is_a?(SOAPFault) 385 399 if @response_style == :rpc 386 response_rpc(result, mapping_registry, literal_mapping_registry )387 else 388 response_doc(result, mapping_registry, literal_mapping_registry )400 response_rpc(result, mapping_registry, literal_mapping_registry, opt) 401 else 402 response_doc(result, mapping_registry, literal_mapping_registry, opt) 389 403 end 390 404 end … … 396 410 end 397 411 398 def request_rpc(body, mapping_registry, literal_mapping_registry )412 def request_rpc(body, mapping_registry, literal_mapping_registry, opt) 399 413 request = body.request 400 414 unless request.is_a?(SOAPStruct) … … 402 416 end 403 417 if @request_use == :encoded 404 request_rpc_enc(request, mapping_registry )405 else 406 request_rpc_lit(request, literal_mapping_registry )407 end 408 end 409 410 def request_document(body, mapping_registry, literal_mapping_registry )418 request_rpc_enc(request, mapping_registry, opt) 419 else 420 request_rpc_lit(request, literal_mapping_registry, opt) 421 end 422 end 423 424 def request_document(body, mapping_registry, literal_mapping_registry, opt) 411 425 # ToDo: compare names with @doc_request_qnames 412 426 if @request_use == :encoded 413 request_doc_enc(body, mapping_registry )414 else 415 request_doc_lit(body, literal_mapping_registry )416 end 417 end 418 419 def request_rpc_enc(request, mapping_registry )420 param = Mapping.soap2obj(request, mapping_registry )427 request_doc_enc(body, mapping_registry, opt) 428 else 429 request_doc_lit(body, literal_mapping_registry, opt) 430 end 431 end 432 433 def request_rpc_enc(request, mapping_registry, opt) 434 param = Mapping.soap2obj(request, mapping_registry, nil, opt) 421 435 request.collect { |key, value| 422 436 param[key] … … 424 438 end 425 439 426 def request_rpc_lit(request, mapping_registry )440 def request_rpc_lit(request, mapping_registry, opt) 427 441 request.collect { |key, value| 428 Mapping.soap2obj(value, mapping_registry )442 Mapping.soap2obj(value, mapping_registry, nil, opt) 429 443 } 430 444 end 431 445 432 def request_doc_enc(body, mapping_registry )446 def request_doc_enc(body, mapping_registry, opt) 433 447 body.collect { |key, value| 434 Mapping.soap2obj(value, mapping_registry )448 Mapping.soap2obj(value, mapping_registry, nil, opt) 435 449 } 436 450 end 437 451 438 def request_doc_lit(body, mapping_registry )452 def request_doc_lit(body, mapping_registry, opt) 439 453 body.collect { |key, value| 440 Mapping.soap2obj(value, mapping_registry )454 Mapping.soap2obj(value, mapping_registry, nil, opt) 441 455 } 442 456 end 443 457 444 def response_rpc(result, mapping_registry, literal_mapping_registry )458 def response_rpc(result, mapping_registry, literal_mapping_registry, opt) 445 459 if @response_use == :encoded 446 response_rpc_enc(result, mapping_registry )447 else 448 response_rpc_lit(result, literal_mapping_registry )460 response_rpc_enc(result, mapping_registry, opt) 461 else 462 response_rpc_lit(result, literal_mapping_registry, opt) 449 463 end 450 464 end 451 465 452 def response_doc(result, mapping_registry, literal_mapping_registry )466 def response_doc(result, mapping_registry, literal_mapping_registry, opt) 453 467 if @doc_response_qnames.size == 1 and !result.is_a?(Array) 454 468 result = [result] … … 459 473 end 460 474 if @response_use == :encoded 461 response_doc_enc(result, mapping_registry) 462 else 463 response_doc_lit(result, literal_mapping_registry) 464 end 465 end 466 467 def response_rpc_enc(result, mapping_registry) 468 soap_response = 469 @rpc_method_factory.create_method_response(@rpc_response_qname) 470 if soap_response.have_outparam? 471 unless result.is_a?(Array) 472 raise RPCRoutingError.new("out parameter was not returned") 473 end 474 outparams = {} 475 i = 1 476 soap_response.output_params.each do |outparam| 477 outparams[outparam] = Mapping.obj2soap(result[i], mapping_registry) 478 i += 1 479 end 480 soap_response.set_outparam(outparams) 481 soap_response.retval = Mapping.obj2soap(result[0], mapping_registry) 482 else 483 soap_response.retval = Mapping.obj2soap(result, mapping_registry) 484 end 485 soap_response 486 end 487 488 def response_rpc_lit(result, mapping_registry) 475 response_doc_enc(result, mapping_registry, opt) 476 else 477 response_doc_lit(result, literal_mapping_registry, opt) 478 end 479 end 480 481 def response_rpc_enc(result, mapping_registry, opt) 489 482 soap_response = 490 483 @rpc_method_factory.create_method_response(@rpc_response_qname) … … 497 490 soap_response.output_params.each do |outparam| 498 491 outparams[outparam] = Mapping.obj2soap(result[i], mapping_registry, 499 XSD::QName.new(nil, outparam))492 nil, opt) 500 493 i += 1 501 494 end 502 495 soap_response.set_outparam(outparams) 503 496 soap_response.retval = Mapping.obj2soap(result[0], mapping_registry, 504 XSD::QName.new(nil, soap_response.elename)) 497 nil, opt) 498 else 499 soap_response.retval = Mapping.obj2soap(result, mapping_registry, nil, 500 opt) 501 end 502 soap_response 503 end 504 505 def response_rpc_lit(result, mapping_registry, opt) 506 soap_response = 507 @rpc_method_factory.create_method_response(@rpc_response_qname) 508 if soap_response.have_outparam? 509 unless result.is_a?(Array) 510 raise RPCRoutingError.new("out parameter was not returned") 511 end 512 outparams = {} 513 i = 1 514 soap_response.output_params.each do |outparam| 515 outparams[outparam] = Mapping.obj2soap(result[i], mapping_registry, 516 XSD::QName.new(nil, outparam), opt) 517 i += 1 518 end 519 soap_response.set_outparam(outparams) 520 soap_response.retval = Mapping.obj2soap(result[0], mapping_registry, 521 XSD::QName.new(nil, soap_response.elename), opt) 505 522 else 506 523 soap_response.retval = Mapping.obj2soap(result, mapping_registry, 507 XSD::QName.new(nil, soap_response.elename) )524 XSD::QName.new(nil, soap_response.elename), opt) 508 525 end 509 526 soap_response 510 527 end 511 528 512 def response_doc_enc(result, mapping_registry )529 def response_doc_enc(result, mapping_registry, opt) 513 530 (0...result.size).collect { |idx| 514 ele = Mapping.obj2soap(result[idx], mapping_registry )531 ele = Mapping.obj2soap(result[idx], mapping_registry, nil, opt) 515 532 ele.elename = @doc_response_qnames[idx] 516 533 ele … … 518 535 end 519 536 520 def response_doc_lit(result, mapping_registry )537 def response_doc_lit(result, mapping_registry, opt) 521 538 (0...result.size).collect { |idx| 522 mapping_registry.obj2soap(result[idx], @doc_response_qnames[idx]) 539 ele = Mapping.obj2soap(result[idx], mapping_registry, 540 @doc_response_qnames[idx]) 541 ele.encodingstyle = LiteralNamespace 542 if ele.respond_to?(:qualified) 543 ele.qualified = @doc_response_qualified[idx] 544 end 545 ele 523 546 } 524 547 end trunk/lib/soap/rpc/soaplet.rb
r1554 r1597 85 85 conn_data = ::SOAP::StreamHandler::ConnectionData.new 86 86 setup_req(conn_data, req) 87 @router.external_ces = @options[:external_ces] 87 88 conn_data = @router.route(conn_data) 88 89 setup_res(conn_data, req, res) trunk/test/interopR2/client.rb
r1589 r1597 252 252 var = drv.echoString(arg) 253 253 assert_equal(arg, var) 254 end 255 256 def test_echoString_SJIS_encoded 257 log_test 258 arg = "Hello (����panese) ������ 259 require 'nkf' 260 arg = NKF.nkf("-sm0", arg) 261 drv.options["soap.mapping.external_ces"] = 'SJIS' 262 begin 263 var = drv.echoString(arg) 264 assert_equal(arg, var) 265 ensure 266 drv.options["soap.mapping.external_ces"] = nil 267 end 254 268 end 255 269 trunk/test/interopR2/clientSOAP4R.rb
r1592 r1597 5 5 $server = 'http://dev.ctor.org/soapsrv' 6 6 #$server = 'http://rrr.jin.gr.jp/soapsrv' 7 #$server = 'http://dev.ctor.org/soapsrv' 7 8 #$server = 'http://localhost:10080' 8 9 #require 'xsd/datatypes1999' … … 15 16 doTestBase(drv) 16 17 doTestGroupB(drv) 17 submitTestResult18 #submitTestResult trunk/test/soap/ssl/test_ssl.rb
r1578 r1597 180 180 cfg["protocol.http.ssl_config.ca_file"] = File.join(DIR, "subca.cert") 181 181 #cfg.timeout = 123 182 assert_equal("Hello World, from ssl client", @client.hello_world("ssl client"))183 #184 182 cfg["protocol.http.ssl_config.ciphers"] = "!ALL" 183 # 185 184 begin 186 185 @client.hello_world("ssl client")