[jboss-cvs] JBossAS SVN: r103370 - in trunk: hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/pojo and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Mar 31 22:11:20 EDT 2010


Author: clebert.suconic at jboss.com
Date: 2010-03-31 22:11:19 -0400 (Wed, 31 Mar 2010)
New Revision: 103370

Added:
   trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/DeploymentFactory.java
Modified:
   trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/DestinationFactoryDeployerPlugin.java
   trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSRealDeployer.java
   trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/pojo/HornetQQueueDeployment.java
   trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/pojo/HornetQTopicDeployment.java
   trunk/testsuite/src/main/org/jboss/test/ejb3/jbas6239/QueueTestMDB.java
Log:
https://jira.jboss.org/jira/browse/JBAS-7706 - Create Destinations improvements

Added: trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/DeploymentFactory.java
===================================================================
--- trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/DeploymentFactory.java	                        (rev 0)
+++ trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/DeploymentFactory.java	2010-04-01 02:11:19 UTC (rev 103370)
@@ -0,0 +1,116 @@
+package org.jboss.as.integration.hornetq.deployers;
+
+import java.util.Map;
+
+import org.hornetq.api.core.management.ObjectNameBuilder;
+import org.hornetq.jms.server.config.ConnectionFactoryConfiguration;
+import org.hornetq.jms.server.config.JMSConfiguration;
+import org.hornetq.jms.server.config.JMSQueueConfiguration;
+import org.hornetq.jms.server.config.TopicConfiguration;
+import org.jboss.as.integration.hornetq.deployers.pojo.HornetQConnectionFactoryDeployment;
+import org.jboss.as.integration.hornetq.deployers.pojo.HornetQCoreDeployment;
+import org.jboss.as.integration.hornetq.deployers.pojo.HornetQQueueDeployment;
+import org.jboss.as.integration.hornetq.deployers.pojo.HornetQTopicDeployment;
+import org.jboss.beans.metadata.plugins.builder.BeanMetaDataBuilderFactory;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.kernel.plugins.bootstrap.basic.KernelConstants;
+import org.jboss.logging.Logger;
+
+/**
+ * 
+ * @author <mailto:clebert.suconic at jboss.org">Clebert Suconic</a>
+ *
+ */
+public class DeploymentFactory
+{
+
+   private static final Logger log = Logger.getLogger(DeploymentFactory.class);
+
+   private static DeploymentFactory instance = new DeploymentFactory();
+   
+   public static DeploymentFactory getInstance()
+   {
+      return instance;
+   }
+   
+   public void deployJMS(DeploymentUnit unit, JMSConfiguration mainConfig) throws DeploymentException
+   {
+      
+      try
+      {
+
+         for (JMSQueueConfiguration config : mainConfig.getQueueConfigurations())
+         {
+            String name = ObjectNameBuilder.DEFAULT.getJMSQueueObjectName(config.getName()).toString();
+            //String name = "org.hornetq:module=JMS,name=\"" + config.getName() + "\",type=Queue";
+            
+            log.info("Adding queue deployment " + name);
+            
+            unit.addAttachment(name, createJMSBasicBean(unit, HornetQQueueDeployment.class.getName(), name, config));
+         }
+   
+         for (TopicConfiguration config : mainConfig.getTopicConfigurations())
+         {
+            String name = ObjectNameBuilder.DEFAULT.getJMSTopicObjectName(config.getName()).toString(); 
+            //String name = "org.hornetq:module=JMS,name=\"" + config.getName() + "\",type=Topic";
+            
+            log.info("Adding topic deployment " + name);
+            
+   
+            unit.addAttachment(name, createJMSBasicBean(unit, HornetQTopicDeployment.class.getName(), name, config));
+         }
+   
+         for (ConnectionFactoryConfiguration config : mainConfig.getConnectionFactoryConfigurations())
+         {
+            String name = "org.hornetq:module=JMS,name=\"" + config.getName() + "\",type=ConnectionFactory";
+   
+            unit.addAttachment(name, createJMSBasicBean(unit, HornetQConnectionFactoryDeployment.class.getName(), name, config));
+         }
+      }
+      catch (Exception e)
+      {
+         throw new DeploymentException (e.getMessage(), e);
+      }
+   }
+
+   /**
+    * @param name
+    */
+   private static BeanMetaData createJMSBasicBean(DeploymentUnit unit, String configClass, String name, Object config)
+   {
+      BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder(name, configClass);
+
+      builder.addPropertyMetaData("name", name);
+
+      builder.addPropertyMetaData("jmsServer", builder.createInject("JMSServerManager"));
+      
+      builder.addPropertyMetaData("config", config);
+
+      // runtime control registry
+      builder.addPropertyMetaData("kernel", builder.createInject(KernelConstants.KERNEL_NAME));
+      
+      builder.addPropertyMetaData("mbeanServer", builder.createInject("MBeanServer"));
+      
+      for (Map.Entry<String, Object> entry : unit.getAttachments().entrySet())
+      {
+         if (entry.getValue() instanceof BeanMetaData)
+         {
+            BeanMetaData checkBuilder = (BeanMetaData)entry.getValue();
+            if (checkBuilder.getBean().equals(HornetQCoreDeployment.class.getName()))
+            {
+               // If there is any core deployment on the same deployment unit, it needs to be deployed first.
+               // So we add a dependency here
+               builder.addDependency(entry.getKey());
+            }
+         }
+      }
+      
+      return builder.getBeanMetaData();
+   }
+
+   
+}
+

Modified: trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/DestinationFactoryDeployerPlugin.java
===================================================================
--- trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/DestinationFactoryDeployerPlugin.java	2010-04-01 02:10:23 UTC (rev 103369)
+++ trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/DestinationFactoryDeployerPlugin.java	2010-04-01 02:11:19 UTC (rev 103370)
@@ -2,6 +2,7 @@
 
 import java.util.HashSet;
 import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import javax.jms.Queue;
 import javax.jms.Topic;
@@ -29,113 +30,131 @@
  * @version $Revision: 82920 $
  */
 public class DestinationFactoryDeployerPlugin implements
-		CreateDestinationFactory {
+      CreateDestinationFactory
+{
 
-	private static final Logger log = Logger
-			.getLogger(DestinationFactoryDeployerPlugin.class);
+   private static final Logger log = Logger
+         .getLogger(DestinationFactoryDeployerPlugin.class);
 
-	private JMSServerManager jmsManager;
+   private JMSServerManager jmsManager;
 
-	public JMSServerManager getJmsManager() {
-		return jmsManager;
-	}
+   private AtomicInteger counter = new AtomicInteger(0);
 
-	public void setJmsManager(JMSServerManager jmsManager) {
-		this.jmsManager = jmsManager;
-	}
+   public JMSServerManager getJmsManager()
+   {
+      return jmsManager;
+   }
 
-	public boolean create(DeploymentUnit unit,
-			JBossMessageDrivenBeanMetaData mdb) throws DeploymentException {
-		String destinationName = null;
-		String destinationType = null;
-		
-		ActivationConfigMetaData activationConfig = mdb.getActivationConfig();
-		if (activationConfig != null) {
-			ActivationConfigPropertiesMetaData properties = activationConfig
-					.getActivationConfigProperties();
-			if (properties != null) {
-				destinationName = getActivationConfigProperty(properties,
-						"destination");
-				destinationType = getActivationConfigProperty(properties,
-						"destinationType");
-			}
-		}
+   public void setJmsManager(JMSServerManager jmsManager)
+   {
+      this.jmsManager = jmsManager;
+   }
 
-		// TODO message-destination-link?
+   public boolean create(DeploymentUnit unit, JBossMessageDrivenBeanMetaData mdb)
+         throws DeploymentException
+   {
+      String destinationName = null;
+      String destinationType = null;
 
-		log.info("Deploying destination " + destinationName);
+      ActivationConfigMetaData activationConfig = mdb.getActivationConfig();
+      if (activationConfig != null)
+      {
+         ActivationConfigPropertiesMetaData properties = activationConfig
+               .getActivationConfigProperties();
+         if (properties != null)
+         {
+            destinationName = getActivationConfigProperty(properties,
+                  "destination");
+            destinationType = getActivationConfigProperty(properties,
+                  "destinationType");
+         }
+      }
 
+      // TODO message-destination-link?
 
-		if (destinationName == null || destinationName.trim().length() == 0) {
-			log.warn("Unable to determine destination for " + mdb.getName());
-			return false;
-		}
-		boolean isTopic = false;
-		JMSConfiguration config = new JMSConfigurationImpl();
-		if (destinationType == null) {
-			log.warn("Unable to determine destination type for "
-					+ mdb.getName());
-			return false;
-		} else if (destinationType.equals(Queue.class.getName())) {
-			config.getQueueConfigurations().add(
-					new JMSQueueConfigurationImpl(destinationName, null, true,
-							"queue/" + destinationName));
-		} else if (destinationType.equals(Topic.class.getName())) {
-			config.getTopicConfigurations().add(new TopicConfigurationImpl(destinationName, "topic/" + destinationName));
-			isTopic = true;
-		} else {
-			log.warn("Unknown destination type '" + destinationType + "' for "
-					+ mdb.getName());
-			return false;
-		}
+      log.info("Deploying destination " + destinationName);
 
-		Set<String> mdbDependencies = mdb.getDepends();
-		if(mdbDependencies == null)
-		{
-		   mdbDependencies = new HashSet<String>();
-		   mdb.setDepends(mdbDependencies);
-		}
-
-		try
-	   {
-		   if (isTopic)
-		   {
-		      mdbDependencies.add(ObjectNameBuilder.DEFAULT.getJMSTopicObjectName(destinationName).toString());
-		   }
-		   else
-		   {
-            mdbDependencies.add(ObjectNameBuilder.DEFAULT.getJMSQueueObjectName(destinationName).toString());
-		   }
-	   }
-	   catch (Exception e)
-	   {
-	      log.warn(e.getMessage(), e);
-	   }
+      if (destinationName == null || destinationName.trim().length() == 0)
+      {
+         log.warn("Unable to determine destination for " + mdb.getName());
+         return false;
+      }
+      boolean isTopic = false;
+      JMSConfiguration config = new JMSConfigurationImpl();
       
-      unit.addAttachment(JMSConfiguration.class, config);
-		
-		return true;
-	}
+      String noSlashesName = destinationName.substring(destinationName.lastIndexOf('/') + 1);
+      
 
-	/**
-	 * Get an activation config property
-	 * 
-	 * @param properties
-	 *            the properties
-	 * @param name
-	 *            the name
-	 * @return the property or null if not found
-	 */
-	protected static String getActivationConfigProperty(
-			ActivationConfigPropertiesMetaData properties, String name) {
-		ActivationConfigPropertyMetaData property = properties.get(name);
-		if (property == null)
-			return null;
-		return property.getValue();
-	}
+      if (destinationType == null)
+      {
+         log.warn("Unable to determine destination type for " + mdb.getName());
+         return false;
+      } else if (destinationType.equals(Queue.class.getName()))
+      {
+         config.getQueueConfigurations().add(
+               new JMSQueueConfigurationImpl(noSlashesName, null, true,
+                     "queue/" + noSlashesName, destinationName));
+      } else if (destinationType.equals(Topic.class.getName()))
+      {
+         config.getTopicConfigurations().add(
+               new TopicConfigurationImpl(noSlashesName, "topic/"+ noSlashesName, destinationName));
+         isTopic = true;
+      } else
+      {
+         log.warn("Unknown destination type '" + destinationType + "' for "
+               + mdb.getName());
+         return false;
+      }
 
-	public Class<?> getOutput() {
-		return JMSConfiguration.class;
-	}
+      Set<String> mdbDependencies = mdb.getDepends();
+      if (mdbDependencies == null)
+      {
+         mdbDependencies = new HashSet<String>();
+         mdb.setDepends(mdbDependencies);
+      }
 
+      try
+      {
+         if (isTopic)
+         {
+            mdbDependencies.add(ObjectNameBuilder.DEFAULT.getJMSTopicObjectName(
+                  noSlashesName).toString());
+         } else
+         {
+            mdbDependencies.add(ObjectNameBuilder.DEFAULT.getJMSQueueObjectName(
+                  noSlashesName).toString());
+         }
+      } catch (Exception e)
+      {
+         log.warn(e.getMessage(), e);
+      }
+
+      DeploymentFactory.getInstance().deployJMS(unit, config);
+
+      return true;
+   }
+
+   /**
+    * Get an activation config property
+    * 
+    * @param properties
+    *           the properties
+    * @param name
+    *           the name
+    * @return the property or null if not found
+    */
+   protected static String getActivationConfigProperty(
+         ActivationConfigPropertiesMetaData properties, String name)
+   {
+      ActivationConfigPropertyMetaData property = properties.get(name);
+      if (property == null)
+         return null;
+      return property.getValue();
+   }
+
+   public Class<?> getOutput()
+   {
+      return JMSConfiguration.class;
+   }
+
 }

Modified: trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSRealDeployer.java
===================================================================
--- trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSRealDeployer.java	2010-04-01 02:10:23 UTC (rev 103369)
+++ trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSRealDeployer.java	2010-04-01 02:11:19 UTC (rev 103370)
@@ -1,22 +1,11 @@
 package org.jboss.as.integration.hornetq.deployers;
 
-import java.util.Map;
-
-import org.hornetq.jms.server.config.ConnectionFactoryConfiguration;
 import org.hornetq.jms.server.config.JMSConfiguration;
-import org.hornetq.jms.server.config.JMSQueueConfiguration;
-import org.hornetq.jms.server.config.TopicConfiguration;
-import org.jboss.as.integration.hornetq.deployers.pojo.HornetQConnectionFactoryDeployment;
 import org.jboss.as.integration.hornetq.deployers.pojo.HornetQCoreDeployment;
-import org.jboss.as.integration.hornetq.deployers.pojo.HornetQQueueDeployment;
-import org.jboss.as.integration.hornetq.deployers.pojo.HornetQTopicDeployment;
-import org.jboss.beans.metadata.plugins.builder.BeanMetaDataBuilderFactory;
 import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.kernel.plugins.bootstrap.basic.KernelConstants;
 import org.jboss.metadata.ejb.jboss.JBossMetaData;
 
 /**
@@ -50,70 +39,8 @@
    public void deploy(DeploymentUnit unit, JMSConfiguration mainConfig) throws DeploymentException
    {
       log.info("JMSRealDeployer");
-      
-      staticDeploy(unit, mainConfig);
+      DeploymentFactory.getInstance().deployJMS(unit, mainConfig);
    }
    
-   public static void staticDeploy(DeploymentUnit unit, JMSConfiguration mainConfig) throws DeploymentException
-   {
-      
 
-      for (JMSQueueConfiguration config : mainConfig.getQueueConfigurations())
-      {
-         String name = "org.hornetq:module=JMS,name=\"" + config.getName() + "\",type=Queue";
-
-         unit.addAttachment(name, createBasicBean(unit, HornetQQueueDeployment.class.getName(), name, config));
-      }
-
-      for (TopicConfiguration config : mainConfig.getTopicConfigurations())
-      {
-         String name = "org.hornetq:module=JMS,name=\"" + config.getName() + "\",type=Topic";
-
-         unit.addAttachment(name, createBasicBean(unit, HornetQTopicDeployment.class.getName(), name, config));
-      }
-
-      for (ConnectionFactoryConfiguration config : mainConfig.getConnectionFactoryConfigurations())
-      {
-         String name = "org.hornetq:module=JMS,name=\"" + config.getName() + "\",type=ConnectionFactory";
-
-         unit.addAttachment(name, createBasicBean(unit, HornetQConnectionFactoryDeployment.class.getName(), name, config));
-      }
-   }
-
-   /**
-    * @param name
-    */
-   private static BeanMetaData createBasicBean(DeploymentUnit unit, String configClass, String name, Object config)
-   {
-      BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder(name, configClass);
-
-      builder.addPropertyMetaData("name", name);
-
-      builder.addPropertyMetaData("jmsServer", builder.createInject("JMSServerManager"));
-      
-      builder.addPropertyMetaData("config", config);
-
-      // runtime control registry
-      builder.addPropertyMetaData("kernel", builder.createInject(KernelConstants.KERNEL_NAME));
-      
-      builder.addPropertyMetaData("mbeanServer", builder.createInject("MBeanServer"));
-      
-      for (Map.Entry<String, Object> entry : unit.getAttachments().entrySet())
-      {
-         if (entry.getValue() instanceof BeanMetaData)
-         {
-            BeanMetaData checkBuilder = (BeanMetaData)entry.getValue();
-            if (checkBuilder.getBean().equals(HornetQCoreDeployment.class.getName()))
-            {
-               // If there is any core deployment on the same deployment unit, it needs to be deployed first.
-               // So we add a dependency here
-               builder.addDependency(entry.getKey());
-            }
-         }
-      }
-      
-      return builder.getBeanMetaData();
-   }
-
-
 }

Modified: trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/pojo/HornetQQueueDeployment.java
===================================================================
--- trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/pojo/HornetQQueueDeployment.java	2010-04-01 02:10:23 UTC (rev 103369)
+++ trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/pojo/HornetQQueueDeployment.java	2010-04-01 02:11:19 UTC (rev 103370)
@@ -34,9 +34,10 @@
    {
       log.info("Undeploying queue " + config.getName());
       
-      unregisterControlReference(new ObjectName("org.hornetq:module=JMS,name=\"" + config.getName() + "\",type=Queue"));
+      unregisterControlReference(ObjectNameBuilder.DEFAULT.getJMSQueueObjectName(config.getName()));
       
-      jmsServer.destroyQueue(config.getName());
+      jmsServer.removeQueueFromJNDI(config.getName());
+      
    }
 
 }

Modified: trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/pojo/HornetQTopicDeployment.java
===================================================================
--- trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/pojo/HornetQTopicDeployment.java	2010-04-01 02:10:23 UTC (rev 103369)
+++ trunk/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/pojo/HornetQTopicDeployment.java	2010-04-01 02:11:19 UTC (rev 103370)
@@ -1,5 +1,6 @@
 package org.jboss.as.integration.hornetq.deployers.pojo;
 
+import org.hornetq.api.core.management.ObjectNameBuilder;
 import org.hornetq.jms.server.config.TopicConfiguration;
 import org.jboss.logging.Logger;
 
@@ -15,7 +16,7 @@
       try
       {
          jmsServer.createTopic(false, config.getName(), config.getBindings());
-         registerControlReference(new ObjectName("org.hornetq:module=JMS,name=\"" + config.getName() + "\",type=Topic"));
+         registerControlReference(ObjectNameBuilder.DEFAULT.getJMSTopicObjectName(config.getName()));
       }
       catch (Exception e)
       {
@@ -30,9 +31,9 @@
       log.info("Undeploying Topic " + config.getName());
       try
       {
-         unregisterControlReference(new ObjectName("org.hornetq:module=JMS,name=\"" + config.getName() + "\",type=Topic"));
+         unregisterControlReference(ObjectNameBuilder.DEFAULT.getJMSTopicObjectName(config.getName()));
          
-         jmsServer.destroyTopic(config.getName());
+         jmsServer.removeTopicFromJNDI(config.getName());
       }
       catch (Exception e)
       {

Modified: trunk/testsuite/src/main/org/jboss/test/ejb3/jbas6239/QueueTestMDB.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/ejb3/jbas6239/QueueTestMDB.java	2010-04-01 02:10:23 UTC (rev 103369)
+++ trunk/testsuite/src/main/org/jboss/test/ejb3/jbas6239/QueueTestMDB.java	2010-04-01 02:11:19 UTC (rev 103370)
@@ -51,7 +51,7 @@
 })
 @RunAs("TestRole")
 @SecurityDomain(value="other",unauthenticatedPrincipal="user")
- at Depends("org.hornetq:module=JMS,name=\"mdbtest\",type=Queue")
+ at Depends("org.hornetq:module=JMS,type=Queue,name=\"mdbtest\"")
 public class QueueTestMDB implements MessageListener
 {
    @Resource(mappedName="java:/ConnectionFactory")




More information about the jboss-cvs-commits mailing list