Class: WsdlMapper::SvcGeneration::PortGenerator

Inherits:
GeneratorBase show all
Defined in:
lib/wsdl_mapper/svc_generation/port_generator.rb

Direct Known Subclasses

DocumentedPortGenerator

Instance Method Summary (collapse)

Methods inherited from GeneratorBase

#initialize

Methods inherited from Generation::Base

#append_file_for, #file, #file_for, #generate_name, #get_formatter, #get_module_names, #get_type_name, #initialize, #type_file_for

Constructor Details

This class inherits a constructor from WsdlMapper::SvcGeneration::GeneratorBase

Instance Method Details

- (Object) generate_port(service, port, result)



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/wsdl_mapper/svc_generation/port_generator.rb', line 6

def generate_port(service, port, result)
  modules = get_module_names service.name
  ops = port.type.binding.each_operation.map do |op|
    TypeToGenerate.new op, service_namer.get_operation_name(service.type, port.type, op), service_namer.get_property_name(op)
  end

  proxy_generator.generate_proxy service, port, ops, result

  ops.each do |op|
    operation_generator.generate_operation service, port, op, result
  end

  type_file_for port.name, result do |f|
    f.requires port_base.require_path

    f.in_modules modules do
      f.in_class service.name.class_name do
        generate_port_class f, ops, port
      end
    end
  end
end

- (Object) generate_port_class(f, ops, port)



29
30
31
32
33
34
35
# File 'lib/wsdl_mapper/svc_generation/port_generator.rb', line 29

def generate_port_class(f, ops, port)
  f.in_sub_class port.name.class_name, port_base.name do
    f.requires *ops.map { |op| op.name.require_path }
    generate_port_operation_accessors f, ops
    generate_port_ctr f, ops, port
  end
end

- (Object) generate_port_ctr(f, ops, port)



37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/wsdl_mapper/svc_generation/port_generator.rb', line 37

def generate_port_ctr(f, ops, port)
  f.in_def :initialize, 'api', 'service' do
    f.call :super, 'api', 'service'
    f.assignment '@_style', port.type.binding.style.inspect
    f.assignment '@_transport', port.type.binding.transport.inspect
    f.assignment '@_soap_address', port.type.address_location.inspect

    ops.each do |op|
      f.assignment op.property_name.var_name, op.name.name + '.new(api, service, self)'
      f.statement "@_operations << #{op.property_name.var_name}"
    end
  end
end

- (Object) generate_port_operation_accessors(f, ops)



51
52
53
# File 'lib/wsdl_mapper/svc_generation/port_generator.rb', line 51

def generate_port_operation_accessors(f, ops)
  f.attr_readers *ops.map { |op| op.property_name.attr_name }
end