[jboss-cvs] JBoss Messaging SVN: r3552 - in trunk: src/main/org/jboss/jms/client/remoting and 4 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jan 9 07:51:42 EST 2008
Author: jmesnil
Date: 2008-01-09 07:51:42 -0500 (Wed, 09 Jan 2008)
New Revision: 3552
Added:
trunk/src/main/org/jboss/messaging/core/remoting/impl/ClientImpl.java
Modified:
trunk/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java
trunk/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java
trunk/src/main/org/jboss/messaging/core/remoting/ConnectorRegistry.java
trunk/tests/src/org/jboss/messaging/core/remoting/impl/ClientTestBase.java
trunk/tests/src/org/jboss/messaging/core/remoting/test/unit/ClientTest.java
Log:
* extracted Client interface and moved implementation to o.j.messaging.core.remoting.impl
Modified: trunk/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java
===================================================================
--- trunk/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java 2008-01-09 08:42:36 UTC (rev 3551)
+++ trunk/src/main/org/jboss/jms/client/delegate/ClientConnectionFactoryDelegate.java 2008-01-09 12:51:42 UTC (rev 3552)
@@ -42,6 +42,7 @@
import org.jboss.messaging.core.remoting.Client;
import org.jboss.messaging.core.remoting.NIOConnector;
import org.jboss.messaging.core.remoting.ServerLocator;
+import org.jboss.messaging.core.remoting.impl.ClientImpl;
import org.jboss.messaging.core.remoting.wireformat.CreateConnectionRequest;
import org.jboss.messaging.core.remoting.wireformat.CreateConnectionResponse;
import org.jboss.messaging.util.Version;
@@ -294,7 +295,7 @@
{
ServerLocator locator = new ServerLocator(serverLocatorURI);
NIOConnector connector = REGISTRY.getConnector(locator);
- client = new Client(connector, locator);
+ client = new ClientImpl(connector, locator);
client.connect();
}
catch (Exception e)
Modified: trunk/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java
===================================================================
--- trunk/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java 2008-01-09 08:42:36 UTC (rev 3551)
+++ trunk/src/main/org/jboss/jms/client/remoting/JMSRemotingConnection.java 2008-01-09 12:51:42 UTC (rev 3552)
@@ -27,6 +27,7 @@
import org.jboss.messaging.core.remoting.Client;
import org.jboss.messaging.core.remoting.NIOConnector;
import org.jboss.messaging.core.remoting.ServerLocator;
+import org.jboss.messaging.core.remoting.impl.ClientImpl;
/**
* Encapsulates the state and behaviour from MINA needed for a JMS connection.
@@ -82,7 +83,7 @@
callbackManager = new CallbackManager();
NIOConnector connector = REGISTRY.getConnector(serverLocator);
- client = new Client(connector, serverLocator);
+ client = new ClientImpl(connector, serverLocator);
client.connect();
if (log.isDebugEnabled())
Modified: trunk/src/main/org/jboss/messaging/core/remoting/ConnectorRegistry.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/ConnectorRegistry.java 2008-01-09 08:42:36 UTC (rev 3551)
+++ trunk/src/main/org/jboss/messaging/core/remoting/ConnectorRegistry.java 2008-01-09 12:51:42 UTC (rev 3552)
@@ -6,6 +6,7 @@
*/
package org.jboss.messaging.core.remoting;
+import org.jboss.messaging.core.remoting.impl.ClientImpl;
import org.jboss.messaging.core.remoting.impl.invm.INVMConnector;
import org.jboss.messaging.core.remoting.impl.mina.MinaService;
@@ -15,7 +16,7 @@
*
* When a {@link MinaService} is started, it register its {@link ServerLocator}.
*
- * When a {@link Client} is created, it gets its {@link NIOConnector} from the
+ * When a {@link ClientImpl} is created, it gets its {@link NIOConnector} from the
* ConnectorRegistry using the {@link ServerLocator} corresponding to the server
* it wants to connect to. If the ConnectionRegistry contains this locator, it
* implies that the Client is in the same VM than the server. In that case, we
Added: trunk/src/main/org/jboss/messaging/core/remoting/impl/ClientImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/ClientImpl.java (rev 0)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/ClientImpl.java 2008-01-09 12:51:42 UTC (rev 3552)
@@ -0,0 +1,203 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.impl;
+
+import static java.util.concurrent.TimeUnit.SECONDS;
+
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+
+import javax.jms.IllegalStateException;
+import javax.jms.JMSException;
+
+import org.jboss.jms.client.remoting.ConsolidatedRemotingConnectionListener;
+import org.jboss.jms.exception.MessagingNetworkFailureException;
+import org.jboss.logging.Logger;
+import org.jboss.messaging.core.remoting.Client;
+import org.jboss.messaging.core.remoting.NIOConnector;
+import org.jboss.messaging.core.remoting.NIOSession;
+import org.jboss.messaging.core.remoting.ServerLocator;
+import org.jboss.messaging.core.remoting.wireformat.AbstractPacket;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>.
+ *
+ * @version <tt>$Revision$</tt>
+ */
+public class ClientImpl implements Client
+{
+ // Constants -----------------------------------------------------
+
+ private final Logger log = Logger.getLogger(ClientImpl.class);
+
+ // Attributes ----------------------------------------------------
+
+ private ServerLocator serverLocator;
+
+ private final NIOConnector connector;
+
+ private NIOSession session;
+
+ // By default, a blocking request will timeout after 5 seconds
+ private int blockingRequestTimeout = 5;
+ private TimeUnit blockingRequestTimeUnit = SECONDS;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public ClientImpl(NIOConnector connector, ServerLocator locator)
+ {
+ assert connector != null;
+ assert locator != null;
+
+ this.connector = connector;
+ this.serverLocator = locator;
+ }
+
+ // Public --------------------------------------------------------
+
+ /* (non-Javadoc)
+ * @see org.jboss.messaging.core.remoting.Client#connect()
+ */
+ public void connect() throws Exception
+ {
+ this.session = connector.connect();
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.messaging.core.remoting.Client#disconnect()
+ */
+ public boolean disconnect() throws Exception
+ {
+ if (session == null)
+ {
+ return false;
+ }
+ session = null;
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.messaging.core.remoting.Client#getSessionID()
+ */
+ public String getSessionID()
+ {
+ if (session == null || !session.isConnected())
+ {
+ return null;
+ }
+ return Long.toString(session.getID());
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.messaging.core.remoting.Client#sendOneWay(org.jboss.messaging.core.remoting.wireformat.AbstractPacket)
+ */
+ public void sendOneWay(AbstractPacket packet) throws JMSException
+ {
+ assert packet != null;
+ checkConnected();
+
+ session.write(packet);
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.messaging.core.remoting.Client#sendBlocking(org.jboss.messaging.core.remoting.wireformat.AbstractPacket)
+ */
+ public AbstractPacket sendBlocking(AbstractPacket packet)
+ throws IOException, JMSException
+ {
+ assert packet != null;
+ checkConnected();
+
+ try
+ {
+ AbstractPacket response = (AbstractPacket) session.writeAndBlock(packet,
+ blockingRequestTimeout, blockingRequestTimeUnit);
+ return response;
+ } catch (Throwable t)
+ {
+ IOException ioe = new IOException();
+ ioe.initCause(t);
+ throw ioe;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.messaging.core.remoting.Client#setBlockingRequestTimeout(int, java.util.concurrent.TimeUnit)
+ */
+ public void setBlockingRequestTimeout(int timeout, TimeUnit unit)
+ {
+ this.blockingRequestTimeout = timeout;
+ this.blockingRequestTimeUnit = unit;
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.messaging.core.remoting.Client#addConnectionListener(org.jboss.jms.client.remoting.ConsolidatedRemotingConnectionListener)
+ */
+ public void addConnectionListener(
+ final ConsolidatedRemotingConnectionListener listener)
+ {
+ connector.addConnectionListener(listener);
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.messaging.core.remoting.Client#removeConnectionListener(org.jboss.jms.client.remoting.ConsolidatedRemotingConnectionListener)
+ */
+ public void removeConnectionListener(
+ ConsolidatedRemotingConnectionListener listener)
+ {
+ connector.removeConnectionListener(listener);
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.messaging.core.remoting.Client#isConnected()
+ */
+ public boolean isConnected()
+ {
+ if (session == null)
+ return false;
+ else
+ return session.isConnected();
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.messaging.core.remoting.Client#getURI()
+ */
+ public String getURI()
+ {
+ return connector.getServerURI();
+ }
+
+ @Override
+ public String toString()
+ {
+ return "Client[session=" + session + "]";
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ private void checkConnected() throws JMSException
+ {
+ if (session == null)
+ {
+ throw new IllegalStateException("Client " + this
+ + " is not connected.");
+ }
+ if (!session.isConnected())
+ {
+ throw new MessagingNetworkFailureException("Client " + this
+ + " is not connected.");
+ }
+ }
+
+ // Inner classes -------------------------------------------------
+}
Modified: trunk/tests/src/org/jboss/messaging/core/remoting/impl/ClientTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/impl/ClientTestBase.java 2008-01-09 08:42:36 UTC (rev 3551)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/impl/ClientTestBase.java 2008-01-09 12:51:42 UTC (rev 3552)
@@ -49,7 +49,7 @@
public void testConnected() throws Exception
{
- Client client = new Client(createNIOConnector(), createServerLocator());
+ Client client = new ClientImpl(createNIOConnector(), createServerLocator());
assertFalse(client.isConnected());
@@ -216,7 +216,7 @@
ServerLocator serverLocator = createServerLocator();
NIOConnector connector = createNIOConnector();
- client = new Client(connector, serverLocator);
+ client = new ClientImpl(connector, serverLocator);
client.connect();
serverPacketHandler = new ReversePacketHandler();
Modified: trunk/tests/src/org/jboss/messaging/core/remoting/test/unit/ClientTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/test/unit/ClientTest.java 2008-01-09 08:42:36 UTC (rev 3551)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/test/unit/ClientTest.java 2008-01-09 12:51:42 UTC (rev 3552)
@@ -23,6 +23,7 @@
import org.jboss.messaging.core.remoting.NIOConnector;
import org.jboss.messaging.core.remoting.NIOSession;
import org.jboss.messaging.core.remoting.ServerLocator;
+import org.jboss.messaging.core.remoting.impl.ClientImpl;
import org.jboss.messaging.core.remoting.wireformat.NullPacket;
/**
@@ -56,7 +57,7 @@
replay(connector, session1, session2);
- Client client = new Client(connector, serverLocator);
+ Client client = new ClientImpl(connector, serverLocator);
client.connect();
assertTrue(client.isConnected());
assertTrue(client.disconnect());
@@ -79,7 +80,7 @@
replay(connector);
- Client client = new Client(connector, serverLocator);
+ Client client = new ClientImpl(connector, serverLocator);
try
{
@@ -105,7 +106,7 @@
replay(connector, session);
- Client client = new Client(connector, serverLocator);
+ Client client = new ClientImpl(connector, serverLocator);
assertNull(client.getSessionID());
client.connect();
@@ -133,7 +134,7 @@
replay(connector, session);
- Client client = new Client(connector, serverLocator);
+ Client client = new ClientImpl(connector, serverLocator);
assertNull(client.getURI());
client.connect();
@@ -151,7 +152,7 @@
// connector is not expected to be called at all;
replay(connector);
- Client client = new Client(connector, serverLocator);
+ Client client = new ClientImpl(connector, serverLocator);
try
{
client.sendOneWay(new NullPacket());
More information about the jboss-cvs-commits
mailing list