summaryrefslogtreecommitdiff
path: root/lib/wsdl/soap/definitions.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/wsdl/soap/definitions.rb')
-rw-r--r--lib/wsdl/soap/definitions.rb28
1 files changed, 28 insertions, 0 deletions
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|