Changeset 1945
- Timestamp:
- 09/09/07 15:09:39 (8 months ago)
- Files:
-
- trunk/lib/soap/generator.rb (modified) (3 diffs)
- trunk/test/wsdl/document/test_rpc.rb (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/generator.rb
r1936 r1945 184 184 ary = [] 185 185 attrs.each do |key, value| 186 ary << %Q[#{ key }="#{ value }"] unless value.nil?186 ary << %Q[#{ key }="#{ get_encoded(value.to_s) }"] 187 187 end 188 188 case ary.size … … 220 220 EncodeCharRegexp = Regexp.new("[#{EncodeMap.keys.join}]") 221 221 def encode_string(str) 222 @buf << get_encoded(str) 223 end 224 225 def get_encoded(str) 222 226 if @use_numeric_character_reference and !XSD::Charset.is_us_ascii(str) 223 227 str.gsub!(EncodeCharRegexp) { |c| EncodeMap[c] } 224 @buf <<str.unpack("U*").collect { |c|228 str.unpack("U*").collect { |c| 225 229 if c == 0x9 or c == 0xa or c == 0xd or (c >= 0x20 and c <= 0x7f) 226 230 c.chr … … 230 234 }.join 231 235 else 232 @buf <<str.gsub(EncodeCharRegexp) { |c| EncodeMap[c] }236 str.gsub(EncodeCharRegexp) { |c| EncodeMap[c] } 233 237 end 234 238 end trunk/test/wsdl/document/test_rpc.rb
r1942 r1945 127 127 struct1 = Echo_struct.new("mystring1", now1 = Time.now) 128 128 struct1.xmlattr_m_attr = 'myattr1' 129 struct2 = Echo_struct.new("mystr ing2", now2 = Time.now)129 struct2 = Echo_struct.new("mystr<>ing2", now2 = Time.now) 130 130 struct2.xmlattr_m_attr = 'myattr2' 131 131 echo = Echoele.new(struct1, struct2) 132 echo.xmlattr_attr_string = 'attr_str ing'132 echo.xmlattr_attr_string = 'attr_str<>ing' 133 133 echo.xmlattr_attr_int = 5 134 134 ret = @client.echo(echo) … … 137 137 # struct#m_datetime in a request is a Time. 138 138 timeformat = "%Y-%m-%dT%H:%M:%S" 139 assert_equal("mystr ing2", ret.struct1.m_string)139 assert_equal("mystr<>ing2", ret.struct1.m_string) 140 140 assert_equal(now2.strftime(timeformat), 141 141 date2time(ret.struct1.m_datetime).strftime(timeformat)) … … 143 143 assert_equal(now1.strftime(timeformat), 144 144 date2time(ret.struct_2.m_datetime).strftime(timeformat)) 145 assert_equal("attr_str ing", ret.xmlattr_attr_string)145 assert_equal("attr_str<>ing", ret.xmlattr_attr_string) 146 146 assert_equal(5, ret.xmlattr_attr_int) 147 147 end … … 159 159 } 160 160 struct2 = { 161 "m_string" => "mystr ing2",161 "m_string" => "mystr<>ing2", 162 162 "m_datetime" => now2 = (Time.now), 163 163 "xmlattr_m_attr" => "myattr2" … … 166 166 :struct1 => struct1, 167 167 "struct-2" => struct2, 168 :xmlattr_attr_string => 'attr_str ing',168 :xmlattr_attr_string => 'attr_str<>ing', 169 169 "xmlattr_attr-int" => 5 170 170 } … … 173 173 now1str = XSD::XSDDateTime.new(now1).to_s 174 174 now2str = XSD::XSDDateTime.new(now2).to_s 175 assert_equal("mystr ing2", ret.struct1.m_string)175 assert_equal("mystr<>ing2", ret.struct1.m_string) 176 176 assert_equal(now2str, ret.struct1.m_datetime) 177 177 assert_equal("mystring1", ret.struct_2.m_string) 178 178 assert_equal(now1str, ret.struct_2.m_datetime) 179 assert_equal("attr_str ing", ret.xmlattr_attr_string)179 assert_equal("attr_str<>ing", ret.xmlattr_attr_string) 180 180 assert_equal("5", ret.xmlattr_attr_int) 181 181 end … … 203 203 204 204 echo = SOAPElement.new('foo') 205 echo.extraattr['attr_string'] = 'attr_str ing'205 echo.extraattr['attr_string'] = 'attr_str<>ing' 206 206 echo.extraattr['attr-int'] = 5 207 207 echo.add(struct1 = SOAPElement.new('struct1')) … … 221 221 assert_equal('2005-03-17T19:47:31', 222 222 ret.struct_2.m_datetime.strftime(timeformat)) 223 assert_equal('attr_str ing', ret.xmlattr_attr_string)223 assert_equal('attr_str<>ing', ret.xmlattr_attr_string) 224 224 assert_equal(5, ret.xmlattr_attr_int) 225 225