Class SOAP::Mapping::HashFactory_
In: lib/soap/mapping/factory.rb
Parent: Factory

Methods

new   obj2soap   soap2obj  

Public Class methods

[Source]

     # 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

Public Instance methods

[Source]

     # 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

[Source]

     # 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

[Validate]