[jboss-cvs] JBoss Messaging SVN: r4759 - in branches/Branch_JBMESSAGING-1303: src/main/org/jboss/messaging/core/server and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jul 31 09:10:12 EDT 2008
Author: jmesnil
Date: 2008-07-31 09:10:12 -0400 (Thu, 31 Jul 2008)
New Revision: 4759
Modified:
branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/management/impl/QueueControl.java
branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/server/Queue.java
branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java
branches/Branch_JBMESSAGING-1303/tests/src/org/jboss/messaging/tests/unit/core/management/impl/QueueControlTest.java
branches/Branch_JBMESSAGING-1303/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java
Log:
JBMESSAGING-1303: Revisit management interfaces
* added method Queue.sendMessageToDLQ()
Modified: branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/management/impl/QueueControl.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/management/impl/QueueControl.java 2008-07-31 12:10:55 UTC (rev 4758)
+++ branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/management/impl/QueueControl.java 2008-07-31 13:10:12 UTC (rev 4759)
@@ -267,17 +267,7 @@
public boolean sendMessageToDLQ(long messageID) throws Exception
{
- List<MessageReference> refs = queue.list(null);
- for (MessageReference ref : refs)
- {
- ServerMessage message = ref.getMessage();
- if (message.getMessageID() == messageID)
- {
- ref.sendToDLQ(storageManager, postOffice, queueSettingsRepository);
- return queue.deleteReference(messageID, storageManager);
- }
- }
- return false;
+ return queue.sendMessageToDLQ(messageID, storageManager, postOffice, queueSettingsRepository);
}
public boolean changeMessagePriority(long messageID, int newPriority)
Modified: branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/server/Queue.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/server/Queue.java 2008-07-31 12:10:55 UTC (rev 4758)
+++ branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/server/Queue.java 2008-07-31 13:10:12 UTC (rev 4759)
@@ -121,8 +121,16 @@
boolean deleteReference(long messageID, StorageManager storageManager)
throws Exception;
- boolean expireMessage(long messageID, StorageManager storageManager, PostOffice postOffice, HierarchicalRepository<QueueSettings> queueSettingsRepository) throws Exception;
+ boolean expireMessage(long messageID, StorageManager storageManager,
+ PostOffice postOffice,
+ HierarchicalRepository<QueueSettings> queueSettingsRepository)
+ throws Exception;
+ boolean sendMessageToDLQ(long messageID, StorageManager storageManager,
+ PostOffice postOffice,
+ HierarchicalRepository<QueueSettings> queueSettingsRepository)
+ throws Exception;
+
void lock();
void unlock();
Modified: branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java 2008-07-31 12:10:55 UTC (rev 4758)
+++ branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java 2008-07-31 13:10:12 UTC (rev 4759)
@@ -543,7 +543,26 @@
}
return false;
}
+
+ public boolean sendMessageToDLQ(final long messageID, final StorageManager storageManager,
+ final PostOffice postOffice, final HierarchicalRepository<QueueSettings> queueSettingsRepository) throws Exception
+ {
+ Iterator<MessageReference> iter = messageReferences.iterator();
+ while (iter.hasNext())
+ {
+ MessageReference ref = iter.next();
+ if (ref.getMessage().getMessageID() == messageID)
+ {
+ deliveringCount.incrementAndGet();
+ ref.sendToDLQ(storageManager, postOffice, queueSettingsRepository);
+ iter.remove();
+ return true;
+ }
+ }
+ return false;
+ }
+
// Public
// -----------------------------------------------------------------------------
Modified: branches/Branch_JBMESSAGING-1303/tests/src/org/jboss/messaging/tests/unit/core/management/impl/QueueControlTest.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/tests/src/org/jboss/messaging/tests/unit/core/management/impl/QueueControlTest.java 2008-07-31 12:10:55 UTC (rev 4758)
+++ branches/Branch_JBMESSAGING-1303/tests/src/org/jboss/messaging/tests/unit/core/management/impl/QueueControlTest.java 2008-07-31 13:10:12 UTC (rev 4759)
@@ -770,27 +770,19 @@
{
long messageID = randomLong();
- List<MessageReference> refs = new ArrayList<MessageReference>();
- MessageReference ref = createMock(MessageReference.class);
- ServerMessage message = createMock(ServerMessage.class);
- expect(message.getMessageID()).andStubReturn(messageID);
- expect(ref.getMessage()).andReturn(message);
- refs.add(ref);
Queue queue = createMock(Queue.class);
StorageManager storageManager = createMock(StorageManager.class);
- expect(queue.list(null)).andReturn(refs);
PostOffice postOffice = createMock(PostOffice.class);
HierarchicalRepository<QueueSettings> repository = createMock(HierarchicalRepository.class);
- ref.sendToDLQ(storageManager, postOffice, repository);
- expect(queue.deleteReference(messageID, storageManager)).andReturn(true);
+ expect(queue.sendMessageToDLQ(messageID, storageManager, postOffice, repository)).andReturn(true);
- replay(queue, storageManager, postOffice, repository, ref, message);
+ replay(queue, storageManager, postOffice, repository);
QueueControlMBean control = new QueueControl(queue, storageManager,
postOffice, repository);
assertTrue(control.sendMessageToDLQ(messageID));
- verify(queue, storageManager, postOffice, repository, ref, message);
+ verify(queue, storageManager, postOffice, repository);
}
public void testSendMessageToDLQWithNoMessageID() throws Exception
@@ -799,9 +791,9 @@
Queue queue = createMock(Queue.class);
StorageManager storageManager = createMock(StorageManager.class);
- expect(queue.list(null)).andReturn(new ArrayList<MessageReference>());
PostOffice postOffice = createMock(PostOffice.class);
HierarchicalRepository<QueueSettings> repository = createMock(HierarchicalRepository.class);
+ expect(queue.sendMessageToDLQ(messageID, storageManager, postOffice, repository)).andReturn(false);
replay(queue, storageManager, postOffice, repository);
Modified: branches/Branch_JBMESSAGING-1303/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java 2008-07-31 12:10:55 UTC (rev 4758)
+++ branches/Branch_JBMESSAGING-1303/tests/src/org/jboss/messaging/tests/unit/core/server/impl/QueueImplTest.java 2008-07-31 13:10:12 UTC (rev 4759)
@@ -1433,11 +1433,11 @@
HierarchicalRepository<QueueSettings> queueSettingsRepository = EasyMock.createMock(HierarchicalRepository.class);
QueueSettings queueSettings = new QueueSettings()
{
- @Override
- public SimpleString getExpiryQueue()
- {
- return expiryQueue;
- }
+ @Override
+ public SimpleString getExpiryQueue()
+ {
+ return expiryQueue;
+ }
};
EasyMock.expect(queueSettingsRepository.getMatch(queue1.toString())).andStubReturn(queueSettings);
@@ -1462,7 +1462,54 @@
EasyMock.verify(storageManager, postOffice, queueSettingsRepository, expiryBinding);
}
+ public void testSendMessageToDLQ() throws Exception
+ {
+ long messageID = randomLong();
+ final SimpleString dlqName = new SimpleString("dlq");
+ Queue queue = new QueueImpl(1, queue1, null, false, true, false, -1, scheduledExecutor);
+ MessageReference messageReference = generateReference(queue, messageID);
+ StorageManager storageManager = EasyMock.createMock(StorageManager.class);
+ EasyMock.expect(storageManager.generateTransactionID()).andReturn(randomLong());
+ EasyMock.expect(storageManager.generateMessageID()).andReturn(randomLong());
+ storageManager.storeDeleteTransactional(EasyMock.anyLong(), EasyMock.eq(messageID));
+ storageManager.commit(EasyMock.anyLong());
+ PostOffice postOffice = EasyMock.createMock(PostOffice.class);
+ Binding dlqBinding = EasyMock.createMock(Binding.class);
+ EasyMock.expect(dlqBinding.getAddress()).andStubReturn(dlqName);
+ EasyMock.expect(postOffice.getBinding(dlqName)).andReturn(dlqBinding );
+ EasyMock.expect(postOffice.route(EasyMock.isA(ServerMessage.class))).andReturn(new ArrayList<MessageReference>());
+ HierarchicalRepository<QueueSettings> queueSettingsRepository = EasyMock.createMock(HierarchicalRepository.class);
+ QueueSettings queueSettings = new QueueSettings()
+ {
+ @Override
+ public SimpleString getDLQ()
+ {
+ return dlqName;
+ }
+ };
+ EasyMock.expect(queueSettingsRepository.getMatch(queue1.toString())).andStubReturn(queueSettings);
+ EasyMock.replay(storageManager, postOffice, queueSettingsRepository, dlqBinding);
+
+ assertEquals(0, queue.getMessageCount());
+ assertEquals(0, queue.getDeliveringCount());
+ assertEquals(0, queue.getSizeBytes());
+
+ queue.addLast(messageReference);
+
+ assertEquals(1, queue.getMessageCount());
+ assertEquals(0, queue.getDeliveringCount());
+ assertTrue(queue.getSizeBytes() > 0);
+
+ queue.sendMessageToDLQ(messageID, storageManager , postOffice, queueSettingsRepository);
+
+ assertEquals(0, queue.getMessageCount());
+ assertEquals(0, queue.getDeliveringCount());
+ assertEquals(0, queue.getSizeBytes());
+
+ EasyMock.verify(storageManager, postOffice, queueSettingsRepository, dlqBinding);
+ }
+
// Inner classes ---------------------------------------------------------------
class AddtoQueueRunner implements Runnable
More information about the jboss-cvs-commits
mailing list