diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-07 07:38:25 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-07 07:38:25 +0000 |
commit | 9ff1e787f915539b1980654e3d3d2013ff5c81d2 (patch) | |
tree | 8d0fc9ca5b4dbfa9885dc56862292d55091bcaac /ruby_1_8_6/lib/wsdl/soap/complexType.rb | |
parent | 441546edcfbb1b346c87b69c5f578d1a0e522e06 (diff) |
wrong commit; sorryv1_8_6_269
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_6_269@17938 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby_1_8_6/lib/wsdl/soap/complexType.rb')
-rw-r--r-- | ruby_1_8_6/lib/wsdl/soap/complexType.rb | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/ruby_1_8_6/lib/wsdl/soap/complexType.rb b/ruby_1_8_6/lib/wsdl/soap/complexType.rb deleted file mode 100644 index b2e13d0564..0000000000 --- a/ruby_1_8_6/lib/wsdl/soap/complexType.rb +++ /dev/null @@ -1,161 +0,0 @@ -# WSDL4R - SOAP complexType definition for WSDL. -# Copyright (C) 2002, 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>. - -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -require 'wsdl/xmlSchema/complexType' -require 'soap/mapping' - - -module WSDL -module XMLSchema - - -class ComplexType < Info - def compoundtype - @compoundtype ||= check_type - end - - 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 - - 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 - - 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 - - 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 - - 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 - -private - - def element_simpletype(element) - if element.type - element.type - elsif element.local_simpletype - element.local_simpletype.base - else - nil - end - end - - def check_array_content(content) - content and content.elements.size == 1 and - content.elements[0].maxoccurs != '1' - end - - def content_arytype - if arytype = find_arytype - ns = arytype.namespace - name = arytype.name.sub(/\[(?:,)*\]$/, '') - XSD::QName.new(ns, name) - else - nil - end - end -end - - -end -end |