Changeset 1871
- Timestamp:
- 07/01/07 15:36:45 (1 year ago)
- Files:
-
- trunk/lib/soap/mapping/literalregistry.rb (modified) (4 diffs)
- trunk/test/wsdl/document/array/test_array.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/mapping/literalregistry.rb
r1857 r1871 30 30 end 31 31 32 def obj2soap(obj, qname )32 def obj2soap(obj, qname, obj_class = nil) 33 33 soap_obj = nil 34 34 if obj.is_a?(SOAPElement) 35 35 soap_obj = obj 36 36 else 37 soap_obj = any2soap(obj, qname )37 soap_obj = any2soap(obj, qname, obj_class) 38 38 end 39 39 return soap_obj if soap_obj … … 68 68 MAPPING_OPT = { :no_reference => true } 69 69 70 def any2soap(obj, qname) 70 def definedobj2soap(obj, definition) 71 obj2soap(obj, definition.elename, definition.mapped_class) 72 end 73 74 def any2soap(obj, qname, obj_class) 71 75 ele = nil 72 76 if obj.is_a?(SOAP::Mapping::Object) 73 77 return mappingobj2soap(obj, qname) 74 78 end 75 class_definition = schema_definition_from_class(obj .class)79 class_definition = schema_definition_from_class(obj_class || obj.class) 76 80 elename_definition = schema_definition_from_elename(qname) 77 81 if !class_definition and !elename_definition … … 163 167 elsif obj.respond_to?(:each) and definition.as_array? 164 168 obj.each do |item| 165 ele.add( obj2soap(item, definition.elename))169 ele.add(definedobj2soap(item, definition)) 166 170 end 167 171 else … … 172 176 if child.respond_to?(:each) and definition.as_array? 173 177 child.each do |item| 174 ele.add( obj2soap(item, definition.elename))178 ele.add(definedobj2soap(item, definition)) 175 179 end 176 180 else 177 ele.add( obj2soap(child, definition.elename))181 ele.add(definedobj2soap(child, definition)) 178 182 end 179 183 end trunk/test/wsdl/document/array/test_array.rb
r1852 r1871 127 127 @client.wiredump_dev = STDOUT if $DEBUG 128 128 double = [0.1, 0.2, 0.3] 129 arg = { 130 :ary => { 131 XSD::QName.new("http://tempuri.org/", "double") => double 132 } 133 } 134 assert_equal(double, @client.echo(arg).ary) 129 assert_equal(double, @client.echo(:ary => double).ary) 135 130 end 136 131 end