| Class | SOAP::SOAPReference |
| In: |
lib/soap/baseData.rb
|
| Parent: | XSD::NSDBase |
Convenience datatypes.
| refid | [RW] |
# File lib/soap/baseData.rb, line 156
156: def self.create_refid(obj)
157: 'id' + obj.__id__.to_s
158: end
# File lib/soap/baseData.rb, line 160
160: def self.decode(elename, refidstr)
161: if /\A#(.*)\z/ =~ refidstr
162: refid = $1
163: elsif /\Acid:(.*)\z/ =~ refidstr
164: refid = $1
165: else
166: raise ArgumentError.new("illegal refid #{refidstr}")
167: end
168: d = super(elename)
169: d.refid = refid
170: d
171: end
Override the definition in SOAPBasetype.
# File lib/soap/baseData.rb, line 115
115: def initialize(obj = nil)
116: super()
117: @type = XSD::QName::EMPTY
118: @refid = nil
119: @obj = nil
120: __setobj__(obj) if obj
121: end
# File lib/soap/baseData.rb, line 127
127: def __setobj__(obj)
128: @obj = obj
129: @refid = @obj.id || SOAPReference.create_refid(@obj)
130: @obj.id = @refid unless @obj.id
131: @obj.precedents << self
132: # Copies NSDBase information
133: @obj.type = @type unless @obj.type
134: end
Why don‘t I use delegate.rb? -> delegate requires target object type at initialize time. Why don‘t I use forwardable.rb? -> forwardable requires a list of forwarding methods.
ToDo: Maybe I should use forwardable.rb and give it a methods list like delegate.rb…
# File lib/soap/baseData.rb, line 144
144: def method_missing(msg_id, *params)
145: if @obj
146: @obj.send(msg_id, *params)
147: else
148: nil
149: end
150: end