Changeset 1788
- Timestamp:
- 05/20/07 15:36:14 (2 years ago)
- Files:
-
- trunk/lib/soap/mapping/encodedregistry.rb (modified) (2 diffs)
- trunk/lib/soap/mapping/literalregistry.rb (modified) (3 diffs)
- trunk/lib/soap/mapping/mapping.rb (modified) (5 diffs)
- trunk/lib/soap/mapping/registry.rb (modified) (1 diff)
- trunk/lib/soap/mapping/schemadefinition.rb (added)
- trunk/lib/soap/mapping/wsdlliteralregistry.rb (modified) (2 diffs)
- trunk/lib/wsdl/soap/classDefCreator.rb (modified) (3 diffs)
- trunk/lib/wsdl/soap/literalMappingRegistryCreator.rb (modified) (3 diffs)
- trunk/lib/wsdl/soap/mappingRegistryCreatorSupport.rb (modified) (3 diffs)
- trunk/lib/wsdl/xmlSchema/complexContent.rb (modified) (1 diff)
- trunk/lib/wsdl/xmlSchema/complexExtension.rb (modified) (1 diff)
- trunk/lib/wsdl/xmlSchema/complexRestriction.rb (modified) (1 diff)
- trunk/test/wsdl/any/expectedEcho.rb (modified) (2 diffs)
- trunk/test/wsdl/choice/choice.wsdl (modified) (4 diffs)
- trunk/test/wsdl/choice/test_choice.rb (modified) (2 diffs)
- trunk/test/wsdl/ref/expectedProduct.rb (modified) (2 diffs)
- trunk/test/wsdl/rpc/test_rpc_lit.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/mapping/encodedregistry.rb
r1776 r1788 503 503 vars = {} 504 504 node.each do |name, value| 505 item = definition.elements.find { |k, v| 506 k.elename == value.elename 507 } 505 item = definition.elements.find_element(value.elename) 508 506 if item 509 507 child = soap2typedobj(value, item.mapped_class) … … 538 536 obj 539 537 end 540 541 def find_node_definition(node)542 schema_definition_from_elename(node.elename) || schema_definition_from_type(node.type)543 end544 538 end 545 539 trunk/lib/soap/mapping/literalregistry.rb
r1771 r1788 108 108 ele.extraattr[XSD::AttrTypeName] = definition.type 109 109 end 110 any = nil 111 if definition.have_any? 112 any = Mapping.get_attributes_for_any(obj, definition.elements) 113 end 114 definition.elements.each do |eledef| 115 if eledef.elename == XSD::AnyTypeName 116 if any 117 SOAPElement.from_objs(any).each do |child| 118 ele.add(child) 119 end 120 end 121 elsif obj.respond_to?(:each) and eledef.as_array? 122 obj.each do |item| 123 ele.add(obj2soap(item, eledef.elename)) 124 end 125 else 126 child = Mapping.get_attribute(obj, eledef.varname) 127 if child.respond_to?(:each) and eledef.as_array? 128 child.each do |item| 129 ele.add(obj2soap(item, eledef.elename)) 130 end 131 else 132 ele.add(obj2soap(child, eledef.elename)) 133 end 134 end 135 end 110 stubobj2soap_elements(obj, ele, definition.elements) 136 111 if definition.attributes 137 112 definition.attributes.each do |qname, param| … … 142 117 end 143 118 ele 119 end 120 121 def stubobj2soap_elements(obj, ele, definition, add_if_nil = true) 122 added = false 123 case definition 124 when SchemaSequenceDefinition, SchemaEmptyDefinition 125 definition.each do |eledef| 126 ele_added = stubobj2soap_elements(obj, ele, eledef, add_if_nil) 127 added = true if ele_added 128 end 129 when SchemaChoiceDefinition 130 definition.each do |eledef| 131 added = stubobj2soap_elements(obj, ele, eledef, false) 132 break if added 133 end 134 else 135 added = true 136 if definition.as_any? 137 any = Mapping.get_attributes_for_any(obj) 138 SOAPElement.from_objs(any).each do |child| 139 ele.add(child) 140 end 141 elsif obj.respond_to?(:each) and definition.as_array? 142 obj.each do |item| 143 ele.add(obj2soap(item, definition.elename)) 144 end 145 else 146 child = Mapping.get_attribute(obj, definition.varname) 147 if child.nil? and !add_if_nil 148 added = false 149 else 150 if child.respond_to?(:each) and definition.as_array? 151 child.each do |item| 152 ele.add(obj2soap(item, definition.elename)) 153 end 154 else 155 ele.add(obj2soap(child, definition.elename)) 156 end 157 end 158 end 159 end 160 added 144 161 end 145 162 … … 206 223 vars = {} 207 224 node.each do |name, value| 208 item = definition.elements.find { |k, v| 209 k.elename == value.elename 210 } 225 item = definition.elements.find_element(value.elename) 211 226 if item 212 227 child = elesoapchild2obj(value, item) trunk/lib/soap/mapping/mapping.rb
r1779 r1788 8 8 9 9 require 'xsd/codegen/gensupport' 10 require 'soap/mapping/schemadefinition' 10 11 11 12 … … 297 298 end 298 299 299 def self.get_attributes_for_any(obj , elements)300 def self.get_attributes_for_any(obj) 300 301 if obj.respond_to?(:__xmlele_any) 301 302 obj.__xmlele_any 302 303 else 303 any = get_attributes(obj) 304 if elements 305 elements.each do |child_ele| 306 child = get_attribute(obj, child_ele.name.name) 307 if k = any.key(child) 308 any.delete(k) 309 end 310 end 311 end 312 any 304 get_attributes(obj) 313 305 end 314 306 end … … 438 430 if schema_element.respond_to?(:is_concrete_definition) and 439 431 schema_element.is_concrete_definition 440 definition.elements .replace(schema_element)432 definition.elements = schema_element 441 433 else 442 parse_schema_element_definition(klass, definition, schema_element) 434 default_ns = elename.namespace if elename 435 default_ns ||= type.namespace if type 436 definition.elements = parse_schema_definition(schema_element, default_ns) 437 # needed? 438 if klass.ancestors.include?(::Array) 439 definition.elements.set_array 440 end 443 441 end 444 442 end … … 447 445 448 446 # for backward compatibility 449 def self.parse_schema_element_definition(klass, definition, schema_element) 447 # returns SchemaComplexTypeDefinition 448 def self.parse_schema_definition(schema_element, default_ns) 449 definition = nil 450 450 if schema_element[0] == :choice 451 451 schema_element.shift 452 definition.set_choice 453 end 454 schema_element.each do |element| 455 varname, info = element 452 definition = SchemaChoiceDefinition.new 453 else 454 definition = SchemaSequenceDefinition.new 455 end 456 schema_element.each do |ele| 457 element_definition = parse_schema_element_definition(ele, default_ns) 458 definition << element_definition 459 if element_definition.as_array? 460 definition.set_array 461 end 462 end 463 definition 464 end 465 466 # returns SchemaElementDefinition 467 def self.parse_schema_element_definition(schema_element, default_ns) 468 if schema_element[0] == :choice 469 parse_schema_definition(schema_element, default_ns) 470 elsif schema_element[0].is_a?(Array) 471 parse_schema_definition(schema_element, default_ns) 472 else 473 varname, info = schema_element 456 474 mapped_class_str, elename = info 457 as_a rray = klass.ancestors.include?(::Array)475 as_any = as_array = false 458 476 if /\[\]$/ =~ mapped_class_str 459 477 mapped_class_str = mapped_class_str.sub(/\[\]$/, '') … … 470 488 end 471 489 if elename == XSD::AnyTypeName 472 definition.set_any490 as_any = true 473 491 elsif elename.nil? 474 ns ||= definition.elename.namespace if definition.elename 475 ns ||= definition.type.namespace if definition.type 476 elename = XSD::QName.new(ns, varname) 477 end 478 definition.elements << 479 SchemaElementDefinition.new(varname, mapped_class, elename, as_array) 480 end 481 end 482 483 class SchemaElementDefinition 484 attr_reader :varname, :mapped_class, :elename 485 486 def initialize(varname, mapped_class, elename, as_array) 487 @varname = varname 488 @mapped_class = mapped_class 489 @elename = elename 490 @as_array = as_array 491 end 492 493 def as_array? 494 @as_array 495 end 496 497 def is_concrete_definition 498 true 499 end 500 end 501 502 class SchemaElementChoiceDefinition < ::Array 503 def is_concrete_definition 504 true 505 end 506 end 507 508 class SchemaDefinition 509 attr_reader :class_for 510 attr_reader :elename, :type 511 attr_reader :qualified, :elements 512 attr_accessor :attributes 513 514 def initialize(class_for, elename, type, qualified) 515 @class_for = class_for 516 @elename = elename 517 @type = type 518 @qualified = qualified 519 @elements = [] 520 @attributes = nil 521 @choice = false 522 @any = false 523 end 524 525 def choice? 526 @choice 527 end 528 529 def have_any? 530 @any 531 end 532 533 def set_choice 534 @choice = true 535 end 536 537 def set_any 538 @any = true 492 elename = XSD::QName.new(default_ns, varname) 493 end 494 SchemaElementDefinition.new( 495 varname, mapped_class, elename, as_any, as_array) 539 496 end 540 497 end trunk/lib/soap/mapping/registry.rb
r1771 r1788 207 207 end 208 208 209 def find_node_definition(node) 210 schema_definition_from_elename(node.elename) || 211 schema_definition_from_type(node.type) 212 end 213 209 214 def find_schema_definition(name) 210 215 return nil unless name trunk/lib/soap/mapping/wsdlliteralregistry.rb
r1731 r1788 135 135 136 136 def complexobj2sequencesoap(obj, ele, type) 137 elements = type.elements 138 any = nil 139 if type.have_any? 140 any = Mapping.get_attributes_for_any(obj, elements) 141 end 142 elements.each do |child_ele| 137 type.elements.each do |child_ele| 143 138 case child_ele 144 139 when WSDL::XMLSchema::Any 145 if any 146 SOAPElement.from_objs(any).each do |child| 147 ele.add(child) 148 end 140 any = Mapping.get_attributes_for_any(obj) 141 SOAPElement.from_objs(any).each do |child| 142 ele.add(child) 149 143 end 150 144 when WSDL::XMLSchema::Element … … 162 156 163 157 def complexobj2choicesoap(obj, ele, type) 164 elements = type.elements 165 any = nil 166 if type.have_any? 167 raise MappingError.new( 168 "<any/> in <choice/> is not supported: #{ele.name.name}") 169 end 170 elements.each do |child_ele| 158 type.elements.each do |child_ele| 171 159 break if complexobj2soapchildren(obj, ele, child_ele, true) 172 160 end trunk/lib/wsdl/soap/classDefCreator.rb
r1782 r1788 47 47 result << dump_classdef(type.name, type) 48 48 else 49 str = dump_complextype 50 unless str.empty? 51 result << "\n" unless result.empty? 52 result << str 53 end 54 str = dump_simpletype 55 unless str.empty? 56 result << "\n" unless result.empty? 57 result << str 58 end 49 59 str = dump_element 50 60 unless str.empty? … … 57 67 result << str 58 68 end 59 str = dump_complextype60 unless str.empty?61 result << "\n" unless result.empty?62 result << str63 end64 str = dump_simpletype65 unless str.empty?66 result << "\n" unless result.empty?67 result << str68 end69 69 end 70 70 if @modulepath … … 80 80 def dump_element 81 81 @elements.collect { |ele| 82 qualified = (ele.elementform == 'qualified') 82 83 if ele.local_complextype 83 qualified = (ele.elementform == 'qualified')84 84 dump_complextypedef(ele.name, ele.local_complextype, qualified) 85 85 elsif ele.local_simpletype 86 qualified = (ele.elementform == 'qualified')87 86 dump_simpletypedef(ele.name, ele.local_simpletype, qualified) 87 elsif ele.type 88 if @complextypes[ele.type] 89 dump_complextypedef(ele.name, @complextypes[ele.type], qualified) 90 elsif @simpletypes[ele.type] 91 dump_simpletypedef(ele.name, @simpletypes[ele.type], qualified) 92 else 93 nil 94 end 88 95 else 89 96 nil trunk/lib/wsdl/soap/literalMappingRegistryCreator.rb
r1759 r1788 35 35 @varname = varname 36 36 result = '' 37 str = dump_complextype 38 unless str.empty? 39 result << "\n" unless result.empty? 40 result << str 41 end 42 str = dump_simpletype 43 unless str.empty? 44 result << "\n" unless result.empty? 45 result << str 46 end 37 47 str = dump_element 38 48 unless str.empty? … … 41 51 end 42 52 str = dump_attribute 43 unless str.empty?44 result << "\n" unless result.empty?45 result << str46 end47 str = dump_complextype48 unless str.empty?49 result << "\n" unless result.empty?50 result << str51 end52 str = dump_simpletype53 53 unless str.empty? 54 54 result << "\n" unless result.empty? … … 62 62 def dump_element 63 63 @elements.collect { |ele| 64 qualified = (ele.elementform == 'qualified') 64 65 if ele.local_complextype 65 qualified = (ele.elementform == 'qualified')66 66 dump_complextypedef(ele.name, ele.local_complextype, qualified) 67 67 elsif ele.local_simpletype 68 dump_simpletypedef(ele.name, ele.local_simpletype) 68 dump_simpletypedef(ele.name, ele.local_simpletype, qualified) 69 elsif ele.type 70 if @complextypes[ele.type] 71 dump_complextypedef(ele.name, @complextypes[ele.type], qualified) 72 elsif @simpletypes[ele.type] 73 dump_simpletypedef(ele.name, @simpletypes[ele.type], qualified) 74 else 75 nil 76 end 69 77 else 70 78 nil trunk/lib/wsdl/soap/mappingRegistryCreatorSupport.rb
r1782 r1788 198 198 end 199 199 200 def dump_simpletypedef(qname, simpletype )200 def dump_simpletypedef(qname, simpletype, qualified = false) 201 201 if simpletype.restriction 202 dump_simpletypedef_restriction(qname, simpletype )202 dump_simpletypedef_restriction(qname, simpletype, qualified) 203 203 elsif simpletype.list 204 dump_simpletypedef_list(qname, simpletype )204 dump_simpletypedef_list(qname, simpletype, qualified) 205 205 elsif simpletype.union 206 dump_simpletypedef_union(qname, simpletype )206 dump_simpletypedef_union(qname, simpletype, qualified) 207 207 else 208 208 raise RuntimeError.new("unknown kind of simpletype: #{simpletype}") … … 210 210 end 211 211 212 def dump_simpletypedef_restriction(qname, typedef )212 def dump_simpletypedef_restriction(qname, typedef, qualified) 213 213 restriction = typedef.restriction 214 214 if restriction.enumeration.empty? … … 227 227 end 228 228 229 def dump_simpletypedef_list(qname, typedef )229 def dump_simpletypedef_list(qname, typedef, qualified) 230 230 nil 231 231 end 232 232 233 def dump_simpletypedef_union(qname, typedef )233 def dump_simpletypedef_union(qname, typedef, qualified) 234 234 nil 235 235 end trunk/lib/wsdl/xmlSchema/complexContent.rb
r1772 r1788 56 56 57 57 def attributes 58 content .attributes58 content ? content.attributes : XSD::NamedElements::Empty 59 59 end 60 60 61 61 def nested_elements 62 62 # restrict and extension does not have particle. 63 elements63 content ? content.nested_elements : XSD::NamedElements::Empty 64 64 end 65 65 trunk/lib/wsdl/xmlSchema/complexExtension.rb
r1727 r1788 47 47 result.concat(basetype.elements) 48 48 result.concat(content.elements) if content 49 result 50 end 51 52 def nested_elements 53 result = XSD::NamedElements.new 54 result.concat(basetype.nested_elements) 55 result.concat(content.nested_elements) if content 49 56 result 50 57 end trunk/lib/wsdl/xmlSchema/complexRestriction.rb
r1772 r1788 48 48 end 49 49 50 def nested_elements 51 @content ? @content.nested_elements : XSD::NamedElements::Empty 52 end 53 50 54 def check_type 51 55 if @base == ::SOAP::ValueArrayName trunk/test/wsdl/any/expectedEcho.rb
r1771 r1788 1 1 require 'xsd/qname' 2 2 3 # {urn:example.com:echo-type} setOutputAndCompleteRequest4 class SetOutputAndCompleteRequest5 attr_accessor : taskId6 attr_ accessor :data7 attr_accessor : participantToken3 # {urn:example.com:echo-type}foo.bar 4 class FooBar 5 attr_accessor :before 6 attr_reader :__xmlele_any 7 attr_accessor :after 8 8 9 def initialize(taskId = nil, data = nil, participantToken = nil) 10 @taskId = taskId 11 @data = data 12 @participantToken = participantToken 9 def set_any(elements) 10 @__xmlele_any = elements 11 end 12 13 def initialize(before = nil, after = nil) 14 @before = before 15 @__xmlele_any = nil 16 @after = after 13 17 end 14 18 end … … 30 34 end 31 35 end 36 37 # {urn:example.com:echo-type}setOutputAndCompleteRequest 38 class SetOutputAndCompleteRequest 39 attr_accessor :taskId 40 attr_accessor :data 41 attr_accessor :participantToken 42 43 def initialize(taskId = nil, data = nil, participantToken = nil) 44 @taskId = taskId 45 @data = data 46 @participantToken = participantToken 47 end 48 end trunk/test/wsdl/choice/choice.wsdl
r1657 r1788 54 54 </xsd:complexType> 55 55 </xsd:element> 56 57 <xsd:element name="echoele_complex" type="tns:andor" /> 58 <xsd:element name="echo_complex_response" type="tns:andor" /> 56 59 </xsd:schema> 57 60 </types> … … 63 66 <part name="parameters" element="tns:echo_response" /> 64 67 </message> 68 <message name="echo_complex_in"> 69 <part name="parameters" element="tns:echoele_complex" /> 70 </message> 71 <message name="echo_complex_out"> 72 <part name="parameters" element="tns:echo_complex_response" /> 73 </message> 65 74 66 75 <portType name="choice_porttype"> … … 68 77 <input message="tns:echo_in" /> 69 78 <output message="tns:echo_out" /> 79 </operation> 80 81 <operation name="echo_complex"> 82 <input message="tns:echo_complex_in" /> 83 <output message="tns:echo_complex_out" /> 70 84 </operation> 71 85 </portType> … … 75 89 <operation name="echo"> 76 90 <soap:operation soapAction="urn:choice:echo" style="document" /> 91 <input> 92 <soap:body use="literal" /> 93 </input> 94 <output> 95 <soap:body use="literal" /> 96 </output> 97 </operation> 98 99 <operation name="echo_complex"> 100 <soap:operation soapAction="urn:choice:echo_complex" style="document" /> 77 101 <input> 78 102 <soap:body use="literal" /> trunk/test/wsdl/choice/test_choice.rb
r1755 r1788 21 21 XSD::QName.new(Namespace, 'echo_response') 22 22 ) 23 add_document_method( 24 self, 25 Namespace + ':echo_complex', 26 'echo_complex', 27 XSD::QName.new(Namespace, 'echoele_complex'), 28 XSD::QName.new(Namespace, 'echo_complex_response') 29 ) 23 30 @router.literal_mapping_registry = ChoiceMappingRegistry::LiteralRegistry 24 31 end 25 32 26 33 def echo(arg) 34 arg 35 end 36 37 def echo_complex(arg) 38 p arg 27 39 arg 28 40 end … … 132 144 assert_nil(ret.terminalID.imei) 133 145 end 146 147 def test_naive_complex 148 @client = ::SOAP::RPC::Driver.new("http://localhost:#{Port}/") 149 @client.add_document_method('echo_complex', 'urn:choice:echo_complex', 150 XSD::QName.new('urn:choice', 'echoele_complex'), 151 XSD::QName.new('urn:choice', 'echo_complex_response')) 152 @client.wiredump_dev = STDOUT if $DEBUG 153 @client.literal_mapping_registry = ChoiceMappingRegistry::LiteralRegistry 154 # 155 ret = @client.echo_complex(Andor.new("A", "B1", nil, nil, nil, nil, "C1", "C2")) 156 assert_equal("A", ret.a) 157 assert_equal("B1", ret.b1) 158 assert_equal(nil, ret.b2a) 159 assert_equal(nil, ret.b2b) 160 assert_equal(nil, ret.b3a) 161 assert_equal(nil, ret.b3b) 162 assert_equal("C1", ret.c1) 163 assert_equal("C2", ret.c2) 164 # 165 ret = @client.echo_complex(Andor.new("A", nil, "B2a", "B2b", nil, nil, "C1", "C2")) 166 assert_equal("A", ret.a) 167 assert_equal(nil, ret.b1) 168 assert_equal("B2a", ret.b2a) 169 assert_equal("B2b", ret.b2b) 170 assert_equal(nil, ret.b3a) 171 assert_equal(nil, ret.b3b) 172 assert_equal("C1", ret.c1) 173 assert_equal("C2", ret.c2) 174 # 175 ret = @client.echo_complex(Andor.new("A", nil, nil, nil, "B3a", nil, "C1", "C2")) 176 assert_equal("A", ret.a) 177 assert_equal(nil, ret.b1) 178 assert_equal(nil, ret.b2a) 179 assert_equal(nil, ret.b2b) 180 assert_equal("B3a", ret.b3a) 181 assert_equal(nil, ret.b3b) 182 assert_equal("C1", ret.c1) 183 assert_equal("C2", ret.c2) 184 # 185 ret = @client.echo_complex(Andor.new("A", nil, nil, nil, nil, "B3b", "C1", "C2")) 186 assert_equal("A", ret.a) 187 assert_equal(nil, ret.b1) 188 assert_equal(nil, ret.b2a) 189 assert_equal(nil, ret.b2b) 190 assert_equal(nil, ret.b3a) 191 assert_equal("B3b", ret.b3b) 192 assert_equal("C1", ret.c1) 193 assert_equal("C2", ret.c2) 194 end 134 195 end 135 196 trunk/test/wsdl/ref/expectedProduct.rb
r1772 r1788 1 1 require 'xsd/qname' 2 3 # {urn:ref}Rating4 class Rating < ::String5 C_0 = Rating.new("0")6 C_1 = Rating.new("+1")7 C_1_2 = Rating.new("-1")8 end9 10 # {urn:ref}Product-Bag11 class ProductBag12 attr_accessor :bag13 attr_accessor :rating14 attr_accessor :comment_115 attr_accessor :comment_216 17 def m___point18 @v___point19 end20 21 def m___point=(value)22 @v___point = value23 end24 25 def xmlattr_version26 (@__xmlattr ||= {})[XSD::QName.new("urn:ref", "version")]27 end28 29 def xmlattr_version=(value)30 (@__xmlattr ||= {})[XSD::QName.new("urn:ref", "version")] = value31 end32 33 def xmlattr_yesno34 (@__xmlattr ||= {})[XSD::QName.new("urn:ref", "yesno")]35 end36 37 def xmlattr_yesno=(value)38 (@__xmlattr ||= {})[XSD::QName.new("urn:ref", "yesno")] = value39 end40 41 def initialize(bag = [], rating = [], comment_1 = [], comment_2 = [], v___point = nil)42 @bag = bag43 @rating = rating44 @comment_1 = comment_145 @comment_2 = comment_246 @v___point = v___point47 @__xmlattr = {}48 end49 end50 51 # {urn:ref}Creator52 class Creator < ::String53 def xmlattr_Role54 (@__xmlattr ||= {})[XSD::QName.new(nil, "Role")]55 end56 57 def xmlattr_Role=(value)58 (@__xmlattr ||= {})[XSD::QName.new(nil, "Role")] = value59 end60 61 def initialize(*arg)62 super63 @__xmlattr = {}64 end65 end66 67 # {urn:ref}yesno68 class Yesno < ::String69 N = Yesno.new("N")70 Y = Yesno.new("Y")71 end72 2 73 3 # {urn:ref}Product … … 157 87 end 158 88 end 89 90 # {urn:ref}Rating 91 class Rating < ::String 92 C_0 = Rating.new("0") 93 C_1 = Rating.new("+1") 94 C_1_2 = Rating.new("-1") 95 end 96 97 # {urn:ref}Product-Bag 98 class ProductBag 99 attr_accessor :bag 100 attr_accessor :rating 101 attr_accessor :comment_1 102 attr_accessor :comment_2 103 104 def m___point 105 @v___point 106 end 107 108 def m___point=(value) 109 @v___point = value 110 end 111 112 def xmlattr_version 113 (@__xmlattr ||= {})[XSD::QName.new("urn:ref", "version")] 114 end 115 116 def xmlattr_version=(value) 117 (@__xmlattr ||= {})[XSD::QName.new("urn:ref", "version")] = value 118 end 119 120 def xmlattr_yesno 121 (@__xmlattr ||= {})[XSD::QName.new("urn:ref", "yesno")] 122 end 123 124 def xmlattr_yesno=(value) 125 (@__xmlattr ||= {})[XSD::QName.new("urn:ref", "yesno")] = value 126 end 127 128 def initialize(bag = [], rating = [], comment_1 = [], comment_2 = [], v___point = nil) 129 @bag = bag 130 @rating = rating 131 @comment_1 = comment_1 132 @comment_2 = comment_2 133 @v___point = v___point 134 @__xmlattr = {} 135 end 136 end 137 138 # {urn:ref}Creator 139 class Creator < ::String 140 def xmlattr_Role 141 (@__xmlattr ||= {})[XSD::QName.new(nil, "Role")] 142 end 143 144 def xmlattr_Role=(value) 145 (@__xmlattr ||= {})[XSD::QName.new(nil, "Role")] = value 146 end 147 148 def initialize(*arg) 149 super 150 @__xmlattr = {} 151 end 152 end 153 154 # {urn:ref}yesno 155 class Yesno < ::String 156 N = Yesno.new("N") 157 Y = Yesno.new("Y") 158 end trunk/test/wsdl/rpc/test_rpc_lit.rb
r1755 r1788 322 322 assert_equal('+1', result.varFloat) 323 323 assert_equal('str', result.structItem.varString) 324 assert_equal( '1', result.structItem.varInt)325 assert_equal( '+1', result.structItem.varFloat)324 assert_equal(1, result.structItem.varInt) 325 assert_equal(1.0, result.structItem.varFloat) 326 326 assert_equal(ECHO_NESTED_STRUCT_REQUEST, parse_requestxml(str)) 327 327 assert_equal(ECHO_NESTED_STRUCT_RESPONSE, parse_responsexml(str))