[jboss-cvs] JBossAS SVN: r101091 - projects/test/trunk/src/main/java/org/jboss/test/jms.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Feb 17 16:47:44 EST 2010


Author: clebert.suconic at jboss.com
Date: 2010-02-17 16:47:44 -0500 (Wed, 17 Feb 2010)
New Revision: 101091

Modified:
   projects/test/trunk/src/main/java/org/jboss/test/jms/HornetQTestAdmin.java
Log:
Changes on the SecuritySettings

Modified: projects/test/trunk/src/main/java/org/jboss/test/jms/HornetQTestAdmin.java
===================================================================
--- projects/test/trunk/src/main/java/org/jboss/test/jms/HornetQTestAdmin.java	2010-02-17 20:12:50 UTC (rev 101090)
+++ projects/test/trunk/src/main/java/org/jboss/test/jms/HornetQTestAdmin.java	2010-02-17 21:47:44 UTC (rev 101091)
@@ -28,13 +28,11 @@
 import javax.management.InstanceNotFoundException;
 import javax.management.MBeanException;
 import javax.management.MBeanServerConnection;
-import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 import javax.management.ReflectionException;
 import javax.naming.InitialContext;
 
 import org.jboss.logging.Logger;
-import org.jboss.util.NestedRuntimeException;
 
 /**
  * 
@@ -48,19 +46,9 @@
    /** The static log */
    private static final Logger staticLog = Logger.getLogger(HornetQTestAdmin.class);
 
-   protected static final ObjectName hornetQJMSServerName;
+   protected final ObjectName hornetQJMSServerName = new ObjectName("org.hornetq:module=JMS,type=Server");
 
-   static
-   {
-      try
-      {
-         hornetQJMSServerName = new ObjectName("org.hornetq:module=JMS,type=Server");
-      } catch (Throwable e)
-      {
-         staticLog.warn("Error initializing JMX Name", e);
-         throw new NestedRuntimeException(e);
-      }
-   }
+   protected final ObjectName hornetQCoreServerName = new ObjectName("org.hornetq:module=Core,type=Server");
 
    public HornetQTestAdmin() throws Exception
    {
@@ -75,80 +63,101 @@
       createQueue(name, "/queue/" + name, securityConfig);
    }
 
-   private void addRoles(boolean isTopic, String address, TestRole[] securityConf) throws Exception
+   private void addRoles(String address, TestRole[] securityConf) throws Exception
    {
 
       if (securityConf == null || securityConf.length == 0)
       {
          securityConf = new TestRole[]{ new TestRole("guest", true, true, true) };
       }
-
-      ObjectName addressManagerON = createAddressManagerON(isTopic, address);
-
-      deleteEveryRole(isTopic, address);
-
+      
+      String sendRoles = "";
+      String consumeRoles = "";
+      String createDurableQueueRoles = "";
+      String deleteDurableQueueRoles = "";
+      String createTempQueueRoles = "";
+      String deleteTempQueueRoles = "";
+      String manageRoles = "";
+      
       for (TestRole role : securityConf)
       {
-
-         try
+         if (role.isSend())
          {
-            jmx.invoke(addressManagerON, "addRole", new Object[]
-            { role.getName(), role.isSend(), role.isConsume(), role.isCreateDurableQueue(), role.isDeleteDurableQueue(), role.isCreateNonDurableQueue(), role.isDeleteNonDurableQueue(), role.isManage() }, new String[]
-            { "java.lang.String", "boolean", "boolean", "boolean", "boolean", "boolean", "boolean", "boolean" });
-         } catch (Exception ignored)
+            sendRoles += sendRoles.isEmpty() ? role.getName() : "," + role.getName();
+         }
+         
+         if (role.isConsume())
          {
+            consumeRoles += consumeRoles.isEmpty() ? role.getName() : "," + role.getName();
          }
+         
+         if (role.isCreateDurableQueue())
+         {
+            createDurableQueueRoles += createDurableQueueRoles.isEmpty() ? role.getName() : "," + role.getName();
+         }
+         
+         if (role.isDeleteDurableQueue())
+         {
+            deleteDurableQueueRoles += deleteDurableQueueRoles.isEmpty() ? role.getName() : "," + role.getName();
+         }
+         
+         if (role.isCreateNonDurableQueue())
+         {
+            createTempQueueRoles += createTempQueueRoles.isEmpty() ? role.getName() : "," + role.getName();
+         }
+         
+         if (role.isDeleteNonDurableQueue())
+         {
+            deleteTempQueueRoles += deleteTempQueueRoles.isEmpty() ? role.getName() : "," + role.getName();
+         }
+         
+         if (role.isManage())
+         {
+            manageRoles += manageRoles.isEmpty() ? role.getName() : "," + role.getName();
+         }
       }
+      
+      jmx.invoke(hornetQCoreServerName, "addSecuritySettings", new Object[]{address, sendRoles, consumeRoles, createDurableQueueRoles,
+                                                         deleteDurableQueueRoles, createTempQueueRoles, deleteTempQueueRoles,
+                                                         manageRoles}, new String[]{String.class.getName(), 
+                                                         String.class.getName(), String.class.getName(), 
+                                                         String.class.getName(), String.class.getName(), 
+                                                         String.class.getName(), String.class.getName(), String.class.getName()});
    }
 
-   private void deleteEveryRole(boolean isTopic, String address) throws Exception
-   {
-      ObjectName addressManagerON = createAddressManagerON(isTopic, address);
-
-      Object roles[] = (Object[]) jmx.getAttribute(addressManagerON, "Roles");
-
-      for (Object role : roles)
-      {
-         Object roleArray[] = (Object[]) role;
-         jmx.invoke(addressManagerON, "removeRole", new Object[]
-         { roleArray[0].toString() }, new String[]
-         { "java.lang.String" });
-      }
-   }
-
-   private void resetRoles(boolean isTopic, String address) throws Exception
-   {
-      ObjectName addressManagerON = createAddressManagerON(isTopic, address);
-
-      jmx.invoke(addressManagerON, "resetSecurity", new Object[]
-      {}, new String[]
-      {});
-
-   }
-
    /**
+    * @param isTopic
     * @param address
     * @return
-    * @throws MalformedObjectNameException
     */
-   private ObjectName createAddressManagerON(boolean isTopic, String address) throws MalformedObjectNameException
+   private String getCoreAddress(boolean isTopic, String address)
    {
       if (isTopic)
       {
-         return new ObjectName("org.hornetq:module=Core,name=\"jms.topic." + address + "\",type=Address");
-      } else
+         address = "jms.topic." + address;
+      }
+      else
       {
-         return new ObjectName("org.hornetq:module=Core,name=\"jms.queue." + address + "\",type=Address");
+         address = "jms.queue." + address;
       }
+      return address;
    }
 
+   private void resetRoles(boolean isTopic, String address) throws Exception
+   {
+      jmx.invoke(hornetQCoreServerName, "removeSecuritySettings", new Object[]
+      {address}, new String[]
+      {String.class.getName()});
+
+   }
+
    public void createQueue(String name, String jndi, TestRole... securityConfig) throws Exception
    {
       jmx.invoke(hornetQJMSServerName, "createQueue", new Object[]
       { name, jndi }, new String[]
       { "java.lang.String", "java.lang.String" });
 
-      addRoles(false, name, securityConfig);
+      addRoles(getCoreAddress(false, name), securityConfig);
 
       deployedQueues.put(name, securityConfig);
    }
@@ -164,7 +173,7 @@
       { name, jndi }, new String[]
       { "java.lang.String", "java.lang.String" });
 
-      addRoles(true, name, securityConfig);
+      addRoles(getCoreAddress(true, name), securityConfig);
 
       deployedTopics.put(name, securityConfig);
    }
@@ -173,7 +182,7 @@
    {
       try
       {
-         TestRole[] securityConf = deployedQueues.remove(name);
+         deployedQueues.remove(name);
          resetRoles(false, name);
          invokeDeleteQueue(name);
       } catch (Exception e)
@@ -187,7 +196,7 @@
    {
       try
       {
-         TestRole[] securityConf = deployedTopics.remove(name);
+         deployedTopics.remove(name);
          resetRoles(true, name);
          invokeDeleteTopic(name);
       } catch (Exception e)




More information about the jboss-cvs-commits mailing list