Class | SOAP::Mapping::Registry::Map |
In: |
soap/mapping/registry.rb
|
Parent: | Object |
# File soap/mapping/registry.rb, line 179 def initialize(registry) @obj2soap = {} @soap2obj = {} @registry = registry end
Give priority to latter entry.
# File soap/mapping/registry.rb, line 230 def add(obj_class, soap_class, factory, info) info ||= {} (@obj2soap[obj_class] ||= []).unshift([soap_class, factory, info]) (@soap2obj[soap_class] ||= []).unshift([obj_class, factory, info]) end
# File soap/mapping/registry.rb, line 246 def find_mapped_obj_class(target_soap_class) map = @soap2obj[target_soap_class] map.empty? ? nil : map[0][0] end
# File soap/mapping/registry.rb, line 241 def find_mapped_soap_class(target_obj_class) map = @obj2soap[target_obj_class] map.empty? ? nil : map[0][1] end
Give priority to former entry.
# File soap/mapping/registry.rb, line 222 def init(init_map = []) clear init_map.reverse_each do |obj_class, soap_class, factory, info| add(obj_class, soap_class, factory, info) end end
# File soap/mapping/registry.rb, line 185 def obj2soap(obj) klass = obj.class if map = @obj2soap[klass] map.each do |soap_class, factory, info| ret = factory.obj2soap(soap_class, obj, info, @registry) return ret if ret end end ancestors = klass.ancestors ancestors.delete(klass) ancestors.delete(::Object) ancestors.delete(::Kernel) ancestors.each do |klass| if map = @obj2soap[klass] map.each do |soap_class, factory, info| if info[:derived_class] ret = factory.obj2soap(soap_class, obj, info, @registry) return ret if ret end end end end nil end