Class: SOAP::SOAPReference

Inherits:
XSD::NSDBase show all
Extended by:
SOAPModuleUtils
Includes:
SOAPBasetype
Defined in:
lib/soap/baseData.rb

Overview

Convenience datatypes.

Constant Summary

Constants included from SOAP

AttrActor, AttrActorName, AttrArrayType, AttrArrayTypeName, AttrEncodingStyle, AttrEncodingStyleName, AttrMustUnderstand, AttrMustUnderstandName, AttrOffset, AttrOffsetName, AttrPosition, AttrPositionName, AttrRoot, AttrRootName, Base64Literal, Charset, EleBody, EleBodyName, EleEnvelope, EleEnvelopeName, EleFault, EleFaultActor, EleFaultActorName, EleFaultCode, EleFaultCodeName, EleFaultDetail, EleFaultDetailName, EleFaultName, EleFaultString, EleFaultStringName, EleHeader, EleHeaderName, EncodingNamespace, EnvelopeNamespace, LiteralNamespace, MediaType, NS, NextActor, PropertyName, RPCRouter, RPCServerException, RPCUtils, SOAPNamespaceTag, SOAPProxy, TypeMap, VERSION, ValueArray, ValueArrayName, XSDNamespaceTag, XSINamespaceTag

Instance Attribute Summary collapse

Attributes included from SOAPBasetype

#qualified

Attributes included from SOAPType

#definedtype, #elename, #encodingstyle, #extraattr, #id, #parent, #position, #precedents, #root

Attributes inherited from XSD::NSDBase

#type

Class Method Summary collapse

Instance Method Summary collapse

Methods included from SOAPModuleUtils

decode

Methods included from SOAPType

#inspect, #rootnode

Methods inherited from XSD::NSDBase

inherited, #init, types

Constructor Details

#initialize(obj = nil) ⇒ SOAPReference

Override the definition in SOAPBasetype.



121
122
123
124
125
126
127
# File 'lib/soap/baseData.rb', line 121

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…



150
151
152
153
154
155
156
# File 'lib/soap/baseData.rb', line 150

def method_missing(msg_id, *params)
  if @obj
    @obj.send(msg_id, *params)
  else
    nil
  end
end

Instance Attribute Details

#refidObject

Returns the value of attribute refid.



118
119
120
# File 'lib/soap/baseData.rb', line 118

def refid
  @refid
end

Class Method Details

.create_refid(obj) ⇒ Object



162
163
164
# File 'lib/soap/baseData.rb', line 162

def self.create_refid(obj)
  'id' + obj.__id__.to_s
end

.decode(elename, refidstr) ⇒ Object



166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/soap/baseData.rb', line 166

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



129
130
131
# File 'lib/soap/baseData.rb', line 129

def __getobj__
  @obj
end

#__setobj__(obj) ⇒ Object



133
134
135
136
137
138
139
140
# File 'lib/soap/baseData.rb', line 133

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

#refidstrObject



158
159
160
# File 'lib/soap/baseData.rb', line 158

def refidstr
  '#' + @refid
end