class WsdlMapper::DomGeneration::SchemaGenerator

Attributes

class_generator[R]
context[R]
ctr_generator[R]
enum_generator[R]
module_generator[R]
namer[R]
type_mapping[R]
value_defaults_generator[R]
value_generator[R]
wrapping_type_generator[R]

Public Class Methods

new(context, skip_modules: false, formatter_factory: DefaultFormatter, namer: WsdlMapper::Naming::DefaultNamer.new, class_generator_factory: DefaultClassGenerator, module_generator_factory: DefaultModuleGenerator, ctr_generator_factory: NullCtrGenerator, enum_generator_factory: DefaultEnumGenerator, value_defaults_generator_factory: DefaultValueDefaultsGenerator, wrapping_type_generator_factory: DefaultWrappingTypeGenerator, type_mapping: WsdlMapper::TypeMapping::DEFAULT, value_generator: DefaultValueGenerator.new) click to toggle source
Calls superclass method WsdlMapper::Generation::Base::new
# File lib/wsdl_mapper/dom_generation/schema_generator.rb, line 29
def initialize(context,
  skip_modules: false,
  formatter_factory: DefaultFormatter,
  namer: WsdlMapper::Naming::DefaultNamer.new,
  class_generator_factory: DefaultClassGenerator,
  module_generator_factory: DefaultModuleGenerator,
  ctr_generator_factory: NullCtrGenerator,
  enum_generator_factory: DefaultEnumGenerator,
  value_defaults_generator_factory: DefaultValueDefaultsGenerator,
  wrapping_type_generator_factory: DefaultWrappingTypeGenerator,
  type_mapping: WsdlMapper::TypeMapping::DEFAULT,
  value_generator: DefaultValueGenerator.new)

  super(context)

  @formatter_factory = formatter_factory
  @namer = namer
  @class_generator = class_generator_factory.new self
  @module_generator = module_generator_factory.new self
  @ctr_generator = ctr_generator_factory.new self
  @enum_generator = enum_generator_factory.new self
  @value_defaults_generator = value_defaults_generator_factory.new self
  @wrapping_type_generator = wrapping_type_generator_factory.new self
  @type_mapping = type_mapping
  @value_generator = value_generator
  @skip_modules = skip_modules
end

Public Instance Methods

generate(schema) click to toggle source
# File lib/wsdl_mapper/dom_generation/schema_generator.rb, line 57
def generate(schema)
  result = Result.new schema: schema

  generate_complex_types schema, result
  generate_enumerations schema, result
  generate_restrictions schema, result

  unless @skip_modules
    result.module_tree.each do |module_node|
      @module_generator.generate module_node, result
    end
  end

  result
end
generate_complex_types(schema, result) click to toggle source
# File lib/wsdl_mapper/dom_generation/schema_generator.rb, line 119
def generate_complex_types(schema, result)
  complex_types = schema.each_type.select(&WsdlMapper::Dom::ComplexType).to_a

  types_to_generate = complex_types.map do |type|
    name = namer.get_type_name get_type_name(type)

    TypeToGenerate.new type, name
  end

  types_to_generate.each do |ttg|
    @class_generator.generate ttg, result
  end
end
generate_enumerations(schema, result) click to toggle source
# File lib/wsdl_mapper/dom_generation/schema_generator.rb, line 105
def generate_enumerations(schema, result)
  enum_types = schema.each_type.select(&WsdlMapper::Dom::SimpleType).select(&:enumeration?).to_a

  types_to_generate = enum_types.map do |type|
    name = namer.get_type_name get_type_name(type)

    TypeToGenerate.new type, name
  end

  types_to_generate.each do |ttg|
    @enum_generator.generate ttg, result
  end
end
generate_restrictions(schema, result) click to toggle source
# File lib/wsdl_mapper/dom_generation/schema_generator.rb, line 91
def generate_restrictions(schema, result)
  types = schema.each_type.select(&WsdlMapper::Dom::SimpleType).reject(&:enumeration?).to_a

  types_to_generate = types.map do |type|
    name = namer.get_type_name get_type_name(type)

    TypeToGenerate.new type, name
  end

  types_to_generate.each do |ttg|
    @wrapping_type_generator.generate ttg, result
  end
end
get_formatter(io) click to toggle source
# File lib/wsdl_mapper/dom_generation/schema_generator.rb, line 73
def get_formatter(io)
  @formatter_factory.new io
end
get_ruby_type_name(type) click to toggle source
# File lib/wsdl_mapper/dom_generation/schema_generator.rb, line 77
def get_ruby_type_name(type)
  if type.name.nil?
    type = get_type_name type
  end

  if WsdlMapper::Dom::BuiltinType.builtin? type.name
    type_mapping.ruby_type type.name
  elsif WsdlMapper::Dom::SoapEncodingType.builtin? type.name
    '::Array'
  else
    namer.get_type_name(type).name
  end
end