Class SOAP::EncodingStyle::ASPDotNetHandler
In: lib/soap/encodingstyle/aspDotNetHandler.rb
Parent: Handler

Methods

Classes and Modules

Class SOAP::EncodingStyle::ASPDotNetHandler::SOAPTemporalObject
Class SOAP::EncodingStyle::ASPDotNetHandler::SOAPUnknown

Constants

Namespace = 'http://tempuri.org/ASP.NET'

Public Class methods

[Source]

    # File lib/soap/encodingstyle/aspDotNetHandler.rb, line 20
20:   def initialize(charset = nil)
21:     super(charset)
22:     @textbuf = ''
23:     @decode_typemap = nil
24:   end

Public Instance methods

[Source]

     # File lib/soap/encodingstyle/aspDotNetHandler.rb, line 147
147:   def decode_epilogue
148:   end

[Source]

     # File lib/soap/encodingstyle/aspDotNetHandler.rb, line 150
150:   def decode_parent(parent, node)
151:     case parent.node
152:     when SOAPUnknown
153:       newparent = parent.node.as_struct
154:       node.parent = newparent
155:       parent.replace_node(newparent)
156:       decode_parent(parent, node)
157: 
158:     when SOAPStruct
159:       data = parent.node[node.elename.name]
160:       case data
161:       when nil
162:         parent.node.add(node.elename.name, node)
163:       when SOAPArray
164:         name, type_ns = node.elename.name, node.type.namespace
165:         data.add(node)
166:         node.elename, node.type.namespace = name, type_ns
167:       else
168:         parent.node[node.elename.name] = SOAPArray.new
169:         name, type_ns = data.elename.name, data.type.namespace
170:         parent.node[node.elename.name].add(data)
171:         data.elename.name, data.type.namespace = name, type_ns
172:         name, type_ns = node.elename.name, node.type.namespace
173:         parent.node[node.elename.name].add(node)
174:         node.elename.name, node.type.namespace = name, type_ns
175:       end
176: 
177:     when SOAPArray
178:       if node.position
179:         parent.node[*(decode_arypos(node.position))] = node
180:         parent.node.sparse = true
181:       else
182:         parent.node.add(node)
183:       end
184: 
185:     when SOAPBasetype
186:       raise EncodingStyleError.new("SOAP base type must not have a child")
187: 
188:     else
189:       # SOAPUnknown does not have parent.
190:       # raise EncodingStyleError.new("illegal parent: #{parent}")
191:     end
192:   end

[Source]

     # File lib/soap/encodingstyle/aspDotNetHandler.rb, line 144
144:   def decode_prologue
145:   end

[Source]

     # File lib/soap/encodingstyle/aspDotNetHandler.rb, line 115
115:   def decode_tag(ns, elename, attrs, parent)
116:     @textbuf = ''
117:     o = SOAPUnknown.new(self, elename)
118:     o.parent = parent
119:     o
120:   end

[Source]

     # File lib/soap/encodingstyle/aspDotNetHandler.rb, line 122
122:   def decode_tag_end(ns, node)
123:     o = node.node
124:     if o.is_a?(SOAPUnknown)
125:       newnode = o.as_string
126: #       if /\A\s*\z/ =~ @textbuf
127: #         o.as_struct
128: #       else
129: #         o.as_string
130: #       end
131:       node.replace_node(newnode)
132:       o = node.node
133:     end
134: 
135:     decode_textbuf(o)
136:     @textbuf = ''
137:   end

[Source]

     # File lib/soap/encodingstyle/aspDotNetHandler.rb, line 139
139:   def decode_text(ns, text)
140:     # @textbuf is set at decode_tag_end.
141:     @textbuf << text
142:   end

encode interface.

[Source]

    # File lib/soap/encodingstyle/aspDotNetHandler.rb, line 30
30:   def encode_data(generator, ns, data, parent)
31:     attrs = {}
32:     # ASPDotNetHandler is intended to be used for accessing an ASP.NET doc/lit
33:     # service as an rpc/encoded service.  in the situation, local elements
34:     # should be qualified.  propagate parent's namespace to children.
35:     if data.elename.namespace.nil?
36:       data.elename.namespace = parent.elename.namespace
37:     end
38:     name = generator.encode_name(ns, data, attrs)
39:     case data
40:     when SOAPRawString
41:       generator.encode_tag(name, attrs)
42:       generator.encode_rawstring(data.to_s)
43:     when XSD::XSDString
44:       generator.encode_tag(name, attrs)
45:       generator.encode_string(@charset ?
46:         XSD::Charset.encoding_to_xml(data.to_s, @charset) : data.to_s)
47:     when XSD::XSDAnySimpleType
48:       generator.encode_tag(name, attrs)
49:       generator.encode_string(data.to_s)
50:     when SOAPStruct
51:       generator.encode_tag(name, attrs)
52:       data.each do |key, value|
53:         generator.encode_child(ns, value, data)
54:       end
55:     when SOAPArray
56:       generator.encode_tag(name, attrs)
57:       data.traverse do |child, *rank|
58:         data.position = nil
59:         generator.encode_child(ns, child, data)
60:       end
61:     else
62:       raise EncodingStyleError.new(
63:         "unknown object:#{data} in this encodingStyle")
64:     end
65:   end

[Source]

    # File lib/soap/encodingstyle/aspDotNetHandler.rb, line 67
67:   def encode_data_end(generator, ns, data, parent)
68:     name = generator.encode_name_end(ns, data)
69:     cr = data.is_a?(SOAPCompoundtype)
70:     generator.encode_tag_end(name, cr)
71:   end

Private Instance methods

[Source]

     # File lib/soap/encodingstyle/aspDotNetHandler.rb, line 196
196:   def decode_textbuf(node)
197:     if node.is_a?(XSD::XSDString)
198:       if @charset
199:         node.set(XSD::Charset.encoding_from_xml(@textbuf, @charset))
200:       else
201:         node.set(@textbuf)
202:       end
203:     else
204:       # Nothing to do...
205:     end
206:   end

[Validate]