diff options
author | Mark Spruiell <mes@zeroc.com> | 2001-12-11 23:50:37 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2001-12-11 23:50:37 +0000 |
commit | fe1298aa89a0b2cfd20f7a89eea5818c065f8e18 (patch) | |
tree | b6218d8a94e6649fbce5d15809c45164b9849b90 /java/demo/Ice/value/Client.java | |
parent | fix (diff) | |
download | ice-fe1298aa89a0b2cfd20f7a89eea5818c065f8e18.tar.bz2 ice-fe1298aa89a0b2cfd20f7a89eea5818c065f8e18.tar.xz ice-fe1298aa89a0b2cfd20f7a89eea5818c065f8e18.zip |
initial check-in
Diffstat (limited to 'java/demo/Ice/value/Client.java')
-rw-r--r-- | java/demo/Ice/value/Client.java | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/java/demo/Ice/value/Client.java b/java/demo/Ice/value/Client.java new file mode 100644 index 00000000000..f672025d4eb --- /dev/null +++ b/java/demo/Ice/value/Client.java @@ -0,0 +1,231 @@ +// ********************************************************************** +// +// Copyright (c) 2001 +// MutableRealms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +public class Client +{ + private static void + readline(java.io.BufferedReader in) + { + try + { + in.readLine(); + } + catch (java.io.IOException ex) + { + ex.printStackTrace(); + } + } + + private static int + run(String[] args, Ice.Communicator communicator) + { + Ice.Properties properties = communicator.getProperties(); + final String refProperty = "Value.Initial"; + String ref = properties.getProperty(refProperty); + if (ref == null) + { + System.err.println("property `" + refProperty + "' not set"); + return 1; + } + + Ice.ObjectPrx base = communicator.stringToProxy(ref); + InitialPrx initial = InitialPrxHelper.checkedCast(base); + if (initial == null) + { + System.err.println("invalid object reference"); + return 1; + } + + java.io.BufferedReader in = new java.io.BufferedReader( + new java.io.InputStreamReader(System.in)); + + System.out.println(); + System.out.println("Let's first transfer a simple object, for a " + + "class without"); + System.out.println("operations, and print its contents. No factory " + + "is required"); + System.out.println("for this."); + System.out.println("[press enter]"); + readline(in); + + Simple simple = initial.simple(); + System.out.println("==> " + simple._message); + + System.out.println(); + System.out.println("Ok, this worked. Now let's try to transfer an " + + "object for a class"); + System.out.println("with operations, without installing a factory " + + "first. This should"); + System.out.println("give us a `no factory' exception."); + System.out.println("[press enter]"); + readline(in); + + PrinterHolder printer = new PrinterHolder(); + PrinterPrxHolder printerProxy = new PrinterPrxHolder(); + try + { + initial.printer(printer, printerProxy); + } + catch (Ice.NoObjectFactoryException ex) + { + System.out.println("==> " + ex); + } + + System.out.println(); + System.out.println("Yep, that's what we expected. Now let's try " + + "again, but with"); + System.out.println("installing an appropriate factory first. If " + + "successful, we print"); + System.out.println("the object's content."); + System.out.println("[press enter]"); + readline(in); + + Ice.ObjectFactory factory = new ObjectFactory(); + communicator.addObjectFactory(factory, "::Printer"); + + initial.printer(printer, printerProxy); + System.out.println("==> " + printer.value._message); + + System.out.println(); + System.out.println("Cool, it worked! Let's try calling the " + + "printBackwards() method"); + System.out.println("on the object we just received locally."); + System.out.println("[press enter]"); + readline(in); + + System.out.print("==> "); + printer.value.printBackwards(null); + + System.out.println(); + System.out.println("Now we call the same method, but on the remote " + + "object. Watch the"); + System.out.println("server's output."); + System.out.println("[press enter]"); + readline(in); + + printerProxy.value.printBackwards(); + + System.out.println(); + System.out.println("Next, we transfer a derived object from the " + + "server as base"); + System.out.println("object. Since we didn't install a factory for " + + "the derived"); + System.out.println("class yet, we will get another `no factory' " + + "exception."); + System.out.println("[press enter]"); + readline(in); + + Printer derivedAsBase; + try + { + derivedAsBase = initial.derivedPrinter(); + assert(false); + } + catch (Ice.NoObjectFactoryException ex) + { + System.out.println("==> " + ex); + } + + System.out.println(); + System.out.println("Now we install a factory for the derived class, " + + "and try again."); + System.out.println("We won't get a `no factory' exception anymore, " + + "but since we"); + System.out.println("receive the derived object as base object, we " + + "need to do a"); + System.out.println("dynamic_cast<> to get from the base to the " + + "derived object."); + System.out.println("[press enter]"); + readline(in); + + communicator.addObjectFactory(factory, "::DerivedPrinter"); + + derivedAsBase = initial.derivedPrinter(); + DerivedPrinter derived = (DerivedPrinter)derivedAsBase; + + System.out.println("==> dynamic_cast<> to derived object succeded"); + + System.out.println(); + System.out.println("Let's print the message contained in the " + + "derived object, and"); + System.out.println("call the operation printUppercase() on the " + + "derived object"); + System.out.println("locally."); + System.out.println("[press enter]"); + readline(in); + + System.out.println("==> " + derived._derivedMessage); + System.out.print("==> "); + derived.printUppercase(null); + + System.out.println(); + System.out.println("Finally, we try the same again, but instead of " + + "returning the"); + System.out.println("derived object, we throw an exception " + + "containing the derived"); + System.out.println("object."); + System.out.println("[press enter]"); + readline(in); + + try + { + initial.throwDerivedPrinter(); + } + catch (DerivedPrinterException ex) + { + derived = ex.derived; + assert(derived != null); + } + + System.out.println("==> " + derived._derivedMessage); + System.out.print("==> "); + derived.printUppercase(null); + + System.out.println(); + System.out.println("That's it for this demo. Have fun with Ice!"); + + return 0; + } + + public static void + main(String[] args) + { + int status = 0; + Ice.Communicator communicator = null; + + try + { + Ice.Properties properties = + Ice.Util.createPropertiesFromFile(args, "config"); + communicator = Ice.Util.initializeWithProperties(properties); + status = run(args, communicator); + } + catch (Ice.LocalException ex) + { + ex.printStackTrace(); + status = 1; + } + + if (communicator != null) + { + try + { + communicator.destroy(); + } + catch (Ice.LocalException ex) + { + ex.printStackTrace(); + status = 1; + } + } + + System.exit(status); + } +} |