Changeset 1969
- Timestamp:
- 09/17/07 11:16:42 (8 months ago)
- Files:
-
- trunk/lib/wsdl/soap/complexType.rb (modified) (2 diffs)
- trunk/lib/wsdl/soap/encodedMappingRegistryCreator.rb (modified) (1 diff)
- trunk/lib/wsdl/soap/mappingRegistryCreatorSupport.rb (modified) (3 diffs)
- trunk/test/wsdl/raa/expectedMappingRegistry.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/wsdl/soap/complexType.rb
r1827 r1969 94 94 end 95 95 96 def find_ arytype96 def find_soapenc_arytype 97 97 unless compoundtype == :TYPE_ARRAY 98 98 raise RuntimeError.new("Assert: not for array") … … 106 106 end 107 107 end 108 end 109 end 110 111 def find_arytype 112 unless compoundtype == :TYPE_ARRAY 113 raise RuntimeError.new("Assert: not for array") 114 end 115 if arytype = find_soapenc_arytype 116 return arytype 108 117 end 109 118 if map_as_array? trunk/lib/wsdl/soap/encodedMappingRegistryCreator.rb
r1958 r1969 67 67 dump_struct_typemap(mpath, qname, typedef) 68 68 when :TYPE_ARRAY 69 dump_array_typemap(mpath, qname, typedef )69 dump_array_typemap(mpath, qname, typedef, :encoded => true) 70 70 when :TYPE_SIMPLE 71 71 dump_simple_typemap(mpath, qname, typedef) trunk/lib/wsdl/soap/mappingRegistryCreatorSupport.rb
r1958 r1969 25 25 end 26 26 27 def dump_array_typemap(mpath, qname, typedef )27 def dump_array_typemap(mpath, qname, typedef, opt = {}) 28 28 dump_with_inner { 29 dump_literal_array_typemap(mpath, qname, typedef) 29 if typedef.find_soapenc_arytype 30 if opt[:encoded] 31 dump_encoded_array_typemap(mpath, qname, typedef) 32 end 33 else 34 dump_literal_array_typemap(mpath, qname, typedef) 35 end 30 36 } 31 37 end … … 318 324 parse_elements(typedef.elements, qname.namespace, var[:class], nil) 319 325 if parsed_element.empty? 320 parsed_element = [create_ soapenc_array_element_definition(typedef, mpath)]326 parsed_element = [create_array_element_definition(typedef, mpath)] 321 327 end 322 328 var[:schema_element] = dump_schema_element_definition(parsed_element, 2) … … 325 331 end 326 332 327 def create_soapenc_array_element_definition(typedef, mpath) 333 def dump_encoded_array_typemap(mpath, qname, typedef) 334 arytype = typedef.find_arytype || XSD::AnyTypeName 335 type = XSD::QName.new(arytype.namespace, arytype.name.sub(/\[(?:,)*\]$/, '')) 336 return <<__EOD__ 337 #{@varname}.set( 338 #{mapped_class_name(qname, mpath)}, 339 ::SOAP::SOAPArray, 340 ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory, 341 { :type => #{dqname(type)} } 342 ) 343 __EOD__ 344 end 345 346 # used when "soapenc:arrayType" definition 347 def create_array_element_definition(typedef, mpath) 328 348 child_type = typedef.child_type 329 349 child_element = typedef.find_aryelement trunk/test/wsdl/raa/expectedMappingRegistry.rb
r1958 r1969 56 56 ) 57 57 58 EncodedRegistry.register( 59 :class => WSDL::RAA::InfoArray, 60 :schema_type => XSD::QName.new(NsC_002, "InfoArray"), 61 :schema_element => [ 62 ["item", ["WSDL::RAA::Info", XSD::QName.new(nil, "item")], [0, nil]] 63 ] 58 EncodedRegistry.set( 59 WSDL::RAA::InfoArray, 60 ::SOAP::SOAPArray, 61 ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory, 62 { :type => XSD::QName.new(NsC_002, "Info") } 64 63 ) 65 64 66 EncodedRegistry.register( 67 :class => WSDL::RAA::StringArray, 68 :schema_type => XSD::QName.new(NsC_002, "StringArray"), 69 :schema_element => [ 70 ["item", ["String", XSD::QName.new(nil, "item")], [0, nil]] 71 ] 65 EncodedRegistry.set( 66 WSDL::RAA::StringArray, 67 ::SOAP::SOAPArray, 68 ::SOAP::Mapping::EncodedRegistry::TypedArrayFactory, 69 { :type => XSD::QName.new("http://www.w3.org/2001/XMLSchema", "string") } 72 70 ) 73 71 … … 123 121 ) 124 122 125 LiteralRegistry.register(126 :class => WSDL::RAA::InfoArray,127 :schema_type => XSD::QName.new(NsC_002, "InfoArray"),128 :schema_element => [129 ["item", ["WSDL::RAA::Info", XSD::QName.new(nil, "item")], [0, nil]]130 ]131 )132 133 LiteralRegistry.register(134 :class => WSDL::RAA::StringArray,135 :schema_type => XSD::QName.new(NsC_002, "StringArray"),136 :schema_element => [137 ["item", ["String", XSD::QName.new(nil, "item")], [0, nil]]138 ]139 )140 123 end 141 124