class WsdlMapper::SvcGeneration::SvcGenerator

Attributes

context[R]
namer[R]
operation_d10r_generator[R]
operation_generator[R]
operation_s8r_generator[R]
port_generator[R]
proxy_generator[R]
schema_generator[R]
service_generator[R]
service_namer[R]

Public Class Methods

new(context, formatter_factory: DefaultFormatter, service_namer: WsdlMapper::Naming::DefaultServiceNamer.new, namer: WsdlMapper::Naming::DefaultNamer.new, service_generator_factory: ServiceGenerator, port_generator_factory: PortGenerator, proxy_generator_factory: ProxyGenerator, operation_generator_factory: OperationGenerator, operation_s8r_generator_factory: OperationS8rGenerator, operation_d10r_generator_factory: OperationD10rGenerator, schema_generator: nil) click to toggle source
Calls superclass method WsdlMapper::Generation::Base::new
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 29
def initialize(context,
  formatter_factory: DefaultFormatter,
  service_namer: WsdlMapper::Naming::DefaultServiceNamer.new,
  namer: WsdlMapper::Naming::DefaultNamer.new,
  service_generator_factory: ServiceGenerator,
  port_generator_factory: PortGenerator,
  proxy_generator_factory: ProxyGenerator,
  operation_generator_factory: OperationGenerator,
  operation_s8r_generator_factory: OperationS8rGenerator,
  operation_d10r_generator_factory: OperationD10rGenerator,
  schema_generator: nil)

  super(context)

  @formatter_factory = formatter_factory
  @service_namer = service_namer
  @namer = namer
  @service_generator = service_generator_factory.new(self)
  @port_generator = port_generator_factory.new(self)
  @proxy_generator = proxy_generator_factory.new(self)
  @operation_generator = operation_generator_factory.new(self)
  @operation_s8r_generator = operation_s8r_generator_factory.new(self)
  @operation_d10r_generator = operation_d10r_generator_factory.new(self)
  @schema_generator = schema_generator || WsdlMapper::DomGeneration::SchemaGenerator.new(context,
    ctr_generator_factory: WsdlMapper::DomGeneration::DefaultCtrGenerator,
    namer: namer
  )
end

Public Instance Methods

api_base() click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 123
def api_base
  @api_base ||= runtime_base 'Api', 'api'
end
body_base() click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 147
def body_base
  @body_base ||= runtime_base 'Body', 'body'
end
generate(desc) click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 58
def generate(desc)
  result = Result.new description: desc

  generate_api desc, result

  result
end
generate_api(desc, result) click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 70
def generate_api(desc, result)
  name = @service_namer.get_api_name
  modules = get_module_names name
  services = desc.each_service.map do |service|
    TypeToGenerate.new service, @service_namer.get_service_name(service), @service_namer.get_property_name(service)
  end

  services.each do |service|
    @service_generator.generate_service service, result
  end

  type_file_for name, result do |f|
    f.requires api_base.require_path
    f.requires(*services.map { |s| s.name.require_path })

    f.in_modules modules do
      generate_api_class f, name, services
    end
  end
end
generate_api_class(f, name, services) click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 91
def generate_api_class(f, name, services)
  f.in_sub_class name.class_name, api_base.name do
    generate_api_service_accessors f, services
    generate_api_ctr f, services
  end
end
generate_api_ctr(f, services) click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 102
def generate_api_ctr(f, services)
  f.in_def :initialize, 'backend' do
    f.call :super, 'backend'
    services.each do |s|
      f.assignment s.property_name.var_name, "#{s.name.name}.new(self)"
      f.statement "@_services << #{s.property_name.var_name}"
    end
  end
end
generate_api_service_accessors(f, services) click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 98
def generate_api_service_accessors(f, services)
  f.attr_readers(*services.map { |s| s.property_name.attr_name })
end
get_formatter(io) click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 66
def get_formatter(io)
  @formatter_factory.new io
end
get_ruby_type_name(type) click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 167
def get_ruby_type_name(type)
  @schema_generator.get_ruby_type_name type
end
get_type_name(type) click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 163
def get_type_name(type)
  @schema_generator.get_type_name type
end
header_base() click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 143
def header_base
  @header_base ||= runtime_base 'Header', 'header'
end
in_classes(f, *names, &block) click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 112
def in_classes(f, *names, &block)
  next_block = if names.length > 1
    proc do
      in_classes f, *names.drop(1), &block
    end
  else
    block
  end
  f.in_class names.first, &next_block
end
operation_base() click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 139
def operation_base
  @operation_base ||= runtime_base 'Operation', 'operation'
end
port_base() click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 131
def port_base
  @port_base ||= runtime_base 'Port', 'port'
end
proxy_base() click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 135
def proxy_base
  @proxy_base ||= runtime_base 'Proxy', 'proxy'
end
runtime_base(name, file_name) click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 151
def runtime_base(name, file_name)
  WsdlMapper::Naming::TypeName.new name, runtime_modules, "#{file_name}.rb", runtime_path
end
runtime_modules() click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 155
def runtime_modules
  @runtime_modules ||= %w[WsdlMapper Runtime]
end
runtime_path() click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 159
def runtime_path
  @runtime_path ||= %w[wsdl_mapper runtime]
end
service_base() click to toggle source
# File lib/wsdl_mapper/svc_generation/svc_generator.rb, line 127
def service_base
  @service_base ||= runtime_base 'Service', 'service'
end