Handler
# File soap/encodingstyle/aspDotNetHandler.rb, line 147
def decode_epilogue
end
# File soap/encodingstyle/aspDotNetHandler.rb, line 150
def decode_parent(parent, node)
case parent.node
when SOAPUnknown
newparent = parent.node.as_struct
node.parent = newparent
parent.replace_node(newparent)
decode_parent(parent, node)
when SOAPStruct
data = parent.node[node.elename.name]
case data
when nil
parent.node.add(node.elename.name, node)
when SOAPArray
name, type_ns = node.elename.name, node.type.namespace
data.add(node)
node.elename, node.type.namespace = name, type_ns
else
parent.node[node.elename.name] = SOAPArray.new
name, type_ns = data.elename.name, data.type.namespace
parent.node[node.elename.name].add(data)
data.elename.name, data.type.namespace = name, type_ns
name, type_ns = node.elename.name, node.type.namespace
parent.node[node.elename.name].add(node)
node.elename.name, node.type.namespace = name, type_ns
end
when SOAPArray
if node.position
parent.node[*(decode_arypos(node.position))] = node
parent.node.sparse = true
else
parent.node.add(node)
end
when SOAPBasetype
raise EncodingStyleError.new("SOAP base type must not have a child")
else
# SOAPUnknown does not have parent.
# raise EncodingStyleError.new("illegal parent: #{parent}")
end
end
# File soap/encodingstyle/aspDotNetHandler.rb, line 144
def decode_prologue
end
# File soap/encodingstyle/aspDotNetHandler.rb, line 115
def decode_tag(ns, elename, attrs, parent)
@textbuf = ''
o = SOAPUnknown.new(self, elename)
o.parent = parent
o
end
# File soap/encodingstyle/aspDotNetHandler.rb, line 122
def decode_tag_end(ns, node)
o = node.node
if o.is_a?(SOAPUnknown)
newnode = o.as_string
# if /\A\s*\z/ =~ @textbuf
# o.as_struct
# else
# o.as_string
# end
node.replace_node(newnode)
o = node.node
end
decode_textbuf(o)
@textbuf = ''
end
# File soap/encodingstyle/aspDotNetHandler.rb, line 139
def decode_text(ns, text)
# @textbuf is set at decode_tag_end.
@textbuf << text
end
encode interface.
# File soap/encodingstyle/aspDotNetHandler.rb, line 30
def encode_data(generator, ns, data, parent)
attrs = {}
# ASPDotNetHandler is intended to be used for accessing an ASP.NET doc/lit
# service as an rpc/encoded service. in the situation, local elements
# should be qualified. propagate parent's namespace to children.
if data.elename.namespace.nil?
data.elename.namespace = parent.elename.namespace
end
name = generator.encode_name(ns, data, attrs)
case data
when SOAPRawString
generator.encode_tag(name, attrs)
generator.encode_rawstring(data.to_s)
when XSD::XSDString
generator.encode_tag(name, attrs)
generator.encode_string(@charset ?
XSD::Charset.encoding_to_xml(data.to_s, @charset) : data.to_s)
when XSD::XSDAnySimpleType
generator.encode_tag(name, attrs)
generator.encode_string(data.to_s)
when SOAPStruct
generator.encode_tag(name, attrs)
data.each do |key, value|
generator.encode_child(ns, value, data)
end
when SOAPArray
generator.encode_tag(name, attrs)
data.traverse do |child, *rank|
data.position = nil
generator.encode_child(ns, child, data)
end
else
raise EncodingStyleError.new(
"unknown object:#{data} in this encodingStyle")
end
end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please see Improve the docs, or visit Documenting-ruby.org.