summaryrefslogtreecommitdiff
path: root/lib/soap/mapping/factory.rb
diff options
context:
space:
mode:
authornahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-11-28 05:53:16 +0000
committernahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-11-28 05:53:16 +0000
commit42bca643c3ec41782d519c7676383f8f71e67a7a (patch)
tree3ddde51774247d839f4e12ae0d9af6ff2e84d35b /lib/soap/mapping/factory.rb
parenta017b0cc8aea236600d47ff04cd829f84499f414 (diff)
* lib/soap/streamHandler.rb: drop unused http parameters.
* lib/soap/encodingstyle/soapHandler.rb, lib/soap/mapping/factory.rb, lib/soap/mapping/mapping.rb, lib/soap/mapping/registry.rb, lib/wsdl/soap/complexType.rb: ApacheSOAP's map support was broken under WSDL dynanic client environment. fixed. * test/wsdl/raa/*: add tests. * lib/xsd/datatypes.rb: dateTime precision bug fix (at least, I hope.) bug of soap4r. XSDDateTimeImple.to_time passed a Float to Time.local/Time.gm as an usec, and NUM2LONG(rb_num2long for Float) causes rounding error. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5045 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/soap/mapping/factory.rb')
-rw-r--r--lib/soap/mapping/factory.rb15
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/soap/mapping/factory.rb b/lib/soap/mapping/factory.rb
index 509fe369c4..f181773687 100644
--- a/lib/soap/mapping/factory.rb
+++ b/lib/soap/mapping/factory.rb
@@ -356,14 +356,21 @@ class HashFactory_ < Factory
unless node.type == MapQName
return false
end
- if node.key?('default')
+ if node.class == SOAPStruct and node.key?('default')
return false
end
obj = create_empty_object(obj_class)
mark_unmarshalled_obj(node, obj)
- node.each do |key, value|
- obj[Mapping._soap2obj(value['key'], map)] =
- Mapping._soap2obj(value['value'], map)
+ if node.class == SOAPStruct
+ node.each do |key, value|
+ obj[Mapping._soap2obj(value['key'], map)] =
+ Mapping._soap2obj(value['value'], map)
+ end
+ else
+ node.each do |value|
+ obj[Mapping._soap2obj(value['key'], map)] =
+ Mapping._soap2obj(value['value'], map)
+ end
end
return true, obj
end