Class: WashoutBuilder::Document::Generator
- Inherits:
-
Object
- Object
- WashoutBuilder::Document::Generator
- Defined in:
- lib/washout_builder/document/generator.rb
Instance Method Summary collapse
- #actions_with_exceptions ⇒ Object
- #argument_types(type) ⇒ Object
- #complex_types ⇒ Object
- #controller_class(controller) ⇒ Object
- #endpoint ⇒ Object
- #exceptions_raised ⇒ Object
- #fault_types ⇒ Object
- #filter_exceptions_raised ⇒ Object
- #get_complex_fault_types(base_fault_array) ⇒ Object
- #get_soap_action_names ⇒ Object
-
#initialize(controller) ⇒ Generator
constructor
A new instance of Generator.
- #input_types ⇒ Object
- #namespace ⇒ Object
- #operation_exceptions(operation_name) ⇒ Object
- #operations ⇒ Object
- #output_types ⇒ Object
- #service ⇒ Object
- #service_description ⇒ Object
- #sort_complex_types(types, type) ⇒ Object
- #sorted_operations ⇒ Object
Constructor Details
#initialize(controller) ⇒ Generator
Returns a new instance of Generator.
11 12 13 14 15 16 |
# File 'lib/washout_builder/document/generator.rb', line 11 def initialize(controller) controller_class_name = controller_class(controller) self.config =controller_class_name.soap_config self.soap_actions = controller_class_name.soap_actions self.controller_name = controller end |
Instance Method Details
#actions_with_exceptions ⇒ Object
95 96 97 |
# File 'lib/washout_builder/document/generator.rb', line 95 def actions_with_exceptions soap_actions.select{|operation, formats| !formats[:raises].blank? } end |
#argument_types(type) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/washout_builder/document/generator.rb', line 60 def argument_types(type) format_type = (type == "input") ? "builder_in" : "builder_out" types = [] unless soap_actions.blank? soap_actions.each do |operation, formats| (formats[format_type.to_sym]).each do |p| types << p end end end types end |
#complex_types ⇒ Object
86 87 88 89 90 91 92 |
# File 'lib/washout_builder/document/generator.rb', line 86 def complex_types defined = [] (input_types + output_types).each do |p| defined.concat(p.get_nested_complex_types(config, defined)) end defined = sort_complex_types(defined, "class") end |
#controller_class(controller) ⇒ Object
22 23 24 |
# File 'lib/washout_builder/document/generator.rb', line 22 def controller_class(controller) "#{controller}_controller".camelize.constantize end |
#endpoint ⇒ Object
26 27 28 |
# File 'lib/washout_builder/document/generator.rb', line 26 def endpoint namespace.blank? ? nil : namespace.gsub("/wsdl", "/action") end |
#exceptions_raised ⇒ Object
99 100 101 |
# File 'lib/washout_builder/document/generator.rb', line 99 def exceptions_raised actions_with_exceptions.collect {|operation, formats| formats[:raises].is_a?(Array) ? formats[:raises] : [formats[:raises]] }.flatten end |
#fault_types ⇒ Object
116 117 118 119 120 |
# File 'lib/washout_builder/document/generator.rb', line 116 def fault_types base_fault =[WashoutBuilder::Type.get_fault_classes.first] fault_types = get_complex_fault_types(base_fault) sort_complex_types(fault_types, "fault") end |
#filter_exceptions_raised ⇒ Object
104 105 106 |
# File 'lib/washout_builder/document/generator.rb', line 104 def filter_exceptions_raised exceptions_raised.select { |x| WashoutBuilder::Type.valid_fault_class?(x) } unless actions_with_exceptions.blank? end |
#get_complex_fault_types(base_fault_array) ⇒ Object
108 109 110 111 112 113 114 |
# File 'lib/washout_builder/document/generator.rb', line 108 def get_complex_fault_types(base_fault_array) fault_types =[] defined = filter_exceptions_raised defined = defined.blank? ? base_fault_array : defined.concat(base_fault_array) defined.each{ |exception_class| exception_class.get_fault_class_ancestors( fault_types, true)} unless defined.blank? fault_types end |
#get_soap_action_names ⇒ Object
81 82 83 |
# File 'lib/washout_builder/document/generator.rb', line 81 def get_soap_action_names operations.map(&:to_s).sort_by { |name| name.downcase }.uniq unless soap_actions.blank? end |
#input_types ⇒ Object
73 74 75 |
# File 'lib/washout_builder/document/generator.rb', line 73 def input_types argument_types("input") end |
#namespace ⇒ Object
18 19 20 |
# File 'lib/washout_builder/document/generator.rb', line 18 def namespace config.respond_to?(:namespace) ? config.namespace : nil end |
#operation_exceptions(operation_name) ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/washout_builder/document/generator.rb', line 46 def operation_exceptions(operation_name) hash_object = soap_actions.detect {|operation, formats| operation.to_s.downcase == operation_name.to_s.downcase} unless hash_object.blank? faults = hash_object[1][:raises] faults = faults.is_a?(Array) ? faults : [faults] faults.select { |x| WashoutBuilder::Type.valid_fault_class?(x) } end end |
#operations ⇒ Object
38 39 40 |
# File 'lib/washout_builder/document/generator.rb', line 38 def operations soap_actions.map { |operation, formats| operation } end |
#output_types ⇒ Object
77 78 79 |
# File 'lib/washout_builder/document/generator.rb', line 77 def output_types argument_types("output") end |
#service ⇒ Object
30 31 32 |
# File 'lib/washout_builder/document/generator.rb', line 30 def service controller_name.blank? ? nil : controller_name.camelize end |
#service_description ⇒ Object
34 35 36 |
# File 'lib/washout_builder/document/generator.rb', line 34 def service_description config.respond_to?(:description) ? config.description : nil end |
#sort_complex_types(types, type) ⇒ Object
55 56 57 |
# File 'lib/washout_builder/document/generator.rb', line 55 def sort_complex_types(types, type) types.sort_by { |hash| hash[type.to_sym].to_s.downcase }.uniq {|hash| hash[type.to_sym] } unless types.blank? end |
#sorted_operations ⇒ Object
42 43 44 |
# File 'lib/washout_builder/document/generator.rb', line 42 def sorted_operations soap_actions.sort_by { |operation, formats| operation.downcase }.uniq unless soap_actions.blank? end |