Class | SOAP::RPC::SOAPMethod |
In: |
lib/soap/rpc/element.rb
|
Parent: | SOAPStruct |
RETVAL | = | 'retval' |
IN | = | 'in' |
OUT | = | 'out' |
INOUT | = | 'inout' |
inparam | [R] | |
outparam | [R] | |
param_def | [R] | |
retval_class_name | [R] | |
retval_name | [R] |
# File lib/soap/rpc/element.rb, line 162 162: def SOAPMethod.create_doc_param_def(req_qnames, res_qnames) 163: req_qnames = [req_qnames] if req_qnames.is_a?(XSD::QName) 164: res_qnames = [res_qnames] if res_qnames.is_a?(XSD::QName) 165: param_def = [] 166: req_qnames.each do |qname| 167: param_def << [IN, qname.name, [nil, qname.namespace, qname.name]] 168: end 169: res_qnames.each do |qname| 170: param_def << [OUT, qname.name, [nil, qname.namespace, qname.name]] 171: end 172: param_def 173: end
# File lib/soap/rpc/element.rb, line 153 153: def SOAPMethod.create_rpc_param_def(param_names) 154: param_def = [] 155: param_names.each do |param_name| 156: param_def.push([IN, param_name, nil]) 157: end 158: param_def.push([RETVAL, 'return', nil]) 159: param_def 160: end
# File lib/soap/rpc/element.rb, line 140 140: def SOAPMethod.derive_rpc_param_def(obj, name, *param) 141: if param.size == 1 and param[0].is_a?(Array) 142: return param[0] 143: end 144: if param.empty? 145: method = obj.method(name) 146: param_names = (1..method.arity.abs).collect { |i| "p#{i}" } 147: else 148: param_names = param 149: end 150: create_rpc_param_def(param_names) 151: end
# File lib/soap/rpc/element.rb, line 83 83: def initialize(qname, param_def = nil) 84: super(nil) 85: @elename = qname 86: @encodingstyle = nil 87: 88: @param_def = param_def 89: 90: @signature = [] 91: @inparam_names = [] 92: @inoutparam_names = [] 93: @outparam_names = [] 94: 95: @inparam = {} 96: @outparam = {} 97: @retval_name = nil 98: @retval_class_name = nil 99: 100: init_param(@param_def) if @param_def 101: end
# File lib/soap/rpc/element.rb, line 130 130: def SOAPMethod.param_count(param_def, *type) 131: count = 0 132: param_def.each do |io_type, name, param_type| 133: if type.include?(io_type) 134: count += 1 135: end 136: end 137: count 138: end
# File lib/soap/rpc/element.rb, line 103 103: def have_outparam? 104: @outparam_names.size > 0 105: end
# File lib/soap/rpc/element.rb, line 107 107: def input_params 108: collect_params(IN, INOUT) 109: end
# File lib/soap/rpc/element.rb, line 111 111: def output_params 112: collect_params(OUT, INOUT) 113: end
# File lib/soap/rpc/element.rb, line 123 123: def set_outparam(params) 124: params.each do |param, data| 125: @outparam[param] = data 126: data.elename.name = param 127: end 128: end
# File lib/soap/rpc/element.rb, line 115 115: def set_param(params) 116: params.each do |param, data| 117: @inparam[param] = data 118: data.elename.name = param 119: data.parent = self 120: end 121: end
# File lib/soap/rpc/element.rb, line 177 177: def collect_params(*type) 178: names = [] 179: @signature.each do |io_type, name, param_type| 180: names << name if type.include?(io_type) 181: end 182: names 183: end
# File lib/soap/rpc/element.rb, line 185 185: def init_param(param_def) 186: param_def.each do |io_type, name, param_type| 187: case io_type 188: when IN 189: @signature.push([IN, name, param_type]) 190: @inparam_names.push(name) 191: when OUT 192: @signature.push([OUT, name, param_type]) 193: @outparam_names.push(name) 194: when INOUT 195: @signature.push([INOUT, name, param_type]) 196: @inoutparam_names.push(name) 197: when RETVAL 198: if @retval_name 199: raise MethodDefinitionError.new('duplicated retval') 200: end 201: @retval_name = name 202: @retval_class_name = nil 203: if param_type 204: if param_type[0].is_a?(String) 205: @retval_class_name = Mapping.class_from_name(param_type[0]) 206: else 207: @retval_class_name = param_type[0] 208: end 209: end 210: else 211: raise MethodDefinitionError.new("unknown type: #{io_type}") 212: end 213: end 214: end