[jboss-cvs] JBossAS SVN: r100658 - in branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq: deployers and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sat Feb 6 22:29:16 EST 2010
Author: clebert.suconic at jboss.com
Date: 2010-02-06 22:29:16 -0500 (Sat, 06 Feb 2010)
New Revision: 100658
Added:
branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/
branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/DestinationFactoryDeployerPlugin.java
branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSDeployment.java
branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSParserDeployer.java
branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSRealDeployer.java
Log:
deployers
Added: branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/DestinationFactoryDeployerPlugin.java
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/DestinationFactoryDeployerPlugin.java (rev 0)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/DestinationFactoryDeployerPlugin.java 2010-02-07 03:29:16 UTC (rev 100658)
@@ -0,0 +1,102 @@
+package org.jboss.as.integration.hornetq.deployer;
+
+import javax.jms.Queue;
+import javax.jms.Topic;
+
+import org.hornetq.jms.server.JMSServerManager;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.ejb.deployers.CreateDestinationFactory;
+import org.jboss.logging.Logger;
+import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
+import org.jboss.metadata.ejb.spec.ActivationConfigMetaData;
+import org.jboss.metadata.ejb.spec.ActivationConfigPropertiesMetaData;
+import org.jboss.metadata.ejb.spec.ActivationConfigPropertyMetaData;
+
+/**
+ * An integration point for the EJB deployers on creating destinations
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="clebert.suconic at jboss.com">Clebert Suconic</a>
+ * @version $Revision: 82920 $
+ */
+public class DestinationFactoryDeployerPlugin implements CreateDestinationFactory {
+
+ private static final Logger log = Logger
+ .getLogger(DestinationFactoryDeployerPlugin.class);
+
+ private JMSServerManager jmsManager;
+
+ public JMSServerManager getJmsManager() {
+ return jmsManager;
+ }
+
+ public void setJmsManager(JMSServerManager jmsManager) {
+ this.jmsManager = 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");
+ }
+ }
+
+ // 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;
+ if (destinationType == null) {
+ log.warn("Unable to determine destination type for "
+ + mdb.getName());
+ return false;
+ } else if (destinationType.equals(Queue.class.getName())) {
+ // Its a queue
+ } else if (destinationType.equals(Topic.class.getName())) {
+ isTopic = true;
+ } else {
+ log.warn("Unknown destination type '" + destinationType + "' for "
+ + mdb.getName());
+ return false;
+ }
+
+ if (isTopic) {
+ System.out.println("Create topic " + destinationName);
+ } else {
+ System.out.println("Create queue " + destinationName);
+ }
+
+ 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();
+ }
+
+}
Added: branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSDeployment.java
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSDeployment.java (rev 0)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSDeployment.java 2010-02-07 03:29:16 UTC (rev 100658)
@@ -0,0 +1,149 @@
+package org.jboss.as.integration.hornetq.deployers;
+
+import org.hornetq.jms.server.JMSServerManager;
+import org.hornetq.jms.server.config.ConnectionFactoryConfiguration;
+import org.hornetq.jms.server.config.JMSConfiguration;
+import org.hornetq.jms.server.config.QueueConfiguration;
+import org.hornetq.jms.server.config.TopicConfiguration;
+import org.jboss.beans.metadata.api.annotations.Start;
+import org.jboss.beans.metadata.api.annotations.Stop;
+import org.jboss.logging.Logger;
+
+/**
+ *
+ * Objects of this class are created by the MicroContainer through BeanMetadataClass at {@link HornetQJMSRealDeployer}
+ *
+ * @see HornetQJMSRealDeployer
+ * */
+public class HornetQJMSDeployment
+{
+
+ private static final Logger log = Logger.getLogger(HornetQJMSDeployment.class);
+
+ private JMSServerManager jmsServer;
+
+ private String name;
+
+ private JMSConfiguration jmsConfig;
+
+ public JMSConfiguration getJmsConfig()
+ {
+ return jmsConfig;
+ }
+
+ public void setJmsConfig(JMSConfiguration jmsConfig)
+ {
+ this.jmsConfig = jmsConfig;
+ }
+
+ public JMSServerManager getJmsServer()
+ {
+ return jmsServer;
+ }
+
+ public void setJmsServer(JMSServerManager jmsServer)
+ {
+ this.jmsServer = jmsServer;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ @Start
+ public void start()
+ {
+ log.info("Being started!");
+
+ for (ConnectionFactoryConfiguration cfConfig : jmsConfig.getConnectionFactoryConfigurations())
+ {
+ log.info("Deploying ConnectionFactory " + cfConfig.getName());
+ try
+ {
+ jmsServer.createConnectionFactory(cfConfig);
+ } catch (Exception e)
+ {
+ log.warn("Error deploying ConnectionFactory: " + cfConfig.getName(), e);
+ }
+ }
+
+ for (QueueConfiguration queueConfig : jmsConfig.getQueueConfigurations())
+ {
+ for (String jndiBinding : queueConfig.getBindings())
+ {
+ log.info("Deploying Queue " + queueConfig.getName() + " on jndiName " + jndiBinding);
+ try
+ {
+ jmsServer.createQueue(queueConfig.getName(), jndiBinding, queueConfig.getSelector(), queueConfig.isDurable());
+ } catch (Exception e)
+ {
+ log.warn("Error deploying Queue: " + queueConfig.getName(), e);
+ }
+ }
+ }
+
+ for (TopicConfiguration topicConfig : jmsConfig.getTopicConfigurations())
+ {
+ for (String jndiBinding : topicConfig.getBindings())
+ {
+ log.info("Deploying Topic " + topicConfig.getName() + " on jndiName " + jndiBinding);
+ try
+ {
+ jmsServer.createTopic(topicConfig.getName(), jndiBinding);
+ } catch (Exception e)
+ {
+ log.warn("Error deploying Queue: " + topicConfig.getName(), e);
+ }
+ }
+ }
+ }
+
+ @Stop
+ public void stop()
+ {
+ log.info("Being stopped");
+
+ for (ConnectionFactoryConfiguration cfConfig : jmsConfig.getConnectionFactoryConfigurations())
+ {
+ log.info("Destroying ConnectionFactory " + cfConfig.getName());
+ try
+ {
+ jmsServer.destroyConnectionFactory(cfConfig.getName());
+ } catch (Exception e)
+ {
+ log.warn("Error destroying ConnectionFactory: " + cfConfig.getName(), e);
+ }
+ }
+
+ for (QueueConfiguration queueConfig : jmsConfig.getQueueConfigurations())
+ {
+ log.info("Destroying Queue " + queueConfig.getName());
+ try
+ {
+ jmsServer.destroyQueue(queueConfig.getName());
+ } catch (Exception e)
+ {
+ log.warn("Error deploying Queue: " + queueConfig.getName(), e);
+ }
+ }
+
+ for (TopicConfiguration topicConfig : jmsConfig.getTopicConfigurations())
+ {
+ log.info("Destroying Topic " + topicConfig.getName());
+ try
+ {
+ jmsServer.destroyTopic(topicConfig.getName());
+ } catch (Exception e)
+ {
+ log.warn("Error destroying Topic: " + topicConfig.getName(), e);
+ }
+ }
+ }
+
+}
Added: branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSParserDeployer.java
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSParserDeployer.java (rev 0)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSParserDeployer.java 2010-02-07 03:29:16 UTC (rev 100658)
@@ -0,0 +1,69 @@
+package org.jboss.as.integration.hornetq.deployers;
+
+import java.io.InputStream;
+
+import org.hornetq.core.config.Configuration;
+import org.hornetq.jms.server.JMSServerConfigParser;
+import org.hornetq.jms.server.JMSServerManager;
+import org.hornetq.jms.server.config.JMSConfiguration;
+import org.hornetq.jms.server.impl.JMSServerConfigParserImpl;
+import org.jboss.deployers.vfs.spi.deployer.AbstractVFSParsingDeployer;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.logging.Logger;
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * This Deployer will take a hornetq-jms.xml parse the JMSConfiguration and
+ * attach the JMSConfiguration output into the deployment unit. Another deployer
+ * that takes JMSConfiguration as an input will then take over and install the
+ * queues at the proper places.
+ *
+ * This is done through the VFS Deployment Framework. Othe projects may choose to deploy a HornetQ JMSConfiguration directly.
+ *
+ * @see HornetQJMSRealDeployer
+ *
+ * @author <mailto:clebert.suconic at jboss.org">Clebert Suconic</a>
+ *
+ */
+public class HornetQJMSParserDeployer extends AbstractVFSParsingDeployer<JMSConfiguration>
+{
+
+ private static final Logger log = Logger.getLogger(HornetQJMSParserDeployer.class);
+
+ public static final String FILENAME = "hornetq-jms.xml";
+
+ private final JMSServerConfigParser jmsConfigParser;
+
+ public HornetQJMSParserDeployer()
+ {
+ super(JMSConfiguration.class);
+
+ this.jmsConfigParser = new JMSServerConfigParserImpl(null);
+
+ setName(FILENAME);
+ }
+
+ @Override
+ protected JMSConfiguration parse(VFSDeploymentUnit unit, VirtualFile file, JMSConfiguration root) throws Exception
+ {
+
+ InputStream deploymentStream = null;
+
+ try
+ {
+ deploymentStream = file.openStream();
+ JMSConfiguration config = jmsConfigParser.parseConfiguration(deploymentStream);
+ log.info("Config = " + config);
+
+ return config;
+ } finally
+ {
+ try
+ {
+ deploymentStream.close();
+ } catch (Exception ignored)
+ {
+ }
+ }
+ }
+}
Added: branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSRealDeployer.java
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSRealDeployer.java (rev 0)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/as/integration/hornetq/deployers/HornetQJMSRealDeployer.java 2010-02-07 03:29:16 UTC (rev 100658)
@@ -0,0 +1,54 @@
+package org.jboss.as.integration.hornetq.deployers;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.hornetq.jms.server.config.JMSConfiguration;
+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.vfs.spi.deployer.AbstractSimpleVFSRealDeployer;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+
+/**
+ * In a regular flow HornetQJMSParserDeployer will parer hornetq-jms.xml and it
+ * will jump-start the deployment for JMSConfiguration.class. This deployer will
+ * then be called directly by the VFS Deployment Framework, as the Input object
+ * for this is a JMSConfiguration class.
+ *
+ * In an alternate flow, other deployers (e.g. TorqueBox) may install a JMSConfiguration object
+ * directly and this deployer will take over without the need of a real XML file
+ *
+ * @author <mailto:clebert.suconic at jboss.org">Clebert Suconic</a>
+ *
+ */
+public class HornetQJMSRealDeployer extends AbstractSimpleVFSRealDeployer<JMSConfiguration>
+{
+
+ private final AtomicInteger idGenerator = new AtomicInteger(1);
+
+ public HornetQJMSRealDeployer()
+ {
+ super(JMSConfiguration.class);
+ addOutput(BeanMetaData.class);
+ }
+
+ @Override
+ public void deploy(VFSDeploymentUnit unit, JMSConfiguration config) throws DeploymentException
+ {
+ String name = "HornetQJMSDeployment::" + idGenerator.incrementAndGet();
+
+ BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder(name, HornetQJMSDeployment.class.getName());
+
+ builder.addPropertyMetaData("name", name);
+
+ builder.addPropertyMetaData("jmsServer", builder.createInject("JMSServerManager"));
+
+ builder.addPropertyMetaData("jmsConfig", config);
+
+ BeanMetaData bean = builder.getBeanMetaData();
+
+ unit.addAttachment(name, bean);
+ }
+
+}
More information about the jboss-cvs-commits
mailing list