| Class | WSDL::Operation |
| In: |
lib/wsdl/operation.rb
|
| Parent: | Info |
| fault | [R] | |
| input | [R] | |
| name | [R] | |
| output | [R] | |
| parameter_order | [R] | |
| type | [R] |
# File lib/wsdl/operation.rb, line 34
34: def initialize
35: super
36: @name = nil
37: @type = nil
38: @parameter_order = nil
39: @input = nil
40: @output = nil
41: @fault = []
42: end
# File lib/wsdl/operation.rb, line 48
48: def input_info
49: typename = input.find_message.name
50: NameInfo.new(@name, typename, inputparts)
51: end
# File lib/wsdl/operation.rb, line 62
62: def inputname
63: XSD::QName.new(targetnamespace, input.name ? input.name.name : @name.name)
64: end
# File lib/wsdl/operation.rb, line 58
58: def inputparts
59: sort_parts(input.find_message.parts)
60: end
# File lib/wsdl/operation.rb, line 53
53: def output_info
54: typename = output.find_message.name
55: NameInfo.new(@name, typename, outputparts)
56: end
# File lib/wsdl/operation.rb, line 70
70: def outputname
71: XSD::QName.new(targetnamespace,
72: output.name ? output.name.name : @name.name + 'Response')
73: end
# File lib/wsdl/operation.rb, line 66
66: def outputparts
67: sort_parts(output.find_message.parts)
68: end
# File lib/wsdl/operation.rb, line 97
97: def parse_attr(attr, value)
98: case attr
99: when NameAttrName
100: @name = XSD::QName.new(targetnamespace, value.source)
101: when TypeAttrName
102: @type = value
103: when ParameterOrderAttrName
104: @parameter_order = value.source.split(/\s+/)
105: else
106: nil
107: end
108: end
# File lib/wsdl/operation.rb, line 75
75: def parse_element(element)
76: case element
77: when InputName
78: o = Param.new
79: @input = o
80: o
81: when OutputName
82: o = Param.new
83: @output = o
84: o
85: when FaultName
86: o = Param.new
87: @fault << o
88: o
89: when DocumentationName
90: o = Documentation.new
91: o
92: else
93: nil
94: end
95: end
# File lib/wsdl/operation.rb, line 112
112: def sort_parts(parts)
113: return parts.dup unless parameter_order
114: result = []
115: parameter_order.each do |orderitem|
116: if (ele = parts.find { |part| part.name == orderitem })
117: result << ele
118: end
119: end
120: if result.length == 0
121: return parts.dup
122: end
123: # result length can be shorter than parts's.
124: # return part must not be a part of the parameterOrder.
125: result
126: end