Class: WashoutBuilder::Document::Generator

Inherits:
Object
  • Object
show all
Defined in:
lib/washout_builder/document/generator.rb

Instance Method Summary collapse

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_exceptionsObject



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_typesObject



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

#endpointObject



26
27
28
# File 'lib/washout_builder/document/generator.rb', line 26

def endpoint 
  namespace.blank? ? nil : namespace.gsub("/wsdl", "/action")
end

#exceptions_raisedObject



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_typesObject



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_raisedObject



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_namesObject



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_typesObject



73
74
75
# File 'lib/washout_builder/document/generator.rb', line 73

def input_types
  argument_types("input")
end

#namespaceObject



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

#operationsObject



38
39
40
# File 'lib/washout_builder/document/generator.rb', line 38

def operations
  soap_actions.map { |operation, formats| operation }
end

#output_typesObject



77
78
79
# File 'lib/washout_builder/document/generator.rb', line 77

def output_types
  argument_types("output")
end

#serviceObject



30
31
32
# File 'lib/washout_builder/document/generator.rb', line 30

def service 
  controller_name.blank? ? nil : controller_name.camelize
end

#service_descriptionObject



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_operationsObject



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