diff options
author | Benoit Foucher <benoit@zeroc.com> | 2009-12-03 17:09:19 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2009-12-03 17:09:19 +0100 |
commit | f24200b2f2ce752ac2d35751d6d615b72642bbaf (patch) | |
tree | c1d95a4b55725bac4c1115e9b76e9718f1396ad7 /java | |
parent | Added back IceHome setting for source tree compiles (diff) | |
download | ice-f24200b2f2ce752ac2d35751d6d615b72642bbaf.tar.bz2 ice-f24200b2f2ce752ac2d35751d6d615b72642bbaf.tar.xz ice-f24200b2f2ce752ac2d35751d6d615b72642bbaf.zip |
Fixed demos to use Ice.Dispatcher
Diffstat (limited to 'java')
-rw-r--r-- | java/demo/Glacier2/chat/Client.java | 147 | ||||
-rw-r--r-- | java/demo/Ice/applet/HelloApplet.java | 86 | ||||
-rw-r--r-- | java/demo/Ice/swing/Client.java | 85 | ||||
-rw-r--r-- | java/src/Glacier2/Application.java | 6 | ||||
-rw-r--r-- | java/src/Glacier2/SessionHelper.java | 55 |
5 files changed, 154 insertions, 225 deletions
diff --git a/java/demo/Glacier2/chat/Client.java b/java/demo/Glacier2/chat/Client.java index fbd3aa7c8a1..859aa1617a4 100644 --- a/java/demo/Glacier2/chat/Client.java +++ b/java/demo/Glacier2/chat/Client.java @@ -54,8 +54,6 @@ import Ice.LocalException; import Ice.StringSeqHolder; import Ice.Util; -// TODO: Simplify the callbacks when http://bugzilla/bugzilla/show_bug.cgi?id=4193 is fixed. - @SuppressWarnings("serial") public class Client extends JFrame { @@ -137,14 +135,7 @@ public class Client extends JFrame public void exception(final LocalException ex) { - SwingUtilities.invokeLater(new Runnable() { - - public void - run() - { - appendMessage("<system-message> - " + ex); - } - }); + appendMessage("<system-message> - " + ex); } }); } @@ -311,90 +302,82 @@ public class Client extends JFrame _connectionPanel.add(fieldPanel); _input.setEnabled(false); - Ice.Properties properties = Ice.Util.createProperties(); - properties.load("config.client"); + + Ice.InitializationData initData = new Ice.InitializationData(); + + // Load the configuration file. + initData.properties = Ice.Util.createProperties(); + initData.properties.load("config.client"); StringSeqHolder argHolder = new StringSeqHolder(args); - properties = Util.createProperties(argHolder, properties); - _factory = new SessionFactoryHelper(properties, new SessionCallback() + initData.properties = Util.createProperties(argHolder, initData.properties); + + // Setup a dispatcher to dispath Ice and Glacier2 helper callbacks to the GUI thread. + initData.dispatcher = new Ice.Dispatcher() + { + public void + dispatch(Runnable runnable, Ice.Connection connection) + { + SwingUtilities.invokeLater(runnable); + } + }; + + _factory = new SessionFactoryHelper(initData, new SessionCallback() + { + public void + connected(SessionHelper session) + throws SessionNotExistException { - // The session helper callbacks are all called from the - // GUI thread. - public void - connected(SessionHelper session) - throws SessionNotExistException + // If the session has been reassigned avoid the spurious callback. + if(session != _session) { - // If the session has been reassigned avoid the - // spurious callback. - if(session != _session) - { - return; + return; + } + + // The chat callback servant. We use an anonymous + // inner class since the implementation is very + // simple. + Demo._ChatCallbackDisp servant = new Demo._ChatCallbackDisp() + { + public void + message(final String data, Current current) + { + appendMessage(data); } + }; - // The chat callback servant. We use an anonymous - // inner class since the implementation is very - // simple. - Demo._ChatCallbackDisp servant = new Demo._ChatCallbackDisp() - { - public void - message(final String data, Current current) - { - SwingUtilities.invokeLater(new Runnable() - { - public void - run() - { - appendMessage(data); - } - }); - } - }; - Demo.ChatCallbackPrx callback = Demo.ChatCallbackPrxHelper.uncheckedCast( - _session.addWithUUID(servant)); + Demo.ChatCallbackPrx callback = Demo.ChatCallbackPrxHelper.uncheckedCast(_session.addWithUUID(servant)); - _chat = Demo.ChatSessionPrxHelper.uncheckedCast(_session.session()); - _chat.begin_setCallback(callback, new Demo.Callback_ChatSession_setCallback() + _chat = Demo.ChatSessionPrxHelper.uncheckedCast(_session.session()); + _chat.begin_setCallback(callback, new Demo.Callback_ChatSession_setCallback() + { + @Override + public void + response() { - @Override - public void - response() - { - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - assert _loginDialog != null; - _loginDialog.dispose(); - - _login.setEnabled(false); - _logout.setEnabled(true); - - _input.setEnabled(true); - - _status.setText("Connected with " + _hostField.getText()); - } - }); - } + assert _loginDialog != null; + _loginDialog.dispose(); + + _login.setEnabled(false); + _logout.setEnabled(true); + + _input.setEnabled(true); + + _status.setText("Connected with " + _hostField.getText()); + } - @Override - public void - exception(LocalException ex) - { - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - destroySession(); - } - }); - } - }); + @Override + public void + exception(LocalException ex) + { + destroySession(); + } + }); } public void disconnected(SessionHelper session) { - // If the session has been reassigned avoid the - // spurious callback. + // If the session has been reassigned avoid the spurious callback. if(session != _session) { return; @@ -455,7 +438,7 @@ public class Client extends JFrame _factory.setRouterHost(_hostField.getText()); // Connect to Glacier2 using SessionFactoryHelper _session = _factory.connect(_userNameField.getText(), _passwordField.getText()); - String[] cancel = {"Cancel" }; + String[] cancel = { "Cancel" }; // Show Connecting Dialog JOptionPane pane = new JOptionPane("Please wait while connecting...", JOptionPane.INFORMATION_MESSAGE, diff --git a/java/demo/Ice/applet/HelloApplet.java b/java/demo/Ice/applet/HelloApplet.java index 34f52fd23c9..ea3837f5289 100644 --- a/java/demo/Ice/applet/HelloApplet.java +++ b/java/demo/Ice/applet/HelloApplet.java @@ -43,6 +43,14 @@ public class HelloApplet extends JApplet Ice.InitializationData initData = new Ice.InitializationData(); initData.properties = Ice.Util.createProperties(); initData.properties.load("config.applet"); + initData.dispatcher = new Ice.Dispatcher() + { + public void + dispatch(Runnable runnable, Ice.Connection connection) + { + SwingUtilities.invokeLater(runnable); + } + }; _communicator = Ice.Util.initialize(initData); } catch(Throwable ex) @@ -322,13 +330,7 @@ public class HelloApplet extends JApplet String host = _hostname.getText().toString().trim(); if(host.length() == 0) { - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - _status.setText("No hostname"); - } - }); + _status.setText("No hostname"); return null; } @@ -352,13 +354,7 @@ public class HelloApplet extends JApplet { assert (!_response); _response = true; - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - _status.setText("Ready"); - } - }); + _status.setText("Ready"); } @Override @@ -366,14 +362,7 @@ public class HelloApplet extends JApplet { assert (!_response); _response = true; - - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - handleException(ex); - } - }); + handleException(ex); } @Override @@ -384,20 +373,14 @@ public class HelloApplet extends JApplet return; } - SwingUtilities.invokeLater(new Runnable() + if(_deliveryMode == DeliveryMode.TWOWAY || _deliveryMode == DeliveryMode.TWOWAY_SECURE) { - public void run() - { - if(_deliveryMode == DeliveryMode.TWOWAY || _deliveryMode == DeliveryMode.TWOWAY_SECURE) - { - _status.setText("Waiting for response"); - } - else - { - _status.setText("Ready"); - } - } - }); + _status.setText("Waiting for response"); + } + else + { + _status.setText("Ready"); + } } } @@ -450,25 +433,13 @@ public class HelloApplet extends JApplet @Override public void response() { - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - _status.setText("Ready"); - } - }); + _status.setText("Ready"); } @Override public void exception(final Ice.LocalException ex) { - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - handleException(ex); - } - }); + handleException(ex); } }); if(_deliveryMode == DeliveryMode.TWOWAY || _deliveryMode == DeliveryMode.TWOWAY_SECURE) @@ -501,13 +472,7 @@ public class HelloApplet extends JApplet } catch(final Ice.LocalException ex) { - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - handleException(ex); - } - }); + handleException(ex); } } }).start(); @@ -550,14 +515,7 @@ public class HelloApplet extends JApplet private void handleException(final Throwable ex) { ex.printStackTrace(); - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - _status.setText(ex.getClass().getName()); - } - } - ); + _status.setText(ex.getClass().getName()); } private static class SliderListener implements ChangeListener diff --git a/java/demo/Ice/swing/Client.java b/java/demo/Ice/swing/Client.java index 1c758cb621d..ffdac41877e 100644 --- a/java/demo/Ice/swing/Client.java +++ b/java/demo/Ice/swing/Client.java @@ -70,6 +70,14 @@ public class Client extends JFrame Ice.InitializationData initData = new Ice.InitializationData(); initData.properties = Ice.Util.createProperties(); initData.properties.load("config.client"); + initData.dispatcher = new Ice.Dispatcher() + { + public void + dispatch(Runnable runnable, Ice.Connection connection) + { + SwingUtilities.invokeLater(runnable); + } + }; _communicator = Ice.Util.initialize(args, initData); } catch(Throwable ex) @@ -371,13 +379,7 @@ public class Client extends JFrame String host = _hostname.getText().toString().trim(); if(host.length() == 0) { - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - _status.setText("No hostname"); - } - }); + _status.setText("No hostname"); return null; } @@ -399,13 +401,7 @@ public class Client extends JFrame { assert (!_response); _response = true; - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - _status.setText("Ready"); - } - }); + _status.setText("Ready"); } @Override @@ -413,14 +409,7 @@ public class Client extends JFrame { assert (!_response); _response = true; - - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - handleException(ex); - } - }); + handleException(ex); } @Override @@ -431,20 +420,14 @@ public class Client extends JFrame return; } - SwingUtilities.invokeLater(new Runnable() + if(_deliveryMode == DeliveryMode.TWOWAY || _deliveryMode == DeliveryMode.TWOWAY_SECURE) { - public void run() - { - if(_deliveryMode == DeliveryMode.TWOWAY || _deliveryMode == DeliveryMode.TWOWAY_SECURE) - { - _status.setText("Waiting for response"); - } - else - { - _status.setText("Ready"); - } - } - }); + _status.setText("Waiting for response"); + } + else + { + _status.setText("Ready"); + } } private boolean _response = false; @@ -499,25 +482,13 @@ public class Client extends JFrame @Override public void response() { - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - _status.setText("Ready"); - } - }); + _status.setText("Ready"); } @Override public void exception(final Ice.LocalException ex) { - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - handleException(ex); - } - }); + handleException(ex); } }); if(_deliveryMode == DeliveryMode.TWOWAY || _deliveryMode == DeliveryMode.TWOWAY_SECURE) @@ -550,13 +521,7 @@ public class Client extends JFrame } catch(final Ice.LocalException ex) { - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - handleException(ex); - } - }); + handleException(ex); } } }).start(); @@ -605,13 +570,7 @@ public class Client extends JFrame return; } ex.printStackTrace(); - SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - _status.setText(ex.getClass().getName()); - } - }); + _status.setText(ex.getClass().getName()); } private static class SliderListener implements ChangeListener diff --git a/java/src/Glacier2/Application.java b/java/src/Glacier2/Application.java index 488c3f22f19..d005e32c8b3 100644 --- a/java/src/Glacier2/Application.java +++ b/java/src/Glacier2/Application.java @@ -216,11 +216,7 @@ public abstract class Application extends Ice.Application { throw new SessionNotExistException(); } - // TODO: Depending on the resolution of - // http://bugzilla/bugzilla/show_bug.cgi?id=4264 the OA - // name could be an empty string. - String uuid = java.util.UUID.randomUUID().toString(); - _adapter = communicator().createObjectAdapterWithRouter(uuid, _router); + _adapter = communicator().createObjectAdapterWithRouter("", _router); _adapter.activate(); } return _adapter; diff --git a/java/src/Glacier2/SessionHelper.java b/java/src/Glacier2/SessionHelper.java index dbb91db401c..3656a62835d 100644 --- a/java/src/Glacier2/SessionHelper.java +++ b/java/src/Glacier2/SessionHelper.java @@ -6,9 +6,8 @@ // ICE_LICENSE file included in this distribution. // // ********************************************************************** -package Glacier2; -import javax.swing.SwingUtilities; +package Glacier2; /** * A helper class for using Glacier2 with GUI applications. @@ -240,10 +239,7 @@ public class SessionHelper } if(_adapter == null) { - // TODO: Depending on the resolution of - // http://bugzilla/bugzilla/show_bug.cgi?id=4264 the OA - // name could be an empty string. - _adapter = _communicator.createObjectAdapterWithRouter(java.util.UUID.randomUUID().toString(), _router); + _adapter = _communicator.createObjectAdapterWithRouter("", _router); _adapter.activate(); } return _adapter; @@ -340,7 +336,7 @@ public class SessionHelper // hooks. } - SwingUtilities.invokeLater(new Runnable() + dispatchCallback(new Runnable() { public void run() { @@ -408,7 +404,7 @@ public class SessionHelper _communicator = null; // Notify the callback that the session is gone. - SwingUtilities.invokeLater(new Runnable() + dispatchCallback(new Runnable() { public void run() { @@ -429,7 +425,7 @@ public class SessionHelper catch(final Ice.LocalException ex) { _destroy = true; - SwingUtilities.invokeLater(new Runnable() + dispatchCallback(new Runnable() { public void run() { @@ -445,7 +441,7 @@ public class SessionHelper { try { - SwingUtilities.invokeAndWait(new Runnable() + dispatchCallbackAndWait(new Runnable() { public void run() { @@ -468,7 +464,7 @@ public class SessionHelper { } - SwingUtilities.invokeLater(new Runnable() + dispatchCallback(new Runnable() { public void run() { @@ -480,6 +476,43 @@ public class SessionHelper }).start(); } + private void + dispatchCallback(Runnable runnable) + { + if(_initData.dispatcher != null) + { + _initData.dispatcher.dispatch(runnable, null); + } + else + { + runnable.run(); + } + } + + private void + dispatchCallbackAndWait(final Runnable runnable) + { + if(_initData.dispatcher != null) + { + final java.util.concurrent.Semaphore sem = new java.util.concurrent.Semaphore(0); + _initData.dispatcher.dispatch( + new Runnable() + { + public void + run() + { + runnable.run(); + sem.release(); + } + }, null); + sem.acquireUninterruptibly(); + } + else + { + runnable.run(); + } + } + private Ice.InitializationData _initData; private Ice.Communicator _communicator; private Ice.ObjectAdapter _adapter; |