summaryrefslogtreecommitdiff
path: root/py/demo/Ice/value/Client.py
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2012-11-20 10:57:44 -0330
committerDwayne Boone <dwayne@zeroc.com>2012-11-20 10:57:44 -0330
commit4c5255c1ab05da2a775f9e01b2da2143741df3d2 (patch)
tree502e839455de10c62c500612159425a6964fdfdd /py/demo/Ice/value/Client.py
parentICE-4965: added Python Ice/metrics demo (diff)
downloadice-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-xpy/demo/Ice/value/Client.py32
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"\