[jboss-cvs] JBoss Messaging SVN: r4791 - in trunk: tests/src/org/jboss/messaging/tests/unit/core/server/impl and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Aug 11 03:57:25 EDT 2008


Author: jmesnil
Date: 2008-08-11 03:57:24 -0400 (Mon, 11 Aug 2008)
New Revision: 4791

Modified:
   trunk/src/main/org/jboss/messaging/core/server/impl/MessageReferenceImpl.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessageReferenceImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java
Log:
in MessageReferenceImpl, removed code duplication and fixed formatting

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/MessageReferenceImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/MessageReferenceImpl.java	2008-08-08 19:30:38 UTC (rev 4790)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/MessageReferenceImpl.java	2008-08-11 07:57:24 UTC (rev 4791)
@@ -137,41 +137,13 @@
 
       if (maxDeliveries > 0 && deliveryCount >= maxDeliveries)
       {
-         SimpleString DLQ = queueSettingsRepository.getMatch(
-               queue.getName().toString()).getDLQ();
-
-         Transaction tx = new TransactionImpl(persistenceManager, postOffice);
-
-         if (DLQ != null)
-         {
-            Binding binding = postOffice.getBinding(DLQ);
-
-            if (binding == null)
-            {
-               binding = postOffice.addBinding(DLQ, DLQ, null, true, false);
-            }
-
-            ServerMessage copyMessage = makeCopyForDLQOrExpiry(false,
-                  persistenceManager);
-            copyMessage.setDestination(binding.getAddress());
-
-            tx.addMessage(copyMessage);
-
-            tx.addAcknowledgement(this);
-         } else
-         {
-            // No DLQ
-
-            log
-                  .warn("Message has reached maximum delivery attempts, no DLQ is configured so dropping it");
-
-            tx.addAcknowledgement(this);
-         }
-
-         tx.commit();
-
+         log
+         .warn("Message has reached maximum delivery attempts, sending it to DLQ");
+         sendToDLQ(persistenceManager, postOffice, queueSettingsRepository);
+         
          return false;
-      } else
+      } 
+      else
       {
          queue.referenceCancelled();
 
@@ -187,30 +159,20 @@
       SimpleString dlq = queueSettingsRepository.getMatch(
             queue.getName().toString()).getDLQ();
 
-      Transaction tx = new TransactionImpl(persistenceManager, postOffice);
-
       if (dlq != null)
       {
-         Binding binding = postOffice.getBinding(dlq);
+         Binding dlqBinding = postOffice.getBinding(dlq);
 
-         if (binding == null)
+         if (dlqBinding == null)
          {
-            binding = postOffice.addBinding(dlq, dlq, null, true, false);
+            dlqBinding = postOffice.addBinding(dlq, dlq, null, true, false);
          }
 
-         ServerMessage copyMessage = makeCopyForDLQOrExpiry(false,
-               persistenceManager);
-         copyMessage.setDestination(binding.getAddress());
-
-         tx.addMessage(copyMessage);
-
-         tx.addAcknowledgement(this);
-
-         tx.commit();
+         move(dlqBinding, persistenceManager, postOffice, false);
       } else
       {
          throw new IllegalStateException("No DLQ configured for queue "
-               + queue.getName());
+               + queue.getName() + ", so dropping it");
       }
    }
    
@@ -222,51 +184,35 @@
       SimpleString expiryQueue = queueSettingsRepository.getMatch(
             queue.getName().toString()).getExpiryQueue();
 
-      Transaction tx = new TransactionImpl(persistenceManager, postOffice);
-
       if (expiryQueue != null)
       {
-         Binding binding = postOffice.getBinding(expiryQueue);
+         Binding expiryBinding = postOffice.getBinding(expiryQueue);
 
-         if (binding == null)
+         if (expiryBinding == null)
          {
-            binding = postOffice.addBinding(expiryQueue, expiryQueue, null,
+            expiryBinding = postOffice.addBinding(expiryQueue, expiryQueue, null,
                   true, false);
          }
-
-         ServerMessage copyMessage = makeCopyForDLQOrExpiry(true,
-               persistenceManager);
-
-         copyMessage.setDestination(binding.getAddress());
-
-         tx.addMessage(copyMessage);
-
-         tx.addAcknowledgement(this);
-      } else
+         
+         move(expiryBinding, persistenceManager, postOffice, true);
+      } 
+      else
       {
          log
                .warn("Message has expired, no expiry queue is configured so dropping it");
 
+         Transaction tx = new TransactionImpl(persistenceManager, postOffice);
          tx.addAcknowledgement(this);
+         tx.commit();
       }
 
-      tx.commit();
    }
    
    public void move(final Binding otherBinding,
          final StorageManager persistenceManager, final PostOffice postOffice)
-         throws Exception
+   throws Exception
    {
-      Transaction tx = new TransactionImpl(persistenceManager, postOffice);
-
-      ServerMessage copyMessage = message.copy();
-      copyMessage.setDestination(otherBinding.getAddress());
-
-      tx.addMessage(copyMessage);
-
-      tx.addAcknowledgement(this);
-
-      tx.commit();
+      move(otherBinding, persistenceManager, postOffice, false);
    }
 
    // Public --------------------------------------------------------
@@ -282,8 +228,24 @@
    
    // Private -------------------------------------------------------
    
-   private ServerMessage makeCopyForDLQOrExpiry(final boolean expiry, final StorageManager pm) throws Exception
+   private void move(final Binding otherBinding,
+         final StorageManager persistenceManager, final PostOffice postOffice, final boolean expiry)
+         throws Exception
    {
+      Transaction tx = new TransactionImpl(persistenceManager, postOffice);
+
+      ServerMessage copyMessage = makeCopy(expiry, persistenceManager);
+      copyMessage.setDestination(otherBinding.getAddress());
+
+      tx.addMessage(copyMessage);
+
+      tx.addAcknowledgement(this);
+
+      tx.commit();
+   }
+   
+   private ServerMessage makeCopy(final boolean expiry, final StorageManager pm) throws Exception
+   {
       /*
        We copy the message and send that to the dlq/expiry queue - this is
        because otherwise we may end up with a ref with the same message id in the

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessageReferenceImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessageReferenceImplTest.java	2008-08-08 19:30:38 UTC (rev 4790)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessageReferenceImplTest.java	2008-08-11 07:57:24 UTC (rev 4791)
@@ -318,9 +318,11 @@
 
    public void testMove() throws Exception
    {
+      SimpleString fromAddress = RandomUtil.randomSimpleString();
       SimpleString toAddress = RandomUtil.randomSimpleString();
       long tid = RandomUtil.randomLong();
       long messageID = RandomUtil.randomLong();
+      long newMessageID = RandomUtil.randomLong();
       
       Queue queue = EasyMock.createStrictMock(Queue.class);
       Binding toBinding = EasyMock.createStrictMock(Binding.class);
@@ -333,6 +335,11 @@
 
       EasyMock.expect(persistenceManager.generateTransactionID()).andReturn(tid);
       EasyMock.expect(serverMessage.copy()).andReturn(copyMessage);
+      EasyMock.expect(persistenceManager.generateMessageID()).andReturn(newMessageID);
+      copyMessage.setMessageID(newMessageID);
+      EasyMock.expect(copyMessage.getDestination()).andReturn(fromAddress);
+      copyMessage.putStringProperty(MessageImpl.HDR_ORIGIN_QUEUE, fromAddress);
+      copyMessage.setExpiration(0);
       EasyMock.expect(toBinding.getAddress()).andStubReturn(toAddress);
       copyMessage.setDestination(toAddress);
       EasyMock.expect(postOffice.route(copyMessage)).andReturn(new ArrayList<MessageReference>());

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java	2008-08-08 19:30:38 UTC (rev 4790)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java	2008-08-11 07:57:24 UTC (rev 4791)
@@ -1516,6 +1516,7 @@
    public void testMoveMessage() throws Exception
    {
       long messageID = randomLong();
+      long newMessageID = randomLong();
       long tid = randomLong();
       final SimpleString toQueueName = new SimpleString("toQueueName");
       Queue queue = new QueueImpl(1, queue1, null, false, true, false, -1, scheduledExecutor);
@@ -1523,6 +1524,7 @@
     
       MessageReference messageReference = generateReference(queue, messageID);
       StorageManager storageManager = EasyMock.createMock(StorageManager.class);
+      EasyMock.expect(storageManager.generateMessageID()).andReturn(newMessageID);
       EasyMock.expect(storageManager.generateTransactionID()).andReturn(tid);
       storageManager.storeDeleteTransactional(EasyMock.anyLong(), EasyMock.eq(messageID));
       storageManager.commit(EasyMock.anyLong());




More information about the jboss-cvs-commits mailing list