class WsdlMapper::Deserializers::ClassMapping
Constants
- XSI_NIL
- XSI_NS
Attributes
attributes[R]
properties[R]
Public Class Methods
new(cls, simple: false, &block)
click to toggle source
# File lib/wsdl_mapper/deserializers/class_mapping.rb, line 20 def initialize(cls, simple: false, &block) @cls = cls @attributes = Directory.new #on_nil: Errors::UnknownAttributeError @properties = Directory.new on_nil: Errors::UnknownElementError @simple = simple @wrappers = Directory.new @delegate = nil instance_exec(&block) end
Public Instance Methods
build_object(base, frame)
click to toggle source
# File lib/wsdl_mapper/deserializers/class_mapping.rb, line 81 def build_object(base, frame) if @simple type_name = WsdlMapper::Dom::Name.get(*@simple) content = base.to_ruby type_name, frame.text @cls.new content else @cls.new end end
end(base, frame)
click to toggle source
# File lib/wsdl_mapper/deserializers/class_mapping.rb, line 57 def end(base, frame) return if nil_attr?(frame.attrs) frame.object = build_object base, frame if @delegate mapping = base.get_type_mapping @delegate.type_name delegate = mapping.build_object base, frame mapping.set_properties base, frame, delegate mapping.set_attributes base, frame, delegate frame.object.send "#{@delegate.accessor}=", delegate else set_attributes base, frame, frame.object set_properties base, frame, frame.object end end
get_type_name_for_prop(prop_name)
click to toggle source
# File lib/wsdl_mapper/deserializers/class_mapping.rb, line 91 def get_type_name_for_prop(prop_name) @properties[prop_name].type_name rescue Errors::UnknownElementError => e e.parent = @cls raise e end
nil_attr?(attrs)
click to toggle source
# File lib/wsdl_mapper/deserializers/class_mapping.rb, line 74 def nil_attr? attrs # TODO: test !!attrs.find do |(name, _)| name == XSI_NIL end end
register_attr(accessor, attr_name, type_name)
click to toggle source
# File lib/wsdl_mapper/deserializers/class_mapping.rb, line 31 def register_attr(accessor, attr_name, type_name) attr_name = Name.get(*attr_name) @attributes[attr_name] = AttrMapping.new(accessor, attr_name, Name.get(*type_name)) end
register_delegate(accessor, type_name)
click to toggle source
# File lib/wsdl_mapper/deserializers/class_mapping.rb, line 41 def register_delegate(accessor, type_name) @delegate = Delegate.new accessor, Name.get(*type_name) end
register_prop(accessor, prop_name, type_name, array: false)
click to toggle source
# File lib/wsdl_mapper/deserializers/class_mapping.rb, line 36 def register_prop(accessor, prop_name, type_name, array: false) prop_name = Name.get(*prop_name) @properties[prop_name] = PropMapping.new(accessor, prop_name, Name.get(*type_name), array: array) end
register_wrapper(name)
click to toggle source
# File lib/wsdl_mapper/deserializers/class_mapping.rb, line 45 def register_wrapper(name) name = Name.get(*name) @wrappers[name] = true end
set_attributes(base, frame, object)
click to toggle source
# File lib/wsdl_mapper/deserializers/class_mapping.rb, line 112 def set_attributes(base, frame, object) frame.attrs.each do |(name, value)| attr_mapping = attributes[name] next unless attr_mapping ruby_value = base.to_ruby attr_mapping.type_name, value attr_mapping.set object, ruby_value end end
set_properties(base, frame, object)
click to toggle source
# File lib/wsdl_mapper/deserializers/class_mapping.rb, line 98 def set_properties(base, frame, object) frame.children.each do |child| name = child.name prop_mapping = properties[name] if BuiltinType.builtin? prop_mapping.type_name ruby_value = base.to_ruby prop_mapping.type_name, child.text prop_mapping.set object, ruby_value else prop_mapping.set object, child.object end end end
start(_base, _frame)
click to toggle source
# File lib/wsdl_mapper/deserializers/class_mapping.rb, line 54 def start(_base, _frame) end
wrapper?(name)
click to toggle source
# File lib/wsdl_mapper/deserializers/class_mapping.rb, line 50 def wrapper?(name) @wrappers[name] end