summaryrefslogtreecommitdiffstats
path: root/lib/soap/mapping/factory.rb
diff options
context:
space:
mode:
authornahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-10-31 16:50:27 +0000
committernahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-10-31 16:50:27 +0000
commit027154fa24e7353af2e644e26a2d723863d20819 (patch)
tree88bda0497bd74d7d865a52900124e46d8d40d7d6 /lib/soap/mapping/factory.rb
parentf8a3e3931c7f199d5616b80171ea4b6d3cc5ee27 (diff)
downloadruby-027154fa24e7353af2e644e26a2d723863d20819.tar.gz
ruby-027154fa24e7353af2e644e26a2d723863d20819.tar.xz
ruby-027154fa24e7353af2e644e26a2d723863d20819.zip
* lib/soap/mapping/factory.rb: mark marshalled basetype objects when
@allow_original_mapping is true. multi-referencing basetype node is prohibited in SOAP/1.1 encoding but soap4r's original ruby object mapping requires basetype to be marked to detect self referencing loop. e.g. o = 1; o.instance_eval { @iv = o } soap4r's original mapping is only used through soap/marshal API. * test/soap/marshal/test_marshal.rb: add tests for self referencing immutable objects. * test/soap/calc/test_calc_cgi.rb: fix test name. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@4881 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/soap/mapping/factory.rb')
-rw-r--r--lib/soap/mapping/factory.rb5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/soap/mapping/factory.rb b/lib/soap/mapping/factory.rb
index 6a34da55a..92ed194a4 100644
--- a/lib/soap/mapping/factory.rb
+++ b/lib/soap/mapping/factory.rb
@@ -136,7 +136,10 @@ class BasetypeFactory_ < Factory
rescue XSD::ValueSpaceError
return nil
end
- # Basetype except String should not be multiref-ed in SOAP/1.1.
+ if @allow_original_mapping
+ # Basetype except String should not be multiref-ed in SOAP/1.1.
+ mark_marshalled_obj(obj, soap_obj)
+ end
soap_obj
end