class WsdlMapper::SvcGeneration::OperationD10rGenerator

Constants

SOAP_BODY
SOAP_ENV_NS
SOAP_HEADER

Public Class Methods

new(generator) click to toggle source
Calls superclass method
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 13
def initialize(generator)
  super generator
  @schema_type_directory_name = namer.get_d10r_type_directory_name
  @schema_element_directory_name = namer.get_d10r_element_directory_name
end

Public Instance Methods

deserializer_type() click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 162
def deserializer_type
  @deserializer_type ||= WsdlMapper::Naming::TypeName.new 'LazyLoadingDeserializer', %w[WsdlMapper Deserializers], 'lazy_loading_deserializer.rb', %w[wsdl_mapper deserializers]
end
element_directory_base() click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 150
def element_directory_base
  @element_directory_base ||= WsdlMapper::Naming::TypeName.new 'ElementDirectory', %w[WsdlMapper Deserializers], 'element_directory.rb', %w[wsdl_mapper deserializers]
end
envelope_type() click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 166
def envelope_type
  @envelope_type ||= WsdlMapper::Naming::TypeName.new 'Envelope', %w[WsdlMapper SvcDesc], 'envelope.rb', %w[wsdl_mapper svc_desc]
end
fault_name() click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 120
def fault_name
  @fault_name ||= generate_name WsdlMapper::Dom::Name.get('http://schemas.xmlsoap.org/soap/envelope/', 'Fault')
end
generate_body_d10r(f, body_deserializer_name, type_directory_name, input_body_name, port, op, in_out) click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 96
def generate_body_d10r(f, body_deserializer_name, type_directory_name, input_body_name, port, op, in_out)
  parts = get_body_parts in_out
  f.block "#{body_deserializer_name} = #{type_directory_name}.register_type(#{generate_name(SOAP_BODY)}, #{input_body_name.name})", [] do
    op_name = get_op_name op.type, in_out
    if port.type.binding.style == 'rpc'
      f.call :register_wrapper, generate_name(op_name)
    end
    parts.each do |part|
      name = get_type_name(part.type).name
      element_name = if port.type.binding.style == 'rpc'
        part.part.name
      else
        if part.part.element
          part.part.element.name
        else
          part.part.name
        end
      end
      f.call :register_prop, ":#{part.property_name.attr_name}", generate_name(element_name), generate_name(name)
    end
    f.call :register_prop, ':fault', fault_name, fault_name
  end
end
generate_d10r(f, input_d10r_name, element_directory_name) click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 88
def generate_d10r(f, input_d10r_name, element_directory_name)
  f.assignment input_d10r_name.class_name, "#{deserializer_type.name}.new(#{element_directory_name})"
end
generate_element_directory(f, element_directory_name, type_directory_name) click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 92
def generate_element_directory(f, element_directory_name, type_directory_name)
  f.assignment element_directory_name, "#{element_directory_base.name}.new(#{type_directory_name}, #{@schema_element_directory_name.name}, #{soap_element_directory.name})"
end
generate_header_d10r(f, header_deserializer_name, type_directory_name, input_header_name, in_out) click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 132
def generate_header_d10r(f, header_deserializer_name, type_directory_name, input_header_name, in_out)
  parts = get_header_parts in_out
  f.block "#{header_deserializer_name} = #{type_directory_name}.register_type(#{generate_name(SOAP_HEADER)}, #{input_header_name.name})", [] do
    parts.each do |part|
      name = get_type_name(part.type).name
      f.call :register_prop, ":#{part.property_name.attr_name}", generate_name(part.header.part.name), generate_name(name)
    end
  end
end
generate_op_d10r(service, port, op, name, in_out, header_name, header_d10r_name, body_name, body_d10r_name, type_directory_name, element_directory_name, result) click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 52
def generate_op_d10r(service, port, op, name, in_out,
  header_name, header_d10r_name, body_name, body_d10r_name,
  type_directory_name, element_directory_name, result)

  parts = get_header_parts(in_out) + get_body_parts(in_out)
  required_d10rs = parts.map do |part|
    next if WsdlMapper::Dom::BuiltinType.builtin? get_type_name(part.type).name
    namer.get_d10r_name(get_type_name(part.type))
  end
  modules = get_module_names service.name

  type_file_for name, result do |f|
    f.requires envelope_type.require_path,
      type_directory_base.require_path,
      element_directory_base.require_path,
      deserializer_type.require_path,
      soap_type_directory.require_path,
      soap_element_directory.require_path,
      @schema_type_directory_name.require_path,
      @schema_element_directory_name.require_path,
      header_name.require_path,
      body_name.require_path
    f.requires(*required_d10rs.compact.map(&:require_path))

    f.in_modules modules do
      in_classes f, service.name.class_name, port.name.class_name, op.name.class_name do
        generate_type_directory f, type_directory_name
        generate_header_d10r f, header_d10r_name, type_directory_name, header_name, in_out
        generate_body_d10r f, body_d10r_name, type_directory_name, body_name, port, op, in_out
        generate_element_directory f, element_directory_name, type_directory_name
        generate_d10r f, name, element_directory_name
      end
    end
  end
end
generate_op_input_d10r(service, port, op, result) click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 24
def generate_op_input_d10r(service, port, op, result)
  name = service_namer.get_input_d10r_name service.type, port.type, op.type

  type_directory_name = service_namer.get_input_type_directory_name
  header_d10r_name = service_namer.get_input_header_d10r_name
  body_d10r_name = service_namer.get_input_body_d10r_name
  header_name = service_namer.get_input_header_name service.type, port.type, op.type
  body_name = service_namer.get_input_body_name service.type, port.type, op.type
  element_directory_name = service_namer.get_input_element_directory_name

  generate_op_d10r service, port, op, name, op.type.input,
    header_name, header_d10r_name, body_name, body_d10r_name, type_directory_name, element_directory_name, result
end
generate_op_output_d10r(service, port, op, result) click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 38
def generate_op_output_d10r(service, port, op, result)
  name = service_namer.get_output_d10r_name service.type, port.type, op.type

  type_directory_name = service_namer.get_output_type_directory_name
  header_d10r_name = service_namer.get_output_header_d10r_name
  body_d10r_name = service_namer.get_output_body_d10r_name
  header_name = service_namer.get_output_header_name service.type, port.type, op.type
  body_name = service_namer.get_output_body_name service.type, port.type, op.type
  element_directory_name = service_namer.get_output_element_directory_name

  generate_op_d10r service, port, op, name, op.type.output,
    header_name, header_d10r_name, body_name, body_d10r_name, type_directory_name, element_directory_name, result
end
generate_operation_d10r(service, port, op, result) click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 19
def generate_operation_d10r(service, port, op, result)
  generate_op_input_d10r service, port, op, result
  generate_op_output_d10r service, port, op, result
end
generate_type_directory(f, type_directory_name) click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 142
def generate_type_directory(f, type_directory_name)
  f.assignment type_directory_name, "#{type_directory_base.name}.new(#{soap_type_directory.name}, #{@schema_type_directory_name.name})"
end
get_op_name(op, in_out) click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 124
def get_op_name(op, in_out)
  if in_out == op.input
    op.name
  else
    WsdlMapper::Dom::Name.get op.name.ns, "#{op.name.name}Response"
  end
end
soap_element_directory() click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 158
def soap_element_directory
  @soap_element_directory ||= WsdlMapper::Naming::TypeName.new 'SoapElementDirectory', %w[WsdlMapper SvcDesc], 'soap_element_directory.rb', %w[wsdl_mapper svc_desc]
end
soap_type_directory() click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 154
def soap_type_directory
  @soap_type_directory ||= WsdlMapper::Naming::TypeName.new 'SoapTypeDirectory', %w[WsdlMapper SvcDesc], 'soap_type_directory.rb', %w[wsdl_mapper svc_desc]
end
type_directory_base() click to toggle source
# File lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb, line 146
def type_directory_base
  @type_directory_base ||= WsdlMapper::Naming::TypeName.new 'TypeDirectory', %w[WsdlMapper Deserializers], 'type_directory.rb', %w[wsdl_mapper deserializers]
end