diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2012-11-20 10:57:44 -0330 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2012-11-20 10:57:44 -0330 |
commit | 4c5255c1ab05da2a775f9e01b2da2143741df3d2 (patch) | |
tree | 502e839455de10c62c500612159425a6964fdfdd /py/demo/Ice/value/Client.py | |
parent | ICE-4965: added Python Ice/metrics demo (diff) | |
download | ice-4c5255c1ab05da2a775f9e01b2da2143741df3d2.tar.bz2 ice-4c5255c1ab05da2a775f9e01b2da2143741df3d2.tar.xz ice-4c5255c1ab05da2a775f9e01b2da2143741df3d2.zip |
ICE-4963 added example of "preserve-slice" to value demo
Diffstat (limited to 'py/demo/Ice/value/Client.py')
-rwxr-xr-x | py/demo/Ice/value/Client.py | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/py/demo/Ice/value/Client.py b/py/demo/Ice/value/Client.py index ed11f4b88cd..e9cc2258c88 100755 --- a/py/demo/Ice/value/Client.py +++ b/py/demo/Ice/value/Client.py @@ -13,20 +13,6 @@ import sys, traceback, Ice Ice.loadSlice('Value.ice') import Demo, Printer -class ObjectFactory(Ice.ObjectFactory): - def create(self, type): - if type == Demo.Printer.ice_staticId(): - return Printer.PrinterI() - - if type == Demo.DerivedPrinter.ice_staticId(): - return Printer.DerivedPrinterI() - - assert(False) - - def destroy(self): - # Nothing to do - pass - class Client(Ice.Application): def run(self, args): if len(args) > 1: @@ -69,7 +55,7 @@ class Client(Ice.Application): "[press enter]") sys.stdin.readline() - factory = ObjectFactory() + factory = Printer.ObjectFactory() self.communicator().addObjectFactory(factory, Demo.Printer.ice_staticId()) printer, printerProxy = initial.getPrinter() @@ -127,6 +113,22 @@ class Client(Ice.Application): sys.stdout.flush() derived.printUppercase() + + print('\n'\ + "Now let's make sure that slice is preserved with [\"preserve-slice\"]\n"\ + "metadata. We create a derived type on the client and pass it to the\n"\ + "server, which does not have a factory for the derived type.\n"\ + "[press enter]\n") + sys.stdin.readline() + + clientp = Printer.ClientPrinterI() + clientp.message = "a message 4 u" + self.communicator().addObjectFactory(factory, Demo.ClientPrinter.ice_staticId()) + + derivedAsBase = initial.updatePrinterMessage(clientp) + assert(derivedAsBase.ice_id() == Demo.ClientPrinter.ice_staticId()) + print("==> " + derivedAsBase.message) + print('\n'\ "Finally, we try the same again, but instead of returning the\n"\ "derived object, we throw an exception containing the derived\n"\ |