Class: AdsCommon::Build::SavonRegistryGenerator

Inherits:
SavonAbstractGenerator show all
Defined in:
lib/ads_common/build/savon_registry_generator.rb

Constant Summary collapse

REGISTRY_TEMPLATE =
%q{<% %>
# Encoding: utf-8
#
# This is auto-generated code, changes will be overwritten.
#
# Copyright:: Copyright 2015, Google Inc. All Rights Reserved.
# License:: Licensed under the Apache License, Version 2.0.
#
# <%= @generator_stamp %>

require '<%= @api_name.snakecase %>/errors'

<%= @modules_open_string %>

  class <%= @service_name %>Registry
    <%= @service_name.upcase %>_METHODS = <%= format_signature(@methods) %>
    <%= @service_name.upcase %>_TYPES = <%= format_signature(@types) %>
    <%= @service_name.upcase %>_NAMESPACES = <%= format_array(@namespaces) %>

    def self.get_method_signature(method_name)
      return <%= @service_name.upcase %>_METHODS[method_name.to_sym]
    end

    def self.get_type_signature(type_name)
      return <%= @service_name.upcase %>_TYPES[type_name.to_sym]
    end

    def self.get_namespace(index)
      return <%= @service_name.upcase %>_NAMESPACES[index]
    end
  end
  <% @exceptions.each do |exception| %>
    <% array_fields = [] %>

    <% doc_lines = format_doc(exception[:doc]) %>
    <% doc_lines.each do |doc_line| %>
  # <%= doc_line %>
    <% end %>
    <% base_text = (exception[:base].nil?) ? @default_exception_base : exception[:base] %>
  class <%= exception[:name] %> < <%= base_text  %>
    <% exception[:fields].each do |field| %>
    attr_reader :<%= field[:name] %>  # <%= field[:type] %>
      <% is_array_field = (field[:max_occurs].nil?) ? false :
             ((field[:max_occurs] == :unbounded) || (field[:max_occurs] > 1)) %>
      <% array_fields << field[:name] if is_array_field %>
    <% end %>
    <% if !(array_fields.empty?) %>
    def initialize(exception_fault)
      @array_fields ||= []
      <% array_fields.each do |field| %>
      @array_fields << '<%= field.to_s %>'
      <% end %>
      super(exception_fault, <%= @service_name %>Registry)
    end
    <% end %>
  end
  <% end %>
<%= @modules_close_string %>

}.gsub(/^      /, '')

Instance Method Summary collapse

Methods inherited from SavonAbstractGenerator

#generate_code

Constructor Details

#initialize(args) ⇒ SavonRegistryGenerator

Returns a new instance of SavonRegistryGenerator.



90
91
92
93
94
95
96
97
# File 'lib/ads_common/build/savon_registry_generator.rb', line 90

def initialize(args)
  super(args)
  @exceptions = []
  @methods = []
  @types = []
  @namespaces = []
  @default_exception_base = "%s::Errors::ApiException" % @api_name
end

Instance Method Details

#add_exceptions(exceptions) ⇒ Object



103
104
105
# File 'lib/ads_common/build/savon_registry_generator.rb', line 103

def add_exceptions(exceptions)
  @exceptions += exceptions
end

#add_methods(methods) ⇒ Object



107
108
109
# File 'lib/ads_common/build/savon_registry_generator.rb', line 107

def add_methods(methods)
  @methods += methods
end

#add_namespaces(namespaces) ⇒ Object



115
116
117
# File 'lib/ads_common/build/savon_registry_generator.rb', line 115

def add_namespaces(namespaces)
  @namespaces += namespaces
end

#add_types(types) ⇒ Object



111
112
113
# File 'lib/ads_common/build/savon_registry_generator.rb', line 111

def add_types(types)
  @types += types
end

#get_code_templateObject



99
100
101
# File 'lib/ads_common/build/savon_registry_generator.rb', line 99

def get_code_template()
  REGISTRY_TEMPLATE
end