Class SOAP::SOAPReference
In: lib/soap/baseData.rb
Parent: XSD::NSDBase

Convenience datatypes.

Methods

Included Modules

SOAPBasetype

Attributes

refid  [RW] 

Public Class methods

[Source]

     # File lib/soap/baseData.rb, line 156
156:   def self.create_refid(obj)
157:     'id' + obj.__id__.to_s
158:   end

[Source]

     # 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.

[Source]

     # 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

Public Instance methods

[Source]

     # File lib/soap/baseData.rb, line 123
123:   def __getobj__
124:     @obj
125:   end

[Source]

     # 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…

[Source]

     # 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

[Source]

     # File lib/soap/baseData.rb, line 152
152:   def refidstr
153:     '#' + @refid
154:   end

[Validate]