diff options
author | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-07-03 15:29:32 +0000 |
---|---|---|
committer | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-07-03 15:29:32 +0000 |
commit | ab31bf0d4d44942e46d98d8848b788ac6df32a46 (patch) | |
tree | 303d964b43831f02c94f3970c9df2aca6e851edc /lib/wsdl | |
parent | df2066555d03b919be6f25fb7569abde8296d2f5 (diff) |
* added files
* lib/soap/attachment.rb
* lib/soap/header
* lib/soap/mimemessage.rb
* lib/soap/rpc/httpserver.rb
* lib/wsdl/soap/cgiStubCreator.rb
* lib/wsdl/soap/classDefCreator.rb
* lib/wsdl/soap/classDefCreatorSupport.rb
* lib/wsdl/soap/clientSkeltonCreator.rb
* lib/wsdl/soap/driverCreator.rb
* lib/wsdl/soap/mappingRegistryCreator.rb
* lib/wsdl/soap/methodDefCreator.rb
* lib/wsdl/soap/servantSkeltonCreator.rb
* lib/wsdl/soap/standaloneServerStubCreator.rb
* lib/wsdl/xmlSchema/enumeration.rb
* lib/wsdl/xmlSchema/simpleRestriction.rb
* lib/wsdl/xmlSchema/simpleType.rb
* lib/xsd/codegen
* lib/xsd/codegen.rb
* sample/soap/authheader
* sample/soap/raa2.4
* sample/soap/ssl
* sample/soap/swa
* sample/soap/whois.rb
* sample/soap/calc/samplehttpd.conf
* sample/soap/exchange/samplehttpd.conf
* sample/soap/sampleStruct/samplehttpd.conf
* sample/wsdl/raa2.4
* sample/wsdl/googleSearch/samplehttpd.conf
* test/openssl/_test_ssl.rb
* test/soap/header
* test/soap/ssl
* test/soap/struct
* test/soap/swa
* test/soap/wsdlDriver
* test/wsdl/multiplefault.wsdl
* test/wsdl/simpletype
* test/wsdl/test_multiplefault.rb
* modified files
* lib/soap/baseData.rb
* lib/soap/element.rb
* lib/soap/generator.rb
* lib/soap/marshal.rb
* lib/soap/netHttpClient.rb
* lib/soap/parser.rb
* lib/soap/processor.rb
* lib/soap/property.rb
* lib/soap/soap.rb
* lib/soap/streamHandler.rb
* lib/soap/wsdlDriver.rb
* lib/soap/encodingstyle/handler.rb
* lib/soap/encodingstyle/literalHandler.rb
* lib/soap/encodingstyle/soapHandler.rb
* lib/soap/mapping/factory.rb
* lib/soap/mapping/mapping.rb
* lib/soap/mapping/registry.rb
* lib/soap/mapping/rubytypeFactory.rb
* lib/soap/mapping/wsdlRegistry.rb
* lib/soap/rpc/cgistub.rb
* lib/soap/rpc/driver.rb
* lib/soap/rpc/element.rb
* lib/soap/rpc/proxy.rb
* lib/soap/rpc/router.rb
* lib/soap/rpc/soaplet.rb
* lib/soap/rpc/standaloneServer.rb
* lib/wsdl/data.rb
* lib/wsdl/definitions.rb
* lib/wsdl/operation.rb
* lib/wsdl/parser.rb
* lib/wsdl/soap/definitions.rb
* lib/wsdl/xmlSchema/complexContent.rb
* lib/wsdl/xmlSchema/complexType.rb
* lib/wsdl/xmlSchema/data.rb
* lib/wsdl/xmlSchema/parser.rb
* lib/wsdl/xmlSchema/schema.rb
* lib/xsd/datatypes.rb
* lib/xsd/qname.rb
* sample/soap/calc/httpd.rb
* sample/soap/exchange/httpd.rb
* sample/soap/sampleStruct/httpd.rb
* sample/soap/sampleStruct/server.rb
* sample/wsdl/amazon/AmazonSearch.rb
* sample/wsdl/amazon/AmazonSearchDriver.rb
* sample/wsdl/googleSearch/httpd.rb
* test/soap/test_basetype.rb
* test/soap/test_property.rb
* test/soap/test_streamhandler.rb
* test/soap/calc/test_calc.rb
* test/soap/calc/test_calc2.rb
* test/soap/calc/test_calc_cgi.rb
* test/soap/helloworld/test_helloworld.rb
* test/wsdl/test_emptycomplextype.rb
* test/wsdl/axisArray/test_axisarray.rb
* test/wsdl/datetime/test_datetime.rb
* test/wsdl/raa/test_raa.rb
* test/xsd/test_xmlschemaparser.rb
* test/xsd/test_xsd.rb
* summary
* add SOAP Header mustUnderstand support.
* add HTTP client SSL configuration and Cookies support (works
completely with http-access2).
* add header handler for handling sending/receiving SOAP Header.
* map Ruby's anonymous Struct to common SOAP Struct in SOAP Object
Model. it caused error.
* add WSDL simpleType support to restrict lexical value space.
* add SOAP with Attachment support.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6567 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/wsdl')
-rw-r--r-- | lib/wsdl/data.rb | 1 | ||||
-rw-r--r-- | lib/wsdl/definitions.rb | 21 | ||||
-rw-r--r-- | lib/wsdl/operation.rb | 2 | ||||
-rw-r--r-- | lib/wsdl/parser.rb | 3 | ||||
-rw-r--r-- | lib/wsdl/soap/definitions.rb | 28 | ||||
-rw-r--r-- | lib/wsdl/xmlSchema/complexContent.rb | 4 | ||||
-rw-r--r-- | lib/wsdl/xmlSchema/complexType.rb | 22 | ||||
-rw-r--r-- | lib/wsdl/xmlSchema/data.rb | 7 | ||||
-rw-r--r-- | lib/wsdl/xmlSchema/parser.rb | 3 | ||||
-rw-r--r-- | lib/wsdl/xmlSchema/schema.rb | 13 |
10 files changed, 90 insertions, 14 deletions
diff --git a/lib/wsdl/data.rb b/lib/wsdl/data.rb index 8a14dd14d7..45eaad8526 100644 --- a/lib/wsdl/data.rb +++ b/lib/wsdl/data.rb @@ -6,6 +6,7 @@ # either the dual license version in 2003, or any later version. +require 'xsd/qname' require 'wsdl/documentation' require 'wsdl/definitions' require 'wsdl/types' diff --git a/lib/wsdl/definitions.rb b/lib/wsdl/definitions.rb index 561a335744..c530220fde 100644 --- a/lib/wsdl/definitions.rb +++ b/lib/wsdl/definitions.rb @@ -43,8 +43,7 @@ class Definitions < Info end def inspect - name = @name || '(unnamed)' - "#<#{self.class}:#{name}>" + sprintf("#<%s:0x%x %s>", self.class.name, __id__, @name || '(unnamed)') end def targetnamespace=(targetnamespace) @@ -58,7 +57,7 @@ class Definitions < Info result = XSD::NamedElements.new if @types @types.schemas.each do |schema| - result.concat(schema.elements) + result.concat(schema.collect_elements) end end @imports.each do |import| @@ -71,7 +70,7 @@ class Definitions < Info result = @anontypes.dup if @types @types.schemas.each do |schema| - result.concat(schema.complextypes) + result.concat(schema.collect_complextypes) end end @imports.each do |import| @@ -80,6 +79,20 @@ class Definitions < Info result end + def collect_simpletypes + result = XSD::NamedElements.new + if @types + @types.schemas.each do |schema| + result.concat(schema.collect_simpletypes) + end + end + @imports.each do |import| + result.concat(import.content.collect_simpletypes) + end + result + end + + # ToDo: simpletype must be accepted... def add_type(complextype) @anontypes << complextype end diff --git a/lib/wsdl/operation.rb b/lib/wsdl/operation.rb index 228dc85b05..be28446d34 100644 --- a/lib/wsdl/operation.rb +++ b/lib/wsdl/operation.rb @@ -119,7 +119,7 @@ private return parts.dup end if parts.length != result.length - raise RuntimeError.new("Incomplete parameter order list.") + raise RuntimeError.new("Incomplete prarmeterOrder list.") end result end diff --git a/lib/wsdl/parser.rb b/lib/wsdl/parser.rb index 7e7a4d8bce..6387911f79 100644 --- a/lib/wsdl/parser.rb +++ b/lib/wsdl/parser.rb @@ -119,7 +119,8 @@ private STDERR.puts("Unknown element #{ element }.") o = Documentation.new # which accepts any element. end - o.parent = parent + # node could be a pseudo element. pseudo element has its own parent. + o.parent = parent if o.parent.nil? end attrs.each do |key, value| attr = unless /:/ =~ key diff --git a/lib/wsdl/soap/definitions.rb b/lib/wsdl/soap/definitions.rb index 7a62242204..2f6e7e19f0 100644 --- a/lib/wsdl/soap/definitions.rb +++ b/lib/wsdl/soap/definitions.rb @@ -75,8 +75,36 @@ class Definitions < Info types + self.class.soap_rpc_complextypes end + def collect_faulttypes + result = [] + collect_fault_messages.each do |message| + parts = message(message).parts + if parts.size != 1 + raise RuntimeError.new("Expecting fault message to have only 1 part.") + end + if result.index(parts[0].type).nil? + result << parts[0].type + end + end + result + end + private + def collect_fault_messages + result = [] + porttypes.each do |porttype| + porttype.operations.each do |operation| + operation.fault.each do |fault| + if result.index(fault.message).nil? + result << fault.message + end + end + end + end + result + end + def rpc_operation_complextypes(binding) types = XSD::NamedElements.new binding.operations.each do |op_bind| diff --git a/lib/wsdl/xmlSchema/complexContent.rb b/lib/wsdl/xmlSchema/complexContent.rb index 22f6851864..66ad9e251d 100644 --- a/lib/wsdl/xmlSchema/complexContent.rb +++ b/lib/wsdl/xmlSchema/complexContent.rb @@ -28,6 +28,10 @@ class ComplexContent < Info @attributes = XSD::NamedElements.new end + def targetnamespace + parent.targetnamespace + end + def parse_element(element) case element when RestrictionName, ExtensionName diff --git a/lib/wsdl/xmlSchema/complexType.rb b/lib/wsdl/xmlSchema/complexType.rb index e889482d09..056a806dc5 100644 --- a/lib/wsdl/xmlSchema/complexType.rb +++ b/lib/wsdl/xmlSchema/complexType.rb @@ -8,6 +8,7 @@ require 'wsdl/info' require 'wsdl/xmlSchema/content' +require 'wsdl/xmlSchema/element' require 'xsd/namedelements' @@ -36,11 +37,16 @@ class ComplexType < Info def targetnamespace parent.targetnamespace end - + + AnyAsElement = Element.new(XSD::QName.new(nil, 'any'), XSD::AnyTypeName) def each_element if @content @content.elements.each do |element| - yield(element.name, element) + if element.is_a?(Any) + yield(AnyAsElement) + else + yield(element) + end end end end @@ -48,7 +54,11 @@ class ComplexType < Info def find_element(name) if @content @content.elements.each do |element| - return element if name == element.name + if element.is_a?(Any) + return AnyAsElement if name == AnyAsElement.name + else + return element if name == element.name + end end end nil @@ -57,7 +67,11 @@ class ComplexType < Info def find_element_by_name(name) if @content @content.elements.each do |element| - return element if name == element.name.name + if element.is_a?(Any) + return AnyAsElement if name == AnyAsElement.name.name + else + return element if name == element.name.name + end end end nil diff --git a/lib/wsdl/xmlSchema/data.rb b/lib/wsdl/xmlSchema/data.rb index 2fa8ad6a91..1283ac2a1d 100644 --- a/lib/wsdl/xmlSchema/data.rb +++ b/lib/wsdl/xmlSchema/data.rb @@ -6,8 +6,11 @@ # either the dual license version in 2003, or any later version. +require 'xsd/datatypes' require 'wsdl/xmlSchema/schema' require 'wsdl/xmlSchema/import' +require 'wsdl/xmlSchema/simpleType' +require 'wsdl/xmlSchema/simpleRestriction' require 'wsdl/xmlSchema/complexType' require 'wsdl/xmlSchema/complexContent' require 'wsdl/xmlSchema/any' @@ -17,7 +20,7 @@ require 'wsdl/xmlSchema/choice' require 'wsdl/xmlSchema/sequence' require 'wsdl/xmlSchema/attribute' require 'wsdl/xmlSchema/unique' - +require 'wsdl/xmlSchema/enumeration' module WSDL module XMLSchema @@ -30,6 +33,7 @@ ChoiceName = XSD::QName.new(XSD::Namespace, 'choice') ComplexContentName = XSD::QName.new(XSD::Namespace, 'complexContent') ComplexTypeName = XSD::QName.new(XSD::Namespace, 'complexType') ElementName = XSD::QName.new(XSD::Namespace, 'element') +EnumerationName = XSD::QName.new(XSD::Namespace, 'enumeration') ExtensionName = XSD::QName.new(XSD::Namespace, 'extension') ImportName = XSD::QName.new(XSD::Namespace, 'import') RestrictionName = XSD::QName.new(XSD::Namespace, 'restriction') @@ -57,6 +61,7 @@ SchemaLocationAttrName = XSD::QName.new(nil, 'schemaLocation') TargetNamespaceAttrName = XSD::QName.new(nil, 'targetNamespace') TypeAttrName = XSD::QName.new(nil, 'type') UseAttrName = XSD::QName.new(nil, 'use') +ValueAttrName = XSD::QName.new(nil, 'value') end diff --git a/lib/wsdl/xmlSchema/parser.rb b/lib/wsdl/xmlSchema/parser.rb index 688af27c8c..5401c5f729 100644 --- a/lib/wsdl/xmlSchema/parser.rb +++ b/lib/wsdl/xmlSchema/parser.rb @@ -116,7 +116,8 @@ private unless o raise UnknownElementError.new("Unknown element #{ element }.") end - o.parent = parent + # node could be a pseudo element. pseudo element has its own parent. + o.parent = parent if o.parent.nil? end attrs.each do |key, value| attr = unless /:/ =~ key diff --git a/lib/wsdl/xmlSchema/schema.rb b/lib/wsdl/xmlSchema/schema.rb index b2a195d41f..b530a92556 100644 --- a/lib/wsdl/xmlSchema/schema.rb +++ b/lib/wsdl/xmlSchema/schema.rb @@ -17,6 +17,7 @@ module XMLSchema class Schema < Info attr_reader :targetnamespace # required attr_reader :complextypes + attr_reader :simpletypes attr_reader :elements attr_reader :attributes attr_reader :imports @@ -27,6 +28,7 @@ class Schema < Info super @targetnamespace = nil @complextypes = XSD::NamedElements.new + @simpletypes = XSD::NamedElements.new @elements = XSD::NamedElements.new @attributes = XSD::NamedElements.new @imports = [] @@ -44,8 +46,9 @@ class Schema < Info @complextypes << o o when SimpleTypeName - STDERR.puts("Restriction of basetype with simpleType definition is ignored for now.") - nil + o = SimpleType.new + @simpletypes << o + o when ElementName o = Element.new @elements << o @@ -83,6 +86,12 @@ class Schema < Info result end + def collect_simpletypes + result = XSD::NamedElements.new + result.concat(@simpletypes) + result + end + def self.parse_element(element) if element == SchemaName Schema.new |