[jboss-cvs] JBoss Messaging SVN: r4471 - in trunk: src/main/org/jboss/messaging/core/remoting and 7 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Jun 14 04:35:15 EDT 2008


Author: ataylor
Date: 2008-06-14 04:35:15 -0400 (Sat, 14 Jun 2008)
New Revision: 4471

Added:
   trunk/src/main/org/jboss/messaging/core/remoting/MessagingCodec.java
   trunk/src/main/org/jboss/messaging/core/remoting/impl/MessagingCodecImpl.java
   trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaProtocolCodecFilter.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/CodecAssert.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/MessagingCodecImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaProtocolCodecFilterTest.java
Removed:
   trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MessagingCodec.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/wireformat/CodecAssert.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/wireformat/PacketTypeTest.java
Modified:
   trunk/messaging.iml
   trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/FilterChainSupport.java
   trunk/tests/src/org/jboss/messaging/tests/integration/core/remoting/mina/MessagingBufferTestBase.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/util/TypedPropertiesTest.java
Log:
made MessagingCodec generic and added tests

Modified: trunk/messaging.iml
===================================================================
--- trunk/messaging.iml	2008-06-13 20:59:02 UTC (rev 4470)
+++ trunk/messaging.iml	2008-06-14 08:35:15 UTC (rev 4471)
@@ -33,6 +33,7 @@
       <excludeFolder url="file://$MODULE_DIR$/build/jars" />
       <excludeFolder url="file://$MODULE_DIR$/build/messaging-2.0.0.alpha1" />
       <excludeFolder url="file://$MODULE_DIR$/classes" />
+      <excludeFolder url="file://$MODULE_DIR$/data" />
       <excludeFolder url="file://$MODULE_DIR$/docs/examples/bridge/output" />
       <excludeFolder url="file://$MODULE_DIR$/docs/examples/common/output" />
       <excludeFolder url="file://$MODULE_DIR$/docs/examples/distributed-queue/output" />

Added: trunk/src/main/org/jboss/messaging/core/remoting/MessagingCodec.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/MessagingCodec.java	                        (rev 0)
+++ trunk/src/main/org/jboss/messaging/core/remoting/MessagingCodec.java	2008-06-14 08:35:15 UTC (rev 4471)
@@ -0,0 +1,14 @@
+package org.jboss.messaging.core.remoting;
+
+import org.jboss.messaging.util.MessagingBuffer;
+
+/**
+ * Used to encode/decode messages.
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
+ */
+public interface MessagingCodec
+{
+   void encode(MessagingBuffer buffer, Object message) throws Exception;
+
+   Packet decode(MessagingBuffer in) throws Exception;
+}

Copied: trunk/src/main/org/jboss/messaging/core/remoting/impl/MessagingCodecImpl.java (from rev 4459, trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MessagingCodec.java)
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/MessagingCodecImpl.java	                        (rev 0)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/MessagingCodecImpl.java	2008-06-14 08:35:15 UTC (rev 4471)
@@ -0,0 +1,343 @@
+/*
+ * 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 org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.remoting.MessagingCodec;
+import org.jboss.messaging.core.remoting.Packet;
+import org.jboss.messaging.core.remoting.impl.wireformat.*;
+import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.*;
+import static org.jboss.messaging.util.DataConstants.SIZE_INT;
+import org.jboss.messaging.util.MessagingBuffer;
+
+/**
+ * A MessagingCodec
+ *
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="mailto:ataylor at redhat.com">Andy Taylor</a>
+ */
+public class MessagingCodecImpl implements MessagingCodec
+{
+   private static final Logger log = Logger.getLogger(MessagingCodecImpl.class);
+
+   // MessagingCodec implementation ------------------------------------------
+
+   public void encode(final MessagingBuffer buffer, Object message) throws Exception
+   {
+      Packet packet = (Packet) message;
+      packet.encode(buffer);
+   }
+
+
+   public Packet decode(final MessagingBuffer in) throws Exception
+   {
+      int start = in.position();
+
+      if (in.remaining() <= SIZE_INT)
+      {
+         return null;
+      }
+
+      int length = in.getInt();
+
+      if (in.remaining() < length)
+      {
+         in.position(start);
+
+         return null;
+      }
+
+      byte packetType = in.getByte();
+
+      Packet packet;
+
+
+      switch (packetType)
+      {
+         case NULL:
+         {
+            packet = new EmptyPacket(EmptyPacket.NULL);
+            break;
+         }
+         case PING:
+         {
+            packet = new Ping();
+            break;
+         }
+         case PONG:
+         {
+            packet = new Pong();
+            break;
+         }
+         case EXCEPTION:
+         {
+            packet = new MessagingExceptionMessage();
+            break;
+         }
+         case CLOSE:
+         {
+            packet = new EmptyPacket(EmptyPacket.CLOSE);
+            break;
+         }
+         case CREATECONNECTION:
+         {
+            packet = new CreateConnectionRequest();
+            break;
+         }
+         case CREATECONNECTION_RESP:
+         {
+            packet = new CreateConnectionResponse();
+            break;
+         }
+         case EmptyPacket.CONN_CREATESESSION:
+         {
+            packet = new ConnectionCreateSessionMessage();
+            break;
+         }
+         case EmptyPacket.CONN_CREATESESSION_RESP:
+         {
+            packet = new ConnectionCreateSessionResponseMessage();
+            break;
+         }
+         case EmptyPacket.CONN_START:
+         {
+            packet = new EmptyPacket(EmptyPacket.CONN_START);
+            break;
+         }
+         case EmptyPacket.CONN_STOP:
+         {
+            packet = new EmptyPacket(EmptyPacket.CONN_STOP);
+            break;
+         }
+         case EmptyPacket.SESS_CREATECONSUMER:
+         {
+            packet = new SessionCreateConsumerMessage();
+            break;
+         }
+         case EmptyPacket.SESS_CREATECONSUMER_RESP:
+         {
+            packet = new SessionCreateConsumerResponseMessage();
+            break;
+         }
+         case EmptyPacket.SESS_CREATEPRODUCER:
+         {
+            packet = new SessionCreateProducerMessage();
+            break;
+         }
+         case EmptyPacket.SESS_CREATEPRODUCER_RESP:
+         {
+            packet = new SessionCreateProducerResponseMessage();
+            break;
+         }
+         case EmptyPacket.SESS_CREATEBROWSER:
+         {
+            packet = new SessionCreateBrowserMessage();
+            break;
+         }
+         case EmptyPacket.SESS_CREATEBROWSER_RESP:
+         {
+            packet = new SessionCreateBrowserResponseMessage();
+            break;
+         }
+         case EmptyPacket.SESS_ACKNOWLEDGE:
+         {
+            packet = new SessionAcknowledgeMessage();
+            break;
+         }
+         case EmptyPacket.SESS_RECOVER:
+         {
+            packet = new EmptyPacket(EmptyPacket.SESS_RECOVER);
+            break;
+         }
+         case EmptyPacket.SESS_COMMIT:
+         {
+            packet = new EmptyPacket(EmptyPacket.SESS_COMMIT);
+            break;
+         }
+         case EmptyPacket.SESS_ROLLBACK:
+         {
+            packet = new EmptyPacket(EmptyPacket.SESS_ROLLBACK);
+            break;
+         }
+         case EmptyPacket.SESS_CANCEL:
+         {
+            packet = new SessionCancelMessage();
+            break;
+         }
+         case EmptyPacket.SESS_QUEUEQUERY:
+         {
+            packet = new SessionQueueQueryMessage();
+            break;
+         }
+         case EmptyPacket.SESS_QUEUEQUERY_RESP:
+         {
+            packet = new SessionQueueQueryResponseMessage();
+            break;
+         }
+         case EmptyPacket.SESS_CREATEQUEUE:
+         {
+            packet = new SessionCreateQueueMessage();
+            break;
+         }
+         case EmptyPacket.SESS_DELETE_QUEUE:
+         {
+            packet = new SessionDeleteQueueMessage();
+            break;
+         }
+         case EmptyPacket.SESS_ADD_DESTINATION:
+         {
+            packet = new SessionAddDestinationMessage();
+            break;
+         }
+         case EmptyPacket.SESS_REMOVE_DESTINATION:
+         {
+            packet = new SessionRemoveDestinationMessage();
+            break;
+         }
+         case EmptyPacket.SESS_BINDINGQUERY:
+         {
+            packet = new SessionBindingQueryMessage();
+            break;
+         }
+         case EmptyPacket.SESS_BINDINGQUERY_RESP:
+         {
+            packet = new SessionBindingQueryResponseMessage();
+            break;
+         }
+         case EmptyPacket.SESS_BROWSER_RESET:
+         {
+            packet = new EmptyPacket(EmptyPacket.SESS_BROWSER_RESET);
+            break;
+         }
+         case EmptyPacket.SESS_BROWSER_HASNEXTMESSAGE:
+         {
+            packet = new EmptyPacket(EmptyPacket.SESS_BROWSER_HASNEXTMESSAGE);
+            break;
+         }
+         case EmptyPacket.SESS_BROWSER_HASNEXTMESSAGE_RESP:
+         {
+            packet = new SessionBrowserHasNextMessageResponseMessage();
+            break;
+         }
+         case EmptyPacket.SESS_BROWSER_NEXTMESSAGE:
+         {
+            packet = new EmptyPacket(EmptyPacket.SESS_BROWSER_NEXTMESSAGE);
+            break;
+         }
+         case EmptyPacket.SESS_XA_START:
+         {
+            packet = new SessionXAStartMessage();
+            break;
+         }
+         case EmptyPacket.SESS_XA_END:
+         {
+            packet = new SessionXAEndMessage();
+            break;
+         }
+         case EmptyPacket.SESS_XA_COMMIT:
+         {
+            packet = new SessionXACommitMessage();
+            break;
+         }
+         case EmptyPacket.SESS_XA_PREPARE:
+         {
+            packet = new SessionXAPrepareMessage();
+            break;
+         }
+         case EmptyPacket.SESS_XA_RESP:
+         {
+            packet = new SessionXAResponseMessage();
+            break;
+         }
+         case EmptyPacket.SESS_XA_ROLLBACK:
+         {
+            packet = new SessionXARollbackMessage();
+            break;
+         }
+         case EmptyPacket.SESS_XA_JOIN:
+         {
+            packet = new SessionXAJoinMessage();
+            break;
+         }
+         case EmptyPacket.SESS_XA_SUSPEND:
+         {
+            packet = new EmptyPacket(EmptyPacket.SESS_XA_SUSPEND);
+            break;
+         }
+         case EmptyPacket.SESS_XA_RESUME:
+         {
+            packet = new SessionXAResumeMessage();
+            break;
+         }
+         case EmptyPacket.SESS_XA_FORGET:
+         {
+            packet = new SessionXAForgetMessage();
+            break;
+         }
+         case EmptyPacket.SESS_XA_INDOUBT_XIDS:
+         {
+            packet = new EmptyPacket(EmptyPacket.SESS_XA_INDOUBT_XIDS);
+            break;
+         }
+         case EmptyPacket.SESS_XA_INDOUBT_XIDS_RESP:
+         {
+            packet = new SessionXAGetInDoubtXidsResponseMessage();
+            break;
+         }
+         case EmptyPacket.SESS_XA_SET_TIMEOUT:
+         {
+            packet = new SessionXASetTimeoutMessage();
+            break;
+         }
+         case EmptyPacket.SESS_XA_SET_TIMEOUT_RESP:
+         {
+            packet = new SessionXASetTimeoutResponseMessage();
+            break;
+         }
+         case EmptyPacket.SESS_XA_GET_TIMEOUT:
+         {
+            packet = new EmptyPacket(EmptyPacket.SESS_XA_GET_TIMEOUT);
+            break;
+         }
+         case EmptyPacket.SESS_XA_GET_TIMEOUT_RESP:
+         {
+            packet = new SessionXAGetTimeoutResponseMessage();
+            break;
+         }
+         case EmptyPacket.CONS_FLOWTOKEN:
+         {
+            packet = new ConsumerFlowCreditMessage();
+            break;
+         }
+         case EmptyPacket.PROD_SEND:
+         {
+            packet = new ProducerSendMessage();
+            break;
+         }
+         case EmptyPacket.PROD_RECEIVETOKENS:
+         {
+            packet = new ProducerFlowCreditMessage();
+            break;
+         }
+         case EmptyPacket.RECEIVE_MSG:
+         {
+            packet = new ReceiveMessage();
+            break;
+         }
+         default:
+         {
+            throw new IllegalArgumentException("Invalid type: " + packetType);
+         }
+      }
+
+      packet.decode(in);
+
+      return packet;
+
+   }
+
+}

Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/FilterChainSupport.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/FilterChainSupport.java	2008-06-13 20:59:02 UTC (rev 4470)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/FilterChainSupport.java	2008-06-14 08:35:15 UTC (rev 4471)
@@ -6,14 +6,14 @@
  */
 package org.jboss.messaging.core.remoting.impl.mina;
 
-import javax.net.ssl.SSLContext;
-
 import org.apache.mina.common.DefaultIoFilterChainBuilder;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
 import org.apache.mina.filter.ssl.SslFilter;
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.remoting.impl.ssl.SSLSupport;
 
+import javax.net.ssl.SSLContext;
+
 /**
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
  * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
@@ -39,7 +39,7 @@
    {
       assert filterChain != null;
 
-      filterChain.addLast("codec", new ProtocolCodecFilter(new MessagingCodec()));
+      filterChain.addLast("codec", new ProtocolCodecFilter(new MinaProtocolCodecFilter()));
    }
 
    public static void addSSLFilter(

Deleted: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MessagingCodec.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MessagingCodec.java	2008-06-13 20:59:02 UTC (rev 4470)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MessagingCodec.java	2008-06-14 08:35:15 UTC (rev 4471)
@@ -1,443 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- *
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package org.jboss.messaging.core.remoting.impl.mina;
-
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.CLOSE;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.CREATECONNECTION;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.CREATECONNECTION_RESP;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.EXCEPTION;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.NULL;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.PING;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.PONG;
-import static org.jboss.messaging.util.DataConstants.SIZE_INT;
-
-import org.apache.mina.common.IoBuffer;
-import org.apache.mina.common.IoSession;
-import org.apache.mina.filter.codec.CumulativeProtocolDecoder;
-import org.apache.mina.filter.codec.ProtocolCodecFactory;
-import org.apache.mina.filter.codec.ProtocolDecoder;
-import org.apache.mina.filter.codec.ProtocolDecoderOutput;
-import org.apache.mina.filter.codec.ProtocolEncoder;
-import org.apache.mina.filter.codec.ProtocolEncoderOutput;
-import org.jboss.messaging.core.logging.Logger;
-import org.jboss.messaging.core.remoting.Packet;
-import org.jboss.messaging.core.remoting.impl.wireformat.ConnectionCreateSessionMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.ConnectionCreateSessionResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.ConsumerFlowCreditMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.CreateConnectionRequest;
-import org.jboss.messaging.core.remoting.impl.wireformat.CreateConnectionResponse;
-import org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket;
-import org.jboss.messaging.core.remoting.impl.wireformat.MessagingExceptionMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.Ping;
-import org.jboss.messaging.core.remoting.impl.wireformat.Pong;
-import org.jboss.messaging.core.remoting.impl.wireformat.ProducerFlowCreditMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.ProducerSendMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.ReceiveMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionAcknowledgeMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionAddDestinationMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionBrowserHasNextMessageResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCancelMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateBrowserMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateBrowserResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateConsumerMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateConsumerResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateProducerMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateProducerResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateQueueMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionDeleteQueueMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionRemoveDestinationMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXACommitMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAEndMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAForgetMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAGetInDoubtXidsResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAGetTimeoutResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAJoinMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAPrepareMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAResumeMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXARollbackMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXASetTimeoutMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXASetTimeoutResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAStartMessage;
-import org.jboss.messaging.util.MessagingBuffer;
-
-/**
- * 
- * A MessagingCodec
- * 
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- * 
- */
-public class MessagingCodec extends CumulativeProtocolDecoder
-   implements ProtocolEncoder, ProtocolCodecFactory
-{
-   private static final Logger log = Logger.getLogger(MessagingCodec.class);
-
-   // ProtocolCodecFactory implementation
-   // -----------------------------------------------------------------------------------
-
-   public ProtocolDecoder getDecoder(final IoSession session)
-   {
-      return this;
-   }
-
-   public ProtocolEncoder getEncoder(final IoSession session)
-   {
-      return this;
-   }
-
-   
-   // ProtocolEncoder implementation ------------------------------------------
-
-   public void dispose(final IoSession session) throws Exception
-   {
-   }
-
-   public void encode(final IoSession session, final Object message,
-         final ProtocolEncoderOutput out) throws Exception
-   {
-      Packet packet = (Packet) message;
-      
-      IoBuffer iobuf = IoBuffer.allocate(1024, false);
-      
-      iobuf.setAutoExpand(true);
-      
-      MessagingBuffer buffer = new IoBufferWrapper(iobuf);
-
-      packet.encode(buffer);
-      
-      out.write(iobuf);
-   }
-      
-   // CumulativeProtocolDecoder overrides
-   // -------------------------------------------------------------------------------------
-
-   public boolean doDecode(final IoSession session, final IoBuffer in, final ProtocolDecoderOutput out) throws Exception
-   {
-      int start = in.position();
-
-      if (in.remaining() <= SIZE_INT)
-      {
-         return false;
-      }
-
-      int length = in.getInt();
-      
-      if (in.remaining() < length)
-      {
-         in.position(start);
-         
-         return false;
-      }
-
-      int limit = in.limit();
-      in.limit(in.position() + length);
-      
-      byte packetType = in.get();
-      
-      Packet packet;
-      
-      try
-      {
-         switch (packetType)
-         {
-            case NULL:
-            {
-               packet = new EmptyPacket(EmptyPacket.NULL);
-               break;
-            }
-            case PING:
-            {
-               packet = new Ping();
-               break;
-            }
-            case PONG:
-            {
-               packet = new Pong();
-               break;
-            }
-            case EXCEPTION:
-            {
-               packet = new MessagingExceptionMessage();
-               break;
-            }
-            case CLOSE:
-            {
-               packet = new EmptyPacket(EmptyPacket.CLOSE);
-               break;
-            }
-            case CREATECONNECTION:
-            {
-               packet = new CreateConnectionRequest();
-               break;
-            }
-            case CREATECONNECTION_RESP:
-            {           
-               packet = new CreateConnectionResponse();
-               break;
-            }
-            case EmptyPacket.CONN_CREATESESSION:
-            {
-               packet = new ConnectionCreateSessionMessage();
-               break;
-            }
-            case EmptyPacket.CONN_CREATESESSION_RESP:
-            {
-               packet = new ConnectionCreateSessionResponseMessage();
-               break;
-            }
-            case EmptyPacket.CONN_START:
-            {              
-               packet = new EmptyPacket(EmptyPacket.CONN_START);
-               break;
-            }
-            case EmptyPacket.CONN_STOP:
-            {            
-               packet = new EmptyPacket(EmptyPacket.CONN_STOP);
-               break;
-            }
-            case EmptyPacket.SESS_CREATECONSUMER:
-            {
-               packet = new SessionCreateConsumerMessage();
-               break;
-            }
-            case EmptyPacket.SESS_CREATECONSUMER_RESP:
-            {
-               packet = new SessionCreateConsumerResponseMessage();
-               break;
-            }
-            case EmptyPacket.SESS_CREATEPRODUCER:
-            {     
-               packet = new SessionCreateProducerMessage();
-               break;
-            }
-            case EmptyPacket.SESS_CREATEPRODUCER_RESP:
-            {       
-               packet = new SessionCreateProducerResponseMessage();
-               break;
-            }
-            case EmptyPacket.SESS_CREATEBROWSER:
-            {        
-               packet = new SessionCreateBrowserMessage();
-               break;
-            }
-            case EmptyPacket.SESS_CREATEBROWSER_RESP:
-            {
-               packet = new SessionCreateBrowserResponseMessage();
-               break;
-            }
-            case EmptyPacket.SESS_ACKNOWLEDGE:
-            {            
-               packet = new SessionAcknowledgeMessage();
-               break;
-            }
-            case EmptyPacket.SESS_RECOVER:
-            {     
-               packet = new EmptyPacket(EmptyPacket.SESS_RECOVER);
-               break;
-            }
-            case EmptyPacket.SESS_COMMIT:
-            {             
-               packet = new EmptyPacket(EmptyPacket.SESS_COMMIT);
-               break;
-            }
-            case EmptyPacket.SESS_ROLLBACK:
-            {              
-               packet = new EmptyPacket(EmptyPacket.SESS_ROLLBACK);
-               break;
-            }
-            case EmptyPacket.SESS_CANCEL:
-            {        
-               packet = new SessionCancelMessage();
-               break;
-            }
-            case EmptyPacket.SESS_QUEUEQUERY:
-            {
-               packet = new SessionQueueQueryMessage();
-               break;
-            }
-            case EmptyPacket.SESS_QUEUEQUERY_RESP:
-            {
-               packet = new SessionQueueQueryResponseMessage();
-               break;
-            }
-            case EmptyPacket.SESS_CREATEQUEUE:
-            {
-               packet = new SessionCreateQueueMessage();
-               break;
-            }
-            case EmptyPacket.SESS_DELETE_QUEUE:
-            {
-               packet = new SessionDeleteQueueMessage();
-               break;
-            }
-            case EmptyPacket.SESS_ADD_DESTINATION:
-            {
-               packet = new SessionAddDestinationMessage();
-               break;
-            }
-            case EmptyPacket.SESS_REMOVE_DESTINATION:
-            {
-               packet = new SessionRemoveDestinationMessage();
-               break;
-            }
-            case EmptyPacket.SESS_BINDINGQUERY:
-            {
-               packet = new SessionBindingQueryMessage();
-               break;
-            }
-            case EmptyPacket.SESS_BINDINGQUERY_RESP:
-            {
-               packet = new SessionBindingQueryResponseMessage();
-               break;
-            }
-            case EmptyPacket.SESS_BROWSER_RESET:
-            {
-               packet = new EmptyPacket(EmptyPacket.SESS_BROWSER_RESET);
-               break;
-            }
-            case EmptyPacket.SESS_BROWSER_HASNEXTMESSAGE:
-            {
-               packet = new EmptyPacket(EmptyPacket.SESS_BROWSER_HASNEXTMESSAGE);
-               break;
-            }
-            case EmptyPacket.SESS_BROWSER_HASNEXTMESSAGE_RESP:
-            {
-               packet = new SessionBrowserHasNextMessageResponseMessage();
-               break;
-            }
-            case EmptyPacket.SESS_BROWSER_NEXTMESSAGE:
-            {
-               packet = new EmptyPacket(EmptyPacket.SESS_BROWSER_NEXTMESSAGE);
-               break;
-            }
-            case EmptyPacket.SESS_XA_START:
-            {
-               packet = new SessionXAStartMessage();
-               break;
-            }
-            case EmptyPacket.SESS_XA_END:
-            {
-               packet = new SessionXAEndMessage();
-               break;
-            }
-            case EmptyPacket.SESS_XA_COMMIT:
-            {
-               packet = new SessionXACommitMessage();
-               break;
-            }
-            case EmptyPacket.SESS_XA_PREPARE:
-            {
-               packet = new SessionXAPrepareMessage();
-               break;
-            }
-            case EmptyPacket.SESS_XA_RESP:
-            {
-               packet = new SessionXAResponseMessage();
-               break;
-            }
-            case EmptyPacket.SESS_XA_ROLLBACK:
-            {
-               packet = new SessionXARollbackMessage();
-               break;
-            }
-            case EmptyPacket.SESS_XA_JOIN:
-            {
-               packet = new SessionXAJoinMessage();
-               break;
-            }
-            case EmptyPacket.SESS_XA_SUSPEND:
-            {
-               packet = new EmptyPacket(EmptyPacket.SESS_XA_SUSPEND);
-               break;
-            }
-            case EmptyPacket.SESS_XA_RESUME:
-            {             
-               packet = new SessionXAResumeMessage();
-               break;
-            }
-            case EmptyPacket.SESS_XA_FORGET:
-            {
-               packet = new SessionXAForgetMessage();
-               break;
-            }
-            case EmptyPacket.SESS_XA_INDOUBT_XIDS:
-            {
-               packet = new EmptyPacket(EmptyPacket.SESS_XA_INDOUBT_XIDS);
-               break;
-            }
-            case EmptyPacket.SESS_XA_INDOUBT_XIDS_RESP:
-            {
-               packet = new SessionXAGetInDoubtXidsResponseMessage();
-               break;
-            }
-            case EmptyPacket.SESS_XA_SET_TIMEOUT:
-            {
-               packet = new SessionXASetTimeoutMessage();
-               break;
-            }
-            case EmptyPacket.SESS_XA_SET_TIMEOUT_RESP:
-            {
-               packet = new SessionXASetTimeoutResponseMessage();
-               break;
-            }
-            case EmptyPacket.SESS_XA_GET_TIMEOUT:
-            {
-               packet = new EmptyPacket(EmptyPacket.SESS_XA_GET_TIMEOUT);
-               break;
-            }
-            case EmptyPacket.SESS_XA_GET_TIMEOUT_RESP:
-            {
-               packet = new SessionXAGetTimeoutResponseMessage();
-               break;
-            }
-            case EmptyPacket.CONS_FLOWTOKEN:
-            {
-               packet = new ConsumerFlowCreditMessage();
-               break;
-            }
-            case EmptyPacket.PROD_SEND:
-            {
-               packet = new ProducerSendMessage();
-               break;
-            }
-            case EmptyPacket.PROD_RECEIVETOKENS:
-            {
-               packet = new ProducerFlowCreditMessage();
-               break;
-            }
-            case EmptyPacket.RECEIVE_MSG:
-            {
-               packet = new ReceiveMessage();
-               break;
-            }
-            default:
-            {
-               throw new IllegalArgumentException("Invalid type: " + packetType);
-            }
-         }
-         
-         MessagingBuffer buff = new IoBufferWrapper(in.slice());
-         
-         packet.decode(buff);
-
-         out.write(packet);
-         
-         return true;
-      }
-      finally
-      {
-         in.position(in.limit());
-         
-         in.limit(limit);
-      }
-   }
-}

Added: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaProtocolCodecFilter.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaProtocolCodecFilter.java	                        (rev 0)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaProtocolCodecFilter.java	2008-06-14 08:35:15 UTC (rev 4471)
@@ -0,0 +1,94 @@
+/*
+   * JBoss, Home of Professional Open Source
+   * Copyright 2005, JBoss Inc., and individual contributors as indicated
+   * by the @authors tag. See the copyright.txt in the distribution for a
+   * full listing of individual contributors.
+   *
+   * This is free software; you can redistribute it and/or modify it
+   * under the terms of the GNU Lesser General Public License as
+   * published by the Free Software Foundation; either version 2.1 of
+   * the License, or (at your option) any later version.
+   *
+   * This software is distributed in the hope that it will be useful,
+   * but WITHOUT ANY WARRANTY; without even the implied warranty of
+   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   * Lesser General Public License for more details.
+   *
+   * You should have received a copy of the GNU Lesser General Public
+   * License along with this software; if not, write to the Free
+   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+   */
+package org.jboss.messaging.core.remoting.impl.mina;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.common.IoSession;
+import org.apache.mina.filter.codec.*;
+import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.remoting.MessagingCodec;
+import org.jboss.messaging.core.remoting.Packet;
+import org.jboss.messaging.core.remoting.impl.MessagingCodecImpl;
+import org.jboss.messaging.util.MessagingBuffer;
+
+/**
+ * A Mina ProtocolEncoder used to encode/decode messages.
+ * 
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
+ */
+public class MinaProtocolCodecFilter extends CumulativeProtocolDecoder
+        implements ProtocolEncoder, ProtocolCodecFactory
+{
+   private static final Logger log = Logger.getLogger(MessagingCodecImpl.class);
+
+   // ProtocolCodecFactory implementation
+   // -----------------------------------------------------------------------------------
+   private MessagingCodec messagingCodec = new MessagingCodecImpl();
+
+   public ProtocolDecoder getDecoder(final IoSession session)
+   {
+      return this;
+   }
+
+   public ProtocolEncoder getEncoder(final IoSession session)
+   {
+      return this;
+   }
+
+   // ProtocolEncoder implementation ------------------------------------------
+
+   public void dispose(final IoSession session) throws Exception
+   {
+   }
+
+   public void encode(final IoSession session, final Object message,
+                      final ProtocolEncoderOutput out) throws Exception
+   {
+
+      IoBuffer iobuf = IoBuffer.allocate(1024, false);
+
+      iobuf.setAutoExpand(true);
+
+      MessagingBuffer buffer = new IoBufferWrapper(iobuf);
+
+      messagingCodec.encode(buffer, message);
+
+      out.write(iobuf);
+   }
+
+   // CumulativeProtocolDecoder overrides
+   // -------------------------------------------------------------------------------------
+
+   public boolean doDecode(final IoSession session, final IoBuffer in, final ProtocolDecoderOutput out) throws Exception
+   {
+      MessagingBuffer buff = new IoBufferWrapper(in);
+
+      Packet packet = messagingCodec.decode(buff);
+      if(packet != null)
+      {
+         out.write(packet);
+      }
+      return packet != null;
+   }
+}
+

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/core/remoting/mina/MessagingBufferTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/core/remoting/mina/MessagingBufferTestBase.java	2008-06-13 20:59:02 UTC (rev 4470)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/core/remoting/mina/MessagingBufferTestBase.java	2008-06-14 08:35:15 UTC (rev 4471)
@@ -6,17 +6,10 @@
  */
 package org.jboss.messaging.tests.integration.core.remoting.mina;
 
-import static org.jboss.messaging.tests.unit.core.remoting.impl.wireformat.CodecAssert.assertEqualsByteArrays;
-import static org.jboss.messaging.tests.util.RandomUtil.randomByte;
-import static org.jboss.messaging.tests.util.RandomUtil.randomBytes;
-import static org.jboss.messaging.tests.util.RandomUtil.randomDouble;
-import static org.jboss.messaging.tests.util.RandomUtil.randomFloat;
-import static org.jboss.messaging.tests.util.RandomUtil.randomInt;
-import static org.jboss.messaging.tests.util.RandomUtil.randomLong;
-import static org.jboss.messaging.tests.util.RandomUtil.randomString;
 import junit.framework.TestCase;
-
+import static org.jboss.messaging.tests.unit.core.remoting.impl.CodecAssert.assertEqualsByteArrays;
 import org.jboss.messaging.tests.util.RandomUtil;
+import static org.jboss.messaging.tests.util.RandomUtil.*;
 import org.jboss.messaging.util.MessagingBuffer;
 import org.jboss.messaging.util.SimpleString;
 

Copied: trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/CodecAssert.java (from rev 4459, trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/wireformat/CodecAssert.java)
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/CodecAssert.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/CodecAssert.java	2008-06-14 08:35:15 UTC (rev 4471)
@@ -0,0 +1,79 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.tests.unit.core.remoting.impl;
+
+import junit.framework.Assert;
+
+import javax.transaction.xa.Xid;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ * 
+ * @version <tt>$Revision$</tt>
+ * 
+ */
+public class CodecAssert extends Assert
+{
+   // Constants -----------------------------------------------------
+
+   // Attributes ----------------------------------------------------
+
+   // Static --------------------------------------------------------
+
+   public static void assertSameXids(List<Xid> expected, List<Xid> actual)
+   {
+      assertNotNull(expected);
+      assertNotNull(actual);
+      assertEquals(expected.size(), actual.size());
+
+      for (int i = 0; i < expected.size(); i++)
+      {
+         Xid expectedXid = expected.get(i);
+         Xid actualXid = actual.get(i);
+         assertEqualsByteArrays(expectedXid.getBranchQualifier(), actualXid
+               .getBranchQualifier());
+         assertEquals(expectedXid.getFormatId(), actualXid.getFormatId());
+         assertEqualsByteArrays(expectedXid.getGlobalTransactionId(), actualXid
+               .getGlobalTransactionId());
+      }
+   }
+
+   public static void assertEqualsByteArrays(byte[] expected, byte[] actual)
+   {
+      assertEquals(expected.length, actual.length);
+      for (int i = 0; i < expected.length; i++)
+      {
+         assertEquals("byte at index " + i, expected[i], actual[i]);
+      }
+   }
+
+   public static void assertEqualsByteArrays(int length, byte[] expected, byte[] actual)
+   {
+      // we check only for the given length (the arrays might be
+      // larger)
+      assertTrue(expected.length >= length);
+      assertTrue(actual.length >= length);
+      for (int i = 0; i < length; i++)
+      {
+         assertEquals("byte at index " + i, expected[i], actual[i]);
+      }
+   }
+
+   
+   // Constructors --------------------------------------------------
+
+   // Public --------------------------------------------------------
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private -------------------------------------------------------
+
+   // Inner classes -------------------------------------------------
+}

Added: trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/MessagingCodecImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/MessagingCodecImplTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/MessagingCodecImplTest.java	2008-06-14 08:35:15 UTC (rev 4471)
@@ -0,0 +1,601 @@
+/*
+   * JBoss, Home of Professional Open Source
+   * Copyright 2005, JBoss Inc., and individual contributors as indicated
+   * by the @authors tag. See the copyright.txt in the distribution for a
+   * full listing of individual contributors.
+   *
+   * This is free software; you can redistribute it and/or modify it
+   * under the terms of the GNU Lesser General Public License as
+   * published by the Free Software Foundation; either version 2.1 of
+   * the License, or (at your option) any later version.
+   *
+   * This software is distributed in the hope that it will be useful,
+   * but WITHOUT ANY WARRANTY; without even the implied warranty of
+   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   * Lesser General Public License for more details.
+   *
+   * You should have received a copy of the GNU Lesser General Public
+   * License along with this software; if not, write to the Free
+   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+   */
+package org.jboss.messaging.tests.unit.core.remoting.impl;
+
+import org.jboss.messaging.core.exception.MessagingException;
+import org.jboss.messaging.core.remoting.MessagingCodec;
+import org.jboss.messaging.core.remoting.impl.MessagingCodecImpl;
+import org.jboss.messaging.core.remoting.impl.wireformat.*;
+import org.jboss.messaging.core.transaction.impl.XidImpl;
+import org.jboss.messaging.core.version.impl.VersionImpl;
+import org.jboss.messaging.tests.util.RandomUtil;
+import org.jboss.messaging.tests.util.UnitTestCase;
+import org.jboss.messaging.util.ByteBufferWrapper;
+import org.jboss.messaging.util.MessagingBuffer;
+import org.jboss.messaging.util.SimpleString;
+
+import javax.transaction.xa.Xid;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+
+/**
+ * @author <a href="ataylor at redhat.com">Andy Taylor</a>
+ */
+public class MessagingCodecImplTest extends UnitTestCase
+{
+   MessagingCodec codec = null;
+   private MessagingBuffer buff;
+
+   protected void setUp() throws Exception
+   {
+      super.setUp();
+      codec = new MessagingCodecImpl();
+      buff = new ByteBufferWrapper(ByteBuffer.allocateDirect(1024));
+   }
+
+   protected void tearDown() throws Exception
+   {
+      super.tearDown();
+      codec = null;
+      buff = null;
+   }
+   public void testEmptyPacket() throws Exception
+   {
+      EmptyPacket message = new EmptyPacket(EmptyPacket.NULL);
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      EmptyPacket copy = (EmptyPacket) codec.decode(buff);
+      checkHeaders(message, copy);
+   }
+
+   public void testConnectionCreateSessionPacket() throws Exception
+   {
+      ConnectionCreateSessionMessage message = new ConnectionCreateSessionMessage(true, true, true);
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      ConnectionCreateSessionMessage copy = (ConnectionCreateSessionMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.isAutoCommitAcks(), copy.isAutoCommitAcks());
+      assertEquals(message.isAutoCommitSends(), copy.isAutoCommitSends());
+      assertEquals(message.isXA(), copy.isXA());
+   }
+
+   public void testCreateConnectionRequestPacket() throws Exception
+   {
+      CreateConnectionRequest message = new CreateConnectionRequest(RandomUtil.randomInt(), RandomUtil.randomLong(), RandomUtil.randomString(), RandomUtil.randomString());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      CreateConnectionRequest copy = (CreateConnectionRequest) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getUsername(), copy.getUsername());
+      assertEquals(message.getVersion(), copy.getVersion());
+      assertEquals(message.getPassword(), copy.getPassword());
+      assertEquals(message.getRemotingSessionID(), copy.getRemotingSessionID());
+   }
+
+   public void testConsumerFlowCreditMessagePacket() throws Exception
+   {
+      ConsumerFlowCreditMessage message = new ConsumerFlowCreditMessage(RandomUtil.randomInt());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      ConsumerFlowCreditMessage copy = (ConsumerFlowCreditMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getTokens(), copy.getTokens());
+   }
+
+   public void testConnectionCreateSessionResponseMessagePacket() throws Exception
+   {
+      ConnectionCreateSessionResponseMessage message = new ConnectionCreateSessionResponseMessage(RandomUtil.randomLong());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      ConnectionCreateSessionResponseMessage copy = (ConnectionCreateSessionResponseMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getSessionID(), copy.getSessionID());
+   }
+
+   public void testCreateConnectionResponsePacket() throws Exception
+   {
+      CreateConnectionResponse message = new CreateConnectionResponse(RandomUtil.randomLong(), new VersionImpl(
+              RandomUtil.randomString(),
+              RandomUtil.randomInt(),
+              RandomUtil.randomInt(),
+              RandomUtil.randomInt(),RandomUtil.randomInt(),RandomUtil.randomString()));
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      CreateConnectionResponse copy = (CreateConnectionResponse) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getConnectionTargetID(), copy.getConnectionTargetID());
+      assertEquals(message.getServerVersion().getFullVersion(), copy.getServerVersion().getFullVersion());
+   }
+
+   public void testMessagingExceptionMessagePacket() throws Exception
+   {
+      MessagingExceptionMessage message = new MessagingExceptionMessage(new MessagingException(RandomUtil.randomInt()));
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      MessagingExceptionMessage copy = (MessagingExceptionMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getException().getCode(), copy.getException().getCode());
+   }
+
+   public void testPingPacket() throws Exception
+   {
+      Ping message = new Ping(RandomUtil.randomLong());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      Ping copy = (Ping) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getSessionID(), copy.getSessionID());
+   }
+
+   public void testPongPacket() throws Exception
+   {
+      Pong message = new Pong(RandomUtil.randomLong(), RandomUtil.randomBoolean());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      Pong copy = (Pong) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getSessionID(), copy.getSessionID());
+      assertEquals(message.isSessionFailed(), copy.isSessionFailed());
+   }
+
+   public void testProducerFlowCreditMessagePacket() throws Exception
+   {
+      ProducerFlowCreditMessage message = new ProducerFlowCreditMessage(RandomUtil.randomInt());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      ProducerFlowCreditMessage copy = (ProducerFlowCreditMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getTokens(), copy.getTokens());
+   }
+
+   public void testSessionAcknowledgeMessagePacket() throws Exception
+   {
+      SessionAcknowledgeMessage message = new SessionAcknowledgeMessage(RandomUtil.randomLong(), RandomUtil.randomBoolean());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionAcknowledgeMessage copy = (SessionAcknowledgeMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getDeliveryID(), copy.getDeliveryID());
+      assertEquals(message.isAllUpTo(), copy.isAllUpTo());
+   }
+
+   public void testSessionAddDestinationMessagePacket() throws Exception
+   {
+      SessionAddDestinationMessage message = new SessionAddDestinationMessage(RandomUtil.randomSimpleString(), RandomUtil.randomBoolean());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionAddDestinationMessage copy = (SessionAddDestinationMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getAddress(), copy.getAddress());
+      assertEquals(message.isTemporary(), copy.isTemporary());
+   }
+
+   public void testSessionBindingQueryMessagePacket() throws Exception
+   {
+      SessionBindingQueryMessage message = new SessionBindingQueryMessage(RandomUtil.randomSimpleString());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionBindingQueryMessage copy = (SessionBindingQueryMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getAddress(), copy.getAddress());
+   }
+
+   public void testSessionBindingQueryResponseMessagePacket() throws Exception
+   {
+
+      ArrayList<SimpleString> list = new ArrayList<SimpleString>();
+      list.add(RandomUtil.randomSimpleString());
+      SessionBindingQueryResponseMessage message = new SessionBindingQueryResponseMessage(RandomUtil.randomBoolean(), list);
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionBindingQueryResponseMessage copy = (SessionBindingQueryResponseMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.isExists(), copy.isExists());
+      assertEquals(message.getQueueNames().get(0), copy.getQueueNames().get(0));
+      assertEquals(1, message.getQueueNames().size());
+
+   }
+
+    public void testSessionBrowserHasNextMessageResponseMessagePacket() throws Exception
+   {
+      SessionBrowserHasNextMessageResponseMessage message = new SessionBrowserHasNextMessageResponseMessage(RandomUtil.randomBoolean());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionBrowserHasNextMessageResponseMessage copy = (SessionBrowserHasNextMessageResponseMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.hasNext(), copy.hasNext());
+
+   }
+
+    public void testSessionCancelMessagePacket() throws Exception
+   {
+      SessionCancelMessage message = new SessionCancelMessage(RandomUtil.randomLong(), RandomUtil.randomBoolean());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionCancelMessage copy = (SessionCancelMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getDeliveryID(), copy.getDeliveryID());
+      assertEquals(message.isExpired(), copy.isExpired());
+
+   }
+
+    public void testSessionCreateBrowserMessagePacket() throws Exception
+   {
+      SessionCreateBrowserMessage message = new SessionCreateBrowserMessage(RandomUtil.randomSimpleString(), RandomUtil.randomSimpleString());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionCreateBrowserMessage copy = (SessionCreateBrowserMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getFilterString(), copy.getFilterString());
+      assertEquals(message.getQueueName(), copy.getQueueName());
+
+   }
+
+   public void testSessionCreateBrowserResponseMessagePacket() throws Exception
+   {
+      SessionCreateBrowserResponseMessage message = new SessionCreateBrowserResponseMessage(RandomUtil.randomLong());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionCreateBrowserResponseMessage copy = (SessionCreateBrowserResponseMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getBrowserTargetID(), copy.getBrowserTargetID());
+
+   }
+
+    public void testSessionCreateConsumerMessagePacket() throws Exception
+   {
+      SessionCreateConsumerMessage message = new SessionCreateConsumerMessage(RandomUtil.randomLong(),
+              RandomUtil.randomSimpleString(), RandomUtil.randomSimpleString(), RandomUtil.randomBoolean(), RandomUtil.randomBoolean(),
+              RandomUtil.randomInt(), RandomUtil.randomInt());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionCreateConsumerMessage copy = (SessionCreateConsumerMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getClientTargetID(), copy.getClientTargetID());
+      assertEquals(message.getFilterString(), copy.getFilterString());
+      assertEquals(message.getMaxRate(), copy.getMaxRate());
+      assertEquals(message.getQueueName(), copy.getQueueName());
+      assertEquals(message.getWindowSize(), copy.getWindowSize());
+      assertEquals(message.isAutoDeleteQueue(), copy.isAutoDeleteQueue());
+      assertEquals(message.isNoLocal(), copy.isNoLocal());
+
+   }
+
+   public void testSessionCreateConsumerResponseMessagePacket() throws Exception
+   {
+      SessionCreateConsumerResponseMessage message = new SessionCreateConsumerResponseMessage(RandomUtil.randomLong(), RandomUtil.randomInt());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionCreateConsumerResponseMessage copy = (SessionCreateConsumerResponseMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getConsumerTargetID(), copy.getConsumerTargetID());
+      assertEquals(message.getWindowSize(), copy.getWindowSize());
+
+   }
+
+   public void testSessionCreateProducerMessagePacket() throws Exception
+   {
+      SessionCreateProducerMessage message = new SessionCreateProducerMessage(RandomUtil.randomLong(),
+              RandomUtil.randomSimpleString(), RandomUtil.randomInt(), RandomUtil.randomInt());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionCreateProducerMessage copy = (SessionCreateProducerMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getAddress(), copy.getAddress());
+      assertEquals(message.getWindowSize(), copy.getWindowSize());
+      assertEquals(message.getClientTargetID(), copy.getClientTargetID());
+      assertEquals(message.getMaxRate(), copy.getMaxRate());
+
+   }
+
+   public void testSessionCreateProducerResponseMessagePacket() throws Exception
+   {
+      SessionCreateProducerResponseMessage message = new SessionCreateProducerResponseMessage(RandomUtil.randomLong(), RandomUtil.randomInt(),
+              RandomUtil.randomInt());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionCreateProducerResponseMessage copy = (SessionCreateProducerResponseMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getInitialCredits(), copy.getInitialCredits());
+      assertEquals(message.getProducerTargetID(), copy.getProducerTargetID());
+      assertEquals(message.getMaxRate(), copy.getMaxRate());
+
+   }
+
+   public void testSessionCreateQueueMessagePacket() throws Exception
+   {
+      SessionCreateQueueMessage message = new SessionCreateQueueMessage(RandomUtil.randomSimpleString(),
+              RandomUtil.randomSimpleString(),RandomUtil.randomSimpleString(), RandomUtil.randomBoolean(),RandomUtil.randomBoolean());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionCreateQueueMessage copy = (SessionCreateQueueMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getAddress(), copy.getAddress());
+      assertEquals(message.getFilterString(), copy.getFilterString());
+      assertEquals(message.getQueueName(), copy.getQueueName());
+      assertEquals(message.isDurable(), copy.isDurable());
+      assertEquals(message.isTemporary(), copy.isTemporary());
+   }
+
+   public void testSessionDeleteQueueMessagePacket() throws Exception
+   {
+      SessionDeleteQueueMessage message = new SessionDeleteQueueMessage(RandomUtil.randomSimpleString());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionDeleteQueueMessage copy = (SessionDeleteQueueMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getQueueName(), copy.getQueueName());
+   }
+
+   public void testSessionQueueQueryMessagePacket() throws Exception
+   {
+      SessionQueueQueryMessage message = new SessionQueueQueryMessage(RandomUtil.randomSimpleString());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionQueueQueryMessage copy = (SessionQueueQueryMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getQueueName(), copy.getQueueName());
+   }
+
+   public void testSessionQueueQueryResponseMessagePacket() throws Exception
+   {
+      SessionQueueQueryResponseMessage message = new SessionQueueQueryResponseMessage(RandomUtil.randomBoolean(),
+              RandomUtil.randomBoolean(), RandomUtil.randomInt(), RandomUtil.randomInt(), RandomUtil.randomInt(),
+              RandomUtil.randomSimpleString(),RandomUtil.randomSimpleString());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionQueueQueryResponseMessage copy = (SessionQueueQueryResponseMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getAddress(), copy.getAddress());
+      assertEquals(message.getConsumerCount(), copy.getConsumerCount());
+      assertEquals(message.getFilterString(), copy.getFilterString());
+      assertEquals(message.getMaxSize(), copy.getMaxSize());
+      assertEquals(message.getMessageCount(), copy.getMessageCount());
+      assertEquals(message.isDurable(), copy.isDurable());
+      assertEquals(message.isExists(), copy.isExists());
+      assertEquals(message.isTemporary(), copy.isTemporary());
+   }
+
+   public void testSessionRemoveDestinationMessagePacket() throws Exception
+   {
+      SessionRemoveDestinationMessage message = new SessionRemoveDestinationMessage(RandomUtil.randomSimpleString(), RandomUtil.randomBoolean());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionRemoveDestinationMessage copy = (SessionRemoveDestinationMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getAddress(), copy.getAddress());
+      assertEquals(message.isTemporary(), copy.isTemporary());
+   }
+
+   public void testSessionXACommitMessagePacket() throws Exception
+   {
+      SessionXACommitMessage message = new SessionXACommitMessage(new XidImpl(RandomUtil.randomBytes(), RandomUtil.randomInt(), RandomUtil.randomBytes()),
+              RandomUtil.randomBoolean());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionXACommitMessage copy = (SessionXACommitMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.isOnePhase(), copy.isOnePhase());
+      assertByteArraysEquivalent(message.getXid().getBranchQualifier(), copy.getXid().getBranchQualifier());
+      assertEquals(message.getXid().getFormatId(), copy.getXid().getFormatId());
+      assertByteArraysEquivalent(message.getXid().getGlobalTransactionId(), copy.getXid().getGlobalTransactionId());
+   }
+
+   public void testSessionXAEndMessagePacket() throws Exception
+   {
+      SessionXAEndMessage message = new SessionXAEndMessage(new XidImpl(RandomUtil.randomBytes(), RandomUtil.randomInt(), RandomUtil.randomBytes()),
+              RandomUtil.randomBoolean());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionXAEndMessage copy = (SessionXAEndMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.isFailed(), copy.isFailed());
+      assertByteArraysEquivalent(message.getXid().getBranchQualifier(), copy.getXid().getBranchQualifier());
+      assertEquals(message.getXid().getFormatId(), copy.getXid().getFormatId());
+      assertByteArraysEquivalent(message.getXid().getGlobalTransactionId(), copy.getXid().getGlobalTransactionId());
+   }
+
+   public void testSessionXAForgetMessagePacket() throws Exception
+   {
+      SessionXAForgetMessage message = new SessionXAForgetMessage(new XidImpl(RandomUtil.randomBytes(), RandomUtil.randomInt(), RandomUtil.randomBytes()));
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionXAForgetMessage copy = (SessionXAForgetMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertByteArraysEquivalent(message.getXid().getBranchQualifier(), copy.getXid().getBranchQualifier());
+      assertEquals(message.getXid().getFormatId(), copy.getXid().getFormatId());
+      assertByteArraysEquivalent(message.getXid().getGlobalTransactionId(), copy.getXid().getGlobalTransactionId());
+   }
+
+   public void testSessionXAGetInDoubtXidsResponseMessagePacket() throws Exception
+   {
+      XidImpl xids = new XidImpl(RandomUtil.randomBytes(), RandomUtil.randomInt(), RandomUtil.randomBytes());
+      ArrayList<Xid> list = new ArrayList<Xid>();
+      SessionXAGetInDoubtXidsResponseMessage message = new SessionXAGetInDoubtXidsResponseMessage(list);
+      list.add(xids);
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionXAGetInDoubtXidsResponseMessage copy = (SessionXAGetInDoubtXidsResponseMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertByteArraysEquivalent(message.getXids().get(0).getBranchQualifier(), copy.getXids().get(0).getBranchQualifier());
+      assertEquals(message.getXids().get(0).getFormatId(), copy.getXids().get(0).getFormatId());
+      assertByteArraysEquivalent(message.getXids().get(0).getGlobalTransactionId(), copy.getXids().get(0).getGlobalTransactionId());
+      assertEquals(1, message.getXids().size());
+   }
+
+   public void testSessionXAGetTimeoutResponseMessagePacket() throws Exception
+     {
+        SessionXAGetTimeoutResponseMessage message = new SessionXAGetTimeoutResponseMessage(RandomUtil.randomInt());
+        setHeaders(message);
+        codec.encode(buff, message);
+        buff.rewind();
+        SessionXAGetTimeoutResponseMessage copy = (SessionXAGetTimeoutResponseMessage) codec.decode(buff);
+        checkHeaders(message, copy);
+        assertEquals(message.getTimeoutSeconds(), copy.getTimeoutSeconds());
+     }
+
+   public void testSessionXAJoinMessagePacket() throws Exception
+   {
+      SessionXAJoinMessage message = new SessionXAJoinMessage(new XidImpl(RandomUtil.randomBytes(), RandomUtil.randomInt(), RandomUtil.randomBytes()));
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionXAJoinMessage copy = (SessionXAJoinMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertByteArraysEquivalent(message.getXid().getBranchQualifier(), copy.getXid().getBranchQualifier());
+      assertEquals(message.getXid().getFormatId(), copy.getXid().getFormatId());
+      assertByteArraysEquivalent(message.getXid().getGlobalTransactionId(), copy.getXid().getGlobalTransactionId());
+   }
+
+   public void testSessionXAPrepareMessagePacket() throws Exception
+   {
+      SessionXAPrepareMessage message = new SessionXAPrepareMessage(new XidImpl(RandomUtil.randomBytes(), RandomUtil.randomInt(), RandomUtil.randomBytes()));
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionXAPrepareMessage copy = (SessionXAPrepareMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertByteArraysEquivalent(message.getXid().getBranchQualifier(), copy.getXid().getBranchQualifier());
+      assertEquals(message.getXid().getFormatId(), copy.getXid().getFormatId());
+      assertByteArraysEquivalent(message.getXid().getGlobalTransactionId(), copy.getXid().getGlobalTransactionId());
+   }
+
+   public void testSessionXAResponseMessagePacket() throws Exception
+   {
+      SessionXAResponseMessage message = new SessionXAResponseMessage(RandomUtil.randomBoolean(), RandomUtil.randomInt(), RandomUtil.randomString());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionXAResponseMessage copy = (SessionXAResponseMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getMessage(), copy.getMessage());
+      assertEquals(message.getResponseCode(), copy.getResponseCode());
+      assertEquals(message.isError(), copy.isError());
+   }
+
+   public void testSessionXAResumeMessagePacket() throws Exception
+   {
+      SessionXAResumeMessage message = new SessionXAResumeMessage(new XidImpl(RandomUtil.randomBytes(), RandomUtil.randomInt(), RandomUtil.randomBytes()));
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionXAResumeMessage copy = (SessionXAResumeMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertByteArraysEquivalent(message.getXid().getBranchQualifier(), copy.getXid().getBranchQualifier());
+      assertEquals(message.getXid().getFormatId(), copy.getXid().getFormatId());
+      assertByteArraysEquivalent(message.getXid().getGlobalTransactionId(), copy.getXid().getGlobalTransactionId());
+   }
+
+   public void testSessionXARollbackMessagePacket() throws Exception
+   {
+      SessionXARollbackMessage message = new SessionXARollbackMessage(new XidImpl(RandomUtil.randomBytes(), RandomUtil.randomInt(), RandomUtil.randomBytes()));
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionXARollbackMessage copy = (SessionXARollbackMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertByteArraysEquivalent(message.getXid().getBranchQualifier(), copy.getXid().getBranchQualifier());
+      assertEquals(message.getXid().getFormatId(), copy.getXid().getFormatId());
+      assertByteArraysEquivalent(message.getXid().getGlobalTransactionId(), copy.getXid().getGlobalTransactionId());
+   }
+
+   public void testSessionXASetTimeoutMessagePacket() throws Exception
+   {
+      SessionXASetTimeoutMessage message = new SessionXASetTimeoutMessage(RandomUtil.randomInt());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionXASetTimeoutMessage copy = (SessionXASetTimeoutMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.getTimeoutSeconds(), copy.getTimeoutSeconds());
+   }
+
+   public void testSessionXASetTimeoutResponseMessagePacket() throws Exception
+   {
+      SessionXASetTimeoutResponseMessage message = new SessionXASetTimeoutResponseMessage(RandomUtil.randomBoolean());
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionXASetTimeoutResponseMessage copy = (SessionXASetTimeoutResponseMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertEquals(message.isOK(), copy.isOK());
+   }
+
+   public void testSessionXAStartMessagePacket() throws Exception
+   {
+      SessionXAStartMessage message = new SessionXAStartMessage(new XidImpl(RandomUtil.randomBytes(), RandomUtil.randomInt(), RandomUtil.randomBytes()));
+      setHeaders(message);
+      codec.encode(buff, message);
+      buff.rewind();
+      SessionXAStartMessage copy = (SessionXAStartMessage) codec.decode(buff);
+      checkHeaders(message, copy);
+      assertByteArraysEquivalent(message.getXid().getBranchQualifier(), copy.getXid().getBranchQualifier());
+      assertEquals(message.getXid().getFormatId(), copy.getXid().getFormatId());
+      assertByteArraysEquivalent(message.getXid().getGlobalTransactionId(), copy.getXid().getGlobalTransactionId());
+   }
+
+   private void setHeaders(EmptyPacket packet)
+   {
+      packet.setExecutorID(RandomUtil.randomLong());
+      packet.setResponseTargetID(RandomUtil.randomLong());
+      packet.setTargetID(RandomUtil.randomLong());
+   }
+
+   private void checkHeaders(EmptyPacket emptyPacket, EmptyPacket emptyPacket2)
+   {
+      assertEquals(emptyPacket.getExecutorID(), emptyPacket2.getExecutorID());
+      assertEquals(emptyPacket.getResponseTargetID(), emptyPacket2.getResponseTargetID());
+      assertEquals(emptyPacket.getTargetID(), emptyPacket2.getTargetID());
+   }
+}

Copied: trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaProtocolCodecFilterTest.java (from rev 4459, trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/wireformat/PacketTypeTest.java)
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaProtocolCodecFilterTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaProtocolCodecFilterTest.java	2008-06-14 08:35:15 UTC (rev 4471)
@@ -0,0 +1,1042 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.tests.unit.core.remoting.impl.mina;
+
+import org.apache.mina.common.IoBuffer;
+import org.apache.mina.filter.codec.ProtocolDecoderOutput;
+import org.jboss.messaging.core.exception.MessagingException;
+import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.remoting.Packet;
+import org.jboss.messaging.core.remoting.impl.mina.IoBufferWrapper;
+import org.jboss.messaging.core.remoting.impl.mina.MinaProtocolCodecFilter;
+import org.jboss.messaging.core.remoting.impl.wireformat.*;
+import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.*;
+import org.jboss.messaging.core.version.impl.VersionImpl;
+import org.jboss.messaging.tests.unit.core.remoting.impl.CodecAssert;
+import static org.jboss.messaging.tests.unit.core.remoting.impl.CodecAssert.assertSameXids;
+import static org.jboss.messaging.tests.util.RandomUtil.*;
+import org.jboss.messaging.tests.util.UnitTestCase;
+import static org.jboss.messaging.util.DataConstants.SIZE_BYTE;
+import static org.jboss.messaging.util.DataConstants.SIZE_LONG;
+import org.jboss.messaging.util.MessagingBuffer;
+import org.jboss.messaging.util.SimpleString;
+
+import javax.transaction.xa.Xid;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * 
+ * FIXME - tidy up tests so test names match the actual packets
+ * 
+ * @version <tt>$Revision$</tt>
+ */
+public class MinaProtocolCodecFilterTest extends UnitTestCase
+{
+
+   // Constants -----------------------------------------------------
+
+   private static final Logger log = Logger.getLogger(MinaProtocolCodecFilterTest.class);
+
+   // Attributes ----------------------------------------------------
+
+   // Static --------------------------------------------------------
+
+   private static MessagingBuffer encode(int length, Object... args)
+         throws Exception
+   {
+      IoBufferWrapper buffer = new IoBufferWrapper(length);
+      for (Object arg : args)
+      {
+         if (arg instanceof Byte)
+            buffer.putByte(((Byte) arg).byteValue());
+         else if (arg instanceof Boolean)
+         {
+            Boolean bool = (Boolean) arg;
+            buffer.putBoolean(bool);
+         } else if (arg instanceof Integer)
+            buffer.putInt(((Integer) arg).intValue());
+         else if (arg instanceof Long)
+            buffer.putLong(((Long) arg).longValue());
+         else if (arg instanceof Float)
+            buffer.putFloat(((Float) arg).floatValue());
+         else if (arg instanceof String)
+            buffer.putNullableString((String) arg);
+         else if (arg instanceof SimpleString)
+            buffer.putSimpleString((SimpleString) arg);
+         else if (arg instanceof NullableStringHolder)
+            buffer.putNullableSimpleString(((NullableStringHolder) arg).str);
+         else if (arg == null)
+            buffer.putNullableString(null);
+         else if (arg instanceof byte[])
+         {
+            byte[] b = (byte[]) arg;
+            buffer.putInt(b.length);
+            buffer.putBytes(b);
+         } else if (arg instanceof long[])
+         {
+            long[] longs = (long[]) arg;
+            for (long l : longs)
+            {
+               buffer.putLong(l);
+            }
+         } else if (arg instanceof List)
+         {
+            List argsInList = (List) arg;
+            buffer.putInt(argsInList.size());
+            for (Object argInList : argsInList)
+            {
+               if (argInList instanceof SimpleString)
+                  buffer.putSimpleString((SimpleString) argInList);
+               else if (argInList instanceof Xid)
+                  XidCodecSupport.encodeXid((Xid) argInList, buffer);
+               else
+                  fail("no encoding defined for " + arg + " in List");
+            }
+         } else if (arg instanceof Xid)
+         {
+            Xid xid = (Xid) arg;
+            XidCodecSupport.encodeXid(xid, buffer);
+         } else if (arg instanceof MessagingException)
+         {
+            MessagingException exception = (MessagingException) arg;
+            buffer.putInt(exception.getCode());
+            buffer.putNullableString(exception.getMessage());
+         } else
+         {
+            fail("no encoding defined for " + arg);
+         }
+      }
+      buffer.flip();
+      return buffer;
+   }
+
+   private static void checkHeader(final MessagingBuffer buffer,
+         final Packet packet) throws Exception
+   {
+      assertEquals(buffer.getByte(), packet.getType());
+
+      long responseTargetID = buffer.getLong();
+      long targetID = buffer.getLong();
+      long executorID = buffer.getLong();
+
+      assertEquals(packet.getResponseTargetID(), responseTargetID);
+      assertEquals(packet.getTargetID(), targetID);
+      assertEquals(packet.getExecutorID(), executorID);
+   }
+
+   private static void checkBody(MessagingBuffer buffer, int bodyLength,
+         Object... bodyObjects) throws Exception
+   {
+      byte[] actualBody = new byte[bodyLength];
+      buffer.getBytes(actualBody);
+      MessagingBuffer expectedBody = encode(actualBody.length, bodyObjects);
+      CodecAssert.assertEqualsByteArrays(bodyLength, expectedBody.array(), actualBody);
+      // check the buffer has been wholly read
+      assertEquals(0, buffer.remaining());
+   }
+
+   private static Packet encodeAndCheckBytesAndDecode(Packet packet,
+         Object... bodyObjects) throws Exception
+   {
+      MessagingBuffer buffer = encode(packet);
+      int packetLength = buffer.getInt();
+      checkHeader(buffer, packet);
+      int bodyLength = packetLength - (SIZE_BYTE + 3 * SIZE_LONG);
+      checkBody(buffer, bodyLength, bodyObjects);
+      buffer.rewind();
+      
+      SimpleProtocolDecoderOutput out = new SimpleProtocolDecoderOutput();
+      MinaProtocolCodecFilter codec = new MinaProtocolCodecFilter();
+      codec.doDecode(null, IoBuffer.wrap(buffer.array()), out);
+      Object message = out.getMessage();
+      assertTrue(message instanceof Packet);
+
+      log.info("encoded and decoded " + packet);
+
+      return (Packet) message;
+   }
+
+   private static MessagingBuffer encode(final Packet packet) throws Exception
+   {
+      MessagingBuffer buffer = new IoBufferWrapper(512);
+      packet.encode(buffer);
+
+      assertNotNull(buffer);
+
+      return buffer;
+   }
+
+   // Constructors --------------------------------------------------
+
+   // Public --------------------------------------------------------
+
+   public void testNullPacket() throws Exception
+   {
+      Packet packet = new EmptyPacket(NULL);
+      packet.setResponseTargetID(randomLong());
+      packet.setTargetID(randomLong());
+      packet.setExecutorID(randomLong());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(packet);
+
+      assertTrue(decodedPacket instanceof EmptyPacket);
+      assertEquals(NULL, decodedPacket.getType());
+      assertEquals(packet.getResponseTargetID(), decodedPacket
+            .getResponseTargetID());
+      assertEquals(packet.getTargetID(), decodedPacket.getTargetID());
+      assertEquals(packet.getExecutorID(), decodedPacket.getExecutorID());
+   }
+
+   public void testPing() throws Exception
+   {
+      Ping ping = new Ping(randomLong());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(ping, ping
+            .getSessionID());
+
+      assertTrue(decodedPacket instanceof Ping);
+      Ping decodedPing = (Ping) decodedPacket;
+      assertEquals(PING, decodedPing.getType());
+      assertEquals(ping.getResponseTargetID(), decodedPacket
+            .getResponseTargetID());
+      assertEquals(ping.getTargetID(), decodedPacket.getTargetID());
+      assertEquals(ping.getExecutorID(), decodedPacket.getExecutorID());
+   }
+
+   public void testPong() throws Exception
+   {
+      Pong pong = new Pong(randomLong(), true);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(pong, pong
+            .getSessionID(), pong.isSessionFailed());
+
+      assertTrue(decodedPacket instanceof Pong);
+      Pong decodedPong = (Pong) decodedPacket;
+      assertEquals(PONG, decodedPong.getType());
+      assertEquals(pong.getSessionID(), decodedPong.getSessionID());
+      assertEquals(pong.isSessionFailed(), decodedPong.isSessionFailed());
+   }
+
+   public void testMessagingExceptionMessage() throws Exception
+   {
+      MessagingExceptionMessage message = new MessagingExceptionMessage(new MessagingException(MessagingException.ILLEGAL_STATE));
+      
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message.getException());
+      
+      assertTrue(decodedPacket instanceof MessagingExceptionMessage);
+      MessagingExceptionMessage decodedMessage = (MessagingExceptionMessage) decodedPacket;
+      assertEquals(EXCEPTION, decodedMessage.getType());
+      assertEquals(message.getException().getCode(), decodedMessage.getException().getCode());
+   }
+   
+   public void testCreateConnectionRequest() throws Exception
+   {
+      int version = randomInt();
+      long remotingSessionID = randomLong();
+      String username = null;
+      String password = null;
+      CreateConnectionRequest request = new CreateConnectionRequest(version,
+            remotingSessionID, username, password);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(request, version,
+            remotingSessionID, username, password);
+
+      assertTrue(decodedPacket instanceof CreateConnectionRequest);
+      CreateConnectionRequest decodedRequest = (CreateConnectionRequest) decodedPacket;
+
+      assertEquals(CREATECONNECTION, decodedPacket.getType());
+      assertEquals(request.getVersion(), decodedRequest.getVersion());
+      assertEquals(request.getRemotingSessionID(), decodedRequest
+            .getRemotingSessionID());
+      assertEquals(request.getUsername(), decodedRequest.getUsername());
+      assertEquals(request.getPassword(), decodedRequest.getPassword());
+   }
+
+   public void testCreateConnectionResponse() throws Exception
+   {
+      CreateConnectionResponse response = new CreateConnectionResponse(
+            randomLong(), new VersionImpl("test", 1, 2, 3, 4, "xxx"));
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(response, response
+            .getConnectionTargetID(), response.getServerVersion()
+            .getVersionName(), response.getServerVersion().getMajorVersion(),
+            response.getServerVersion().getMinorVersion(), response
+                  .getServerVersion().getMicroVersion(), response
+                  .getServerVersion().getIncrementingVersion(), response
+                  .getServerVersion().getVersionSuffix());
+
+      assertTrue(decodedPacket instanceof CreateConnectionResponse);
+      CreateConnectionResponse decodedResponse = (CreateConnectionResponse) decodedPacket;
+      assertEquals(CREATECONNECTION_RESP, decodedResponse.getType());
+      assertEquals(response.getConnectionTargetID(), decodedResponse
+            .getConnectionTargetID());
+      assertEquals(response.getServerVersion().getFullVersion(),
+            decodedResponse.getServerVersion().getFullVersion());
+   }
+
+   public void testConnectionCreateSessionMessage() throws Exception
+   {
+      ConnectionCreateSessionMessage request = new ConnectionCreateSessionMessage(
+            randomBoolean(), randomBoolean(), randomBoolean());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(request, request
+            .isXA(), request.isAutoCommitSends(), request.isAutoCommitAcks());
+
+      assertTrue(decodedPacket instanceof ConnectionCreateSessionMessage);
+      ConnectionCreateSessionMessage decodedRequest = (ConnectionCreateSessionMessage) decodedPacket;
+      assertEquals(CONN_CREATESESSION, decodedRequest.getType());
+      assertEquals(request.isXA(), decodedRequest.isXA());
+      assertEquals(request.isAutoCommitSends(), decodedRequest
+            .isAutoCommitSends());
+      assertEquals(request.isAutoCommitAcks(), decodedRequest
+            .isAutoCommitAcks());
+   }
+
+   public void testConnectionCreateSessionResponseMessage() throws Exception
+   {
+      ConnectionCreateSessionResponseMessage response = new ConnectionCreateSessionResponseMessage(
+            randomLong());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(response, response
+            .getSessionID());
+
+      assertTrue(decodedPacket instanceof ConnectionCreateSessionResponseMessage);
+      ConnectionCreateSessionResponseMessage decodedResponse = (ConnectionCreateSessionResponseMessage) decodedPacket;
+      assertEquals(CONN_CREATESESSION_RESP, decodedResponse.getType());
+      assertEquals(response.getSessionID(), decodedResponse.getSessionID());
+   }
+
+   /*
+    * public void testProducerSendMessage() throws Exception { Message msg = new
+    * MessageImpl((byte)1, false, 1212212L, 761276712L, (byte)1);
+    * msg.setDestination(new SimpleString("blah")); ProducerSendMessage packet =
+    * new ProducerSendMessage(msg); MessagingBuffer buff =
+    * packet.getMessage().encode();
+    * 
+    * Message msg2 = new MessageImpl(); msg2.decode(buff);
+    * 
+    * 
+    * byte[] messageBytes = buff.array(); byte[] data = new byte[buff.limit()];
+    * System.arraycopy(messageBytes, 0, data, 0, buff.limit());
+    * AbstractPacketCodec codec = new ProducerSendMessageCodec();
+    * 
+    * Packet decodedPacket = encodeAndCheckBytesAndDecode(packet, data);
+    * 
+    * assertTrue(decodedPacket instanceof ProducerSendMessage);
+    * ProducerSendMessage decodedMessage = (ProducerSendMessage) decodedPacket;
+    * assertEquals(PacketType.PROD_SEND, decodedPacket.getType());
+    * assertEquals(packet.getMessage().getMessageID(), decodedMessage
+    * .getMessage().getMessageID()); }
+    */
+
+   public void testSessionCreateConsumerMessage() throws Exception
+   {
+      SimpleString destination = new SimpleString(
+            "queue.SessionCreateConsumerMessage");
+      SessionCreateConsumerMessage request = new SessionCreateConsumerMessage(
+            randomLong(), destination, new SimpleString("color = 'red'"),
+            false, false, randomInt(), randomInt());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(request, request
+            .getClientTargetID(), request.getQueueName(),
+            new NullableStringHolder(request.getFilterString()), request
+                  .isNoLocal(), request.isAutoDeleteQueue(), request
+                  .getWindowSize(), request.getMaxRate());
+
+      assertTrue(decodedPacket instanceof SessionCreateConsumerMessage);
+      SessionCreateConsumerMessage decodedRequest = (SessionCreateConsumerMessage) decodedPacket;
+      assertEquals(SESS_CREATECONSUMER, decodedRequest.getType());
+      assertEquals(request.getClientTargetID(), decodedRequest
+            .getClientTargetID());
+      assertEquals(request.getQueueName(), decodedRequest.getQueueName());
+      assertEquals(request.getFilterString(), decodedRequest.getFilterString());
+      assertEquals(request.isNoLocal(), decodedRequest.isNoLocal());
+      assertEquals(request.isAutoDeleteQueue(), decodedRequest
+            .isAutoDeleteQueue());
+      assertEquals(request.getWindowSize(), decodedRequest.getWindowSize());
+      assertEquals(request.getMaxRate(), decodedRequest.getMaxRate());
+   }
+
+   public void testSessionCreateConsumerResponseMessage() throws Exception
+   {
+      SessionCreateConsumerResponseMessage response = new SessionCreateConsumerResponseMessage(
+            randomLong(), randomInt());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(response, response
+            .getConsumerTargetID(), response.getWindowSize());
+
+      assertTrue(decodedPacket instanceof SessionCreateConsumerResponseMessage);
+      SessionCreateConsumerResponseMessage decodedResponse = (SessionCreateConsumerResponseMessage) decodedPacket;
+      assertEquals(SESS_CREATECONSUMER_RESP, decodedResponse.getType());
+
+      assertEquals(response.getConsumerTargetID(), decodedResponse
+            .getConsumerTargetID());
+      assertEquals(response.getWindowSize(), decodedResponse.getWindowSize());
+   }
+
+   public void testSessionCreateProducerMessage() throws Exception
+   {
+      SimpleString destination = new SimpleString(
+            "queue.testSessionCreateProducerMessage");
+      int windowSize = randomInt();
+      int maxRate = randomInt();
+      SessionCreateProducerMessage request = new SessionCreateProducerMessage(
+            randomLong(), destination, windowSize, maxRate);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(request, request
+            .getClientTargetID(),
+            new NullableStringHolder(request.getAddress()), request
+                  .getWindowSize(), request.getMaxRate());
+
+      assertTrue(decodedPacket instanceof SessionCreateProducerMessage);
+      SessionCreateProducerMessage decodedRequest = (SessionCreateProducerMessage) decodedPacket;
+      assertEquals(SESS_CREATEPRODUCER, decodedRequest.getType());
+      assertEquals(request.getClientTargetID(), decodedRequest
+            .getClientTargetID());
+      assertEquals(request.getAddress(), decodedRequest.getAddress());
+      assertEquals(request.getWindowSize(), decodedRequest.getWindowSize());
+      assertEquals(request.getMaxRate(), decodedRequest.getMaxRate());
+   }
+
+   public void testSessionCreateProducerResponseMessage() throws Exception
+   {
+      SessionCreateProducerResponseMessage response = new SessionCreateProducerResponseMessage(
+            randomLong(), randomInt(), randomInt());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(response, response
+            .getProducerTargetID(), response.getInitialCredits(), response
+            .getMaxRate());
+
+      assertTrue(decodedPacket instanceof SessionCreateProducerResponseMessage);
+      SessionCreateProducerResponseMessage decodedResponse = (SessionCreateProducerResponseMessage) decodedPacket;
+      assertEquals(SESS_CREATEPRODUCER_RESP, decodedResponse.getType());
+      assertEquals(response.getProducerTargetID(), decodedResponse
+            .getProducerTargetID());
+      assertEquals(response.getInitialCredits(), decodedResponse.getInitialCredits());
+      assertEquals(response.getMaxRate(), decodedResponse.getMaxRate());
+   }
+
+   public void testStartConnectionMessage() throws Exception
+   {
+      Packet packet = new EmptyPacket(CONN_START);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(packet);
+
+      assertEquals(CONN_START, decodedPacket.getType());
+   }
+
+   public void testStopConnectionMessage() throws Exception
+   {
+      Packet packet = new EmptyPacket(CONN_STOP);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(packet);
+
+      assertEquals(CONN_STOP, decodedPacket.getType());
+   }
+
+   public void testConsumerFlowCreditMessage() throws Exception
+   {
+      ConsumerFlowCreditMessage message = new ConsumerFlowCreditMessage(
+            randomInt());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getTokens());
+
+      assertTrue(decodedPacket instanceof ConsumerFlowCreditMessage);
+      ConsumerFlowCreditMessage decodedMessage = (ConsumerFlowCreditMessage) decodedPacket;
+      assertEquals(CONS_FLOWTOKEN, decodedMessage.getType());
+      assertEquals(message.getTokens(), decodedMessage.getTokens());
+   }
+
+   public void testProducerReceiveTokensMessage() throws Exception
+   {
+      ProducerFlowCreditMessage message = new ProducerFlowCreditMessage(
+            randomInt());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getTokens());
+
+      assertTrue(decodedPacket instanceof ProducerFlowCreditMessage);
+      ProducerFlowCreditMessage decodedMessage = (ProducerFlowCreditMessage) decodedPacket;
+      assertEquals(PROD_RECEIVETOKENS, decodedMessage.getType());
+      assertEquals(message.getTokens(), decodedMessage.getTokens());
+   }
+
+   /*
+    * public void testReceiveMessage() throws Exception { Message msg = new
+    * MessageImpl(); ReceiveMessage message = new ReceiveMessage(msg);
+    * AbstractPacketCodec codec = new ReceiveMessageCodec();
+    * 
+    * byte[] messageBytes = message.getMessage().encode().array();
+    * 
+    * Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
+    * messageBytes);
+    * 
+    * assertTrue(decodedPacket instanceof ReceiveMessage); ReceiveMessage
+    * decodedMessage = (ReceiveMessage) decodedPacket; assertEquals(RECEIVE_MSG,
+    * decodedMessage.getType());
+    * assertEquals(message.getMessage().getMessageID(), decodedMessage
+    * .getMessage().getMessageID()); }
+    */
+
+   public void testSessionAcknowledgeMessage() throws Exception
+   {
+      SessionAcknowledgeMessage message = new SessionAcknowledgeMessage(
+            randomLong(), randomBoolean());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getDeliveryID(), message.isAllUpTo());
+
+      assertTrue(decodedPacket instanceof SessionAcknowledgeMessage);
+      SessionAcknowledgeMessage decodedMessage = (SessionAcknowledgeMessage) decodedPacket;
+      assertEquals(SESS_ACKNOWLEDGE, decodedMessage.getType());
+      assertEquals(message.getDeliveryID(), decodedMessage.getDeliveryID());
+      assertEquals(message.isAllUpTo(), decodedMessage.isAllUpTo());
+   }
+
+   public void testSessionCancelMessage() throws Exception
+   {
+      SessionCancelMessage message = new SessionCancelMessage(randomLong(),
+            randomBoolean());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getDeliveryID(), message.isExpired());
+
+      assertTrue(decodedPacket instanceof SessionCancelMessage);
+      SessionCancelMessage decodedMessage = (SessionCancelMessage) decodedPacket;
+      assertEquals(SESS_CANCEL, decodedMessage.getType());
+      assertEquals(message.getDeliveryID(), decodedMessage.getDeliveryID());
+      assertEquals(message.isExpired(), decodedMessage.isExpired());
+   }
+
+   public void testSessionCommitMessage() throws Exception
+   {
+      Packet message = new EmptyPacket(SESS_COMMIT);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message);
+
+      assertEquals(SESS_COMMIT, decodedPacket.getType());
+   }
+
+   public void testSessionRollbackMessage() throws Exception
+   {
+      Packet message = new EmptyPacket(SESS_ROLLBACK);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message);
+
+      assertEquals(SESS_ROLLBACK, decodedPacket.getType());
+   }
+
+   public void testSessionRecoverMessage() throws Exception
+   {
+      Packet message = new EmptyPacket(SESS_RECOVER);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message);
+
+      assertEquals(SESS_RECOVER, decodedPacket.getType());
+   }
+
+   public void testCloseMessage() throws Exception
+   {
+      Packet message = new EmptyPacket(CLOSE);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message);
+
+      assertEquals(CLOSE, decodedPacket.getType());
+   }
+
+   public void testSessionCreateBrowserMessage() throws Exception
+   {
+      SimpleString destination = new SimpleString(
+            "queue.testCreateBrowserRequest");
+      SessionCreateBrowserMessage request = new SessionCreateBrowserMessage(
+            destination, new SimpleString("color = 'red'"));
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(request, request
+            .getQueueName(),
+            new NullableStringHolder(request.getFilterString()));
+
+      assertTrue(decodedPacket instanceof SessionCreateBrowserMessage);
+      SessionCreateBrowserMessage decodedRequest = (SessionCreateBrowserMessage) decodedPacket;
+      assertEquals(SESS_CREATEBROWSER, decodedRequest.getType());
+      assertEquals(request.getQueueName(), decodedRequest.getQueueName());
+      assertEquals(request.getFilterString(), decodedRequest.getFilterString());
+   }
+
+   public void testSessionCreateBrowserResponseMessage() throws Exception
+   {
+      SessionCreateBrowserResponseMessage response = new SessionCreateBrowserResponseMessage(
+            randomLong());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(response, response
+            .getBrowserTargetID());
+
+      assertTrue(decodedPacket instanceof SessionCreateBrowserResponseMessage);
+      SessionCreateBrowserResponseMessage decodedResponse = (SessionCreateBrowserResponseMessage) decodedPacket;
+      assertEquals(SESS_CREATEBROWSER_RESP, decodedResponse.getType());
+      assertEquals(response.getBrowserTargetID(), decodedResponse
+            .getBrowserTargetID());
+   }
+
+   public void testBrowserResetMessage() throws Exception
+   {
+      Packet message = new EmptyPacket(SESS_BROWSER_RESET);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message);
+
+      assertEquals(SESS_BROWSER_RESET, decodedPacket.getType());
+   }
+
+   public void testBrowserHasNextMessageRequest() throws Exception
+   {
+      Packet request = new EmptyPacket(SESS_BROWSER_HASNEXTMESSAGE);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(request);
+
+      assertEquals(SESS_BROWSER_HASNEXTMESSAGE, decodedPacket.getType());
+   }
+
+   public void testSessionBrowserHasNextMessageResponseMessage()
+         throws Exception
+   {
+      SessionBrowserHasNextMessageResponseMessage response = new SessionBrowserHasNextMessageResponseMessage(
+            randomBoolean());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(response, response
+            .hasNext());
+
+      assertTrue(decodedPacket instanceof SessionBrowserHasNextMessageResponseMessage);
+      SessionBrowserHasNextMessageResponseMessage decodedResponse = (SessionBrowserHasNextMessageResponseMessage) decodedPacket;
+      assertEquals(SESS_BROWSER_HASNEXTMESSAGE_RESP, decodedResponse.getType());
+      assertEquals(response.hasNext(), decodedResponse.hasNext());
+   }
+
+   public void testBrowserNextMessageRequest() throws Exception
+   {
+      Packet request = new EmptyPacket(SESS_BROWSER_NEXTMESSAGE);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(request);
+
+      assertEquals(SESS_BROWSER_NEXTMESSAGE, decodedPacket.getType());
+   }
+
+   public void testSessionXACommitMessage() throws Exception
+   {
+      SessionXACommitMessage message = new SessionXACommitMessage(randomXid(),
+            randomBoolean());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getXid(), message.isOnePhase());
+
+      assertTrue(decodedPacket instanceof SessionXACommitMessage);
+      SessionXACommitMessage decodedMessage = (SessionXACommitMessage) decodedPacket;
+      assertEquals(SESS_XA_COMMIT, decodedMessage.getType());
+      assertEquals(message.getXid(), decodedMessage.getXid());
+      assertEquals(message.isOnePhase(), decodedMessage.isOnePhase());
+   }
+
+   public void testSessionXAEndMessage() throws Exception
+   {
+      SessionXAEndMessage message = new SessionXAEndMessage(randomXid(),
+            randomBoolean());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getXid(), message.isFailed());
+
+      assertTrue(decodedPacket instanceof SessionXAEndMessage);
+      SessionXAEndMessage decodedMessage = (SessionXAEndMessage) decodedPacket;
+      assertEquals(SESS_XA_END, decodedMessage.getType());
+      assertEquals(message.getXid(), decodedMessage.getXid());
+      assertEquals(message.isFailed(), decodedMessage.isFailed());
+   }
+
+   public void testSessionXAForgetMessage() throws Exception
+   {
+      SessionXAForgetMessage message = new SessionXAForgetMessage(randomXid());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getXid());
+
+      assertTrue(decodedPacket instanceof SessionXAForgetMessage);
+      SessionXAForgetMessage decodedMessage = (SessionXAForgetMessage) decodedPacket;
+      assertEquals(SESS_XA_FORGET, decodedMessage.getType());
+      assertEquals(message.getXid(), decodedMessage.getXid());
+   }
+
+   public void testSessionXAGetInDoubtXidsMessage() throws Exception
+   {
+      Packet request = new EmptyPacket(SESS_XA_INDOUBT_XIDS);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(request);
+
+      assertEquals(SESS_XA_INDOUBT_XIDS, decodedPacket.getType());
+   }
+
+   public void testSessionXAGetInDoubtXidsResponseMessage() throws Exception
+   {
+      final int numXids = 10;
+      List<Xid> xids = new ArrayList<Xid>();
+      for (int i = 0; i < numXids; i++)
+      {
+         xids.add(randomXid());
+      }
+      SessionXAGetInDoubtXidsResponseMessage message = new SessionXAGetInDoubtXidsResponseMessage(
+            xids);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, xids);
+
+      assertTrue(decodedPacket instanceof SessionXAGetInDoubtXidsResponseMessage);
+      SessionXAGetInDoubtXidsResponseMessage decodedMessage = (SessionXAGetInDoubtXidsResponseMessage) decodedPacket;
+      assertEquals(SESS_XA_INDOUBT_XIDS_RESP, decodedMessage.getType());
+
+      assertSameXids(message.getXids(), decodedMessage.getXids());
+   }
+
+   public void testSessionXAGetTimeoutMessage() throws Exception
+   {
+      Packet message = new EmptyPacket(SESS_XA_GET_TIMEOUT);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message);
+
+      assertEquals(SESS_XA_GET_TIMEOUT, decodedPacket.getType());
+   }
+
+   public void testSessionXAGetTimeoutResponseMessage() throws Exception
+   {
+      SessionXAGetTimeoutResponseMessage message = new SessionXAGetTimeoutResponseMessage(
+            randomInt());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getTimeoutSeconds());
+
+      assertTrue(decodedPacket instanceof SessionXAGetTimeoutResponseMessage);
+      SessionXAGetTimeoutResponseMessage decodedMessage = (SessionXAGetTimeoutResponseMessage) decodedPacket;
+      assertEquals(SESS_XA_GET_TIMEOUT_RESP, decodedMessage.getType());
+      assertEquals(message.getTimeoutSeconds(), decodedMessage
+            .getTimeoutSeconds());
+   }
+
+   public void testSessionXAJoinMessage() throws Exception
+   {
+      SessionXAJoinMessage message = new SessionXAJoinMessage(randomXid());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getXid());
+
+      assertTrue(decodedPacket instanceof SessionXAJoinMessage);
+      SessionXAJoinMessage decodedMessage = (SessionXAJoinMessage) decodedPacket;
+      assertEquals(SESS_XA_JOIN, decodedMessage.getType());
+      assertEquals(message.getXid(), decodedMessage.getXid());
+   }
+
+   public void testSessionXAPrepareMessage() throws Exception
+   {
+      SessionXAPrepareMessage message = new SessionXAPrepareMessage(randomXid());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getXid());
+
+      assertTrue(decodedPacket instanceof SessionXAPrepareMessage);
+      SessionXAPrepareMessage decodedMessage = (SessionXAPrepareMessage) decodedPacket;
+      assertEquals(SESS_XA_PREPARE, decodedMessage.getType());
+      assertEquals(message.getXid(), decodedMessage.getXid());
+   }
+
+   public void testSessionXAResponseMessage() throws Exception
+   {
+      SessionXAResponseMessage message = new SessionXAResponseMessage(
+            randomBoolean(), randomInt(), randomString());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .isError(), message.getResponseCode(), message.getMessage());
+
+      assertTrue(decodedPacket instanceof SessionXAResponseMessage);
+      SessionXAResponseMessage decodedMessage = (SessionXAResponseMessage) decodedPacket;
+      assertEquals(SESS_XA_RESP, decodedMessage.getType());
+      assertEquals(message.isError(), decodedMessage.isError());
+      assertEquals(message.getResponseCode(), decodedMessage.getResponseCode());
+      assertEquals(message.getMessage(), decodedMessage.getMessage());
+   }
+
+   public void testSessionXAResumeMessage() throws Exception
+   {
+      SessionXAResumeMessage message = new SessionXAResumeMessage(randomXid());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getXid());
+
+      assertTrue(decodedPacket instanceof SessionXAResumeMessage);
+      SessionXAResumeMessage decodedMessage = (SessionXAResumeMessage) decodedPacket;
+      assertEquals(SESS_XA_RESUME, decodedMessage.getType());
+      assertEquals(message.getXid(), decodedMessage.getXid());
+   }
+
+   public void testSessionXARollbackMessage() throws Exception
+   {
+      SessionXARollbackMessage message = new SessionXARollbackMessage(
+            randomXid());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getXid());
+
+      assertTrue(decodedPacket instanceof SessionXARollbackMessage);
+      SessionXARollbackMessage decodedMessage = (SessionXARollbackMessage) decodedPacket;
+      assertEquals(SESS_XA_ROLLBACK, decodedMessage.getType());
+      assertEquals(message.getXid(), decodedMessage.getXid());
+   }
+
+   public void testSessionXASetTimeoutMessage() throws Exception
+   {
+      SessionXASetTimeoutMessage message = new SessionXASetTimeoutMessage(
+            randomInt());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getTimeoutSeconds());
+
+      assertTrue(decodedPacket instanceof SessionXASetTimeoutMessage);
+      SessionXASetTimeoutMessage decodedMessage = (SessionXASetTimeoutMessage) decodedPacket;
+      assertEquals(SESS_XA_SET_TIMEOUT, decodedMessage.getType());
+      assertEquals(message.getTimeoutSeconds(), decodedMessage
+            .getTimeoutSeconds());
+   }
+
+   public void testSessionXASetTimeoutResponseMessage() throws Exception
+   {
+      SessionXASetTimeoutResponseMessage message = new SessionXASetTimeoutResponseMessage(
+            randomBoolean());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .isOK());
+
+      assertTrue(decodedPacket instanceof SessionXASetTimeoutResponseMessage);
+      SessionXASetTimeoutResponseMessage decodedMessage = (SessionXASetTimeoutResponseMessage) decodedPacket;
+      assertEquals(SESS_XA_SET_TIMEOUT_RESP, decodedMessage.getType());
+      assertEquals(message.isOK(), decodedMessage.isOK());
+   }
+
+   public void testSessionXAStartMessage() throws Exception
+   {
+      SessionXAStartMessage message = new SessionXAStartMessage(randomXid());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getXid());
+
+      assertTrue(decodedPacket instanceof SessionXAStartMessage);
+      SessionXAStartMessage decodedMessage = (SessionXAStartMessage) decodedPacket;
+      assertEquals(SESS_XA_START, decodedMessage.getType());
+      assertEquals(message.getXid(), decodedMessage.getXid());
+   }
+
+   public void testSessionXASuspendMessage() throws Exception
+   {
+      Packet message = new EmptyPacket(SESS_XA_SUSPEND);
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message);
+
+      assertEquals(SESS_XA_SUSPEND, decodedPacket.getType());
+   }
+
+   public void testSessionRemoveDestinationMessage() throws Exception
+   {
+      SessionRemoveDestinationMessage message = new SessionRemoveDestinationMessage(
+            new SimpleString(randomString()), randomBoolean());
+
+      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
+            .getAddress(), message.isTemporary());
+
+      assertTrue(decodedPacket instanceof SessionRemoveDestinationMessage);
+      SessionRemoveDestinationMessage decodedMessage = (SessionRemoveDestinationMessage) decodedPacket;
+      assertEquals(SESS_REMOVE_DESTINATION, decodedMessage.getType());
+      assertEquals(message.getAddress(), decodedMessage.getAddress());
+      assertEquals(message.isTemporary(), decodedMessage.isTemporary());
+   }
+
+    public void testSessionCreateQueueMessage() throws Exception
+    {
+    SessionCreateQueueMessage message = new SessionCreateQueueMessage(
+    new SimpleString(randomString()), new SimpleString(randomString()),
+    new SimpleString(randomString()), randomBoolean(),
+    randomBoolean());
+   
+    Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
+    message.getAddress(), message.getQueueName(), new
+    NullableStringHolder(message.getFilterString()), message.isDurable(),
+    message
+    .isTemporary());
+   
+    assertTrue(decodedPacket instanceof SessionCreateQueueMessage);
+    SessionCreateQueueMessage decodedMessage = (SessionCreateQueueMessage)
+    decodedPacket;
+    assertEquals(SESS_CREATEQUEUE, decodedMessage.getType());
+   
+    assertEquals(message.getAddress(), decodedMessage.getAddress());
+    assertEquals(message.getQueueName(), decodedMessage.getQueueName());
+    assertEquals(message.getFilterString(), decodedMessage.getFilterString());
+    assertEquals(message.isDurable(), decodedMessage.isDurable());
+    assertEquals(message.isTemporary(), decodedMessage.isTemporary());
+   
+    }
+   
+    public void testSessionQueueQueryMessage() throws Exception
+    {
+    SessionQueueQueryMessage message = new SessionQueueQueryMessage(
+    new SimpleString(randomString()));
+   
+    Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
+    message.getQueueName());
+   
+    assertTrue(decodedPacket instanceof SessionQueueQueryMessage);
+    SessionQueueQueryMessage decodedMessage = (SessionQueueQueryMessage)
+    decodedPacket;
+    assertEquals(SESS_QUEUEQUERY, decodedMessage.getType());
+    assertEquals(message.getQueueName(), decodedMessage.getQueueName());
+    }
+   
+    public void testSessionQueueQueryResponseMessage() throws Exception
+    {
+    SessionQueueQueryResponseMessage message = new
+    SessionQueueQueryResponseMessage(
+    randomBoolean(), randomBoolean(), randomInt(), randomInt(),
+    randomInt(), new SimpleString(randomString()), new
+    SimpleString(randomString()));
+   
+    Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
+    message.isExists(), message.isDurable(), message.isTemporary(),
+    message.getMaxSize(), message.getConsumerCount(), message
+    .getMessageCount(), new NullableStringHolder(message.getFilterString()),
+    new NullableStringHolder(message.getAddress()));
+   
+    assertTrue(decodedPacket instanceof SessionQueueQueryResponseMessage);
+    SessionQueueQueryResponseMessage decodedMessage =
+    (SessionQueueQueryResponseMessage) decodedPacket;
+    assertEquals(SESS_QUEUEQUERY_RESP, decodedMessage.getType());
+   
+    assertEquals(message.isExists(), decodedMessage.isExists());
+    assertEquals(message.isDurable(), decodedMessage.isDurable());
+    assertEquals(message.isTemporary(), decodedMessage.isTemporary());
+    assertEquals(message.getConsumerCount(), decodedMessage
+    .getConsumerCount());
+    assertEquals(message.getMessageCount(), decodedMessage.getMessageCount());
+    assertEquals(message.getFilterString(), decodedMessage.getFilterString());
+    assertEquals(message.getAddress(), decodedMessage.getAddress());
+    }
+   
+    public void testSessionAddAddressMessage() throws Exception
+    {
+    SessionAddDestinationMessage message = new SessionAddDestinationMessage(
+    new SimpleString(randomString()), randomBoolean());
+   
+    Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
+    message.getAddress(), message.isTemporary());
+   
+    assertTrue(decodedPacket instanceof SessionAddDestinationMessage);
+    SessionAddDestinationMessage decodedMessage =
+    (SessionAddDestinationMessage) decodedPacket;
+    assertEquals(SESS_ADD_DESTINATION, decodedMessage.getType());
+    assertEquals(message.getAddress(), decodedMessage.getAddress());
+    assertEquals(message.isTemporary(), decodedMessage.isTemporary());
+    }
+   
+    public void testSessionBindingQueryMessage() throws Exception
+    {
+    SessionBindingQueryMessage message = new SessionBindingQueryMessage(
+    new SimpleString(randomString()));
+   
+    Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
+    message.getAddress());
+   
+    assertTrue(decodedPacket instanceof SessionBindingQueryMessage);
+    SessionBindingQueryMessage decodedMessage = (SessionBindingQueryMessage)
+    decodedPacket;
+    assertEquals(SESS_BINDINGQUERY, decodedMessage.getType());
+   
+    assertEquals(message.getAddress(), decodedMessage.getAddress());
+    }
+   
+    public void testSessionBindingQueryResponseMessage() throws Exception
+    {
+    boolean exists = true;
+    List<SimpleString> queueNames = new ArrayList<SimpleString>();
+    queueNames.add(new SimpleString(randomString()));
+    queueNames.add(new SimpleString(randomString()));
+    queueNames.add(new SimpleString(randomString()));
+    SessionBindingQueryResponseMessage message = new
+    SessionBindingQueryResponseMessage(
+    exists, queueNames);
+   
+    Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
+    message.isExists(), message.getQueueNames());
+   
+    assertTrue(decodedPacket instanceof SessionBindingQueryResponseMessage);
+    SessionBindingQueryResponseMessage decodedMessage =
+    (SessionBindingQueryResponseMessage) decodedPacket;
+    assertEquals(SESS_BINDINGQUERY_RESP, decodedMessage.getType());
+    assertEquals(message.isExists(), decodedMessage.isExists());
+   
+    List<SimpleString> decodedNames = decodedMessage.getQueueNames();
+    assertEquals(queueNames.size(), decodedNames.size());
+    for (int i = 0; i < queueNames.size(); i++)
+    {
+    assertEquals(queueNames.get(i), decodedNames.get(i));
+    }
+    }
+   
+    public void testDeleteQueueRequest() throws Exception
+    {
+    SessionDeleteQueueMessage message = new SessionDeleteQueueMessage(
+    new SimpleString(randomString()));
+   
+    Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
+    message.getQueueName());
+   
+    assertTrue(decodedPacket instanceof SessionDeleteQueueMessage);
+    SessionDeleteQueueMessage decodedMessage = (SessionDeleteQueueMessage)
+    decodedPacket;
+    assertEquals(SESS_DELETE_QUEUE, decodedMessage.getType());
+    assertEquals(message.getQueueName(), decodedMessage.getQueueName());
+    }
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private -------------------------------------------------------
+
+   private static class SimpleProtocolDecoderOutput implements
+         ProtocolDecoderOutput
+   {
+      private Object message;
+
+      public void flush()
+      {
+      }
+
+      public void write(Object message)
+      {
+         this.message = message;
+      }
+
+      public Object getMessage()
+      {
+         return message;
+      }
+
+   }
+
+   private class NullableStringHolder
+   {
+      public SimpleString str;
+
+      NullableStringHolder(SimpleString str)
+      {
+         this.str = str;
+      }
+   }
+}

Deleted: trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/wireformat/CodecAssert.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/wireformat/CodecAssert.java	2008-06-13 20:59:02 UTC (rev 4470)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/wireformat/CodecAssert.java	2008-06-14 08:35:15 UTC (rev 4471)
@@ -1,80 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- *
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package org.jboss.messaging.tests.unit.core.remoting.impl.wireformat;
-
-import java.util.List;
-
-import javax.transaction.xa.Xid;
-
-import junit.framework.Assert;
-
-/**
- * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
- * 
- * @version <tt>$Revision$</tt>
- * 
- */
-public class CodecAssert extends Assert
-{
-   // Constants -----------------------------------------------------
-
-   // Attributes ----------------------------------------------------
-
-   // Static --------------------------------------------------------
-
-   static void assertSameXids(List<Xid> expected, List<Xid> actual)
-   {
-      assertNotNull(expected);
-      assertNotNull(actual);
-      assertEquals(expected.size(), actual.size());
-
-      for (int i = 0; i < expected.size(); i++)
-      {
-         Xid expectedXid = expected.get(i);
-         Xid actualXid = actual.get(i);
-         assertEqualsByteArrays(expectedXid.getBranchQualifier(), actualXid
-               .getBranchQualifier());
-         assertEquals(expectedXid.getFormatId(), actualXid.getFormatId());
-         assertEqualsByteArrays(expectedXid.getGlobalTransactionId(), actualXid
-               .getGlobalTransactionId());
-      }
-   }
-
-   public static void assertEqualsByteArrays(byte[] expected, byte[] actual)
-   {
-      assertEquals(expected.length, actual.length);
-      for (int i = 0; i < expected.length; i++)
-      {
-         assertEquals("byte at index " + i, expected[i], actual[i]);
-      }
-   }
-
-   static void assertEqualsByteArrays(int length, byte[] expected, byte[] actual)
-   {
-      // we check only for the given length (the arrays might be
-      // larger)
-      assertTrue(expected.length >= length);
-      assertTrue(actual.length >= length);
-      for (int i = 0; i < length; i++)
-      {
-         assertEquals("byte at index " + i, expected[i], actual[i]);
-      }
-   }
-
-   
-   // Constructors --------------------------------------------------
-
-   // Public --------------------------------------------------------
-
-   // Package protected ---------------------------------------------
-
-   // Protected -----------------------------------------------------
-
-   // Private -------------------------------------------------------
-
-   // Inner classes -------------------------------------------------
-}

Deleted: trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/wireformat/PacketTypeTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/wireformat/PacketTypeTest.java	2008-06-13 20:59:02 UTC (rev 4470)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/wireformat/PacketTypeTest.java	2008-06-14 08:35:15 UTC (rev 4471)
@@ -1,1139 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- *
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package org.jboss.messaging.tests.unit.core.remoting.impl.wireformat;
-
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.CLOSE;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.CONN_CREATESESSION;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.CONN_CREATESESSION_RESP;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.CONN_START;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.CONN_STOP;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.CONS_FLOWTOKEN;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.CREATECONNECTION;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.CREATECONNECTION_RESP;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.EXCEPTION;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.NULL;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.PING;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.PONG;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.PROD_RECEIVETOKENS;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_ACKNOWLEDGE;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_ADD_DESTINATION;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_BINDINGQUERY;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_BINDINGQUERY_RESP;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_BROWSER_HASNEXTMESSAGE;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_BROWSER_HASNEXTMESSAGE_RESP;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_BROWSER_NEXTMESSAGE;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_BROWSER_RESET;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_CANCEL;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_COMMIT;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_CREATEBROWSER;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_CREATEBROWSER_RESP;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_CREATECONSUMER;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_CREATECONSUMER_RESP;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_CREATEPRODUCER;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_CREATEPRODUCER_RESP;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_CREATEQUEUE;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_DELETE_QUEUE;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_QUEUEQUERY;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_QUEUEQUERY_RESP;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_RECOVER;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_REMOVE_DESTINATION;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_ROLLBACK;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_COMMIT;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_END;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_FORGET;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_GET_TIMEOUT;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_GET_TIMEOUT_RESP;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_INDOUBT_XIDS;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_INDOUBT_XIDS_RESP;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_JOIN;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_PREPARE;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_RESP;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_RESUME;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_ROLLBACK;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_SET_TIMEOUT;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_SET_TIMEOUT_RESP;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_START;
-import static org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket.SESS_XA_SUSPEND;
-import static org.jboss.messaging.tests.unit.core.remoting.impl.wireformat.CodecAssert.assertEqualsByteArrays;
-import static org.jboss.messaging.tests.unit.core.remoting.impl.wireformat.CodecAssert.assertSameXids;
-import static org.jboss.messaging.tests.util.RandomUtil.randomBoolean;
-import static org.jboss.messaging.tests.util.RandomUtil.randomInt;
-import static org.jboss.messaging.tests.util.RandomUtil.randomLong;
-import static org.jboss.messaging.tests.util.RandomUtil.randomString;
-import static org.jboss.messaging.tests.util.RandomUtil.randomXid;
-import static org.jboss.messaging.util.DataConstants.SIZE_BYTE;
-import static org.jboss.messaging.util.DataConstants.SIZE_LONG;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.transaction.xa.Xid;
-
-import org.apache.mina.common.IoBuffer;
-import org.apache.mina.filter.codec.ProtocolDecoderOutput;
-import org.jboss.messaging.core.exception.MessagingException;
-import org.jboss.messaging.core.logging.Logger;
-import org.jboss.messaging.core.remoting.Packet;
-import org.jboss.messaging.core.remoting.impl.mina.IoBufferWrapper;
-import org.jboss.messaging.core.remoting.impl.mina.MessagingCodec;
-import org.jboss.messaging.core.remoting.impl.wireformat.ConnectionCreateSessionMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.ConnectionCreateSessionResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.ConsumerFlowCreditMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.CreateConnectionRequest;
-import org.jboss.messaging.core.remoting.impl.wireformat.CreateConnectionResponse;
-import org.jboss.messaging.core.remoting.impl.wireformat.EmptyPacket;
-import org.jboss.messaging.core.remoting.impl.wireformat.MessagingExceptionMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.Ping;
-import org.jboss.messaging.core.remoting.impl.wireformat.Pong;
-import org.jboss.messaging.core.remoting.impl.wireformat.ProducerFlowCreditMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionAcknowledgeMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionAddDestinationMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionBrowserHasNextMessageResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCancelMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateBrowserMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateBrowserResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateConsumerMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateConsumerResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateProducerMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateProducerResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionCreateQueueMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionDeleteQueueMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionRemoveDestinationMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXACommitMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAEndMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAForgetMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAGetInDoubtXidsResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAGetTimeoutResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAJoinMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAPrepareMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAResumeMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXARollbackMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXASetTimeoutMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXASetTimeoutResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAStartMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.XidCodecSupport;
-import org.jboss.messaging.core.version.impl.VersionImpl;
-import org.jboss.messaging.tests.util.UnitTestCase;
-import org.jboss.messaging.util.MessagingBuffer;
-import org.jboss.messaging.util.SimpleString;
-
-/**
- * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- * 
- * FIXME - tidy up tests so test names match the actual packets
- * 
- * @version <tt>$Revision$</tt>
- */
-public class PacketTypeTest extends UnitTestCase
-{
-
-   // Constants -----------------------------------------------------
-
-   private static final Logger log = Logger.getLogger(PacketTypeTest.class);
-
-   // Attributes ----------------------------------------------------
-
-   // Static --------------------------------------------------------
-
-   private static MessagingBuffer encode(int length, Object... args)
-         throws Exception
-   {
-      IoBufferWrapper buffer = new IoBufferWrapper(length);
-      for (Object arg : args)
-      {
-         if (arg instanceof Byte)
-            buffer.putByte(((Byte) arg).byteValue());
-         else if (arg instanceof Boolean)
-         {
-            Boolean bool = (Boolean) arg;
-            buffer.putBoolean(bool);
-         } else if (arg instanceof Integer)
-            buffer.putInt(((Integer) arg).intValue());
-         else if (arg instanceof Long)
-            buffer.putLong(((Long) arg).longValue());
-         else if (arg instanceof Float)
-            buffer.putFloat(((Float) arg).floatValue());
-         else if (arg instanceof String)
-            buffer.putNullableString((String) arg);
-         else if (arg instanceof SimpleString)
-            buffer.putSimpleString((SimpleString) arg);
-         else if (arg instanceof NullableStringHolder)
-            buffer.putNullableSimpleString(((NullableStringHolder) arg).str);
-         else if (arg == null)
-            buffer.putNullableString(null);
-         else if (arg instanceof byte[])
-         {
-            byte[] b = (byte[]) arg;
-            buffer.putInt(b.length);
-            buffer.putBytes(b);
-         } else if (arg instanceof long[])
-         {
-            long[] longs = (long[]) arg;
-            for (long l : longs)
-            {
-               buffer.putLong(l);
-            }
-         } else if (arg instanceof List)
-         {
-            List argsInList = (List) arg;
-            buffer.putInt(argsInList.size());
-            for (Object argInList : argsInList)
-            {
-               if (argInList instanceof SimpleString)
-                  buffer.putSimpleString((SimpleString) argInList);
-               else if (argInList instanceof Xid)
-                  XidCodecSupport.encodeXid((Xid) argInList, buffer);
-               else
-                  fail("no encoding defined for " + arg + " in List");
-            }
-         } else if (arg instanceof Xid)
-         {
-            Xid xid = (Xid) arg;
-            XidCodecSupport.encodeXid(xid, buffer);
-         } else if (arg instanceof MessagingException)
-         {
-            MessagingException exception = (MessagingException) arg;
-            buffer.putInt(exception.getCode());
-            buffer.putNullableString(exception.getMessage());
-         } else
-         {
-            fail("no encoding defined for " + arg);
-         }
-      }
-      buffer.flip();
-      return buffer;
-   }
-
-   private static void checkHeader(final MessagingBuffer buffer,
-         final Packet packet) throws Exception
-   {
-      assertEquals(buffer.getByte(), packet.getType());
-
-      long responseTargetID = buffer.getLong();
-      long targetID = buffer.getLong();
-      long executorID = buffer.getLong();
-
-      assertEquals(packet.getResponseTargetID(), responseTargetID);
-      assertEquals(packet.getTargetID(), targetID);
-      assertEquals(packet.getExecutorID(), executorID);
-   }
-
-   private static void checkBody(MessagingBuffer buffer, int bodyLength,
-         Object... bodyObjects) throws Exception
-   {
-      byte[] actualBody = new byte[bodyLength];
-      buffer.getBytes(actualBody);
-      MessagingBuffer expectedBody = encode(actualBody.length, bodyObjects);
-      assertEqualsByteArrays(bodyLength, expectedBody.array(), actualBody);
-      // check the buffer has been wholly read
-      assertEquals(0, buffer.remaining());
-   }
-
-   private static Packet encodeAndCheckBytesAndDecode(Packet packet,
-         Object... bodyObjects) throws Exception
-   {
-      MessagingBuffer buffer = encode(packet);
-      int packetLength = buffer.getInt();
-      checkHeader(buffer, packet);
-      int bodyLength = packetLength - (SIZE_BYTE + 3 * SIZE_LONG);
-      checkBody(buffer, bodyLength, bodyObjects);
-      buffer.rewind();
-      
-      SimpleProtocolDecoderOutput out = new SimpleProtocolDecoderOutput();
-      MessagingCodec codec = new MessagingCodec();
-      codec.doDecode(null, IoBuffer.wrap(buffer.array()), out);
-      Object message = out.getMessage();
-      assertTrue(message instanceof Packet);
-
-      log.info("encoded and decoded " + packet);
-
-      return (Packet) message;
-   }
-
-   private static MessagingBuffer encode(final Packet packet) throws Exception
-   {
-      MessagingBuffer buffer = new IoBufferWrapper(512);
-      packet.encode(buffer);
-
-      assertNotNull(buffer);
-
-      return buffer;
-   }
-
-   // Constructors --------------------------------------------------
-
-   // Public --------------------------------------------------------
-
-   public void testNullPacket() throws Exception
-   {
-      Packet packet = new EmptyPacket(NULL);
-      packet.setResponseTargetID(randomLong());
-      packet.setTargetID(randomLong());
-      packet.setExecutorID(randomLong());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(packet);
-
-      assertTrue(decodedPacket instanceof EmptyPacket);
-      assertEquals(NULL, decodedPacket.getType());
-      assertEquals(packet.getResponseTargetID(), decodedPacket
-            .getResponseTargetID());
-      assertEquals(packet.getTargetID(), decodedPacket.getTargetID());
-      assertEquals(packet.getExecutorID(), decodedPacket.getExecutorID());
-   }
-
-   public void testPing() throws Exception
-   {
-      Ping ping = new Ping(randomLong());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(ping, ping
-            .getSessionID());
-
-      assertTrue(decodedPacket instanceof Ping);
-      Ping decodedPing = (Ping) decodedPacket;
-      assertEquals(PING, decodedPing.getType());
-      assertEquals(ping.getResponseTargetID(), decodedPacket
-            .getResponseTargetID());
-      assertEquals(ping.getTargetID(), decodedPacket.getTargetID());
-      assertEquals(ping.getExecutorID(), decodedPacket.getExecutorID());
-   }
-
-   public void testPong() throws Exception
-   {
-      Pong pong = new Pong(randomLong(), true);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(pong, pong
-            .getSessionID(), pong.isSessionFailed());
-
-      assertTrue(decodedPacket instanceof Pong);
-      Pong decodedPong = (Pong) decodedPacket;
-      assertEquals(PONG, decodedPong.getType());
-      assertEquals(pong.getSessionID(), decodedPong.getSessionID());
-      assertEquals(pong.isSessionFailed(), decodedPong.isSessionFailed());
-   }
-
-   public void testMessagingExceptionMessage() throws Exception
-   {
-      MessagingExceptionMessage message = new MessagingExceptionMessage(new MessagingException(MessagingException.ILLEGAL_STATE));
-      
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message.getException());
-      
-      assertTrue(decodedPacket instanceof MessagingExceptionMessage);
-      MessagingExceptionMessage decodedMessage = (MessagingExceptionMessage) decodedPacket;
-      assertEquals(EXCEPTION, decodedMessage.getType());
-      assertEquals(message.getException().getCode(), decodedMessage.getException().getCode());
-   }
-   
-   public void testCreateConnectionRequest() throws Exception
-   {
-      int version = randomInt();
-      long remotingSessionID = randomLong();
-      String username = null;
-      String password = null;
-      CreateConnectionRequest request = new CreateConnectionRequest(version,
-            remotingSessionID, username, password);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(request, version,
-            remotingSessionID, username, password);
-
-      assertTrue(decodedPacket instanceof CreateConnectionRequest);
-      CreateConnectionRequest decodedRequest = (CreateConnectionRequest) decodedPacket;
-
-      assertEquals(CREATECONNECTION, decodedPacket.getType());
-      assertEquals(request.getVersion(), decodedRequest.getVersion());
-      assertEquals(request.getRemotingSessionID(), decodedRequest
-            .getRemotingSessionID());
-      assertEquals(request.getUsername(), decodedRequest.getUsername());
-      assertEquals(request.getPassword(), decodedRequest.getPassword());
-   }
-
-   public void testCreateConnectionResponse() throws Exception
-   {
-      CreateConnectionResponse response = new CreateConnectionResponse(
-            randomLong(), new VersionImpl("test", 1, 2, 3, 4, "xxx"));
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(response, response
-            .getConnectionTargetID(), response.getServerVersion()
-            .getVersionName(), response.getServerVersion().getMajorVersion(),
-            response.getServerVersion().getMinorVersion(), response
-                  .getServerVersion().getMicroVersion(), response
-                  .getServerVersion().getIncrementingVersion(), response
-                  .getServerVersion().getVersionSuffix());
-
-      assertTrue(decodedPacket instanceof CreateConnectionResponse);
-      CreateConnectionResponse decodedResponse = (CreateConnectionResponse) decodedPacket;
-      assertEquals(CREATECONNECTION_RESP, decodedResponse.getType());
-      assertEquals(response.getConnectionTargetID(), decodedResponse
-            .getConnectionTargetID());
-      assertEquals(response.getServerVersion().getFullVersion(),
-            decodedResponse.getServerVersion().getFullVersion());
-   }
-
-   public void testConnectionCreateSessionMessage() throws Exception
-   {
-      ConnectionCreateSessionMessage request = new ConnectionCreateSessionMessage(
-            randomBoolean(), randomBoolean(), randomBoolean());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(request, request
-            .isXA(), request.isAutoCommitSends(), request.isAutoCommitAcks());
-
-      assertTrue(decodedPacket instanceof ConnectionCreateSessionMessage);
-      ConnectionCreateSessionMessage decodedRequest = (ConnectionCreateSessionMessage) decodedPacket;
-      assertEquals(CONN_CREATESESSION, decodedRequest.getType());
-      assertEquals(request.isXA(), decodedRequest.isXA());
-      assertEquals(request.isAutoCommitSends(), decodedRequest
-            .isAutoCommitSends());
-      assertEquals(request.isAutoCommitAcks(), decodedRequest
-            .isAutoCommitAcks());
-   }
-
-   public void testConnectionCreateSessionResponseMessage() throws Exception
-   {
-      ConnectionCreateSessionResponseMessage response = new ConnectionCreateSessionResponseMessage(
-            randomLong());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(response, response
-            .getSessionID());
-
-      assertTrue(decodedPacket instanceof ConnectionCreateSessionResponseMessage);
-      ConnectionCreateSessionResponseMessage decodedResponse = (ConnectionCreateSessionResponseMessage) decodedPacket;
-      assertEquals(CONN_CREATESESSION_RESP, decodedResponse.getType());
-      assertEquals(response.getSessionID(), decodedResponse.getSessionID());
-   }
-
-   /*
-    * public void testProducerSendMessage() throws Exception { Message msg = new
-    * MessageImpl((byte)1, false, 1212212L, 761276712L, (byte)1);
-    * msg.setDestination(new SimpleString("blah")); ProducerSendMessage packet =
-    * new ProducerSendMessage(msg); MessagingBuffer buff =
-    * packet.getMessage().encode();
-    * 
-    * Message msg2 = new MessageImpl(); msg2.decode(buff);
-    * 
-    * 
-    * byte[] messageBytes = buff.array(); byte[] data = new byte[buff.limit()];
-    * System.arraycopy(messageBytes, 0, data, 0, buff.limit());
-    * AbstractPacketCodec codec = new ProducerSendMessageCodec();
-    * 
-    * Packet decodedPacket = encodeAndCheckBytesAndDecode(packet, data);
-    * 
-    * assertTrue(decodedPacket instanceof ProducerSendMessage);
-    * ProducerSendMessage decodedMessage = (ProducerSendMessage) decodedPacket;
-    * assertEquals(PacketType.PROD_SEND, decodedPacket.getType());
-    * assertEquals(packet.getMessage().getMessageID(), decodedMessage
-    * .getMessage().getMessageID()); }
-    */
-
-   public void testSessionCreateConsumerMessage() throws Exception
-   {
-      SimpleString destination = new SimpleString(
-            "queue.SessionCreateConsumerMessage");
-      SessionCreateConsumerMessage request = new SessionCreateConsumerMessage(
-            randomLong(), destination, new SimpleString("color = 'red'"),
-            false, false, randomInt(), randomInt());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(request, request
-            .getClientTargetID(), request.getQueueName(),
-            new NullableStringHolder(request.getFilterString()), request
-                  .isNoLocal(), request.isAutoDeleteQueue(), request
-                  .getWindowSize(), request.getMaxRate());
-
-      assertTrue(decodedPacket instanceof SessionCreateConsumerMessage);
-      SessionCreateConsumerMessage decodedRequest = (SessionCreateConsumerMessage) decodedPacket;
-      assertEquals(SESS_CREATECONSUMER, decodedRequest.getType());
-      assertEquals(request.getClientTargetID(), decodedRequest
-            .getClientTargetID());
-      assertEquals(request.getQueueName(), decodedRequest.getQueueName());
-      assertEquals(request.getFilterString(), decodedRequest.getFilterString());
-      assertEquals(request.isNoLocal(), decodedRequest.isNoLocal());
-      assertEquals(request.isAutoDeleteQueue(), decodedRequest
-            .isAutoDeleteQueue());
-      assertEquals(request.getWindowSize(), decodedRequest.getWindowSize());
-      assertEquals(request.getMaxRate(), decodedRequest.getMaxRate());
-   }
-
-   public void testSessionCreateConsumerResponseMessage() throws Exception
-   {
-      SessionCreateConsumerResponseMessage response = new SessionCreateConsumerResponseMessage(
-            randomLong(), randomInt());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(response, response
-            .getConsumerTargetID(), response.getWindowSize());
-
-      assertTrue(decodedPacket instanceof SessionCreateConsumerResponseMessage);
-      SessionCreateConsumerResponseMessage decodedResponse = (SessionCreateConsumerResponseMessage) decodedPacket;
-      assertEquals(SESS_CREATECONSUMER_RESP, decodedResponse.getType());
-
-      assertEquals(response.getConsumerTargetID(), decodedResponse
-            .getConsumerTargetID());
-      assertEquals(response.getWindowSize(), decodedResponse.getWindowSize());
-   }
-
-   public void testSessionCreateProducerMessage() throws Exception
-   {
-      SimpleString destination = new SimpleString(
-            "queue.testSessionCreateProducerMessage");
-      int windowSize = randomInt();
-      int maxRate = randomInt();
-      SessionCreateProducerMessage request = new SessionCreateProducerMessage(
-            randomLong(), destination, windowSize, maxRate);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(request, request
-            .getClientTargetID(),
-            new NullableStringHolder(request.getAddress()), request
-                  .getWindowSize(), request.getMaxRate());
-
-      assertTrue(decodedPacket instanceof SessionCreateProducerMessage);
-      SessionCreateProducerMessage decodedRequest = (SessionCreateProducerMessage) decodedPacket;
-      assertEquals(SESS_CREATEPRODUCER, decodedRequest.getType());
-      assertEquals(request.getClientTargetID(), decodedRequest
-            .getClientTargetID());
-      assertEquals(request.getAddress(), decodedRequest.getAddress());
-      assertEquals(request.getWindowSize(), decodedRequest.getWindowSize());
-      assertEquals(request.getMaxRate(), decodedRequest.getMaxRate());
-   }
-
-   public void testSessionCreateProducerResponseMessage() throws Exception
-   {
-      SessionCreateProducerResponseMessage response = new SessionCreateProducerResponseMessage(
-            randomLong(), randomInt(), randomInt());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(response, response
-            .getProducerTargetID(), response.getInitialCredits(), response
-            .getMaxRate());
-
-      assertTrue(decodedPacket instanceof SessionCreateProducerResponseMessage);
-      SessionCreateProducerResponseMessage decodedResponse = (SessionCreateProducerResponseMessage) decodedPacket;
-      assertEquals(SESS_CREATEPRODUCER_RESP, decodedResponse.getType());
-      assertEquals(response.getProducerTargetID(), decodedResponse
-            .getProducerTargetID());
-      assertEquals(response.getInitialCredits(), decodedResponse.getInitialCredits());
-      assertEquals(response.getMaxRate(), decodedResponse.getMaxRate());
-   }
-
-   public void testStartConnectionMessage() throws Exception
-   {
-      Packet packet = new EmptyPacket(CONN_START);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(packet);
-
-      assertEquals(CONN_START, decodedPacket.getType());
-   }
-
-   public void testStopConnectionMessage() throws Exception
-   {
-      Packet packet = new EmptyPacket(CONN_STOP);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(packet);
-
-      assertEquals(CONN_STOP, decodedPacket.getType());
-   }
-
-   public void testConsumerFlowCreditMessage() throws Exception
-   {
-      ConsumerFlowCreditMessage message = new ConsumerFlowCreditMessage(
-            randomInt());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getTokens());
-
-      assertTrue(decodedPacket instanceof ConsumerFlowCreditMessage);
-      ConsumerFlowCreditMessage decodedMessage = (ConsumerFlowCreditMessage) decodedPacket;
-      assertEquals(CONS_FLOWTOKEN, decodedMessage.getType());
-      assertEquals(message.getTokens(), decodedMessage.getTokens());
-   }
-
-   public void testProducerReceiveTokensMessage() throws Exception
-   {
-      ProducerFlowCreditMessage message = new ProducerFlowCreditMessage(
-            randomInt());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getTokens());
-
-      assertTrue(decodedPacket instanceof ProducerFlowCreditMessage);
-      ProducerFlowCreditMessage decodedMessage = (ProducerFlowCreditMessage) decodedPacket;
-      assertEquals(PROD_RECEIVETOKENS, decodedMessage.getType());
-      assertEquals(message.getTokens(), decodedMessage.getTokens());
-   }
-
-   /*
-    * public void testReceiveMessage() throws Exception { Message msg = new
-    * MessageImpl(); ReceiveMessage message = new ReceiveMessage(msg);
-    * AbstractPacketCodec codec = new ReceiveMessageCodec();
-    * 
-    * byte[] messageBytes = message.getMessage().encode().array();
-    * 
-    * Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
-    * messageBytes);
-    * 
-    * assertTrue(decodedPacket instanceof ReceiveMessage); ReceiveMessage
-    * decodedMessage = (ReceiveMessage) decodedPacket; assertEquals(RECEIVE_MSG,
-    * decodedMessage.getType());
-    * assertEquals(message.getMessage().getMessageID(), decodedMessage
-    * .getMessage().getMessageID()); }
-    */
-
-   public void testSessionAcknowledgeMessage() throws Exception
-   {
-      SessionAcknowledgeMessage message = new SessionAcknowledgeMessage(
-            randomLong(), randomBoolean());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getDeliveryID(), message.isAllUpTo());
-
-      assertTrue(decodedPacket instanceof SessionAcknowledgeMessage);
-      SessionAcknowledgeMessage decodedMessage = (SessionAcknowledgeMessage) decodedPacket;
-      assertEquals(SESS_ACKNOWLEDGE, decodedMessage.getType());
-      assertEquals(message.getDeliveryID(), decodedMessage.getDeliveryID());
-      assertEquals(message.isAllUpTo(), decodedMessage.isAllUpTo());
-   }
-
-   public void testSessionCancelMessage() throws Exception
-   {
-      SessionCancelMessage message = new SessionCancelMessage(randomLong(),
-            randomBoolean());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getDeliveryID(), message.isExpired());
-
-      assertTrue(decodedPacket instanceof SessionCancelMessage);
-      SessionCancelMessage decodedMessage = (SessionCancelMessage) decodedPacket;
-      assertEquals(SESS_CANCEL, decodedMessage.getType());
-      assertEquals(message.getDeliveryID(), decodedMessage.getDeliveryID());
-      assertEquals(message.isExpired(), decodedMessage.isExpired());
-   }
-
-   public void testSessionCommitMessage() throws Exception
-   {
-      Packet message = new EmptyPacket(SESS_COMMIT);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message);
-
-      assertEquals(SESS_COMMIT, decodedPacket.getType());
-   }
-
-   public void testSessionRollbackMessage() throws Exception
-   {
-      Packet message = new EmptyPacket(SESS_ROLLBACK);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message);
-
-      assertEquals(SESS_ROLLBACK, decodedPacket.getType());
-   }
-
-   public void testSessionRecoverMessage() throws Exception
-   {
-      Packet message = new EmptyPacket(SESS_RECOVER);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message);
-
-      assertEquals(SESS_RECOVER, decodedPacket.getType());
-   }
-
-   public void testCloseMessage() throws Exception
-   {
-      Packet message = new EmptyPacket(CLOSE);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message);
-
-      assertEquals(CLOSE, decodedPacket.getType());
-   }
-
-   public void testSessionCreateBrowserMessage() throws Exception
-   {
-      SimpleString destination = new SimpleString(
-            "queue.testCreateBrowserRequest");
-      SessionCreateBrowserMessage request = new SessionCreateBrowserMessage(
-            destination, new SimpleString("color = 'red'"));
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(request, request
-            .getQueueName(),
-            new NullableStringHolder(request.getFilterString()));
-
-      assertTrue(decodedPacket instanceof SessionCreateBrowserMessage);
-      SessionCreateBrowserMessage decodedRequest = (SessionCreateBrowserMessage) decodedPacket;
-      assertEquals(SESS_CREATEBROWSER, decodedRequest.getType());
-      assertEquals(request.getQueueName(), decodedRequest.getQueueName());
-      assertEquals(request.getFilterString(), decodedRequest.getFilterString());
-   }
-
-   public void testSessionCreateBrowserResponseMessage() throws Exception
-   {
-      SessionCreateBrowserResponseMessage response = new SessionCreateBrowserResponseMessage(
-            randomLong());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(response, response
-            .getBrowserTargetID());
-
-      assertTrue(decodedPacket instanceof SessionCreateBrowserResponseMessage);
-      SessionCreateBrowserResponseMessage decodedResponse = (SessionCreateBrowserResponseMessage) decodedPacket;
-      assertEquals(SESS_CREATEBROWSER_RESP, decodedResponse.getType());
-      assertEquals(response.getBrowserTargetID(), decodedResponse
-            .getBrowserTargetID());
-   }
-
-   public void testBrowserResetMessage() throws Exception
-   {
-      Packet message = new EmptyPacket(SESS_BROWSER_RESET);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message);
-
-      assertEquals(SESS_BROWSER_RESET, decodedPacket.getType());
-   }
-
-   public void testBrowserHasNextMessageRequest() throws Exception
-   {
-      Packet request = new EmptyPacket(SESS_BROWSER_HASNEXTMESSAGE);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(request);
-
-      assertEquals(SESS_BROWSER_HASNEXTMESSAGE, decodedPacket.getType());
-   }
-
-   public void testSessionBrowserHasNextMessageResponseMessage()
-         throws Exception
-   {
-      SessionBrowserHasNextMessageResponseMessage response = new SessionBrowserHasNextMessageResponseMessage(
-            randomBoolean());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(response, response
-            .hasNext());
-
-      assertTrue(decodedPacket instanceof SessionBrowserHasNextMessageResponseMessage);
-      SessionBrowserHasNextMessageResponseMessage decodedResponse = (SessionBrowserHasNextMessageResponseMessage) decodedPacket;
-      assertEquals(SESS_BROWSER_HASNEXTMESSAGE_RESP, decodedResponse.getType());
-      assertEquals(response.hasNext(), decodedResponse.hasNext());
-   }
-
-   public void testBrowserNextMessageRequest() throws Exception
-   {
-      Packet request = new EmptyPacket(SESS_BROWSER_NEXTMESSAGE);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(request);
-
-      assertEquals(SESS_BROWSER_NEXTMESSAGE, decodedPacket.getType());
-   }
-
-   public void testSessionXACommitMessage() throws Exception
-   {
-      SessionXACommitMessage message = new SessionXACommitMessage(randomXid(),
-            randomBoolean());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getXid(), message.isOnePhase());
-
-      assertTrue(decodedPacket instanceof SessionXACommitMessage);
-      SessionXACommitMessage decodedMessage = (SessionXACommitMessage) decodedPacket;
-      assertEquals(SESS_XA_COMMIT, decodedMessage.getType());
-      assertEquals(message.getXid(), decodedMessage.getXid());
-      assertEquals(message.isOnePhase(), decodedMessage.isOnePhase());
-   }
-
-   public void testSessionXAEndMessage() throws Exception
-   {
-      SessionXAEndMessage message = new SessionXAEndMessage(randomXid(),
-            randomBoolean());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getXid(), message.isFailed());
-
-      assertTrue(decodedPacket instanceof SessionXAEndMessage);
-      SessionXAEndMessage decodedMessage = (SessionXAEndMessage) decodedPacket;
-      assertEquals(SESS_XA_END, decodedMessage.getType());
-      assertEquals(message.getXid(), decodedMessage.getXid());
-      assertEquals(message.isFailed(), decodedMessage.isFailed());
-   }
-
-   public void testSessionXAForgetMessage() throws Exception
-   {
-      SessionXAForgetMessage message = new SessionXAForgetMessage(randomXid());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getXid());
-
-      assertTrue(decodedPacket instanceof SessionXAForgetMessage);
-      SessionXAForgetMessage decodedMessage = (SessionXAForgetMessage) decodedPacket;
-      assertEquals(SESS_XA_FORGET, decodedMessage.getType());
-      assertEquals(message.getXid(), decodedMessage.getXid());
-   }
-
-   public void testSessionXAGetInDoubtXidsMessage() throws Exception
-   {
-      Packet request = new EmptyPacket(SESS_XA_INDOUBT_XIDS);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(request);
-
-      assertEquals(SESS_XA_INDOUBT_XIDS, decodedPacket.getType());
-   }
-
-   public void testSessionXAGetInDoubtXidsResponseMessage() throws Exception
-   {
-      final int numXids = 10;
-      List<Xid> xids = new ArrayList<Xid>();
-      for (int i = 0; i < numXids; i++)
-      {
-         xids.add(randomXid());
-      }
-      SessionXAGetInDoubtXidsResponseMessage message = new SessionXAGetInDoubtXidsResponseMessage(
-            xids);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, xids);
-
-      assertTrue(decodedPacket instanceof SessionXAGetInDoubtXidsResponseMessage);
-      SessionXAGetInDoubtXidsResponseMessage decodedMessage = (SessionXAGetInDoubtXidsResponseMessage) decodedPacket;
-      assertEquals(SESS_XA_INDOUBT_XIDS_RESP, decodedMessage.getType());
-
-      assertSameXids(message.getXids(), decodedMessage.getXids());
-   }
-
-   public void testSessionXAGetTimeoutMessage() throws Exception
-   {
-      Packet message = new EmptyPacket(SESS_XA_GET_TIMEOUT);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message);
-
-      assertEquals(SESS_XA_GET_TIMEOUT, decodedPacket.getType());
-   }
-
-   public void testSessionXAGetTimeoutResponseMessage() throws Exception
-   {
-      SessionXAGetTimeoutResponseMessage message = new SessionXAGetTimeoutResponseMessage(
-            randomInt());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getTimeoutSeconds());
-
-      assertTrue(decodedPacket instanceof SessionXAGetTimeoutResponseMessage);
-      SessionXAGetTimeoutResponseMessage decodedMessage = (SessionXAGetTimeoutResponseMessage) decodedPacket;
-      assertEquals(SESS_XA_GET_TIMEOUT_RESP, decodedMessage.getType());
-      assertEquals(message.getTimeoutSeconds(), decodedMessage
-            .getTimeoutSeconds());
-   }
-
-   public void testSessionXAJoinMessage() throws Exception
-   {
-      SessionXAJoinMessage message = new SessionXAJoinMessage(randomXid());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getXid());
-
-      assertTrue(decodedPacket instanceof SessionXAJoinMessage);
-      SessionXAJoinMessage decodedMessage = (SessionXAJoinMessage) decodedPacket;
-      assertEquals(SESS_XA_JOIN, decodedMessage.getType());
-      assertEquals(message.getXid(), decodedMessage.getXid());
-   }
-
-   public void testSessionXAPrepareMessage() throws Exception
-   {
-      SessionXAPrepareMessage message = new SessionXAPrepareMessage(randomXid());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getXid());
-
-      assertTrue(decodedPacket instanceof SessionXAPrepareMessage);
-      SessionXAPrepareMessage decodedMessage = (SessionXAPrepareMessage) decodedPacket;
-      assertEquals(SESS_XA_PREPARE, decodedMessage.getType());
-      assertEquals(message.getXid(), decodedMessage.getXid());
-   }
-
-   public void testSessionXAResponseMessage() throws Exception
-   {
-      SessionXAResponseMessage message = new SessionXAResponseMessage(
-            randomBoolean(), randomInt(), randomString());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .isError(), message.getResponseCode(), message.getMessage());
-
-      assertTrue(decodedPacket instanceof SessionXAResponseMessage);
-      SessionXAResponseMessage decodedMessage = (SessionXAResponseMessage) decodedPacket;
-      assertEquals(SESS_XA_RESP, decodedMessage.getType());
-      assertEquals(message.isError(), decodedMessage.isError());
-      assertEquals(message.getResponseCode(), decodedMessage.getResponseCode());
-      assertEquals(message.getMessage(), decodedMessage.getMessage());
-   }
-
-   public void testSessionXAResumeMessage() throws Exception
-   {
-      SessionXAResumeMessage message = new SessionXAResumeMessage(randomXid());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getXid());
-
-      assertTrue(decodedPacket instanceof SessionXAResumeMessage);
-      SessionXAResumeMessage decodedMessage = (SessionXAResumeMessage) decodedPacket;
-      assertEquals(SESS_XA_RESUME, decodedMessage.getType());
-      assertEquals(message.getXid(), decodedMessage.getXid());
-   }
-
-   public void testSessionXARollbackMessage() throws Exception
-   {
-      SessionXARollbackMessage message = new SessionXARollbackMessage(
-            randomXid());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getXid());
-
-      assertTrue(decodedPacket instanceof SessionXARollbackMessage);
-      SessionXARollbackMessage decodedMessage = (SessionXARollbackMessage) decodedPacket;
-      assertEquals(SESS_XA_ROLLBACK, decodedMessage.getType());
-      assertEquals(message.getXid(), decodedMessage.getXid());
-   }
-
-   public void testSessionXASetTimeoutMessage() throws Exception
-   {
-      SessionXASetTimeoutMessage message = new SessionXASetTimeoutMessage(
-            randomInt());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getTimeoutSeconds());
-
-      assertTrue(decodedPacket instanceof SessionXASetTimeoutMessage);
-      SessionXASetTimeoutMessage decodedMessage = (SessionXASetTimeoutMessage) decodedPacket;
-      assertEquals(SESS_XA_SET_TIMEOUT, decodedMessage.getType());
-      assertEquals(message.getTimeoutSeconds(), decodedMessage
-            .getTimeoutSeconds());
-   }
-
-   public void testSessionXASetTimeoutResponseMessage() throws Exception
-   {
-      SessionXASetTimeoutResponseMessage message = new SessionXASetTimeoutResponseMessage(
-            randomBoolean());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .isOK());
-
-      assertTrue(decodedPacket instanceof SessionXASetTimeoutResponseMessage);
-      SessionXASetTimeoutResponseMessage decodedMessage = (SessionXASetTimeoutResponseMessage) decodedPacket;
-      assertEquals(SESS_XA_SET_TIMEOUT_RESP, decodedMessage.getType());
-      assertEquals(message.isOK(), decodedMessage.isOK());
-   }
-
-   public void testSessionXAStartMessage() throws Exception
-   {
-      SessionXAStartMessage message = new SessionXAStartMessage(randomXid());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getXid());
-
-      assertTrue(decodedPacket instanceof SessionXAStartMessage);
-      SessionXAStartMessage decodedMessage = (SessionXAStartMessage) decodedPacket;
-      assertEquals(SESS_XA_START, decodedMessage.getType());
-      assertEquals(message.getXid(), decodedMessage.getXid());
-   }
-
-   public void testSessionXASuspendMessage() throws Exception
-   {
-      Packet message = new EmptyPacket(SESS_XA_SUSPEND);
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message);
-
-      assertEquals(SESS_XA_SUSPEND, decodedPacket.getType());
-   }
-
-   public void testSessionRemoveDestinationMessage() throws Exception
-   {
-      SessionRemoveDestinationMessage message = new SessionRemoveDestinationMessage(
-            new SimpleString(randomString()), randomBoolean());
-
-      Packet decodedPacket = encodeAndCheckBytesAndDecode(message, message
-            .getAddress(), message.isTemporary());
-
-      assertTrue(decodedPacket instanceof SessionRemoveDestinationMessage);
-      SessionRemoveDestinationMessage decodedMessage = (SessionRemoveDestinationMessage) decodedPacket;
-      assertEquals(SESS_REMOVE_DESTINATION, decodedMessage.getType());
-      assertEquals(message.getAddress(), decodedMessage.getAddress());
-      assertEquals(message.isTemporary(), decodedMessage.isTemporary());
-   }
-
-    public void testSessionCreateQueueMessage() throws Exception
-    {
-    SessionCreateQueueMessage message = new SessionCreateQueueMessage(
-    new SimpleString(randomString()), new SimpleString(randomString()),
-    new SimpleString(randomString()), randomBoolean(),
-    randomBoolean());
-   
-    Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
-    message.getAddress(), message.getQueueName(), new
-    NullableStringHolder(message.getFilterString()), message.isDurable(),
-    message
-    .isTemporary());
-   
-    assertTrue(decodedPacket instanceof SessionCreateQueueMessage);
-    SessionCreateQueueMessage decodedMessage = (SessionCreateQueueMessage)
-    decodedPacket;
-    assertEquals(SESS_CREATEQUEUE, decodedMessage.getType());
-   
-    assertEquals(message.getAddress(), decodedMessage.getAddress());
-    assertEquals(message.getQueueName(), decodedMessage.getQueueName());
-    assertEquals(message.getFilterString(), decodedMessage.getFilterString());
-    assertEquals(message.isDurable(), decodedMessage.isDurable());
-    assertEquals(message.isTemporary(), decodedMessage.isTemporary());
-   
-    }
-   
-    public void testSessionQueueQueryMessage() throws Exception
-    {
-    SessionQueueQueryMessage message = new SessionQueueQueryMessage(
-    new SimpleString(randomString()));
-   
-    Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
-    message.getQueueName());
-   
-    assertTrue(decodedPacket instanceof SessionQueueQueryMessage);
-    SessionQueueQueryMessage decodedMessage = (SessionQueueQueryMessage)
-    decodedPacket;
-    assertEquals(SESS_QUEUEQUERY, decodedMessage.getType());
-    assertEquals(message.getQueueName(), decodedMessage.getQueueName());
-    }
-   
-    public void testSessionQueueQueryResponseMessage() throws Exception
-    {
-    SessionQueueQueryResponseMessage message = new
-    SessionQueueQueryResponseMessage(
-    randomBoolean(), randomBoolean(), randomInt(), randomInt(),
-    randomInt(), new SimpleString(randomString()), new
-    SimpleString(randomString()));
-   
-    Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
-    message.isExists(), message.isDurable(), message.isTemporary(),
-    message.getMaxSize(), message.getConsumerCount(), message
-    .getMessageCount(), new NullableStringHolder(message.getFilterString()),
-    new NullableStringHolder(message.getAddress()));
-   
-    assertTrue(decodedPacket instanceof SessionQueueQueryResponseMessage);
-    SessionQueueQueryResponseMessage decodedMessage =
-    (SessionQueueQueryResponseMessage) decodedPacket;
-    assertEquals(SESS_QUEUEQUERY_RESP, decodedMessage.getType());
-   
-    assertEquals(message.isExists(), decodedMessage.isExists());
-    assertEquals(message.isDurable(), decodedMessage.isDurable());
-    assertEquals(message.isTemporary(), decodedMessage.isTemporary());
-    assertEquals(message.getConsumerCount(), decodedMessage
-    .getConsumerCount());
-    assertEquals(message.getMessageCount(), decodedMessage.getMessageCount());
-    assertEquals(message.getFilterString(), decodedMessage.getFilterString());
-    assertEquals(message.getAddress(), decodedMessage.getAddress());
-    }
-   
-    public void testSessionAddAddressMessage() throws Exception
-    {
-    SessionAddDestinationMessage message = new SessionAddDestinationMessage(
-    new SimpleString(randomString()), randomBoolean());
-   
-    Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
-    message.getAddress(), message.isTemporary());
-   
-    assertTrue(decodedPacket instanceof SessionAddDestinationMessage);
-    SessionAddDestinationMessage decodedMessage =
-    (SessionAddDestinationMessage) decodedPacket;
-    assertEquals(SESS_ADD_DESTINATION, decodedMessage.getType());
-    assertEquals(message.getAddress(), decodedMessage.getAddress());
-    assertEquals(message.isTemporary(), decodedMessage.isTemporary());
-    }
-   
-    public void testSessionBindingQueryMessage() throws Exception
-    {
-    SessionBindingQueryMessage message = new SessionBindingQueryMessage(
-    new SimpleString(randomString()));
-   
-    Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
-    message.getAddress());
-   
-    assertTrue(decodedPacket instanceof SessionBindingQueryMessage);
-    SessionBindingQueryMessage decodedMessage = (SessionBindingQueryMessage)
-    decodedPacket;
-    assertEquals(SESS_BINDINGQUERY, decodedMessage.getType());
-   
-    assertEquals(message.getAddress(), decodedMessage.getAddress());
-    }
-   
-    public void testSessionBindingQueryResponseMessage() throws Exception
-    {
-    boolean exists = true;
-    List<SimpleString> queueNames = new ArrayList<SimpleString>();
-    queueNames.add(new SimpleString(randomString()));
-    queueNames.add(new SimpleString(randomString()));
-    queueNames.add(new SimpleString(randomString()));
-    SessionBindingQueryResponseMessage message = new
-    SessionBindingQueryResponseMessage(
-    exists, queueNames);
-   
-    Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
-    message.isExists(), message.getQueueNames());
-   
-    assertTrue(decodedPacket instanceof SessionBindingQueryResponseMessage);
-    SessionBindingQueryResponseMessage decodedMessage =
-    (SessionBindingQueryResponseMessage) decodedPacket;
-    assertEquals(SESS_BINDINGQUERY_RESP, decodedMessage.getType());
-    assertEquals(message.isExists(), decodedMessage.isExists());
-   
-    List<SimpleString> decodedNames = decodedMessage.getQueueNames();
-    assertEquals(queueNames.size(), decodedNames.size());
-    for (int i = 0; i < queueNames.size(); i++)
-    {
-    assertEquals(queueNames.get(i), decodedNames.get(i));
-    }
-    }
-   
-    public void testDeleteQueueRequest() throws Exception
-    {
-    SessionDeleteQueueMessage message = new SessionDeleteQueueMessage(
-    new SimpleString(randomString()));
-   
-    Packet decodedPacket = encodeAndCheckBytesAndDecode(message,
-    message.getQueueName());
-   
-    assertTrue(decodedPacket instanceof SessionDeleteQueueMessage);
-    SessionDeleteQueueMessage decodedMessage = (SessionDeleteQueueMessage)
-    decodedPacket;
-    assertEquals(SESS_DELETE_QUEUE, decodedMessage.getType());
-    assertEquals(message.getQueueName(), decodedMessage.getQueueName());
-    }
-
-   // Package protected ---------------------------------------------
-
-   // Protected -----------------------------------------------------
-
-   // Private -------------------------------------------------------
-
-   private static class SimpleProtocolDecoderOutput implements
-         ProtocolDecoderOutput
-   {
-      private Object message;
-
-      public void flush()
-      {
-      }
-
-      public void write(Object message)
-      {
-         this.message = message;
-      }
-
-      public Object getMessage()
-      {
-         return message;
-      }
-
-   }
-
-   private class NullableStringHolder
-   {
-      public SimpleString str;
-
-      NullableStringHolder(SimpleString str)
-      {
-         this.str = str;
-      }
-   }
-}

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/util/TypedPropertiesTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/util/TypedPropertiesTest.java	2008-06-13 20:59:02 UTC (rev 4470)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/util/TypedPropertiesTest.java	2008-06-14 08:35:15 UTC (rev 4471)
@@ -6,28 +6,17 @@
  */
 package org.jboss.messaging.tests.unit.core.util;
 
-import static org.jboss.messaging.tests.unit.core.remoting.impl.wireformat.CodecAssert.assertEqualsByteArrays;
-import static org.jboss.messaging.tests.util.RandomUtil.randomBoolean;
-import static org.jboss.messaging.tests.util.RandomUtil.randomByte;
-import static org.jboss.messaging.tests.util.RandomUtil.randomBytes;
-import static org.jboss.messaging.tests.util.RandomUtil.randomChar;
-import static org.jboss.messaging.tests.util.RandomUtil.randomDouble;
-import static org.jboss.messaging.tests.util.RandomUtil.randomFloat;
-import static org.jboss.messaging.tests.util.RandomUtil.randomInt;
-import static org.jboss.messaging.tests.util.RandomUtil.randomLong;
-import static org.jboss.messaging.tests.util.RandomUtil.randomShort;
-import static org.jboss.messaging.tests.util.RandomUtil.randomSimpleString;
-
-import java.util.Iterator;
-
 import junit.framework.TestCase;
-
 import org.jboss.messaging.core.remoting.impl.mina.IoBufferWrapper;
+import static org.jboss.messaging.tests.unit.core.remoting.impl.CodecAssert.assertEqualsByteArrays;
 import org.jboss.messaging.tests.util.RandomUtil;
+import static org.jboss.messaging.tests.util.RandomUtil.*;
 import org.jboss.messaging.util.MessagingBuffer;
 import org.jboss.messaging.util.SimpleString;
 import org.jboss.messaging.util.TypedProperties;
 
+import java.util.Iterator;
+
 /**
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
  * 




More information about the jboss-cvs-commits mailing list