mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/soap/wsdlDriver.rb, lib/wsdl/soap/operation.rb: add support of
"parts" attribute of soap:body element in WSDL. * lib/wsdl/xmlSchema/schema.rb: friendly warning message for simpleType element which is not supported for now. * test/wsdl/soap/{soapbodyparts.wsdl,test_soapbodyparts.wsdl}: new files. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
11685dc1ee
commit
290034fde8
5 changed files with 40 additions and 6 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
Sun Jan 18 20:00:16 2004 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
|
||||||
|
|
||||||
|
* lib/soap/wsdlDriver.rb, lib/wsdl/soap/operation.rb: add support of
|
||||||
|
"parts" attribute of soap:body element in WSDL.
|
||||||
|
|
||||||
|
* lib/wsdl/xmlSchema/schema.rb: friendly warning message for
|
||||||
|
simpleType element which is not supported for now.
|
||||||
|
|
||||||
|
* test/wsdl/soap/{soapbodyparts.wsdl,test_soapbodyparts.wsdl}: new
|
||||||
|
files.
|
||||||
|
|
||||||
Sun Jan 18 16:46:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Sun Jan 18 16:46:48 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* time.c (time_overflow_p): should return results. [ruby-dev:22614]
|
* time.c (time_overflow_p): should return results. [ruby-dev:22614]
|
||||||
|
|
3
MANIFEST
3
MANIFEST
|
@ -749,6 +749,7 @@ test/ruby/test_signal.rb
|
||||||
test/ruby/test_stringchar.rb
|
test/ruby/test_stringchar.rb
|
||||||
test/ruby/test_struct.rb
|
test/ruby/test_struct.rb
|
||||||
test/ruby/test_system.rb
|
test/ruby/test_system.rb
|
||||||
|
test/ruby/test_time.rb
|
||||||
test/ruby/test_trace.rb
|
test/ruby/test_trace.rb
|
||||||
test/ruby/test_variable.rb
|
test/ruby/test_variable.rb
|
||||||
test/ruby/test_whileuntil.rb
|
test/ruby/test_whileuntil.rb
|
||||||
|
@ -821,6 +822,8 @@ test/wsdl/raa/RAAService.rb
|
||||||
test/wsdl/raa/README.txt
|
test/wsdl/raa/README.txt
|
||||||
test/wsdl/raa/raa.wsdl
|
test/wsdl/raa/raa.wsdl
|
||||||
test/wsdl/raa/test_raa.rb
|
test/wsdl/raa/test_raa.rb
|
||||||
|
test/wsdl/soap/soapbodyparts.wsdl
|
||||||
|
test/wsdl/soap/test_soapbodyparts.rb
|
||||||
test/wsdl/test_emptycomplextype.rb
|
test/wsdl/test_emptycomplextype.rb
|
||||||
test/wsdl/test_fault.rb
|
test/wsdl/test_fault.rb
|
||||||
test/xsd/noencoding.xml
|
test/xsd/noencoding.xml
|
||||||
|
|
|
@ -206,11 +206,7 @@ class WSDLDriver
|
||||||
log(DEBUG) { "call: parameters '#{ params.inspect }'." }
|
log(DEBUG) { "call: parameters '#{ params.inspect }'." }
|
||||||
|
|
||||||
op_info = @operations[method_name]
|
op_info = @operations[method_name]
|
||||||
parts_names = op_info.bodyparts.collect { |part| part.name }
|
method = create_method_struct(op_info, params)
|
||||||
obj = create_method_obj(parts_names, params)
|
|
||||||
method = Mapping.obj2soap(obj, @wsdl_mapping_registry, op_info.optype_name)
|
|
||||||
method.elename = op_info.op_name
|
|
||||||
method.type = XSD::QName.new # Request should not be typed.
|
|
||||||
req_header = nil
|
req_header = nil
|
||||||
req_body = SOAPBody.new(method)
|
req_body = SOAPBody.new(method)
|
||||||
req_env = SOAPEnvelope.new(req_header, req_body)
|
req_env = SOAPEnvelope.new(req_header, req_body)
|
||||||
|
@ -264,6 +260,24 @@ class WSDLDriver
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def create_method_struct(op_info, params)
|
||||||
|
parts_names = op_info.bodyparts.collect { |part| part.name }
|
||||||
|
obj = create_method_obj(parts_names, params)
|
||||||
|
method = Mapping.obj2soap(obj, @wsdl_mapping_registry, op_info.optype_name)
|
||||||
|
if method.members.size != parts_names.size
|
||||||
|
new_method = SOAPStruct.new
|
||||||
|
method.each do |key, value|
|
||||||
|
if parts_names.include?(key)
|
||||||
|
new_method.add(key, value)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
method = new_method
|
||||||
|
end
|
||||||
|
method.elename = op_info.op_name
|
||||||
|
method.type = XSD::QName.new # Request should not be typed.
|
||||||
|
method
|
||||||
|
end
|
||||||
|
|
||||||
def create_method_obj(names, params)
|
def create_method_obj(names, params)
|
||||||
o = Object.new
|
o = Object.new
|
||||||
for idx in 0 ... params.length
|
for idx in 0 ... params.length
|
||||||
|
|
|
@ -104,7 +104,10 @@ private
|
||||||
op_name.namespace = soapbody.namespace
|
op_name.namespace = soapbody.namespace
|
||||||
end
|
end
|
||||||
if soapbody.parts
|
if soapbody.parts
|
||||||
raise NotImplementedError.new("soap:body parts")
|
target = soapbody.parts.split(/\s+/)
|
||||||
|
bodyparts = name_info.parts.find_all { |part|
|
||||||
|
target.include?(part.name)
|
||||||
|
}
|
||||||
else
|
else
|
||||||
bodyparts = name_info.parts
|
bodyparts = name_info.parts
|
||||||
end
|
end
|
||||||
|
|
|
@ -43,6 +43,9 @@ class Schema < Info
|
||||||
o = ComplexType.new
|
o = ComplexType.new
|
||||||
@complextypes << o
|
@complextypes << o
|
||||||
o
|
o
|
||||||
|
when SimpleTypeName
|
||||||
|
STDERR.puts("Restriction of basetype with simpleType definition is ignored for now.")
|
||||||
|
nil
|
||||||
when ElementName
|
when ElementName
|
||||||
o = Element.new
|
o = Element.new
|
||||||
@elements << o
|
@elements << o
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue