Changeset 1660
- Timestamp:
- 11/03/05 09:55:40 (3 years ago)
- Files:
-
- trunk/lib/soap/encodingstyle/soapHandler.rb (modified) (1 diff)
- trunk/lib/soap/mapping/wsdlencodedregistry.rb (modified) (1 diff)
- trunk/lib/soap/mapping/wsdlliteralregistry.rb (modified) (2 diffs)
- trunk/lib/soap/rpc/element.rb (modified) (1 diff)
- trunk/lib/wsdl/soap/classDefCreator.rb (modified) (2 diffs)
- trunk/lib/wsdl/soap/methodDefCreator.rb (modified) (2 diffs)
- trunk/lib/wsdl/xmlSchema/data.rb (modified) (3 diffs)
- trunk/lib/wsdl/xmlSchema/simpleType.rb (modified) (4 diffs)
- trunk/test/wsdl/list (added)
- trunk/test/wsdl/list/list.wsdl (added)
- trunk/test/wsdl/list/test_list.rb (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/encodingstyle/soapHandler.rb
r1652 r1660 383 383 384 384 def decode_defined_simpletype(elename, typename, typedef, arytypestr) 385 o = decode_basetype(TypeMap[typedef.base], elename) 386 o.definedtype = typedef 387 o 385 if typedef.base 386 o = decode_basetype(TypeMap[typedef.base], elename) 387 o.definedtype = typedef 388 o 389 else 390 raise RuntimeError.new("unsupported simpleType: #{typedef}") 391 end 388 392 end 389 393 trunk/lib/soap/mapping/wsdlencodedregistry.rb
r1655 r1660 125 125 type.check_lexical_format(obj) 126 126 return SOAPNil.new if obj.nil? # ToDo: check nillable. 127 o = base2soap(obj, TypeMap[type.base]) 128 o 127 if type.base 128 base2soap(obj, TypeMap[type.base]) 129 elsif type.list 130 base2soap(obj.join(" "), SOAP::SOAPString) 131 else 132 raise MappingError.new("unsupported simpleType: #{type}") 133 end 129 134 end 130 135 trunk/lib/soap/mapping/wsdlliteralregistry.rb
r1655 r1660 113 113 type.check_lexical_format(obj) 114 114 return SOAPNil.new if obj.nil? # TODO: check nillable. 115 o = base2soap(obj, TypeMap[type.base]) 116 o 115 if type.base 116 base2soap(obj, TypeMap[type.base]) 117 elsif type.list 118 base2soap(obj.join(" "), SOAP::SOAPString) 119 else 120 raise MappingError.new("unsupported simpleType: #{type}") 121 end 117 122 end 118 123 … … 240 245 ele = SOAPElement.from_obj(obj) 241 246 ele.elename = qname 247 ele 248 elsif obj.is_a?(Array) 249 # treat as a list of simpletype 250 ele = SOAPElement.new(qname, obj.join(" ")) 242 251 ele 243 252 elsif obj.is_a?(XSD::QName) trunk/lib/soap/rpc/element.rb
r1624 r1660 164 164 res_qnames = [res_qnames] if res_qnames.is_a?(XSD::QName) 165 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]] 166 # req_qnames and res_qnames can be nil 167 if req_qnames 168 req_qnames.each do |qname| 169 param_def << [IN, qname.name, [nil, qname.namespace, qname.name]] 170 end 171 end 172 if res_qnames 173 res_qnames.each do |qname| 174 param_def << [OUT, qname.name, [nil, qname.namespace, qname.name]] 175 end 171 176 end 172 177 param_def trunk/lib/wsdl/soap/classDefCreator.rb
r1655 r1660 97 97 98 98 def dump_simpletypedef(qname, simpletype) 99 if !simpletype.restriction or simpletype.restriction.enumeration.empty? 99 if simpletype.restriction 100 dump_simpletypedef_restriction(qname, simpletype.restriction) 101 elsif simpletype.list 102 dump_simpletypedef_list(qname, simpletype.list) 103 else 104 raise RuntimeError.new("unknown kind of simpletype: #{simpletype}") 105 end 106 end 107 108 def dump_simpletypedef_restriction(qname, restriction) 109 if restriction.enumeration.empty? 110 # not supported. minlength? 100 111 return nil 101 112 end 102 113 c = XSD::CodeGen::ModuleDef.new(create_class_name(qname)) 103 114 c.comment = "#{qname}" 115 define_enum_restriction(c, restriction.enumeration) 116 c.dump 117 end 118 119 def dump_simpletypedef_list(qname, list) 120 c = XSD::CodeGen::ClassDef.new(create_class_name(qname), '::Array') 121 c.comment = "#{qname}" 122 if simpletype = list.local_simpletype 123 if simpletype.restriction.nil? 124 raise RuntimeError.new( 125 "unknown kind of simpletype: #{simpletype}") 126 end 127 define_enum_restriction(c, simpletype.restriction.enumeration) 128 c.comment << "\n contains list of #{create_class_name(qname)}::*" 129 elsif list.itemtype 130 c.comment << "\n contains list of #{create_class_name(list.itemtype)}::*" 131 else 132 raise RuntimeError.new("unknown kind of list: #{list}") 133 end 134 c.dump 135 end 136 137 def define_enum_restriction(c, enumeration) 104 138 const = {} 105 simpletype.restriction.enumeration.each do |value|139 enumeration.each do |value| 106 140 constname = safeconstname(value) 107 141 const[constname] ||= 0 … … 111 145 c.def_const(constname, ndq(value)) 112 146 end 113 c.dump114 147 end 115 148 trunk/lib/wsdl/soap/methodDefCreator.rb
r1653 r1660 120 120 ['::' + mapped.name] 121 121 elsif definedtype = @simpletypes[part.type] 122 ['::' + basetype_mapped_class(definedtype.base).name] 122 if definedtype.base 123 ['::' + basetype_mapped_class(definedtype.base).name] 124 else 125 raise RuntimeError.new("unsupported simpleType: #{definedtype}") 126 end 123 127 elsif definedtype = @elements[part.element] 124 128 #['::SOAP::SOAPStruct', part.element.namespace, part.element.name] … … 149 153 ['::' + mapped.name, nil, part.name] 150 154 elsif definedtype = @simpletypes[part.type] 151 ['::' + basetype_mapped_class(definedtype.base).name, nil, part.name] 155 if definedtype.base 156 ['::' + basetype_mapped_class(definedtype.base).name, nil, part.name] 157 else 158 raise RuntimeError.new("unsupported simpleType: #{definedtype}") 159 end 152 160 elsif definedtype = @elements[part.element] 153 161 ['::SOAP::SOAPElement', part.element.namespace, part.element.name] trunk/lib/wsdl/xmlSchema/data.rb
r1643 r1660 25 25 require 'wsdl/xmlSchema/choice' 26 26 require 'wsdl/xmlSchema/sequence' 27 require 'wsdl/xmlSchema/list' 27 28 require 'wsdl/xmlSchema/attribute' 28 29 require 'wsdl/xmlSchema/unique' … … 48 49 IncludeName = XSD::QName.new(XSD::Namespace, 'include') 49 50 LengthName = XSD::QName.new(XSD::Namespace, 'length') 51 ListName = XSD::QName.new(XSD::Namespace, 'list') 50 52 PatternName = XSD::QName.new(XSD::Namespace, 'pattern') 51 53 RestrictionName = XSD::QName.new(XSD::Namespace, 'restriction') … … 64 66 FormAttrName = XSD::QName.new(nil, 'form') 65 67 IdAttrName = XSD::QName.new(nil, 'id') 68 ItemTypeAttrName = XSD::QName.new(nil, 'itemType') 66 69 MaxOccursAttrName = XSD::QName.new(nil, 'maxOccurs') 67 70 MinOccursAttrName = XSD::QName.new(nil, 'minOccurs') trunk/lib/wsdl/xmlSchema/simpleType.rb
r1520 r1660 18 18 attr_accessor :name 19 19 attr_reader :restriction 20 attr_reader :list 20 21 21 22 def check_lexical_format(value) 22 23 if @restriction 23 24 check_restriction(value) 25 elsif @list 26 # TODO: check 24 27 else 25 28 raise ArgumentError.new("incomplete simpleType") … … 31 34 @restriction.base 32 35 else 33 raise ArgumentError.new("incomplete simpleType")36 nil 34 37 end 35 38 end … … 39 42 @name = name 40 43 @restriction = nil 44 @list = nil 41 45 end 42 46 … … 50 54 @restriction = SimpleRestriction.new 51 55 @restriction 56 when ListName 57 @list = List.new 58 @list 52 59 end 53 60 end