Changeset 1515
- Timestamp:
- 04/27/05 16:13:21 (4 years ago)
- Files:
-
- trunk/lib/soap/mapping/mapping.rb (modified) (4 diffs)
- trunk/lib/soap/mapping/registry.rb (modified) (3 diffs)
- trunk/lib/soap/mapping/wsdlencodedregistry.rb (modified) (7 diffs)
- trunk/lib/soap/mapping/wsdlliteralregistry.rb (modified) (3 diffs)
- trunk/lib/soap/rpc/element.rb (modified) (4 diffs)
- trunk/lib/wsdl/soap/classDefCreator.rb (modified) (6 diffs)
- trunk/lib/wsdl/soap/classDefCreatorSupport.rb (modified) (1 diff)
- trunk/lib/wsdl/soap/methodDefCreator.rb (modified) (5 diffs)
- trunk/test/wsdl/any/expectedDriver.rb (modified) (1 diff)
- trunk/test/wsdl/any/expectedService.rb (modified) (1 diff)
- trunk/test/wsdl/rpc/rpc.wsdl (modified) (3 diffs)
- trunk/test/wsdl/rpc/test_rpc.rb (modified) (2 diffs)
- trunk/test/wsdl/simpletype/rpc/expectedDriver.rb (modified) (2 diffs)
- trunk/test/wsdl/simpletype/rpc/expectedService.rb (modified) (2 diffs)
- trunk/test/wsdl/soap/wsdl2ruby/expectedDriver.rb (modified) (2 diffs)
- trunk/test/wsdl/soap/wsdl2ruby/expectedService.cgi (modified) (2 diffs)
- trunk/test/wsdl/soap/wsdl2ruby/expectedService.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/mapping/mapping.rb
r1506 r1515 24 24 module TraverseSupport 25 25 def mark_marshalled_obj(obj, soap_obj) 26 raise if obj.nil? 26 27 Thread.current[:SOAPMarshalDataKey][obj.__id__] = soap_obj 27 28 end 28 29 29 30 def mark_unmarshalled_obj(node, obj) 31 return if obj.nil? 30 32 # node.id is not Object#id but SOAPReference#id 31 33 Thread.current[:SOAPMarshalDataKey][node.id] = obj … … 42 44 end 43 45 44 def self.soap2obj(node, registry = nil )46 def self.soap2obj(node, registry = nil, klass = nil) 45 47 registry ||= Mapping::DefaultRegistry 46 48 Thread.current[:SOAPMarshalDataKey] = {} 47 obj = _soap2obj(node, registry )49 obj = _soap2obj(node, registry, klass) 48 50 Thread.current[:SOAPMarshalDataKey] = nil 49 51 obj … … 112 114 end 113 115 114 def self._soap2obj(node, registry )116 def self._soap2obj(node, registry, klass = nil) 115 117 if node.is_a?(SOAPReference) 116 118 target = node.__getobj__ … … 119 121 return referent 120 122 else 121 return _soap2obj(target, registry )122 end 123 end 124 return registry.soap2obj(node )123 return _soap2obj(target, registry, klass) 124 end 125 end 126 return registry.soap2obj(node, klass) 125 127 end 126 128 trunk/lib/soap/mapping/registry.rb
r1508 r1515 166 166 end 167 167 168 def soap2obj(node) 169 klass = node.class 170 if map = @soap2obj[klass] 168 def soap2obj(node, klass = nil) 169 if map = @soap2obj[node.class] 171 170 map.each do |obj_class, factory, info| 171 next if klass and obj_class != klass 172 172 conv, obj = factory.soap2obj(obj_class, node, info, @registry) 173 173 return true, obj if conv … … 385 385 end 386 386 387 def soap2obj(node )388 obj = _soap2obj(node )387 def soap2obj(node, klass = nil) 388 obj = _soap2obj(node, klass) 389 389 if @allow_original_mapping 390 390 addextend2obj(obj, node.extraattr[RubyExtendName]) … … 430 430 431 431 # Might return nil as a mapping result. 432 def _soap2obj(node )432 def _soap2obj(node, klass = nil) 433 433 if node.extraattr.key?(RubyTypeName) 434 434 conv, obj = @rubytype_factory.soap2obj(nil, node, nil, self) 435 435 return obj if conv 436 436 else 437 conv, obj = @map.soap2obj(node )437 conv, obj = @map.soap2obj(node, klass) 438 438 return obj if conv 439 439 conv, obj = @default_factory.soap2obj(nil, node, nil, self) trunk/lib/soap/mapping/wsdlencodedregistry.rb
r1505 r1515 16 16 17 17 18 class WSDLEncodedRegistry 18 class WSDLEncodedRegistry < Registry 19 19 include TraverseSupport 20 20 … … 34 34 :allow_original_mapping => true 35 35 ) 36 @schema_element_cache = {} 36 37 end 37 38 … … 66 67 def soap2obj(node, obj_class = nil) 67 68 begin 68 return Mapping.soap2obj(node)69 return _soap2obj(node, obj_class) 69 70 rescue MappingError 70 71 end … … 112 113 113 114 def simple2soap(obj, type) 115 type.check_lexical_format(obj) 116 return SOAPNil.new if obj.nil? # ToDo: check nillable. 114 117 o = base2soap(obj, TypeMap[type.base]) 115 type.check_lexical_format(obj)116 118 o 117 119 end … … 145 147 146 148 def struct2soap(obj, type_qname, type) 149 return SOAPNil.new if obj.nil? # ToDo: check nillable. 147 150 soap_obj = SOAPStruct.new(type_qname) 148 mark_marshalled_obj(obj, soap_obj) 149 elements2soap(obj, soap_obj, type.content.elements) 151 unless obj.nil? 152 mark_marshalled_obj(obj, soap_obj) 153 elements2soap(obj, soap_obj, type.content.elements) 154 end 150 155 soap_obj 151 156 end 152 157 153 158 def array2soap(obj, type_qname, type) 159 return SOAPNil.new if obj.nil? # ToDo: check nillable. 154 160 arytype = type.child_type 155 161 soap_obj = SOAPArray.new(ValueArrayName, 1, arytype) 156 mark_marshalled_obj(obj, soap_obj) 157 obj.each do |item| 158 soap_obj.add(Mapping._obj2soap(item, self, arytype)) 162 unless obj.nil? 163 mark_marshalled_obj(obj, soap_obj) 164 obj.each do |item| 165 soap_obj.add(Mapping._obj2soap(item, self, arytype)) 166 end 159 167 end 160 168 soap_obj … … 164 172 MapValueName = XSD::QName.new(nil, "value") 165 173 def map2soap(obj, type_qname, type) 174 return SOAPNil.new if obj.nil? # ToDo: check nillable. 166 175 keytype = type.child_type(MapKeyName) || XSD::AnyTypeName 167 176 valuetype = type.child_type(MapValueName) || XSD::AnyTypeName 168 177 soap_obj = SOAPStruct.new(MapQName) 169 mark_marshalled_obj(obj, soap_obj) 170 obj.each do |key, value| 171 elem = SOAPStruct.new 172 elem.add("key", Mapping._obj2soap(key, self, keytype)) 173 elem.add("value", Mapping._obj2soap(value, self, valuetype)) 174 # ApacheAxis allows only 'item' here. 175 soap_obj.add("item", elem) 178 unless obj.nil? 179 mark_marshalled_obj(obj, soap_obj) 180 obj.each do |key, value| 181 elem = SOAPStruct.new 182 elem.add("key", Mapping._obj2soap(key, self, keytype)) 183 elem.add("value", Mapping._obj2soap(value, self, valuetype)) 184 # ApacheAxis allows only 'item' here. 185 soap_obj.add("item", elem) 186 end 176 187 end 177 188 soap_obj … … 186 197 end 187 198 end 199 200 def _soap2obj(node, obj_class) 201 unless obj_class 202 typestr = XSD::CodeGen::GenSupport.safeconstname(node.elename.name) 203 obj_class = Mapping.class_from_name(typestr) 204 end 205 if obj_class and obj_class.class_variables.include?('@@schema_element') 206 soap2definedobj(node, obj_class) 207 else 208 Mapping.soap2obj(node, nil, obj_class) 209 end 210 end 211 212 def soap2definedobj(node, obj_class) 213 obj = Mapping.create_empty_object(obj_class) 214 unless node.is_a?(SOAPNil) 215 add_elements2obj(node, obj) 216 end 217 obj 218 end 219 220 def add_elements2obj(node, obj) 221 elements, as_array = schema_element_definition(obj.class) 222 vars = {} 223 node.each do |name, value| 224 if class_name = elements[name] 225 if klass = Mapping.class_from_name(class_name) 226 # klass must be a SOAPBasetype or a class 227 if klass.ancestors.include?(::SOAP::SOAPBasetype) 228 if value.respond_to?(:data) 229 child = klass.new(value.data).data 230 else 231 child = klass.new(nil).data 232 end 233 else 234 child = Mapping._soap2obj(value, self, klass) 235 end 236 else 237 raise MappingError.new("unknown class: #{class_name}") 238 end 239 else # untyped element is treated as anyType. 240 child = Mapping._soap2obj(value, self) 241 end 242 vars[name] = child 243 end 244 Mapping.set_attributes(obj, vars) 245 end 246 247 # it caches @@schema_element. this means that @@schema_element must not be 248 # changed while a lifetime of a WSDLLiteralRegistry. 249 def schema_element_definition(klass) 250 @schema_element_cache[klass] ||= Mapping.schema_element_definition(klass) 251 end 188 252 end 189 253 trunk/lib/soap/mapping/wsdlliteralregistry.rb
r1504 r1515 18 18 19 19 20 class WSDLLiteralRegistry 20 class WSDLLiteralRegistry < Registry 21 21 attr_reader :definedelements 22 22 attr_reader :definedtypes … … 54 54 55 55 # node should be a SOAPElement 56 def soap2obj(node) 56 def soap2obj(node, obj_class = nil) 57 unless obj_class.nil? 58 raise MappingError.new("must not reach here") 59 end 57 60 begin 58 61 return soapele2obj(node) … … 209 212 soapele2definedobj(node, obj_class) 210 213 elsif node.is_a?(SOAPElement) or node.is_a?(SOAPStruct) 214 # SOAPArray for literal? 211 215 soapele2undefinedobj(node) 212 216 else trunk/lib/soap/rpc/element.rb
r1411 r1515 78 78 attr_reader :inparam 79 79 attr_reader :outparam 80 attr_reader :retval_name 81 attr_reader :retavl_class_name 80 82 81 83 def initialize(qname, param_def = nil) … … 94 96 @outparam = {} 95 97 @retval_name = nil 98 @retavl_class_name = nil 96 99 97 100 init_param(@param_def) if @param_def … … 193 196 @inoutparam_names.push(name) 194 197 when RETVAL 195 if (@retval_name)196 raise MethodDefinitionError.new(' Duplicated retval')198 if @retval_name 199 raise MethodDefinitionError.new('duplicated retval') 197 200 end 198 201 @retval_name = name 202 @retavl_class_name = param_type ? param_type[0] : nil 199 203 else 200 raise MethodDefinitionError.new(" Unknown type: #{io_type}")204 raise MethodDefinitionError.new("unknown type: #{io_type}") 201 205 end 202 206 end … … 256 260 # NCName & ruby's method name 257 261 unless /\A[\w_][\w\d_\-]*\z/ =~ qname.name 258 raise MethodDefinitionError.new(" Element name '#{qname.name}' not allowed")262 raise MethodDefinitionError.new("element name '#{qname.name}' not allowed") 259 263 end 260 264 end trunk/lib/wsdl/soap/classDefCreator.rb
r1494 r1515 135 135 if element.type == XSD::AnyTypeName 136 136 type = nil 137 elsif basetype= element_basetype(element)138 type = basetype.name137 elsif klass = element_basetype(element) 138 type = klass.name 139 139 elsif element.type 140 140 type = create_class_name(element.type) … … 159 159 params << "#{varname} = nil" 160 160 end 161 qname = (varname == name) ? nil : element.name162 schema_element << [varname, qname, type]161 eleqname = (varname == name) ? nil : element.name 162 schema_element << [varname, eleqname, type] 163 163 end 164 164 unless typedef.attributes.empty? … … 188 188 189 189 def element_basetype(ele) 190 if type= basetype_class(ele.type)191 type190 if klass = basetype_class(ele.type) 191 klass 192 192 elsif ele.local_simpletype 193 193 basetype_class(ele.local_simpletype.base) … … 198 198 199 199 def attribute_basetype(attr) 200 if type= basetype_class(attr.type)201 type200 if klass = basetype_class(attr.type) 201 klass 202 202 elsif attr.local_simpletype 203 203 basetype_class(attr.local_simpletype.base) … … 208 208 209 209 def basetype_class(type) 210 return nil if type.nil? 210 211 if simpletype = @simpletypes[type] 211 212 basetype_mapped_class(simpletype.base) … … 219 220 attributes.each do |attribute| 220 221 name = name_attribute(attribute) 221 if basetype= attribute_basetype(attribute)222 type = basetype.name222 if klass = attribute_basetype(attribute) 223 type = klass.name 223 224 else 224 225 type = nil trunk/lib/wsdl/soap/classDefCreatorSupport.rb
r1445 r1515 22 22 def create_class_name(qname) 23 23 if klass = basetype_mapped_class(qname) 24 ::SOAP::Mapping::DefaultRegistry.find_mapped_obj_class(klass) 24 ::SOAP::Mapping::DefaultRegistry.find_mapped_obj_class(klass).name 25 25 else 26 26 safeconstname(qname.name) trunk/lib/wsdl/soap/methodDefCreator.rb
r1479 r1515 26 26 @complextypes = @definitions.collect_complextypes 27 27 @elements = @definitions.collect_elements 28 @types = nil28 @types = [] 29 29 end 30 30 31 31 def dump(porttype) 32 @types = []32 @types.clear 33 33 result = "" 34 34 operations = @definitions.porttype(porttype).operations … … 42 42 end 43 43 return result, @types 44 end45 46 private47 48 def dump_method(operation, binding)49 name = safemethodname(operation.name.name)50 name_as = operation.name.name51 style = binding.soapoperation_style52 namespace = binding.input.soapbody.namespace53 if style == :rpc54 paramstr = param2str(collect_rpcparameter(operation))55 else56 paramstr = param2str(collect_documentparameter(operation))57 end58 if paramstr.empty?59 paramstr = '[]'60 else61 paramstr = "[\n" << paramstr.gsub(/^/, ' ') << "\n ]"62 end63 return <<__EOD__64 [#{dq(name_as)}, #{dq(name)},65 #{paramstr},66 #{ndq(binding.soapaction)}, #{ndq(namespace)}, #{sym(style.id2name)}67 ]68 __EOD__69 44 end 70 45 … … 102 77 end 103 78 79 private 80 81 def dump_method(operation, binding) 82 name = safemethodname(operation.name.name) 83 name_as = operation.name.name 84 style = binding.soapoperation_style 85 namespace = binding.input.soapbody.namespace 86 if style == :rpc 87 paramstr = param2str(collect_rpcparameter(operation)) 88 else 89 paramstr = param2str(collect_documentparameter(operation)) 90 end 91 if paramstr.empty? 92 paramstr = '[]' 93 else 94 paramstr = "[\n" << paramstr.gsub(/^/, ' ') << "\n ]" 95 end 96 return <<__EOD__ 97 [#{dq(name_as)}, #{dq(name)}, 98 #{paramstr}, 99 #{ndq(binding.soapaction)}, #{ndq(namespace)}, #{sym(style.id2name)} 100 ] 101 __EOD__ 102 end 103 104 104 def rpcdefinedtype(part) 105 105 if mapped = basetype_mapped_class(part.type) … … 108 108 ['::' + basetype_mapped_class(definedtype.base).name] 109 109 elsif definedtype = @elements[part.element] 110 ['::SOAP::SOAPStruct', part.element.namespace, part.element.name] 110 #['::SOAP::SOAPStruct', part.element.namespace, part.element.name] 111 ['nil', part.element.namespace, part.element.name] 111 112 elsif definedtype = @complextypes[part.type] 112 113 case definedtype.compoundtype 113 when :TYPE_STRUCT, :TYPE_MAP 114 ['::SOAP::SOAPStruct', part.type.namespace, part.type.name] 114 when :TYPE_STRUCT 115 type = create_class_name(part.type) 116 [type, part.type.namespace, part.type.name] 117 when :TYPE_MAP 118 [Hash.name, part.type.namespace, part.type.name] 115 119 when :TYPE_ARRAY 116 120 arytype = definedtype.find_arytype || XSD::AnyTypeName 117 121 ns = arytype.namespace 118 122 name = arytype.name.sub(/\[(?:,)*\]$/, '') 119 ['::SOAP::SOAPArray', ns, name] 123 type = create_class_name(XSD::QName.new(ns, name)) 124 [type + '[]', ns, name] 120 125 else 121 126 raise NotImplementedError.new("must not reach here") … … 147 152 # ignore inline type definition. 148 153 return if type.nil? 154 return if @types.include?(type) 149 155 @types << type 150 156 return unless @complextypes[type] trunk/test/wsdl/any/expectedDriver.rb
r1445 r1515 17 17 ["echo", "echo", 18 18 [ 19 ["in", "echoitem", [ ::SOAP::SOAPStruct, "urn:example.com:echo-type", "foo.bar"]],20 ["retval", "echoitem", [ ::SOAP::SOAPStruct, "urn:example.com:echo-type", "foo.bar"]]19 ["in", "echoitem", [FooBar, "urn:example.com:echo-type", "foo.bar"]], 20 ["retval", "echoitem", [FooBar, "urn:example.com:echo-type", "foo.bar"]] 21 21 ], 22 22 "urn:example.com:echo", "urn:example.com:echo", :rpc trunk/test/wsdl/any/expectedService.rb
r1445 r1515 18 18 ["echo", "echo", 19 19 [ 20 ["in", "echoitem", [ ::SOAP::SOAPStruct, "urn:example.com:echo-type", "foo.bar"]],21 ["retval", "echoitem", [ ::SOAP::SOAPStruct, "urn:example.com:echo-type", "foo.bar"]]20 ["in", "echoitem", [FooBar, "urn:example.com:echo-type", "foo.bar"]], 21 ["retval", "echoitem", [FooBar, "urn:example.com:echo-type", "foo.bar"]] 22 22 ], 23 23 "urn:example.com:echo", "urn:example.com:echo", :rpc trunk/test/wsdl/rpc/rpc.wsdl
r1444 r1515 13 13 <xsd:element name="family-name" type="xsd:string" /> 14 14 <xsd:element name="given_name" type="xsd:string" /> 15 <xsd:element name="age" type="xsd:int" /> 16 <xsd:element name="link" type="txd:person" /> 15 17 </xsd:all> 16 18 </xsd:complexType> … … 32 34 <output message="tns:echo_out"/> 33 35 </operation> 36 37 <operation name="echo_err"> 38 <input message="tns:echo_in"/> 39 <output message="tns:echo_out"/> 40 </operation> 34 41 </portType> 35 42 … … 37 44 <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/> 38 45 <operation name="echo"> 46 <soap:operation soapAction=""/> 47 <input> 48 <soap:body use="encoded" namespace="urn:rpc" 49 encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 50 </input> 51 <output> 52 <soap:body use="encoded" namespace="urn:rpc" 53 encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 54 </output> 55 </operation> 56 57 <operation name="echo_err"> 58 <soap:operation soapAction=""/> 39 59 <input> 40 60 <soap:body use="encoded" namespace="urn:rpc" trunk/test/wsdl/rpc/test_rpc.rb
r1444 r1515 12 12 class Server < ::SOAP::RPC::StandaloneServer 13 13 def on_init 14 self.generate_explicit_type = false 14 15 add_rpc_method(self, 'echo', 'arg1', 'arg2') 16 add_rpc_method(self, 'echo_err', 'arg1', 'arg2') 15 17 end 16 18 19 DummyPerson = Struct.new("family-name".intern, :given_name) 17 20 def echo(arg1, arg2) 18 arg1.family_name = arg2.family_name 19 arg1.given_name = arg2.given_name 20 arg1 21 case arg1.family_name 22 when 'normal' 23 arg1.family_name = arg2.family_name 24 arg1.given_name = arg2.given_name 25 arg1.age = arg2.age 26 arg1 27 when 'dummy' 28 DummyPerson.new("family-name", "given_name") 29 else 30 raise 31 end 32 end 33 34 ErrPerson = Struct.new(:given_name, :no_such_element) 35 def echo_err(arg1, arg2) 36 ErrPerson.new(58, Time.now) 21 37 end 22 38 end … … 79 95 @client.wiredump_dev = STDOUT if $DEBUG 80 96 81 ret = @client.echo(Person.new("Na", "Hi"), Person.new("Hi", "Na")) 97 ret = @client.echo(Person.new("normal", "", 12), Person.new("Hi", "Na", 21)) 98 assert_equal(Person, ret.class) 82 99 assert_equal("Hi", ret.family_name) 83 100 assert_equal("Na", ret.given_name) 101 assert_equal(21, ret.age) 102 103 ret = @client.echo(Person.new("dummy", "", 12), Person.new("Hi", "Na", 21)) 104 assert_equal(Person, ret.class) 105 assert_equal("family-name", ret.family_name) 106 assert_equal("given_name", ret.given_name) 107 assert_equal(nil, ret.age) 108 109 ret = @client.echo_err(Person.new("Na", "Hi"), Person.new("Hi", "Na")) 110 assert_equal(Person, ret.class) 111 assert_equal("58", ret.given_name) 112 assert_equal(nil, ret.family_name) 113 assert_equal(nil, ret.age) 84 114 end 85 115 end trunk/test/wsdl/simpletype/rpc/expectedDriver.rb
r1445 r1515 18 18 [ 19 19 ["in", "version", [::SOAP::SOAPString]], 20 ["retval", "version_struct", [ ::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]]20 ["retval", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 21 21 ], 22 22 "urn:example.com:simpletype-rpc", "urn:example.com:simpletype-rpc", :rpc … … 24 24 ["echo_version_r", "echo_version_r", 25 25 [ 26 ["in", "version_struct", [ ::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]],26 ["in", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 27 27 ["retval", "version", [::SOAP::SOAPString]] 28 28 ], trunk/test/wsdl/simpletype/rpc/expectedService.rb
r1445 r1515 19 19 [ 20 20 ["in", "version", [::SOAP::SOAPString]], 21 ["retval", "version_struct", [ ::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]]21 ["retval", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 22 22 ], 23 23 "urn:example.com:simpletype-rpc", "urn:example.com:simpletype-rpc", :rpc … … 25 25 ["echo_version_r", "echo_version_r", 26 26 [ 27 ["in", "version_struct", [ ::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]],27 ["in", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 28 28 ["retval", "version", [::SOAP::SOAPString]] 29 29 ], trunk/test/wsdl/soap/wsdl2ruby/expectedDriver.rb
r1445 r1515 18 18 [ 19 19 ["in", "version", [::SOAP::SOAPString]], 20 ["retval", "version_struct", [ ::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]]20 ["retval", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 21 21 ], 22 22 "urn:example.com:simpletype-rpc", "urn:example.com:simpletype-rpc", :rpc … … 24 24 ["echo_version_r", "echo_version_r", 25 25 [ 26 ["in", "version_struct", [ ::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]],26 ["in", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 27 27 ["retval", "version", [::SOAP::SOAPString]] 28 28 ], trunk/test/wsdl/soap/wsdl2ruby/expectedService.cgi
r1445 r1515 19 19 [ 20 20 ["in", "version", [::SOAP::SOAPString]], 21 ["retval", "version_struct", [ ::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]]21 ["retval", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 22 22 ], 23 23 "urn:example.com:simpletype-rpc", "urn:example.com:simpletype-rpc", :rpc … … 25 25 ["echo_version_r", "echo_version_r", 26 26 [ 27 ["in", "version_struct", [ ::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]],27 ["in", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 28 28 ["retval", "version", [::SOAP::SOAPString]] 29 29 ], trunk/test/wsdl/soap/wsdl2ruby/expectedService.rb
r1445 r1515 19 19 [ 20 20 ["in", "version", [::SOAP::SOAPString]], 21 ["retval", "version_struct", [ ::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]]21 ["retval", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]] 22 22 ], 23 23 "urn:example.com:simpletype-rpc", "urn:example.com:simpletype-rpc", :rpc … … 25 25 ["echo_version_r", "echo_version_r", 26 26 [ 27 ["in", "version_struct", [ ::SOAP::SOAPStruct, "urn:example.com:simpletype-rpc-type", "version_struct"]],27 ["in", "version_struct", [Version_struct, "urn:example.com:simpletype-rpc-type", "version_struct"]], 28 28 ["retval", "version", [::SOAP::SOAPString]] 29 29 ],