Class: WsdlMapper::Deserializers::ClassMapping
- Inherits:
-
Object
- Object
- WsdlMapper::Deserializers::ClassMapping
- Includes:
- WsdlMapper::Dom
- Defined in:
- lib/wsdl_mapper/deserializers/class_mapping.rb
Defined Under Namespace
Classes: Delegate
Constant Summary
- XSI_NS =
'http://www.w3.org/2001/XMLSchema-instance'
- XSI_NIL =
WsdlMapper::Dom::Name.get XSI_NS, 'nil'
Instance Attribute Summary (collapse)
-
- (Object) attributes
readonly
Returns the value of attribute attributes.
-
- (Object) properties
readonly
Returns the value of attribute properties.
Instance Method Summary (collapse)
- - (Object) build_object(base, frame)
- - (Object) end(base, frame)
- - (Object) get_type_name_for_prop(prop_name)
-
- (ClassMapping) initialize(cls, simple: false, &block)
constructor
A new instance of ClassMapping.
- - (Boolean) nil_attr?(attrs)
- - (Object) register_attr(accessor, attr_name, type_name)
- - (Object) register_delegate(accessor, type_name)
- - (Object) register_prop(accessor, prop_name, type_name, array: false)
- - (Object) register_wrapper(name)
- - (Object) set_attributes(base, frame, object)
- - (Object) set_properties(base, frame, object)
- - (Object) start(base, frame)
- - (Boolean) wrapper?(name)
Constructor Details
- (ClassMapping) initialize(cls, simple: false, &block)
Returns a new instance of ClassMapping
20 21 22 23 24 25 26 27 |
# 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 instance_exec &block end |
Instance Attribute Details
- (Object) attributes (readonly)
Returns the value of attribute attributes
18 19 20 |
# File 'lib/wsdl_mapper/deserializers/class_mapping.rb', line 18 def attributes @attributes end |
- (Object) properties (readonly)
Returns the value of attribute properties
18 19 20 |
# File 'lib/wsdl_mapper/deserializers/class_mapping.rb', line 18 def properties @properties end |
Instance Method Details
- (Object) build_object(base, frame)
80 81 82 83 84 85 86 87 88 |
# File 'lib/wsdl_mapper/deserializers/class_mapping.rb', line 80 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 |
- (Object) end(base, frame)
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/wsdl_mapper/deserializers/class_mapping.rb', line 56 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 |
- (Object) get_type_name_for_prop(prop_name)
90 91 92 93 94 95 |
# File 'lib/wsdl_mapper/deserializers/class_mapping.rb', line 90 def get_type_name_for_prop(prop_name) @properties[prop_name].type_name rescue Errors::UnknownElementError => e e.parent = @cls raise e end |
- (Boolean) nil_attr?(attrs)
73 74 75 76 77 78 |
# File 'lib/wsdl_mapper/deserializers/class_mapping.rb', line 73 def nil_attr? attrs # TODO: test !!attrs.find do |(name, _)| name == XSI_NIL end end |
- (Object) register_attr(accessor, attr_name, type_name)
29 30 31 32 |
# File 'lib/wsdl_mapper/deserializers/class_mapping.rb', line 29 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 |
- (Object) register_delegate(accessor, type_name)
39 40 41 |
# File 'lib/wsdl_mapper/deserializers/class_mapping.rb', line 39 def register_delegate(accessor, type_name) @delegate = Delegate.new accessor, Name.get(*type_name) end |
- (Object) register_prop(accessor, prop_name, type_name, array: false)
34 35 36 37 |
# File 'lib/wsdl_mapper/deserializers/class_mapping.rb', line 34 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 |
- (Object) register_wrapper(name)
43 44 45 46 |
# File 'lib/wsdl_mapper/deserializers/class_mapping.rb', line 43 def register_wrapper(name) name = Name.get *name @wrappers[name] = true end |
- (Object) set_attributes(base, frame, object)
111 112 113 114 115 116 117 118 |
# File 'lib/wsdl_mapper/deserializers/class_mapping.rb', line 111 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 |
- (Object) set_properties(base, frame, object)
97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/wsdl_mapper/deserializers/class_mapping.rb', line 97 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 |
- (Object) start(base, frame)
52 53 54 |
# File 'lib/wsdl_mapper/deserializers/class_mapping.rb', line 52 def start(base, frame) # frame.object = @simple ? @cls.new(nil) : @cls.new end |
- (Boolean) wrapper?(name)
48 49 50 |
# File 'lib/wsdl_mapper/deserializers/class_mapping.rb', line 48 def wrapper?(name) @wrappers[name] end |