[jboss-cvs] JBoss Messaging SVN: r4748 - in branches/Branch_JBMESSAGING-1303: src/main/org/jboss/messaging/core/management/impl and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jul 30 05:34:22 EDT 2008
Author: jmesnil
Date: 2008-07-30 05:34:22 -0400 (Wed, 30 Jul 2008)
New Revision: 4748
Modified:
branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/management/QueueControlMBean.java
branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/management/impl/QueueControl.java
branches/Branch_JBMESSAGING-1303/tests/src/org/jboss/messaging/tests/unit/core/management/impl/QueueControlTest.java
Log:
JBMESSAGING-1303: Revisit management interfaces
* added operation changeMessagePriority(messageID, newPriority) to QueueControlMBean
Modified: branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/management/QueueControlMBean.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/management/QueueControlMBean.java 2008-07-29 22:12:33 UTC (rev 4747)
+++ branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/management/QueueControlMBean.java 2008-07-30 09:34:22 UTC (rev 4748)
@@ -90,12 +90,17 @@
boolean expireMessage(
@Parameter(name = "messageID", desc = "A message ID") long messageID)
throws Exception;
-
+
@Operation(desc = "Move the message corresponding to the given messageID to another queue", impact = ACTION)
boolean moveMessage(
@Parameter(name = "messageID", desc = "A message ID") long messageID,
@Parameter(name = "otherQueueName", desc = "The name of the queue to move the message to") String otherQueueName)
throws Exception;
-
+ @Operation(desc = "Change the priority of the message corresponding to the given messageID", impact = ACTION)
+ boolean changeMessagePriority(
+ @Parameter(name = "messageID", desc = "A message ID") long messageID,
+ @Parameter(name = "newPriority", desc = "the new priority (between 0 and 9)") int newPriority)
+ throws Exception;
+
}
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-29 22:12:33 UTC (rev 4747)
+++ branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/management/impl/QueueControl.java 2008-07-30 09:34:22 UTC (rev 4748)
@@ -263,6 +263,26 @@
}
return false;
}
+
+ public boolean changeMessagePriority(long messageID, int newPriority)
+ throws Exception
+ {
+ if (newPriority < 0 || newPriority > 9)
+ {
+ throw new IllegalArgumentException("invalid newPriority value: " + newPriority + ". It must be between 0 and 9 (both included)");
+ }
+ List<MessageReference> refs = queue.list(null);
+ for (MessageReference ref : refs)
+ {
+ ServerMessage message = ref.getMessage();
+ if (message.getMessageID() == messageID)
+ {
+ message.setPriority((byte) newPriority);
+ return true;
+ }
+ }
+ return false;
+ }
// StandardMBean overrides ---------------------------------------
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-29 22:12:33 UTC (rev 4747)
+++ branches/Branch_JBMESSAGING-1303/tests/src/org/jboss/messaging/tests/unit/core/management/impl/QueueControlTest.java 2008-07-30 09:34:22 UTC (rev 4748)
@@ -584,13 +584,15 @@
HierarchicalRepository<QueueSettings> repository = createMock(HierarchicalRepository.class);
ref.move(otherBinding, storageManager, postOffice);
- replay(queue, storageManager, postOffice, repository, ref, message, otherBinding);
+ replay(queue, storageManager, postOffice, repository, ref, message,
+ otherBinding);
QueueControlMBean control = new QueueControl(queue, storageManager,
postOffice, repository);
assertTrue(control.moveMessage(messageID, otherQueueName.toString()));
- verify(queue, storageManager, postOffice, repository, ref, message, otherBinding);
+ verify(queue, storageManager, postOffice, repository, ref, message,
+ otherBinding);
}
public void testMoveMessageWithNoQueue() throws Exception
@@ -632,7 +634,7 @@
expect(postOffice.getBinding(otherQueueName)).andReturn(otherBinding);
HierarchicalRepository<QueueSettings> repository = createMock(HierarchicalRepository.class);
- replay(queue, storageManager, postOffice, repository,otherBinding);
+ replay(queue, storageManager, postOffice, repository, otherBinding);
QueueControl control = new QueueControl(queue, storageManager,
postOffice, repository);
@@ -641,7 +643,84 @@
verify(queue, storageManager, postOffice, repository, otherBinding);
}
+ public void testChangeMessagePriority() throws Exception
+ {
+ long messageID = randomLong();
+ int newPriority = 5;
+ 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);
+ message.setPriority((byte) newPriority);
+ refs.add(ref);
+ Queue queue = createMock(Queue.class);
+ expect(queue.list(null)).andReturn(refs);
+ StorageManager storageManager = createMock(StorageManager.class);
+ PostOffice postOffice = createMock(PostOffice.class);
+ HierarchicalRepository<QueueSettings> repository = createMock(HierarchicalRepository.class);
+ replay(queue, storageManager, postOffice, repository, ref, message);
+
+ QueueControl control = new QueueControl(queue, storageManager,
+ postOffice, repository);
+ assertTrue(control.changeMessagePriority(messageID, newPriority));
+
+ verify(queue, storageManager, postOffice, repository, ref, message);
+ }
+
+ public void testChangeMessagePriorityWithInvalidPriorityValues()
+ throws Exception
+ {
+ long messageID = randomLong();
+ Queue queue = createMock(Queue.class);
+ StorageManager storageManager = createMock(StorageManager.class);
+ PostOffice postOffice = createMock(PostOffice.class);
+ HierarchicalRepository<QueueSettings> repository = createMock(HierarchicalRepository.class);
+
+ replay(queue, storageManager, postOffice, repository);
+
+ QueueControl control = new QueueControl(queue, storageManager,
+ postOffice, repository);
+
+ try
+ {
+ control.changeMessagePriority(messageID, -1);
+ fail("IllegalArgumentException");
+ } catch (IllegalArgumentException e)
+ {
+ }
+
+ try
+ {
+ control.changeMessagePriority(messageID, 10);
+ fail("IllegalArgumentException");
+ } catch (IllegalArgumentException e)
+ {
+ }
+
+ verify(queue, storageManager, postOffice, repository);
+ }
+
+ public void testChangeMessagePriorityWithNoMessageID() throws Exception
+ {
+ long messageID = randomLong();
+ int newPriority = 5;
+ Queue queue = createMock(Queue.class);
+ expect(queue.list(null)).andReturn(new ArrayList<MessageReference>());
+ StorageManager storageManager = createMock(StorageManager.class);
+ PostOffice postOffice = createMock(PostOffice.class);
+ HierarchicalRepository<QueueSettings> repository = createMock(HierarchicalRepository.class);
+
+ replay(queue, storageManager, postOffice, repository);
+
+ QueueControl control = new QueueControl(queue, storageManager,
+ postOffice, repository);
+ assertFalse(control.changeMessagePriority(messageID, newPriority));
+
+ verify(queue, storageManager, postOffice, repository);
+ }
+
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
More information about the jboss-cvs-commits
mailing list