diff options
author | Mark Spruiell <mes@zeroc.com> | 2006-06-28 14:29:16 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2006-06-28 14:29:16 +0000 |
commit | 6284d4244805622d02799ed376b421bf4c3668b2 (patch) | |
tree | c9c16b176072b35a980de01ac6817131b0e0bf48 /cpp | |
parent | Solaris x86/amd64 support (diff) | |
download | ice-6284d4244805622d02799ed376b421bf4c3668b2.tar.bz2 ice-6284d4244805622d02799ed376b421bf4c3668b2.tar.xz ice-6284d4244805622d02799ed376b421bf4c3668b2.zip |
fix for removal of removeObjectFactory in bug 472
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/test/Ice/stream/Client.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/cpp/test/Ice/stream/Client.cpp b/cpp/test/Ice/stream/Client.cpp index 3e7ee1caf7e..8d460a2313a 100644 --- a/cpp/test/Ice/stream/Client.cpp +++ b/cpp/test/Ice/stream/Client.cpp @@ -88,9 +88,43 @@ public: }; typedef IceUtil::Handle<TestReadObjectCallback> TestReadObjectCallbackPtr; +class MyClassFactoryWrapper : public Ice::ObjectFactory +{ +public: + + MyClassFactoryWrapper() : _factory(Test::MyClass::ice_factory()) + { + } + + virtual Ice::ObjectPtr + create(const string& type) + { + return _factory->create(type); + } + + virtual void + destroy() + { + } + + void + setFactory(const Ice::ObjectFactoryPtr& factory) + { + _factory = factory; + } + +private: + + Ice::ObjectFactoryPtr _factory; +}; +typedef IceUtil::Handle<MyClassFactoryWrapper> MyClassFactoryWrapperPtr; + int run(int argc, char** argv, const Ice::CommunicatorPtr& communicator) { + MyClassFactoryWrapperPtr factoryWrapper = new MyClassFactoryWrapper; + communicator->addObjectFactory(factoryWrapper, Test::MyClass::ice_staticId()); + Ice::InputStreamPtr in; Ice::OutputStreamPtr out; vector<Ice::Byte> data; @@ -420,6 +454,28 @@ run(int argc, char** argv, const Ice::CommunicatorPtr& communicator) test(writer->called); } + { + out = Ice::createOutputStream(communicator); + Test::MyClassPtr obj = new Test::MyClass; + obj->s.e = Test::enum2; + TestObjectWriterPtr writer = new TestObjectWriter(obj); + out->writeObject(writer); + out->writePendingObjects(); + out->finished(data); + test(writer->called); + factoryWrapper->setFactory(new TestObjectFactory); + in = Ice::createInputStream(communicator, data); + TestReadObjectCallbackPtr cb = new TestReadObjectCallback; + in->readObject(cb); + in->readPendingObjects(); + test(cb->obj); + TestObjectReaderPtr reader = TestObjectReaderPtr::dynamicCast(cb->obj); + test(reader); + test(reader->called); + test(reader->obj); + test(reader->obj->s.e == Test::enum2); + } + cout << "ok" << endl; return 0; |