[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