[jboss-cvs] JBoss Messaging SVN: r6540 - in trunk: tests/src/org/jboss/messaging/tests/integration/management and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Apr 23 10:50:24 EDT 2009


Author: jmesnil
Date: 2009-04-23 10:50:24 -0400 (Thu, 23 Apr 2009)
New Revision: 6540

Modified:
   trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java
   trunk/tests/src/org/jboss/messaging/tests/integration/management/ManagementServiceImplTest.java
Log:
Management message handler

* when the attribute can not be retrieved on the resource, send a reply message containing the root exception
* added tests to check that a reply message is sent when a management message deals with unknown resource or unknown attribute

Modified: trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java	2009-04-23 14:33:45 UTC (rev 6539)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java	2009-04-23 14:50:24 UTC (rev 6540)
@@ -412,8 +412,26 @@
             if (propertyName.equals(ManagementHelper.HDR_ATTRIBUTE))
             {
                SimpleString attribute = (SimpleString)message.getProperty(propertyName);
-               Object result = getAttribute(resourceName.toString(), attribute.toString());
-               ManagementHelper.storeResult(reply, result);
+               try
+               {
+                  Object result = getAttribute(resourceName.toString(), attribute.toString());
+                  ManagementHelper.storeResult(reply, result);
+               }
+               catch (Exception e)
+               {
+                  log.warn("exception while retrieving attribute " + attribute + " on " + resourceName, e);
+                  reply.putBooleanProperty(ManagementHelper.HDR_OPERATION_SUCCEEDED, false);
+                  String exceptionMessage = e.getMessage();
+                  if (e instanceof InvocationTargetException)
+                  {
+                     exceptionMessage = ((InvocationTargetException)e).getTargetException().getMessage();
+                  }
+                  if (e != null)
+                  {
+                     reply.putStringProperty(ManagementHelper.HDR_OPERATION_EXCEPTION,
+                                             new SimpleString(exceptionMessage));
+                  }
+               }
             }
          }
       }

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/management/ManagementServiceImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/management/ManagementServiceImplTest.java	2009-04-23 14:33:45 UTC (rev 6539)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/management/ManagementServiceImplTest.java	2009-04-23 14:50:24 UTC (rev 6540)
@@ -24,29 +24,20 @@
 
 package org.jboss.messaging.tests.integration.management;
 
-import static org.jboss.messaging.tests.util.RandomUtil.randomBoolean;
 import static org.jboss.messaging.tests.util.RandomUtil.randomString;
 
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-
 import org.jboss.messaging.core.buffers.ChannelBuffers;
 import org.jboss.messaging.core.client.management.impl.ManagementHelper;
 import org.jboss.messaging.core.config.Configuration;
 import org.jboss.messaging.core.config.impl.ConfigurationImpl;
 import org.jboss.messaging.core.logging.Logger;
-import org.jboss.messaging.core.management.ManagementService;
 import org.jboss.messaging.core.management.ResourceNames;
-import org.jboss.messaging.core.management.impl.ManagementServiceImpl;
 import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
-import org.jboss.messaging.core.security.Role;
 import org.jboss.messaging.core.server.Messaging;
 import org.jboss.messaging.core.server.MessagingServer;
 import org.jboss.messaging.core.server.ServerMessage;
 import org.jboss.messaging.core.server.impl.ServerMessageImpl;
-import org.jboss.messaging.tests.util.RandomUtil;
 import org.jboss.messaging.tests.util.UnitTestCase;
-import org.jboss.messaging.utils.SimpleString;
 
 /*
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
@@ -118,7 +109,52 @@
       assertNotNull(ManagementHelper.getOperationExceptionMessage(reply));
       server.stop();
    }
+   
+   public void testHandleManagementMessageWithUnknowResource() throws Exception
+   {
+      Configuration conf = new ConfigurationImpl();
+      conf.setJMXManagementEnabled(false);
+      
+      MessagingServer server = Messaging.newMessagingServer(conf, false);
+      server.start();
 
+      // invoke attribute and operation on the server
+      ServerMessage message = new ServerMessageImpl();
+      MessagingBuffer body = ChannelBuffers.buffer(2048);
+      message.setBody(body);
+      ManagementHelper.putOperationInvocation(message,
+                                              "Resouce.Does.Not.Exist",
+                                              "toString");
+      
+      ServerMessage reply = server.getManagementService().handleMessage(message);
+
+      
+      assertFalse(ManagementHelper.hasOperationSucceeded(reply));
+      assertNotNull(ManagementHelper.getOperationExceptionMessage(reply));
+      server.stop();
+   }
+
+   public void testHandleManagementMessageWithUnknowAttribute() throws Exception
+   {
+      Configuration conf = new ConfigurationImpl();
+      conf.setJMXManagementEnabled(false);
+      
+      MessagingServer server = Messaging.newMessagingServer(conf, false);
+      server.start();
+
+      // invoke attribute and operation on the server
+      ServerMessage message = new ServerMessageImpl();
+      MessagingBuffer body = ChannelBuffers.buffer(2048);
+      message.setBody(body);
+      ManagementHelper.putAttribute(message, ResourceNames.CORE_SERVER, "Attribute.Does.Not.Exist");
+      
+      ServerMessage reply = server.getManagementService().handleMessage(message);
+
+      
+      assertFalse(ManagementHelper.hasOperationSucceeded(reply));
+      assertNotNull(ManagementHelper.getOperationExceptionMessage(reply));
+      server.stop();
+   }
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------




More information about the jboss-cvs-commits mailing list