From 592acfa70b3728953dfe28fa7c33302932c073c2 Mon Sep 17 00:00:00 2001 From: Matthew Newhook Date: Fri, 9 Jan 2009 11:25:54 -0330 Subject: added Database demo. --- java/demo/Database/library/RunParser.java | 220 ++++++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 java/demo/Database/library/RunParser.java (limited to 'java/demo/Database/library/RunParser.java') diff --git a/java/demo/Database/library/RunParser.java b/java/demo/Database/library/RunParser.java new file mode 100644 index 00000000000..0d12765fca0 --- /dev/null +++ b/java/demo/Database/library/RunParser.java @@ -0,0 +1,220 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +import Demo.*; + +class RunParser +{ + // + // Adapter for the two types of session objects. + // + interface SessionAdapter + { + public LibraryPrx getLibrary(); + public void destroy(); + public void refresh(); + } + + static class Glacier2SessionAdapter implements SessionAdapter + { + public LibraryPrx getLibrary() + { + return _session.getLibrary(); + } + + public void destroy() + { + _session.destroy(); + } + + public void refresh() + { + _session.refresh(); + } + + Glacier2SessionAdapter(Glacier2SessionPrx session) + { + _session = session; + } + + private Glacier2SessionPrx _session; + } + + static class DemoSessionAdapter implements SessionAdapter + { + public LibraryPrx getLibrary() + { + return _session.getLibrary(); + } + + public void destroy() + { + _session.destroy(); + } + + public void refresh() + { + _session.refresh(); + } + + DemoSessionAdapter(SessionPrx session) + { + _session = session; + } + + private SessionPrx _session; + } + + static private class SessionRefreshThread extends Thread + { + SessionRefreshThread(Ice.Logger logger, long timeout, SessionAdapter session) + { + _logger = logger; + _session = session; + _timeout = timeout; // seconds. + } + + synchronized public void + run() + { + while(!_terminated) + { + try + { + wait(_timeout * 1000); + } + catch(InterruptedException e) + { + } + if(!_terminated) + { + try + { + _session.refresh(); + } + catch(Ice.LocalException ex) + { + _logger.warning("SessionRefreshThread: " + ex); + _terminated = true; + } + } + } + } + + synchronized private void + terminate() + { + _terminated = true; + notify(); + } + + final private Ice.Logger _logger; + final private SessionAdapter _session; + final private long _timeout; + private boolean _terminated = false; + } + + static int + runParser(String appName, String[] args, Ice.Communicator communicator) + { + SessionAdapter session; + Glacier2.RouterPrx router = Glacier2.RouterPrxHelper.uncheckedCast(communicator.getDefaultRouter()); + long timeout; + if(router != null) + { + Glacier2.SessionPrx glacier2session = null; + java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(System.in)); + while(true) + { + System.out.println("This demo accepts any user-id / password combination."); + + try + { + String id; + System.out.print("user id: "); + System.out.flush(); + id = in.readLine(); + + String pw; + System.out.print("password: "); + System.out.flush(); + pw = in.readLine(); + + try + { + glacier2session = router.createSession(id, pw); + timeout = router.getSessionTimeout() / 2; + break; + } + catch(Glacier2.PermissionDeniedException ex) + { + System.out.println("permission denied:\n" + ex.reason); + } + catch(Glacier2.CannotCreateSessionException ex) + { + System.out.println("cannot create session:\n" + ex.reason); + } + } + catch(java.io.IOException ex) + { + ex.printStackTrace(); + } + } + session = new Glacier2SessionAdapter(Glacier2SessionPrxHelper.uncheckedCast(glacier2session)); + } + else + { + SessionFactoryPrx factory = SessionFactoryPrxHelper.checkedCast( + communicator.propertyToProxy("SessionFactory.Proxy")); + if(factory == null) + { + System.err.println(appName + ": invalid object reference"); + return 1; + } + + session = new DemoSessionAdapter(factory.create()); + timeout = factory.getSessionTimeout()/2; + } + SessionRefreshThread refresh = new SessionRefreshThread(communicator.getLogger(), timeout, session); + refresh.start(); + + LibraryPrx library = session.getLibrary(); + + Parser parser = new Parser(communicator, library); + + int rc = 0; + + if(args.length == 1) + { + rc = parser.parse(args[0]); + } + + if(rc == 0) + { + rc = parser.parse(); + } + + if(refresh != null) + { + refresh.terminate(); + try + { + refresh.join(); + } + catch(InterruptedException e) + { + } + refresh = null; + } + + session.destroy(); + + return rc; + } +} -- cgit v1.2.3 From f8080a78d87686f42af854106950933d849ffc7d Mon Sep 17 00:00:00 2001 From: Matthew Newhook Date: Fri, 9 Jan 2009 11:40:06 -0330 Subject: http://bugzilla.zeroc.com/bugzilla/show_bug.cgi?id=3553. database demo uses wrong session destroy. --- java/demo/Database/library/RunParser.java | 102 ++++++++++++++---------------- java/demo/Database/library/config.client | 2 +- 2 files changed, 50 insertions(+), 54 deletions(-) (limited to 'java/demo/Database/library/RunParser.java') diff --git a/java/demo/Database/library/RunParser.java b/java/demo/Database/library/RunParser.java index 0d12765fca0..6120c17e797 100644 --- a/java/demo/Database/library/RunParser.java +++ b/java/demo/Database/library/RunParser.java @@ -21,56 +21,6 @@ class RunParser public void refresh(); } - static class Glacier2SessionAdapter implements SessionAdapter - { - public LibraryPrx getLibrary() - { - return _session.getLibrary(); - } - - public void destroy() - { - _session.destroy(); - } - - public void refresh() - { - _session.refresh(); - } - - Glacier2SessionAdapter(Glacier2SessionPrx session) - { - _session = session; - } - - private Glacier2SessionPrx _session; - } - - static class DemoSessionAdapter implements SessionAdapter - { - public LibraryPrx getLibrary() - { - return _session.getLibrary(); - } - - public void destroy() - { - _session.destroy(); - } - - public void refresh() - { - _session.refresh(); - } - - DemoSessionAdapter(SessionPrx session) - { - _session = session; - } - - private SessionPrx _session; - } - static private class SessionRefreshThread extends Thread { SessionRefreshThread(Ice.Logger logger, long timeout, SessionAdapter session) @@ -124,7 +74,7 @@ class RunParser runParser(String appName, String[] args, Ice.Communicator communicator) { SessionAdapter session; - Glacier2.RouterPrx router = Glacier2.RouterPrxHelper.uncheckedCast(communicator.getDefaultRouter()); + final Glacier2.RouterPrx router = Glacier2.RouterPrxHelper.uncheckedCast(communicator.getDefaultRouter()); long timeout; if(router != null) { @@ -166,7 +116,36 @@ class RunParser ex.printStackTrace(); } } - session = new Glacier2SessionAdapter(Glacier2SessionPrxHelper.uncheckedCast(glacier2session)); + final Glacier2SessionPrx sess = Glacier2SessionPrxHelper.uncheckedCast(glacier2session); + session = new SessionAdapter() + { + public LibraryPrx getLibrary() + { + return sess.getLibrary(); + } + + public void destroy() + { + try + { + router.destroySession(); + } + catch(Glacier2.SessionNotExistException ex) + { + } + catch(Ice.ConnectionLostException ex) + { + // + // Expected: the router closed the connection. + // + } + } + + public void refresh() + { + sess.refresh(); + } + }; } else { @@ -178,7 +157,24 @@ class RunParser return 1; } - session = new DemoSessionAdapter(factory.create()); + final SessionPrx sess = factory.create(); + session = new SessionAdapter() + { + public LibraryPrx getLibrary() + { + return sess.getLibrary(); + } + + public void destroy() + { + sess.destroy(); + } + + public void refresh() + { + sess.refresh(); + } + }; timeout = factory.getSessionTimeout()/2; } SessionRefreshThread refresh = new SessionRefreshThread(communicator.getLogger(), timeout, session); diff --git a/java/demo/Database/library/config.client b/java/demo/Database/library/config.client index 9f0fa65a663..978ddf615e7 100644 --- a/java/demo/Database/library/config.client +++ b/java/demo/Database/library/config.client @@ -25,7 +25,7 @@ Ice.RetryIntervals=-1 # # Warn about connection exceptions # -Ice.Warn.Connections=1 +#Ice.Warn.Connections=1 # # Network Tracing -- cgit v1.2.3