| Class | SOAP::Mapping::HashFactory_ |
| In: |
lib/soap/mapping/factory.rb
|
| Parent: | Factory |
# File lib/soap/mapping/factory.rb, line 304
304: def initialize(allow_original_mapping = false)
305: super()
306: @allow_original_mapping = allow_original_mapping
307: end
# File lib/soap/mapping/factory.rb, line 309
309: def obj2soap(soap_class, obj, info, map)
310: if !@allow_original_mapping and !obj.instance_variables.empty?
311: return nil
312: end
313: if !obj.default.nil? or
314: (obj.respond_to?(:default_proc) and obj.default_proc)
315: return nil
316: end
317: soap_obj = SOAPStruct.new(MapQName)
318: mark_marshalled_obj(obj, soap_obj)
319: obj.each do |key, value|
320: elem = SOAPStruct.new
321: elem.add("key", Mapping._obj2soap(key, map))
322: elem.add("value", Mapping._obj2soap(value, map))
323: # ApacheAxis allows only 'item' here.
324: soap_obj.add("item", elem)
325: end
326: soap_obj
327: end
# File lib/soap/mapping/factory.rb, line 329
329: def soap2obj(obj_class, node, info, map)
330: unless node.type == MapQName
331: return false
332: end
333: if node.class == SOAPStruct and node.key?('default')
334: return false
335: end
336: obj = Mapping.create_empty_object(obj_class)
337: mark_unmarshalled_obj(node, obj)
338: if node.class == SOAPStruct
339: node.each do |key, value|
340: obj[Mapping._soap2obj(value['key'], map)] =
341: Mapping._soap2obj(value['value'], map)
342: end
343: else
344: node.each do |value|
345: obj[Mapping._soap2obj(value['key'], map)] =
346: Mapping._soap2obj(value['value'], map)
347: end
348: end
349: return true, obj
350: end