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