[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