summaryrefslogtreecommitdiff
path: root/lib/wsdl
diff options
context:
space:
mode:
authornahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-11-30 04:33:02 +0000
committernahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-11-30 04:33:02 +0000
commitd268bf305e926b5418d843098e35462cf97df662 (patch)
tree4268267cc8e52a533e4c78490ce6c2009971f972 /lib/wsdl
parent165d101eed53d09aa614d93557b077305a52006b (diff)
* lib/soap/encodingstyle/soapHandler.rb: refactoring - Simplifying
Conditional Expressions. * lib/wsdl/soap/definitions.rb: refactoring - Move Method. * test/xsd/{test_noencoding.rb,noencoding.xml}: new files. test for encoding unspecified XML file parsing. * test/wsdl/{test_fault.rb,map,datetime}: new files. test of SOAPFault, dateTime and Apache's Map. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5060 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/wsdl')
-rw-r--r--lib/wsdl/soap/definitions.rb103
1 files changed, 54 insertions, 49 deletions
diff --git a/lib/wsdl/soap/definitions.rb b/lib/wsdl/soap/definitions.rb
index 1a152ee693..7a62242204 100644
--- a/lib/wsdl/soap/definitions.rb
+++ b/lib/wsdl/soap/definitions.rb
@@ -15,59 +15,15 @@ module WSDL
class Definitions < Info
- def soap_rpc_complextypes(binding)
- types = rpc_operation_complextypes(binding)
+ def self.soap_rpc_complextypes
+ types = XSD::NamedElements.new
types << array_complextype
types << fault_complextype
types << exception_complextype
types
end
-private
-
- def rpc_operation_complextypes(binding)
- types = XSD::NamedElements.new
- binding.operations.each do |op_bind|
- if op_bind_rpc?(op_bind)
- operation = op_bind.find_operation
- if op_bind.input
- type = XMLSchema::ComplexType.new(operation_input_name(operation))
- message = messages[operation.input.message]
- type.sequence_elements = elements_from_message(message)
- types << type
- end
- if op_bind.output
- type = XMLSchema::ComplexType.new(operation_output_name(operation))
- message = messages[operation.output.message]
- type.sequence_elements = elements_from_message(message)
- types << type
- end
- end
- end
- types
- end
-
- def operation_input_name(operation)
- operation.input.name || operation.name
- end
-
- def operation_output_name(operation)
- operation.output.name ||
- XSD::QName.new(operation.name.namespace, operation.name.name + "Response")
- end
-
- def op_bind_rpc?(op_bind)
- op_bind.soapoperation and op_bind.soapoperation.operation_style == :rpc
- end
-
- def elements_from_message(message)
- message.parts.collect { |part|
- qname = XSD::QName.new(nil, part.name)
- XMLSchema::Element.new(qname, part.type)
- }
- end
-
- def array_complextype
+ def self.array_complextype
type = XMLSchema::ComplexType.new(::SOAP::ValueArrayName)
type.complexcontent = XMLSchema::ComplexContent.new
type.complexcontent.base = ::SOAP::ValueArrayName
@@ -90,7 +46,7 @@ private
</xs:sequence>
</xs:complexType>
=end
- def fault_complextype
+ def self.fault_complextype
type = XMLSchema::ComplexType.new(::SOAP::EleFaultName)
faultcode = XMLSchema::Element.new(::SOAP::EleFaultCodeName, XSD::XSDQName::Type)
faultstring = XMLSchema::Element.new(::SOAP::EleFaultStringName, XSD::XSDString::Type)
@@ -103,7 +59,7 @@ private
type
end
- def exception_complextype
+ def self.exception_complextype
type = XMLSchema::ComplexType.new(XSD::QName.new(
::SOAP::Mapping::RubyCustomTypeNamespace, 'SOAPException'))
excn_name = XMLSchema::Element.new(XSD::QName.new(nil, 'excn_type_name'), XSD::XSDString::Type)
@@ -113,6 +69,55 @@ private
type.all_elements = [excn_name, cause, backtrace, message]
type
end
+
+ def soap_rpc_complextypes(binding)
+ types = rpc_operation_complextypes(binding)
+ types + self.class.soap_rpc_complextypes
+ end
+
+private
+
+ def rpc_operation_complextypes(binding)
+ types = XSD::NamedElements.new
+ binding.operations.each do |op_bind|
+ if op_bind_rpc?(op_bind)
+ operation = op_bind.find_operation
+ if op_bind.input
+ type = XMLSchema::ComplexType.new(operation_input_name(operation))
+ message = messages[operation.input.message]
+ type.sequence_elements = elements_from_message(message)
+ types << type
+ end
+ if op_bind.output
+ type = XMLSchema::ComplexType.new(operation_output_name(operation))
+ message = messages[operation.output.message]
+ type.sequence_elements = elements_from_message(message)
+ types << type
+ end
+ end
+ end
+ types
+ end
+
+ def operation_input_name(operation)
+ operation.input.name || operation.name
+ end
+
+ def operation_output_name(operation)
+ operation.output.name ||
+ XSD::QName.new(operation.name.namespace, operation.name.name + "Response")
+ end
+
+ def op_bind_rpc?(op_bind)
+ op_bind.soapoperation and op_bind.soapoperation.operation_style == :rpc
+ end
+
+ def elements_from_message(message)
+ message.parts.collect { |part|
+ qname = XSD::QName.new(nil, part.name)
+ XMLSchema::Element.new(qname, part.type)
+ }
+ end
end