washout_builder 0.11.7 → 0.11.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/lib/washout_builder.rb +1 -0
- data/lib/washout_builder/document/complex_type.rb +2 -1
- data/lib/washout_builder/document/generator.rb +33 -16
- data/lib/washout_builder/document/shared_complex_type.rb +11 -0
- data/lib/washout_builder/document/virtus_model.rb +6 -1
- data/lib/washout_builder/version.rb +1 -1
- metadata +2 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            !binary "U0hBMQ==":
         | 
| 3 3 | 
             
              metadata.gz: !binary |-
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                YzcwZTFhNDc1MDQ4MDlkOTMzNDk2NjlkNjVjZDUzMmZiM2I1OGI1Nw==
         | 
| 5 5 | 
             
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                YzYzYmE5NmFjNDMyNmEyMTdiODhjMTE4NzBmNjUwZTE0NTcxNTA2YQ==
         | 
| 7 7 | 
             
            SHA512:
         | 
| 8 8 | 
             
              metadata.gz: !binary |-
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
                 | 
| 9 | 
            +
                ZjRkMTNlNjY4M2M0NTExYzMxOTE3NmU0ZDE4NjEyMzZjMmRiYzYzMWZmYjM2
         | 
| 10 | 
            +
                YjQ3YTRkNGY5YmI3OWQ0ODAzNzQ3YzU2N2JlYTU0NzFmODA2MTRhMGNmNTE3
         | 
| 11 | 
            +
                NGVkOGY3ZmQ3YWNjMmIwZmYyMzFjNmRkOWM1NzZlN2Q1MDBkODE=
         | 
| 12 12 | 
             
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                 | 
| 14 | 
            -
                 | 
| 15 | 
            -
                 | 
| 13 | 
            +
                ZWJhZTUzNGQwYmY3Y2I2YmZkNjBlMjMwOTdhZjlkYzY5YmFkYWNmZTVhOWFh
         | 
| 14 | 
            +
                ZmFmMDA3NTRmMWZkODc5N2M5NjhhMmU2OWQxNmNmMjM0MjM2OWU4ZDQ1ZTEz
         | 
| 15 | 
            +
                NGFjODg1NWJhZTdjM2ViZTU4NmYwNDU4ZWU5OTBkYjhjMzQ0YTM=
         | 
    
        data/lib/washout_builder.rb
    CHANGED
    
    | @@ -2,6 +2,7 @@ require 'wash_out' | |
| 2 2 | 
             
            require 'virtus'
         | 
| 3 3 | 
             
            require 'washout_builder/soap'
         | 
| 4 4 | 
             
            require 'washout_builder/engine'
         | 
| 5 | 
            +
            require 'washout_builder/document/shared_complex_type'
         | 
| 5 6 | 
             
            require 'washout_builder/document/complex_type'
         | 
| 6 7 | 
             
            require 'washout_builder/document/virtus_model'
         | 
| 7 8 | 
             
            require 'washout_builder/document/generator'
         | 
| @@ -2,6 +2,7 @@ module WashoutBuilder | |
| 2 2 | 
             
              module Document
         | 
| 3 3 | 
             
                module ComplexType
         | 
| 4 4 | 
             
                  extend ActiveSupport::Concern
         | 
| 5 | 
            +
                  include WashoutBuilder::Document::SharedComplexType
         | 
| 5 6 |  | 
| 6 7 |  | 
| 7 8 | 
             
                  def get_complex_class_name(defined = [])
         | 
| @@ -66,7 +67,7 @@ module WashoutBuilder | |
| 66 67 | 
             
                    if  param_class.nil?
         | 
| 67 68 | 
             
                      return nil
         | 
| 68 69 | 
             
                    else
         | 
| 69 | 
            -
                      (param_class | 
| 70 | 
            +
                      get_complex_type_ancestors(param_class, ["ActiveRecord::Base", "Object", "BasicObject",  "WashOut::Type" ])
         | 
| 70 71 | 
             
                    end
         | 
| 71 72 | 
             
                  end
         | 
| 72 73 |  | 
| @@ -34,8 +34,8 @@ module WashoutBuilder | |
| 34 34 | 
             
                    soap_actions.map { |operation, formats| operation }
         | 
| 35 35 | 
             
                  end
         | 
| 36 36 |  | 
| 37 | 
            -
                  def  | 
| 38 | 
            -
                     types.sort_by { |hash| hash[ | 
| 37 | 
            +
                  def sort_complex_types(types, type)
         | 
| 38 | 
            +
                     types.sort_by { |hash| hash[type.to_sym].to_s.downcase }.uniq {|hash| hash[type.to_sym] } unless types.blank?
         | 
| 39 39 | 
             
                  end
         | 
| 40 40 |  | 
| 41 41 |  | 
| @@ -70,7 +70,7 @@ module WashoutBuilder | |
| 70 70 | 
             
                    (input_types + output_types).each do |p|
         | 
| 71 71 | 
             
                      defined.concat(p.get_nested_complex_types(config,  defined))
         | 
| 72 72 | 
             
                    end
         | 
| 73 | 
            -
                    defined | 
| 73 | 
            +
                    defined =  sort_complex_types(defined, "class")
         | 
| 74 74 | 
             
                  end
         | 
| 75 75 |  | 
| 76 76 |  | 
| @@ -79,25 +79,42 @@ module WashoutBuilder | |
| 79 79 | 
             
                  end
         | 
| 80 80 |  | 
| 81 81 | 
             
                  def exceptions_raised
         | 
| 82 | 
            -
             | 
| 83 | 
            -
             | 
| 84 | 
            -
             | 
| 85 | 
            -
             | 
| 82 | 
            +
                     actions_with_exceptions.collect {|operation, formats|  formats[:raises].is_a?(Array)  ? formats[:raises] : [formats[:raises]] }.flatten
         | 
| 83 | 
            +
                  end
         | 
| 84 | 
            +
                  
         | 
| 85 | 
            +
                  def fault_classes
         | 
| 86 | 
            +
                      WashoutBuilder::Type.get_fault_classes
         | 
| 87 | 
            +
                  end
         | 
| 88 | 
            +
                  
         | 
| 89 | 
            +
                  def has_ancestor_fault?(fault_class)
         | 
| 90 | 
            +
                    fault_class.ancestors.detect{ |fault|  fault_classes.include?(fault)  }.present?
         | 
| 91 | 
            +
                  end
         | 
| 92 | 
            +
                  
         | 
| 93 | 
            +
                  def valid_fault_class?(fault)
         | 
| 94 | 
            +
                     fault.is_a?(Class) &&   ( has_ancestor_fault?(fault) ||  fault_classes.include?(fault)) 
         | 
| 95 | 
            +
                  end
         | 
| 96 | 
            +
                  
         | 
| 97 | 
            +
                  def filter_exceptions_raised
         | 
| 98 | 
            +
                    exceptions_raised.select { |x|  valid_fault_class?(x)  }  unless actions_with_exceptions.blank?
         | 
| 99 | 
            +
                  end
         | 
| 100 | 
            +
                  
         | 
| 101 | 
            +
                  def get_complex_fault_types(fault_types)
         | 
| 102 | 
            +
                    defined  = filter_exceptions_raised
         | 
| 103 | 
            +
                    if defined.blank?
         | 
| 104 | 
            +
                      defined = [fault_classes.first]
         | 
| 86 105 | 
             
                    else
         | 
| 87 | 
            -
                       | 
| 106 | 
            +
                      defined  << fault_classes.first
         | 
| 88 107 | 
             
                    end
         | 
| 89 | 
            -
                     | 
| 108 | 
            +
                    defined.each{ |exception_class|  exception_class.get_fault_class_ancestors( fault_types, true)}  unless   defined.blank?
         | 
| 109 | 
            +
                    fault_types 
         | 
| 90 110 | 
             
                  end
         | 
| 91 111 |  | 
| 92 | 
            -
                  
         | 
| 93 112 | 
             
                  def fault_types
         | 
| 94 | 
            -
                     | 
| 95 | 
            -
                    fault_types = []
         | 
| 96 | 
            -
                    defined.each{ |exception_class|  exception_class.get_fault_class_ancestors( fault_types, true)}  unless   defined.blank?
         | 
| 113 | 
            +
                    fault_types = get_complex_fault_types([])
         | 
| 97 114 | 
             
                    complex_types = extract_nested_complex_types_from_exceptions(fault_types)
         | 
| 98 | 
            -
                    complex_types.delete_if{ |hash|  fault_types << hash | 
| 99 | 
            -
                    fault_types =  | 
| 100 | 
            -
                    complex_types =  | 
| 115 | 
            +
                    complex_types.delete_if{ |hash|  fault_types << hash   if  valid_fault_class?(hash[:fault])  } unless complex_types.blank?
         | 
| 116 | 
            +
                    fault_types = sort_complex_types(fault_types, "fault")
         | 
| 117 | 
            +
                    complex_types = sort_complex_types(complex_types, "fault")
         | 
| 101 118 | 
             
                    [fault_types, complex_types]
         | 
| 102 119 | 
             
                  end
         | 
| 103 120 |  | 
| @@ -0,0 +1,11 @@ | |
| 1 | 
            +
            module WashoutBuilder
         | 
| 2 | 
            +
              module Document
         | 
| 3 | 
            +
                module SharedComplexType
         | 
| 4 | 
            +
                  
         | 
| 5 | 
            +
                  def get_complex_type_ancestors(class_name, array)
         | 
| 6 | 
            +
                    (class_name.ancestors - class_name.included_modules).delete_if{ |x| x.to_s.downcase == class_name.to_s.downcase  ||  array.include?(x.to_s)  }
         | 
| 7 | 
            +
                  end
         | 
| 8 | 
            +
                  
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
            end
         | 
| @@ -2,6 +2,11 @@ module WashoutBuilder | |
| 2 2 | 
             
              module Document
         | 
| 3 3 | 
             
                module VirtusModel
         | 
| 4 4 | 
             
                  extend ActiveSupport::Concern
         | 
| 5 | 
            +
                  include WashoutBuilder::Document::SharedComplexType  
         | 
| 6 | 
            +
                  
         | 
| 7 | 
            +
                  def self.included(base)
         | 
| 8 | 
            +
                    base.send :include, WashoutBuilder::Document::SharedComplexType
         | 
| 9 | 
            +
                  end
         | 
| 5 10 |  | 
| 6 11 | 
             
                  def get_fault_class_ancestors( defined, debug = false)
         | 
| 7 12 | 
             
                    bool_the_same = false
         | 
| @@ -21,7 +26,7 @@ module WashoutBuilder | |
| 21 26 | 
             
                  end
         | 
| 22 27 |  | 
| 23 28 | 
             
                  def fault_ancestors
         | 
| 24 | 
            -
                    (self | 
| 29 | 
            +
                    get_complex_type_ancestors(self, ["ActiveRecord::Base", "Object", "BasicObject",  "Exception" ])
         | 
| 25 30 | 
             
                  end
         | 
| 26 31 |  | 
| 27 32 | 
             
                  def fault_ancestor_hash( structure, ancestors)
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: washout_builder
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.11. | 
| 4 | 
            +
              version: 0.11.8
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - bogdanRada
         | 
| @@ -77,6 +77,7 @@ files: | |
| 77 77 | 
             
            - lib/washout_builder/dispatcher.rb
         | 
| 78 78 | 
             
            - lib/washout_builder/document/complex_type.rb
         | 
| 79 79 | 
             
            - lib/washout_builder/document/generator.rb
         | 
| 80 | 
            +
            - lib/washout_builder/document/shared_complex_type.rb
         | 
| 80 81 | 
             
            - lib/washout_builder/document/virtus_model.rb
         | 
| 81 82 | 
             
            - lib/washout_builder/engine.rb
         | 
| 82 83 | 
             
            - lib/washout_builder/soap.rb
         |