Changeset 1519
- Timestamp:
- 04/27/05 23:19:24 (4 years ago)
- Files:
-
- trunk/lib/soap/mapping/mapping.rb (modified) (1 diff)
- trunk/lib/soap/mapping/registry.rb (modified) (1 diff)
- trunk/lib/soap/mapping/rubytypeFactory.rb (modified) (2 diffs)
- trunk/lib/soap/mapping/wsdlliteralregistry.rb (modified) (7 diffs)
- trunk/lib/wsdl/soap/classDefCreator.rb (modified) (2 diffs)
- trunk/test/wsdl/document/echo.rb (modified) (6 diffs)
- trunk/test/wsdl/document/test_rpc.rb (modified) (4 diffs)
- trunk/test/wsdl/ref/expectedProduct.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/mapping/mapping.rb
r1515 r1519 270 270 if obj.is_a?(::SOAP::Mapping::Object) 271 271 values.each do |attr_name, value| 272 obj.__s oap_set_property(attr_name, value)272 obj.__set_xmlele(attr_name, value) 273 273 end 274 274 else trunk/lib/soap/mapping/registry.rb
r1515 r1519 65 65 class Object; include Marshallable 66 66 def initialize 67 @__ soap_value_type = {}68 @__ soap_value = {}69 @__ soap_attribute= {}67 @__xmlele_type = {} 68 @__xmlele = {} 69 @__xmlattr = {} 70 70 end 71 71 72 72 def inspect 73 73 sprintf("#<%s:0x%x%s>", self.class.name, __id__, 74 @__soap_value.collect { |name, value| " #{name}=#{value.inspect}" }.join) 75 end 76 77 def __soap_attribute 78 @__soap_attribute 74 @__xmlele.collect { |name, value| " #{name}=#{value.inspect}" }.join) 75 end 76 77 def __xmlattr 78 @__xmlattr 79 end 80 81 def __xmlele 82 @__xmlele 79 83 end 80 84 81 85 def [](name) 82 @__ soap_value[name]86 @__xmlele[name] 83 87 end 84 88 85 89 def []=(name, value) 86 @__ soap_value[name] = value87 end 88 89 def __s oap_set_property(name, value)90 unless @__ soap_value.key?(name)90 @__xmlele[name] = value 91 end 92 93 def __set_xmlele(name, value) 94 unless @__xmlele.key?(name) 91 95 __define_attr_accessor(name) 92 96 end 93 __soap_set_property_value(name, value) 94 end 95 96 def __soap_get_properties 97 @__soap_value 97 __set_xmlele_value(name, value) 98 98 end 99 99 100 100 private 101 101 102 def __s oap_set_property_value(name, value)102 def __set_xmlele_value(name, value) 103 103 org = self[name] 104 case @__ soap_value_type[name]104 case @__xmlele_type[name] 105 105 when :single 106 106 self[name] = [org, value] 107 @__ soap_value_type[name] = :multi107 @__xmlele_type[name] = :multi 108 108 when :multi 109 109 org << value 110 110 else 111 111 self[name] = value 112 @__ soap_value_type[name] = :single112 @__xmlele_type[name] = :single 113 113 end 114 114 value trunk/lib/soap/mapping/rubytypeFactory.rb
r1492 r1519 223 223 param = SOAPStruct.new(XSD::AnyTypeName) 224 224 mark_marshalled_obj(obj, param) 225 obj.__ soap_get_properties.each do |key, value|225 obj.__xmlele.each do |key, value| 226 226 param.add(key, Mapping._obj2soap(value, map)) 227 227 end 228 obj.__ soap_attribute.each do |key, value|228 obj.__xmlattr.each do |key, value| 229 229 param.extraattr[key] = value 230 230 end … … 384 384 mark_unmarshalled_obj(node, obj) 385 385 node.each do |name, value| 386 obj.__s oap_set_property(name, Mapping._soap2obj(value, map))386 obj.__set_xmlele(name, Mapping._soap2obj(value, map)) 387 387 end 388 388 unless node.extraattr.empty? 389 obj.instance_variable_set('@__ soap_attribute', node.extraattr)389 obj.instance_variable_set('@__xmlattr', node.extraattr) 390 390 end 391 391 return true, obj trunk/lib/soap/mapping/wsdlliteralregistry.rb
r1515 r1519 24 24 attr_accessor :excn_handler_soap2obj 25 25 26 def initialize(definedtypes = XSD::NamedElements::Empty, definedelements = XSD::NamedElements::Empty) 26 def initialize(definedtypes = XSD::NamedElements::Empty, 27 definedelements = XSD::NamedElements::Empty) 27 28 @definedtypes = definedtypes 28 29 @definedelements = definedelements … … 176 177 if attributes 177 178 attributes.each do |attrname, param| 178 attr = obj.__send__(' attr_' +179 attr = obj.__send__('xmlattr_' + 179 180 XSD::CodeGen::GenSupport.safevarname(attrname)) 180 181 ele.extraattr[attrname] = attr … … 216 217 else 217 218 result, obj = @rubytype_factory.soap2obj(nil, node, nil, self) 219 if result 220 add_attributes2undefinedobj(node, obj) 221 end 218 222 obj 219 223 end … … 267 271 if attributes = schema_attribute_definition(obj.class) 268 272 vars = {} 269 obj.instance_variable_set('@__ soap_attribute', {})273 obj.instance_variable_set('@__xmlattr', {}) 270 274 attributes.each do |attrname, class_name| 271 275 attr = node.extraattr[XSD::QName.new(nil, attrname)] … … 277 281 child = attr 278 282 end 279 vars[' attr_' + attrname] = child283 vars['xmlattr_' + attrname] = child 280 284 end 281 285 Mapping.set_attributes(obj, vars) … … 285 289 def add_elements2undefinedobj(node, obj) 286 290 node.each do |name, value| 287 obj.__s oap_set_property(name, soapele2obj(value))291 obj.__set_xmlele(name, soapele2obj(value)) 288 292 end 289 293 end … … 291 295 def add_attributes2undefinedobj(node, obj) 292 296 return if node.extraattr.empty? 293 obj.instance_variable_set('@__ soap_attribute', node.extraattr)294 unless obj.respond_to?(:__ soap_attribute)297 obj.instance_variable_set('@__xmlattr', node.extraattr) 298 unless obj.respond_to?(:__xmlattr) 295 299 class << obj 296 define_method(:__ soap_attribute, proc { @__soap_attribute})300 define_method(:__xmlattr, proc { @__xmlattr }) 297 301 end 298 302 end trunk/lib/wsdl/soap/classDefCreator.rb
r1515 r1519 164 164 unless typedef.attributes.empty? 165 165 define_attribute(c, typedef.attributes) 166 init_lines << "@__ soap_attribute= {}\n"166 init_lines << "@__xmlattr = {}\n" 167 167 end 168 168 c.def_classvar('schema_element', … … 225 225 type = nil 226 226 end 227 varname = safevarname(' attr_' + name)227 varname = safevarname('xmlattr_' + name) 228 228 c.def_method(varname) do <<-__EOD__ 229 (@__ soap_attribute||= {})[#{name.dump}]229 (@__xmlattr ||= {})[#{name.dump}] 230 230 __EOD__ 231 231 end 232 232 c.def_method(varname + '=', 'value') do <<-__EOD__ 233 (@__ soap_attribute||= {})[#{name.dump}] = value233 (@__xmlattr ||= {})[#{name.dump}] = value 234 234 __EOD__ 235 235 end trunk/test/wsdl/document/echo.rb
r1501 r1519 11 11 attr_accessor :struct_2 12 12 13 def attr_attr_string14 (@__ soap_attribute||= {})["attr_string"]13 def xmlattr_attr_string 14 (@__xmlattr ||= {})["attr_string"] 15 15 end 16 16 17 def attr_attr_string=(value)18 (@__ soap_attribute||= {})["attr_string"] = value17 def xmlattr_attr_string=(value) 18 (@__xmlattr ||= {})["attr_string"] = value 19 19 end 20 20 21 def attr_attr_int22 (@__ soap_attribute||= {})["attr-int"]21 def xmlattr_attr_int 22 (@__xmlattr ||= {})["attr-int"] 23 23 end 24 24 25 def attr_attr_int=(value)26 (@__ soap_attribute||= {})["attr-int"] = value25 def xmlattr_attr_int=(value) 26 (@__xmlattr ||= {})["attr-int"] = value 27 27 end 28 28 … … 30 30 @struct1 = struct1 31 31 @struct_2 = struct_2 32 @__ soap_attribute= {}32 @__xmlattr = {} 33 33 end 34 34 end … … 44 44 attr_accessor :struct_2 45 45 46 def attr_attr_string47 (@__ soap_attribute||= {})["attr_string"]46 def xmlattr_attr_string 47 (@__xmlattr ||= {})["attr_string"] 48 48 end 49 49 50 def attr_attr_string=(value)51 (@__ soap_attribute||= {})["attr_string"] = value50 def xmlattr_attr_string=(value) 51 (@__xmlattr ||= {})["attr_string"] = value 52 52 end 53 53 54 def attr_attr_int55 (@__ soap_attribute||= {})["attr-int"]54 def xmlattr_attr_int 55 (@__xmlattr ||= {})["attr-int"] 56 56 end 57 57 58 def attr_attr_int=(value)59 (@__ soap_attribute||= {})["attr-int"] = value58 def xmlattr_attr_int=(value) 59 (@__xmlattr ||= {})["attr-int"] = value 60 60 end 61 61 … … 63 63 @struct1 = struct1 64 64 @struct_2 = struct_2 65 @__ soap_attribute= {}65 @__xmlattr = {} 66 66 end 67 67 end … … 77 77 attr_accessor :m_datetime 78 78 79 def attr_m_attr80 (@__ soap_attribute||= {})["m_attr"]79 def xmlattr_m_attr 80 (@__xmlattr ||= {})["m_attr"] 81 81 end 82 82 83 def attr_m_attr=(value)84 (@__ soap_attribute||= {})["m_attr"] = value83 def xmlattr_m_attr=(value) 84 (@__xmlattr ||= {})["m_attr"] = value 85 85 end 86 86 … … 88 88 @m_string = m_string 89 89 @m_datetime = m_datetime 90 @__ soap_attribute= {}90 @__xmlattr = {} 91 91 end 92 92 end trunk/test/wsdl/document/test_rpc.rb
r1492 r1519 52 52 def teardown 53 53 teardown_server 54 File.unlink(pathname('echo.rb'))54 #File.unlink(pathname('echo.rb')) 55 55 @client.reset_stream if @client 56 56 end … … 98 98 99 99 struct1 = Echo_struct.new("mystring1", now1 = Time.now) 100 struct1. attr_m_attr = 'myattr1'100 struct1.xmlattr_m_attr = 'myattr1' 101 101 struct2 = Echo_struct.new("mystring2", now2 = Time.now) 102 struct2. attr_m_attr = 'myattr2'102 struct2.xmlattr_m_attr = 'myattr2' 103 103 echo = Echoele.new(struct1, struct2) 104 echo. attr_attr_string = 'attr_string'105 echo. attr_attr_int = 5104 echo.xmlattr_attr_string = 'attr_string' 105 echo.xmlattr_attr_int = 5 106 106 ret = @client.echo(echo) 107 107 … … 111 111 assert_equal("mystring1", ret.struct_2.m_string) 112 112 assert_equal(now1.strftime(timeformat), ret.struct_2.m_datetime.strftime(timeformat)) 113 assert_equal("attr_string", ret. attr_attr_string)114 assert_equal(5, ret. attr_attr_int)113 assert_equal("attr_string", ret.xmlattr_attr_string) 114 assert_equal(5, ret.xmlattr_attr_int) 115 115 end 116 116 … … 142 142 assert_equal("mystring1", ret.struct_2.m_string) 143 143 assert_equal('2005-03-17T19:47:31', ret.struct_2.m_datetime.strftime(timeformat)) 144 assert_equal('attr_string', ret. attr_attr_string)145 assert_equal(5, ret. attr_attr_int)144 assert_equal('attr_string', ret.xmlattr_attr_string) 145 assert_equal(5, ret.xmlattr_attr_int) 146 146 147 147 echo = {'struct1' => {'m_string' => 'mystring1', 'm_datetime' => '2005-03-17T19:47:31+01:00'}, trunk/test/wsdl/ref/expectedProduct.rb
r1486 r1519 28 28 end 29 29 30 def attr_version31 (@__ soap_attribute||= {})["version"]30 def xmlattr_version 31 (@__xmlattr ||= {})["version"] 32 32 end 33 33 34 def attr_version=(value)35 (@__ soap_attribute||= {})["version"] = value34 def xmlattr_version=(value) 35 (@__xmlattr ||= {})["version"] = value 36 36 end 37 37 38 def attr_yesno39 (@__ soap_attribute||= {})["yesno"]38 def xmlattr_yesno 39 (@__xmlattr ||= {})["yesno"] 40 40 end 41 41 42 def attr_yesno=(value)43 (@__ soap_attribute||= {})["yesno"] = value42 def xmlattr_yesno=(value) 43 (@__xmlattr ||= {})["yesno"] = value 44 44 end 45 45 … … 50 50 @comment_1 = comment_1 51 51 @comment_2 = comment_2 52 @__ soap_attribute= {}52 @__xmlattr = {} 53 53 end 54 54 end