# File wsdl/xmlSchema/complexType.rb, line 95
def all_elements=(elements)
@content = All.new
elements.each do |element|
@content << element
end
end
# File wsdl/soap/complexType.rb, line 22
def check_type
if content
if attributes.empty? and
content.elements.size == 1 and content.elements[0].maxoccurs != '1'
if name == ::SOAP::Mapping::MapQName
:TYPE_MAP
else
:TYPE_ARRAY
end
else
:TYPE_STRUCT
end
elsif complexcontent
if complexcontent.base == ::SOAP::ValueArrayName
:TYPE_ARRAY
else
complexcontent.basetype.check_type
end
elsif simplecontent
:TYPE_SIMPLE
elsif !attributes.empty?
:TYPE_STRUCT
else # empty complexType definition (seen in partner.wsdl of salesforce)
:TYPE_EMPTY
end
end
# File wsdl/soap/complexType.rb, line 74
def child_defined_complextype(name)
ele = nil
case compoundtype
when :TYPE_STRUCT, :TYPE_MAP
unless ele = find_element(name)
if name.namespace.nil?
ele = find_element_by_name(name.name)
end
end
when :TYPE_ARRAY
if content.elements.size == 1
ele = content.elements[0]
else
raise RuntimeError.new("Assert: must not reach.")
end
else
raise RuntimeError.new("Assert: Not implemented.")
end
unless ele
raise RuntimeError.new("Cannot find #{name} as a children of #{@name}.")
end
ele.local_complextype
end
# File wsdl/soap/complexType.rb, line 49
def child_type(name = nil)
case compoundtype
when :TYPE_STRUCT
if ele = find_element(name)
ele.type
elsif ele = find_element_by_name(name.name)
ele.type
end
when :TYPE_ARRAY
@contenttype ||= content_arytype
when :TYPE_MAP
item_ele = find_element_by_name("item") or
raise RuntimeError.new("'item' element not found in Map definition.")
content = item_ele.local_complextype or
raise RuntimeError.new("No complexType definition for 'item'.")
if ele = content.find_element(name)
ele.type
elsif ele = content.find_element_by_name(name.name)
ele.type
end
else
raise NotImplementedError.new("Unknown kind of complexType.")
end
end
# File wsdl/soap/complexType.rb, line 18
def compoundtype
@compoundtype ||= check_type
end
# File wsdl/xmlSchema/complexType.rb, line 50
def each_element
if content
content.elements.each do |element|
if element.is_a?(Any)
yield(AnyAsElement)
else
yield(element)
end
end
end
end
# File wsdl/xmlSchema/complexType.rb, line 45
def elementformdefault
parent.elementformdefault
end
# File wsdl/soap/complexType.rb, line 117
def find_aryelement
unless compoundtype == :TYPE_ARRAY
raise RuntimeError.new("Assert: not for array")
end
if complexcontent
if check_array_content(complexcontent.content)
return complexcontent.content.elements[0]
end
elsif check_array_content(content)
return content.elements[0]
end
nil # use default item name
end
# File wsdl/soap/complexType.rb, line 98
def find_arytype
unless compoundtype == :TYPE_ARRAY
raise RuntimeError.new("Assert: not for array")
end
if complexcontent
complexcontent.attributes.each do |attribute|
if attribute.ref == ::SOAP::AttrArrayTypeName
return attribute.arytype
end
end
if check_array_content(complexcontent.content)
return element_simpletype(complexcontent.content.elements[0])
end
elsif check_array_content(content)
return element_simpletype(content.elements[0])
end
raise RuntimeError.new("Assert: Unknown array definition.")
end
# File wsdl/xmlSchema/complexType.rb, line 62
def find_element(name)
if content
content.elements.each do |element|
if element.is_a?(Any)
return AnyAsElement if name == AnyAsElement.name
else
return element if name == element.name
end
end
end
nil
end
# File wsdl/xmlSchema/complexType.rb, line 75
def find_element_by_name(name)
if content
content.elements.each do |element|
if element.is_a?(Any)
return AnyAsElement if name == AnyAsElement.name.name
else
return element if name == element.name.name
end
end
end
nil
end
# File wsdl/xmlSchema/complexType.rb, line 123
def parse_attr(attr, value)
case attr
when FinalAttrName
@final = value.source
when MixedAttrName
@mixed = (value.source == 'true')
when NameAttrName
@name = XSD::QName.new(targetnamespace, value.source)
else
nil
end
end
# File wsdl/xmlSchema/complexType.rb, line 102
def parse_element(element)
case element
when AllName
@content = All.new
when SequenceName
@content = Sequence.new
when ChoiceName
@content = Choice.new
when ComplexContentName
@complexcontent = ComplexContent.new
when SimpleContentName
@simplecontent = SimpleContent.new
when AttributeName
o = Attribute.new
@attributes << o
o
else
nil
end
end
Commenting is here to help enhance the documentation. For example, sample code, or clarification of the documentation.
If you are posting code samples in your comments, please wrap them in "<pre><code class="ruby" > ... </code></pre>" markup in order to get syntax highlighting.
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 a bug report so that it can be corrected for the next release. Thank you.