Class: WsdlMapper::SvcGeneration::OperationD10rGenerator

Inherits:
OperationGeneratorBase show all
Includes:
Dom
Defined in:
lib/wsdl_mapper/svc_generation/operation_d10r_generator.rb

Constant Summary

SOAP_ENV_NS =
'http://schemas.xmlsoap.org/soap/envelope/'
SOAP_BODY =
Name.get SOAP_ENV_NS, 'Body'
SOAP_HEADER =
Name.get SOAP_ENV_NS, 'Header'

Instance Method Summary (collapse)

Methods inherited from Generation::Base

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

Constructor Details

- (OperationD10rGenerator) initialize(generator)

Returns a new instance of OperationD10rGenerator



13
14
15
16
17
# 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

Instance Method Details

- (Object) deserializer_type



162
163
164
# 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

- (Object) element_directory_base



150
151
152
# 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

- (Object) envelope_type



166
167
168
# 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

- (Object) fault_name



120
121
122
# 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

- (Object) generate_body_d10r(f, body_deserializer_name, type_directory_name, input_body_name, port, op, in_out)



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# 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

- (Object) generate_d10r(f, input_d10r_name, element_directory_name)



88
89
90
# 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

- (Object) generate_element_directory(f, element_directory_name, type_directory_name)



92
93
94
# 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

- (Object) generate_header_d10r(f, header_deserializer_name, type_directory_name, input_header_name, in_out)



132
133
134
135
136
137
138
139
140
# 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

- (Object) 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)



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# 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

- (Object) generate_op_input_d10r(service, port, op, result)



24
25
26
27
28
29
30
31
32
33
34
35
36
# 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

- (Object) generate_op_output_d10r(service, port, op, result)



38
39
40
41
42
43
44
45
46
47
48
49
50
# 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

- (Object) generate_operation_d10r(service, port, op, result)



19
20
21
22
# 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

- (Object) generate_type_directory(f, type_directory_name)



142
143
144
# 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

- (Object) get_op_name(op, in_out)



124
125
126
127
128
129
130
# 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

- (Object) soap_element_directory



158
159
160
# 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

- (Object) soap_type_directory



154
155
156
# 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

- (Object) type_directory_base



146
147
148
# 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