[hornetq-commits] JBoss hornetq SVN: r8896 - in trunk: tests/src/org/hornetq/tests/integration/jms/server/management and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Feb 23 10:56:31 EST 2010


Author: jmesnil
Date: 2010-02-23 10:56:30 -0500 (Tue, 23 Feb 2010)
New Revision: 8896

Modified:
   trunk/src/main/org/hornetq/jms/server/impl/JMSServerManagerImpl.java
   trunk/tests/src/org/hornetq/tests/integration/jms/server/management/JMSServerControlTest.java
Log:
https://jira.jboss.org/jira/browse/HORNETQ-311: DestroyTopic management method does not delete the core resources associated to the topic

* when a topic is destroy, destroy *all the core queues bound to the topic address* too.

Modified: trunk/src/main/org/hornetq/jms/server/impl/JMSServerManagerImpl.java
===================================================================
--- trunk/src/main/org/hornetq/jms/server/impl/JMSServerManagerImpl.java	2010-02-23 13:55:56 UTC (rev 8895)
+++ trunk/src/main/org/hornetq/jms/server/impl/JMSServerManagerImpl.java	2010-02-23 15:56:30 UTC (rev 8896)
@@ -28,6 +28,8 @@
 import org.hornetq.api.core.HornetQException;
 import org.hornetq.api.core.Pair;
 import org.hornetq.api.core.TransportConfiguration;
+import org.hornetq.api.core.management.AddressControl;
+import org.hornetq.api.core.management.ResourceNames;
 import org.hornetq.api.jms.HornetQJMSClient;
 import org.hornetq.core.config.Configuration;
 import org.hornetq.core.config.DiscoveryGroupConfiguration;
@@ -346,8 +348,14 @@
 
       destinations.remove(name);
       jmsManagementService.unregisterTopic(name);
-      server.getHornetQServerControl().destroyQueue(HornetQDestination.createTopicAddressFromName(name).toString());
-
+      AddressControl addressControl = (AddressControl)server.getManagementService().getResource(ResourceNames.CORE_ADDRESS + HornetQDestination.createTopicAddressFromName(name));
+      if (addressControl != null)
+      {
+         for (String queueName : addressControl.getQueueNames())
+         {
+            server.getHornetQServerControl().destroyQueue(queueName);
+         }
+      }
       return true;
    }
 

Modified: trunk/tests/src/org/hornetq/tests/integration/jms/server/management/JMSServerControlTest.java
===================================================================
--- trunk/tests/src/org/hornetq/tests/integration/jms/server/management/JMSServerControlTest.java	2010-02-23 13:55:56 UTC (rev 8895)
+++ trunk/tests/src/org/hornetq/tests/integration/jms/server/management/JMSServerControlTest.java	2010-02-23 15:56:30 UTC (rev 8896)
@@ -13,18 +13,19 @@
 
 package org.hornetq.tests.integration.jms.server.management;
 
-import java.util.Map;
 
 import javax.jms.Connection;
 import javax.jms.ConnectionFactory;
 import javax.jms.Queue;
+import javax.jms.Session;
 import javax.jms.Topic;
 
 import junit.framework.Assert;
 
 import org.hornetq.api.core.TransportConfiguration;
-import org.hornetq.api.core.client.HornetQClient;
+import org.hornetq.api.core.management.AddressControl;
 import org.hornetq.api.core.management.ObjectNameBuilder;
+import org.hornetq.api.core.management.ResourceNames;
 import org.hornetq.api.jms.management.JMSServerControl;
 import org.hornetq.core.config.Configuration;
 import org.hornetq.core.config.DiscoveryGroupConfiguration;
@@ -35,6 +36,8 @@
 import org.hornetq.core.remoting.impl.invm.TransportConstants;
 import org.hornetq.core.server.HornetQServer;
 import org.hornetq.core.server.HornetQServers;
+import org.hornetq.jms.client.HornetQConnectionFactory;
+import org.hornetq.jms.client.HornetQDestination;
 import org.hornetq.jms.server.JMSServerManager;
 import org.hornetq.jms.server.impl.JMSServerManagerImpl;
 import org.hornetq.tests.integration.management.ManagementControlHelper;
@@ -176,15 +179,29 @@
 
       UnitTestCase.checkNoBinding(context, topicJNDIBinding);
       checkNoResource(ObjectNameBuilder.DEFAULT.getJMSTopicObjectName(topicName));
-
+      
       JMSServerControl control = createManagementControl();
       control.createTopic(topicName, topicJNDIBinding);
 
-      UnitTestCase.checkBinding(context, topicJNDIBinding);
       checkResource(ObjectNameBuilder.DEFAULT.getJMSTopicObjectName(topicName));
+      Topic topic = (Topic)context.lookup(topicJNDIBinding);
+      assertNotNull(topic);
+      HornetQConnectionFactory cf = new HornetQConnectionFactory(new TransportConfiguration(InVMConnectorFactory.class.getName()));
+      Connection connection = cf.createConnection();
+      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+      // create a consumer will create a Core queue bound to the topic address
+      session.createConsumer(topic);
 
+      String topicAddress = HornetQDestination.createTopicAddressFromName(topicName).toString();
+      AddressControl addressControl = (AddressControl)server.getManagementService().getResource(ResourceNames.CORE_ADDRESS + topicAddress);
+      assertNotNull(addressControl);
+      
+      assertTrue(addressControl.getQueueNames().length > 0);
+      
+      connection.close();
       control.destroyTopic(topicName);
-
+      
+      assertNull(server.getManagementService().getResource(ResourceNames.CORE_ADDRESS + topicAddress));
       UnitTestCase.checkNoBinding(context, topicJNDIBinding);
       checkNoResource(ObjectNameBuilder.DEFAULT.getJMSTopicObjectName(topicName));
    }



More information about the hornetq-commits mailing list