class WsdlMapper::DomGeneration::DefaultValueDefaultsGenerator

Public Class Methods

new(generator) click to toggle source
# File lib/wsdl_mapper/dom_generation/default_value_defaults_generator.rb, line 4
def initialize(generator)
  @generator = generator
end

Public Instance Methods

generate_for_attribute(attribute) click to toggle source
# File lib/wsdl_mapper/dom_generation/default_value_defaults_generator.rb, line 8
def generate_for_attribute(attribute)
  if attribute.default?
    xml_val = attribute.default
    return @generator.value_generator.generate_nil unless xml_val

    ruby_val = @generator.type_mapping.to_ruby attribute.type_name, xml_val
    @generator.value_generator.generate ruby_val
  elsif attribute.fixed?
    xml_val = attribute.fixed

    ruby_val = @generator.type_mapping.to_ruby attribute.type_name, xml_val
    @generator.value_generator.generate ruby_val
  else
    @generator.value_generator.generate_nil
  end
end
generate_for_property(property) click to toggle source
# File lib/wsdl_mapper/dom_generation/default_value_defaults_generator.rb, line 25
def generate_for_property(property)
  if property.default? && !property.array?
    xml_val = property.default
    return @generator.value_generator.generate_nil unless xml_val

    ruby_val = @generator.type_mapping.to_ruby property.type_name, xml_val
    @generator.value_generator.generate ruby_val
  elsif property.array? && !property.default?
    @generator.value_generator.generate_empty_array
  elsif property.single? && !builtin?(property.type)
    name = @generator.namer.get_type_name @generator.get_type_name property.type
    "#{name.name}.new"
  else
    @generator.value_generator.generate_nil
  end
  # TODO: what about array type properties with defaults?
  # TODO: fixed values
  # TODO: simple types extensions/restrictions of builtin types
end

Protected Instance Methods

builtin?(type) click to toggle source
# File lib/wsdl_mapper/dom_generation/default_value_defaults_generator.rb, line 46
def builtin?(type)
  return false unless type.name
  type.name.ns == WsdlMapper::Dom::BuiltinType::NAMESPACE
end