Class: SOAP::SOAPReference
- Inherits:
-
XSD::NSDBase
- Object
- XSD::NSDBase
- SOAP::SOAPReference
- Extended by:
- SOAPModuleUtils
- Includes:
- SOAPBasetype
- Defined in:
- lib/soap4r_19_patch/soap/baseData.rb
Overview
Convenience datatypes.
Constant Summary
Constants included from SOAP
Instance Attribute Summary collapse
-
#refid ⇒ Object
Returns the value of attribute refid.
Attributes included from SOAPBasetype
Attributes included from SOAPType
#definedtype, #elename, #encodingstyle, #extraattr, #id, #parent, #position, #precedents, #root
Class Method Summary collapse
Instance Method Summary collapse
- #__getobj__ ⇒ Object
- #__setobj__(obj) ⇒ Object
-
#data ⇒ Object
for referenced base type such as a long value from Axis.
-
#initialize(obj = nil) ⇒ SOAPReference
constructor
Override the definition in SOAPBasetype.
-
#method_missing(msg_id, *params) ⇒ Object
Why don’t I use delegate.rb? -> delegate requires target object type at initialize time.
- #refidstr ⇒ Object
Methods included from SOAPModuleUtils
Methods included from SOAPType
Constructor Details
#initialize(obj = nil) ⇒ SOAPReference
Override the definition in SOAPBasetype.
131 132 133 134 135 136 137 |
# File 'lib/soap4r_19_patch/soap/baseData.rb', line 131 def initialize(obj = nil) super() @type = XSD::QName::EMPTY @refid = nil @obj = nil __setobj__(obj) if obj end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(msg_id, *params) ⇒ Object
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…
160 161 162 163 164 165 166 |
# File 'lib/soap4r_19_patch/soap/baseData.rb', line 160 def method_missing(msg_id, *params) if @obj @obj.send(msg_id, *params) else nil end end |
Instance Attribute Details
#refid ⇒ Object
Returns the value of attribute refid.
128 129 130 |
# File 'lib/soap4r_19_patch/soap/baseData.rb', line 128 def refid @refid end |
Class Method Details
.create_refid(obj) ⇒ Object
180 181 182 |
# File 'lib/soap4r_19_patch/soap/baseData.rb', line 180 def self.create_refid(obj) 'id' + obj.__id__.to_s end |
.decode(elename, refidstr) ⇒ Object
184 185 186 187 188 189 190 191 192 193 194 195 |
# File 'lib/soap4r_19_patch/soap/baseData.rb', line 184 def self.decode(elename, refidstr) if /\A#(.*)\z/ =~ refidstr refid = $1 elsif /\Acid:(.*)\z/ =~ refidstr refid = $1 else raise ArgumentError.new("illegal refid #{refidstr}") end d = super(elename) d.refid = refid d end |
Instance Method Details
#__getobj__ ⇒ Object
139 140 141 |
# File 'lib/soap4r_19_patch/soap/baseData.rb', line 139 def __getobj__ @obj end |
#__setobj__(obj) ⇒ Object
143 144 145 146 147 148 149 150 |
# File 'lib/soap4r_19_patch/soap/baseData.rb', line 143 def __setobj__(obj) @obj = obj @refid = @obj.id || SOAPReference.create_refid(@obj) @obj.id = @refid unless @obj.id @obj.precedents << self # Copies NSDBase information @obj.type = @type unless @obj.type end |
#data ⇒ Object
for referenced base type such as a long value from Axis. base2obj requires a node to respond to :data
170 171 172 173 174 |
# File 'lib/soap4r_19_patch/soap/baseData.rb', line 170 def data if @obj.respond_to?(:data) @obj.data end end |
#refidstr ⇒ Object
176 177 178 |
# File 'lib/soap4r_19_patch/soap/baseData.rb', line 176 def refidstr '#' + @refid end |