Changeset 1697
- Timestamp:
- 08/06/06 23:26:14 (2 years ago)
- Files:
-
- trunk/lib/soap/mapping/mapping.rb (modified) (3 diffs)
- trunk/lib/soap/mapping/wsdlencodedregistry.rb (modified) (1 diff)
- trunk/lib/soap/mapping/wsdlliteralregistry.rb (modified) (1 diff)
- trunk/test/soap/literalArrayMapping (added)
- trunk/test/soap/literalArrayMapping/amazonEc.rb (added)
- trunk/test/soap/literalArrayMapping/amazonEcDriver.rb (added)
- trunk/test/soap/literalArrayMapping/amazonresponse.xml (added)
- trunk/test/soap/literalArrayMapping/test_definedarray.rb (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/mapping/mapping.rb
r1696 r1697 379 379 schema_element = class_schema_variable(:schema_element, klass) 380 380 return nil unless schema_element 381 schema_ns = schema_ns_definition(klass) 382 parse_schema_element_definition(schema_ns, schema_element) 381 parse_schema_element_definition(klass, schema_element) 383 382 end 384 383 … … 432 431 private 433 432 434 def parse_schema_element_definition(schema_ns, schema_element) 433 def parse_schema_element_definition(klass, schema_element) 434 schema_ns = schema_ns_definition(klass) 435 435 definition = SchemaDefinition.new 436 436 if schema_element[0] == :choice … … 441 441 varname, info = element 442 442 class_name, name = info 443 as_array = false443 as_array = klass.ancestors.include?(::Array) 444 444 if /\[\]$/ =~ class_name 445 445 class_name = class_name.sub(/\[\]$/, '') trunk/lib/soap/mapping/wsdlencodedregistry.rb
r1696 r1697 269 269 child = Mapping._soap2obj(value, self) 270 270 end 271 vars[name] = child 272 end 273 if obj.is_a?(::Array) 274 vars.values.flatten.each do |item| 275 obj << item 276 end 277 else 278 Mapping.set_attributes(obj, vars) 279 end 271 if item and item.as_array? 272 (vars[name] ||= []) << child 273 else 274 vars[name] = child 275 end 276 end 277 Mapping.set_attributes(obj, vars) 280 278 end 281 279 trunk/lib/soap/mapping/wsdlliteralregistry.rb
r1696 r1697 433 433 end 434 434 if obj.is_a?(::Array) 435 vars.values.flatten.each do |item| 436 obj << item 437 end 435 obj.replace(vars.values.flatten) 438 436 else 439 437 Mapping.set_attributes(obj, vars)