[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