[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