[jboss-svn-commits] JBL Code SVN: r25905 - in labs/jbossesb/workspace/dbevenius/jbossas5/product: install and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Apr 1 13:59:40 EDT 2009
Author: beve
Date: 2009-04-01 13:59:39 -0400 (Wed, 01 Apr 2009)
New Revision: 25905
Added:
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployer.java
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployerUnitTest.java
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployerUnitTest.xml
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/actionArtifactMap.properties
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/test_esb_archives/exploded-esb-archive.esb/META-INF/deployment.xml
Modified:
labs/jbossesb/workspace/dbevenius/jbossas5/product/install/build.xml
labs/jbossesb/workspace/dbevenius/jbossas5/product/install/esb-deployers-jboss-beans.xml
labs/jbossesb/workspace/dbevenius/jbossas5/product/ivy.xml
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/internal/soa/esb/util/JBossDeployerUtil.java
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParser.java
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployer.java
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployment.java
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbMetaData.java
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParserUnitTest.java
labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParserUnitTest.xml
Log:
Updates. Still don't have the EBWS support working yet.
Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/install/build.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/install/build.xml 2009-04-01 15:37:24 UTC (rev 25904)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/install/build.xml 2009-04-01 17:59:39 UTC (rev 25905)
@@ -227,6 +227,16 @@
</copy>
<copy todir="${deployers.dir}/esb.deployer/META-INF" file="${basedir}/esb-deployers-jboss-beans.xml" overwrite="true"/>
+ <copy todir="${deployers.dir}/esb.deployer" overwrite="true">
+ <fileset dir="${org.jboss.esb.dist.lib}/jbossesb.sar">
+ <include name="actionArtifactMap.properties"/>
+ <include name="esb.juddi.xml"/>
+ <include name="jbossesb-properties.xml"/>
+ <include name="privateKeyStore"/>
+ <include name="publicKeyStore"/>
+ </fileset>
+ </copy>
+
<!-- jbossesb.sar -->
<copy todir="${deploy.dir}/jbossesb.sar" includeemptydirs="false" overwrite="true">
<fileset dir="${org.jboss.esb.dist.lib}/jbossesb.sar">
@@ -253,6 +263,11 @@
<exclude name="lib/xbean-2.2.0.jar"/>
<exclude name="lib/xstream-1.2.2.jar"/>
<exclude name="META-INF/jboss-service.xml"/>
+ <exclude name="actionArtifactMap.properties"/>
+ <exclude name="esb.juddi.xml"/>
+ <exclude name="jbossesb-properties.xml"/>
+ <exclude name="privateKeyStore"/>
+ <exclude name="publicKeyStore"/>
</fileset>
</copy>
<copy tofile="${deploy.dir}/jbossesb.sar/META-INF/jboss-service.xml" file="${basedir}/jboss-service-jbossas5.xml" overwrite="true"/>
Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/install/esb-deployers-jboss-beans.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/install/esb-deployers-jboss-beans.xml 2009-04-01 15:37:24 UTC (rev 25904)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/install/esb-deployers-jboss-beans.xml 2009-04-01 17:59:39 UTC (rev 25905)
@@ -5,11 +5,14 @@
<deployment xmlns="urn:jboss:bean-deployer:2.0">
<!-- Will pickup and parse jboss-esb.xml configuration files from esb archives. -->
- <bean name="EsbConfigParser" class="org.jboss.soa.esb.listeners.deployers.mc.EsbConfigParser"/>
+ <bean name="EsbConfigParser" class="org.jboss.soa.esb.listeners.deployers.mc.EsbConfigParser">
+ <property name="deploymentPrefix">jboss.esb:deployment=</property>
+ <property name="actionArtifactsFile">/actionArtifactMap.properties</property>
+ </bean>
+ <bean name="EsbWebServiceDeployer" class="org.jboss.soa.esb.listeners.deployers.mc.EsbWebServiceDeployer"/>
+
<!-- Will create the BeanMetaData that describes a esb deployment -->
- <bean name="EsbDeployer" class="org.jboss.soa.esb.listeners.deployers.mc.EsbDeployer">
- <property name="serverTmpDir">${jboss.server.temp.dir}</property>
- </bean>
+ <bean name="EsbDeployer" class="org.jboss.soa.esb.listeners.deployers.mc.EsbDeployer"/>
</deployment>
Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/ivy.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/ivy.xml 2009-04-01 15:37:24 UTC (rev 25904)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/ivy.xml 2009-04-01 17:59:39 UTC (rev 25905)
@@ -104,6 +104,7 @@
<dependency org="org.jboss.man" name="jboss-metatype" rev="2.0.0.GA"/>
<dependency org="org.jboss.integration" name="jboss-classloading-spi" rev="5.0.3.GA"/>
+ <dependency org="org.jboss.integration" name="jboss-profileservice-spi" rev="5.0.3.GA"/>
<dependency org="org.jboss" name="jboss-vfs" rev="2.1.0.GA"/>
<dependency org="org.jboss" name="jboss-common-core" rev="2.2.11.GA"/>
@@ -111,6 +112,7 @@
<dependency org="org.jboss" name="jboss-reflect" rev="2.0.1.GA"/>
<dependency org="org.jboss" name="jbossxb" rev="2.0.0.GA"/>
+
<!-- Note that jboss-metadata is still in beta -->
<dependency org="org.jboss" name="jboss-metadata" rev="1.0.0.Beta6"/>
@@ -121,6 +123,7 @@
<dependency org="org.jboss.jbossas" name="jboss-as-mbeans" rev="5.0.1.GA"/>
<dependency org="org.jboss.jbossas" name="jboss-as-system" rev="5.0.1.GA"/>
<dependency org="org.jboss.jbossas" name="jboss-as-system-jmx" rev="5.0.1.GA"/>
+ <dependency org="org.jboss.jbossas" name="jboss-as-webservices" rev="5.0.1.GA"/>
<dependency org="org.jboss.logging" name="jboss-logging-spi" rev="2.0.5.GA"/>
<dependency org="org.jboss.javaee" name="jboss-ejb-api" rev="3.0.0.GA"/>
Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/internal/soa/esb/util/JBossDeployerUtil.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/internal/soa/esb/util/JBossDeployerUtil.java 2009-04-01 15:37:24 UTC (rev 25904)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/internal/soa/esb/util/JBossDeployerUtil.java 2009-04-01 17:59:39 UTC (rev 25905)
@@ -134,19 +134,19 @@
return new File(esbDir, warFileName);
}
- public static File createWarFilesDir(final File tmpDir, String warFileDirName)
+ public static File createDir(final File parentDir, String dirName)
{
- final File esbWarFiles = new File(tmpDir, warFileDirName);
+ final File esbWarFiles = new File(parentDir, dirName);
esbWarFiles.mkdirs();
return esbWarFiles;
}
- public static File createWarFilesDir(final String tmpDirName, String warFileDirName)
+ public static File createWarFilesDir(final String parentDir, String dirName)
{
- AssertArgument.isNotNullAndNotEmpty(tmpDirName, "tmpDirName");
+ AssertArgument.isNotNullAndNotEmpty(parentDir, "parentDir");
- final File tmpDir = new File(tmpDirName);
- return createWarFilesDir(tmpDir, warFileDirName);
+ final File tmpDir = new File(parentDir);
+ return createDir(tmpDir, dirName);
}
public static String readEsbConfig(final InputStream in) throws DeploymentException
@@ -293,7 +293,7 @@
final InputStream in = ClassUtil.getResourceAsStream(fileName, JBossDeployerUtil.class);
if (in != null)
{
- log.debug("Loaded action artifact mapping") ;
+ log.debug("Loaded action artifact mapping from " + fileName);
properties = new Properties();
properties.load(in);
}
@@ -302,7 +302,6 @@
log.debug("No action artifact mapping") ;
}
return properties;
-
}
public static Set<ObjectName> getActionDependencies(final String deploymentName, final ModelAdapter model, final Properties actionArtifactProperties) throws DeploymentException
Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java 2009-04-01 15:37:24 UTC (rev 25904)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java 2009-04-01 17:59:39 UTC (rev 25905)
@@ -177,7 +177,7 @@
tmpDir = config.getServerTempDeployDir();
}
- esbWarFiles = JBossDeployerUtil.createWarFilesDir(tmpDir, "esbwarfiles");
+ esbWarFiles = JBossDeployerUtil.createDir(tmpDir, "esbwarfiles");
try
{
Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParser.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParser.java 2009-04-01 15:37:24 UTC (rev 25904)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParser.java 2009-04-01 17:59:39 UTC (rev 25905)
@@ -21,7 +21,6 @@
package org.jboss.soa.esb.listeners.deployers.mc;
import java.io.IOException;
-import java.io.InputStream;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -49,30 +48,23 @@
* EsbConfigParser is a Microcontainer deployer that picks up jboss-esb.xml files, parses the content
* and produces an {@link EsbMetaData} instance.
* <p/>
+ * Other implementations could read/parse a configuration form another source, for example store
+ * the configurations in a database. As long as they produce the EsbMetaData they will be able to
+ * be deployed.
*
* Sample configuration:
* <pre>{@code
- * <bean name="EsbConfigParser" class="org.jboss.soa.esb.listeners.deployers.mc.EsbConfigParser"/>
+ * <bean name="EsbConfigParser" class="org.jboss.soa.esb.listeners.deployers.mc.EsbConfigParser">
+ * <property name="deploymentPrefix">jboss.esb:deployment=</property>
+ * <property name="actionArtifactsFile">/actionArtifactMap.properties</property>
+ * </bean>
* }</pre>
*
* @author <a href="mailto:dbevenius at jboss.com">Daniel Bevenius</a>
*/
public class EsbConfigParser extends AbstractVFSParsingDeployer<EsbMetaData>
{
- private static final String PREFIX_CANONICAL_NAME = "jboss.esb:deployment=" ;
- private static final String ESB_ARTIFACT_NAME = "jbossesb.esb" ;
-
/**
- * Logger.
- */
- private Logger log = Logger.getLogger(EsbConfigParser.class);
-
- /**
- *
- */
- private Properties actionArtifactProperties;
-
- /**
* The default suffix of JBossESB configuration files that should be picked up.
*/
private static final String ESB_FILE_SUFFIX = "-esb.xml";
@@ -85,9 +77,29 @@
/**
* File filter for esb config files.
*/
- private static EsbConfigFileFilter configFileFileter = new EsbConfigFileFilter();
+ private static EsbConfigFileFilter configFileFilter = new EsbConfigFileFilter();
+
+ /**
+ * Default actions file name.
+ */
+ private String actionArtifactsFile = "/actionArtifactMap.properties";
+
+ /**
+ * The read action properties.
+ */
+ private Properties actionArtifactProperties;
+
+ /**
+ * Deployment prefix for esb deployments.
+ */
+ private String deploymentPrefix = "jboss.esb:deployment=";
/**
+ * Logger.
+ */
+ private Logger log = Logger.getLogger(EsbConfigParser.class);
+
+ /**
* No args constructor.
*/
public EsbConfigParser()
@@ -103,34 +115,31 @@
{
final String esbConfigXml = readEsbConfigFile(file);
final String archiveName = file.getPathName();
- final String deploymentName = deploymentUnit.getSimpleName();
+ final String deploymentName = getDeploymentName(deploymentUnit);
+ final ModelAdapter model = JBossDeployerUtil.getJbossEsbModel(esbConfigXml);
// Get dependencies from deployment.xml.
final Set<ObjectName> dependencies = getDependenciesFromDeploymentXml(deploymentUnit);
// Get implicit action dependencies.
- final ModelAdapter model = JBossDeployerUtil.getJbossEsbModel(esbConfigXml);
final Set<ObjectName> actionDependencies = getActionDependencies(deploymentName, model, actionArtifactProperties);
// Add all dependencies to set.
dependencies.addAll(actionDependencies);
- EsbMetaData esbMetaData = new EsbMetaData(esbConfigXml, archiveName, deploymentName, dependencies);
+ final EsbMetaData esbMetaData = new EsbMetaData(esbConfigXml, archiveName, deploymentName, dependencies, model);
log.info("Parsed ESB configuration'" + esbMetaData + "'");
- return new EsbMetaData(esbConfigXml, archiveName, deploymentName, dependencies);
+ return esbMetaData;
}
+ private String getDeploymentName(VFSDeploymentUnit deploymentUnit)
+ {
+ final String simpleName = deploymentUnit.getSimpleName();
+ return simpleName.substring(0, simpleName.indexOf(ESB_ARCHIVE_SUFFIX));
+ }
+
public void create() throws Exception
{
- log.info("EsbDeployer create method called.");
- final Properties artifactProperties = JBossDeployerUtil.getArtifactProperties("/actionArtifactMap.properties");
- if (artifactProperties == null)
- {
- log.debug("No action artifact mapping");
- }
- else
- {
- log.debug("Loaded action artifact mapping");
- actionArtifactProperties = artifactProperties;
- }
+ log.info("EsbDeployer created");
+ actionArtifactProperties = JBossDeployerUtil.getArtifactProperties(actionArtifactsFile);
}
/**
@@ -151,7 +160,7 @@
List<VirtualFile> esbConfigFiles;
try
{
- esbConfigFiles = file.getChildrenRecursively(configFileFileter);
+ esbConfigFiles = file.getChildrenRecursively(configFileFilter);
}
catch (final IOException e)
{
@@ -177,47 +186,48 @@
private Set<ObjectName> getDependenciesFromDeploymentXml(final VFSDeploymentUnit deploymentUnit) throws DeploymentException
{
final Set<ObjectName> dependencies = new HashSet<ObjectName>();
- // Find dependencies specified in deployment.xml
- InputStream in = deploymentUnit.getClassLoader().getResourceAsStream("META-INF/deployment.xml");
- if (in != null)
+ final VirtualFile deploymentFile = deploymentUnit.getFile("META-INF/deployment.xml");
+ try
{
- try
+ if (deploymentFile.exists())
{
- XmlFileLoader xfl = new XmlFileLoader();
- Element jboss = xfl.getDocument(in, "META-INF/deployment.xml").getDocumentElement();
- // Check for a ejb level class loading config
- @SuppressWarnings("unchecked")
- Iterator depends = MetaData.getChildrenByTagName(jboss, "depends");
- if (depends != null)
+ try
{
- while (depends.hasNext())
+ XmlFileLoader xfl = new XmlFileLoader();
+ Element jboss = xfl.getDocument(deploymentFile.openStream(), "META-INF/deployment.xml").getDocumentElement();
+ // Check for a ejb level class loading config
+ @SuppressWarnings("unchecked")
+ Iterator depends = MetaData.getChildrenByTagName(jboss, "depends");
+ if (depends != null)
{
- Element depend = (Element) depends.next();
- dependencies.add(new ObjectName(MetaData.getElementContent(depend)));
+ while (depends.hasNext())
+ {
+ Element depend = (Element) depends.next();
+ dependencies.add(new ObjectName(MetaData.getElementContent(depend)));
+ }
}
- }
- @SuppressWarnings("unchecked")
- Iterator esbDepends = MetaData.getChildrenByTagName(jboss, "esb-depends");
- if ((esbDepends != null) && esbDepends.hasNext())
- {
- Element depend = (Element) esbDepends.next();
- final String deployable = MetaData.getElementContent(depend);
- if (deployable.endsWith(".war"))
+ @SuppressWarnings("unchecked")
+ Iterator esbDepends = MetaData.getChildrenByTagName(jboss, "esb-depends");
+ if ((esbDepends != null) && esbDepends.hasNext())
{
- String objectName = "jboss.web.deployment:war=/" + deployable.substring(0, deployable.indexOf('.'));
- log.info("war objectName : " + objectName);
- dependencies.add(new ObjectName(objectName));
+ Element depend = (Element) esbDepends.next();
+ final String deployable = MetaData.getElementContent(depend);
+ if (deployable.endsWith(".war"))
+ {
+ String objectName = "jboss.web.deployment:war=/" + deployable.substring(0, deployable.indexOf('.'));
+ dependencies.add(new ObjectName(objectName));
+ }
}
}
+ catch (final MalformedObjectNameException e)
+ {
+ throw new org.jboss.deployment.DeploymentException(e.getMessage(), e);
+ }
}
- catch (final MalformedObjectNameException e)
- {
- throw new org.jboss.deployment.DeploymentException(e.getMessage(), e);
- }
- finally
- {
- try { in.close(); } catch (IOException ignore) { }
- }
+ }
+ catch (final IOException e)
+ {
+ throw new DeploymentException(e.getMessage(), e);
}
return dependencies;
}
@@ -244,7 +254,6 @@
}
final Set<String> artifacts = new HashSet<String>() ;
- artifacts.add(ESB_ARTIFACT_NAME) ;
final Set<String> actionClasses = model.getActions() ;
@@ -265,7 +274,7 @@
{
if (!deploymentName.equals(artifact))
{
- final String canonicalName = PREFIX_CANONICAL_NAME + artifact ;
+ final String canonicalName = deploymentPrefix + artifact ;
try
{
ObjectName on = ObjectNameConverter.convert(canonicalName);
@@ -279,6 +288,16 @@
}
return deps;
}
+
+ public void setActionArtifactsFile(String actionArtifactsFile)
+ {
+ this.actionArtifactsFile = actionArtifactsFile;
+ }
+
+ public void setDeploymentPrefix(String deploymentPrefix)
+ {
+ this.deploymentPrefix = deploymentPrefix;
+ }
/**
* Filter for filtering out ESB configuration files.
Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployer.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployer.java 2009-04-01 15:37:24 UTC (rev 25904)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployer.java 2009-04-01 17:59:39 UTC (rev 25905)
@@ -20,11 +20,8 @@
*/
package org.jboss.soa.esb.listeners.deployers.mc;
-import java.io.File;
import java.io.IOException;
-import java.net.URL;
import java.util.ArrayList;
-import java.util.List;
import java.util.Set;
import javax.management.ObjectName;
@@ -34,15 +31,10 @@
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
import org.jboss.deployers.spi.deployer.DeploymentStages;
-import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
-import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.spi.deployer.AbstractSimpleVFSRealDeployer;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
import org.jboss.deployment.DeploymentException;
import org.jboss.internal.soa.esb.publish.ContractReferencePublisher;
-import org.jboss.internal.soa.esb.util.JBossDeployerUtil;
-import org.jboss.metadata.web.jboss.JBossWebMetaData;
-import org.jboss.metadata.web.spec.WebMetaData;
-import org.jboss.soa.esb.listeners.config.JBoss4ESBDeployment;
-import org.jboss.soa.esb.listeners.config.model.ModelAdapter;
/**
* EsbRuntimeDeployer takes care of the deployment of an {@link BeanMetaData}
@@ -54,17 +46,15 @@
*
* Example configuration:
*
- * <pre>
- * {@code
+ * <pre>{@code
* <bean name="EsbDeployer" class="org.jboss.soa.esb.listeners.deployers.mc.EsbDeployer">
* <property name="serverTmpDir">${jboss.server.temp.dir}</property>
* </bean>
- * }
- * </pre>
+ * }</pre>
*
* @author <a href="mailto:dbevenius at jboss.com">Daniel Bevenius</a>
*/
-public class EsbDeployer extends AbstractSimpleRealDeployer<EsbMetaData>
+public class EsbDeployer extends AbstractSimpleVFSRealDeployer<EsbMetaData>
{
/**
* Logger.
@@ -75,30 +65,16 @@
* Prefix used for the BeanMetaData and for the managenment bean name.
*/
private static final String BEAN_PREFIX = "jboss.esb";
-
+
/**
- * A temp directory where esb war files will be created. Will be set by MC
- * and must be set as a property in -beans.xml.
- */
- private String tmpDir;
-
- /**
- * Directory which will act as a staging area for EBWS webapps.
- */
- private File esbWarFiles;
-
- /**
* No args constructor.
*/
public EsbDeployer()
{
super(EsbMetaData.class);
-
// Tell the MicroContainer that we are producing BeanMetaData.
setOutput(BeanMetaData.class);
- // We might also create WebMetaData if we are exposing a Service as a WS.
- setOutput(JBossWebMetaData.class);
- // Will be using classloaders.
+ // Need access to classloaders
setStage(DeploymentStages.POST_CLASSLOADER);
}
@@ -114,7 +90,7 @@
* @param esbMetaData The ESB MetaData that is associated with the deployment unit.
*/
@Override
- public final void deploy(final DeploymentUnit deploymentUnit, final EsbMetaData esbMetaData) throws org.jboss.deployers.spi.DeploymentException
+ public final void deploy(final VFSDeploymentUnit deploymentUnit, final EsbMetaData esbMetaData) throws org.jboss.deployers.spi.DeploymentException
{
try
{
@@ -132,24 +108,8 @@
}
}
- @Override
- public final void undeploy(final DeploymentUnit deploymentUnit, final EsbMetaData esbMetaData)
- {
- final String deploymentName = esbMetaData.getDeploymentName() ;
- final File warFile = JBossDeployerUtil.getESBWarFile(deploymentName, deploymentUnit.getSimpleName(), false, esbWarFiles) ;
- if (warFile != null)
- {
- // Delete the staging directory for this deployment.
- warFile.delete();
-
- // If the parent directory is empty, delete it.
- warFile.getParentFile().delete() ;
- }
- }
-
/**
* Creates a {@link BeanMetaData} that describes the
- * {@link JBoss4ESBDeployment} class.
*
* @param deploymentUnit The deployment unit to deploy.
* @param esbMetaData The ESB MetaData that is associated with the deployment unit.
@@ -158,13 +118,13 @@
* @throws IOException
* @throws DeploymentException
*/
- private BeanMetaData createBeanMetaData(final DeploymentUnit deploymentUnit, final EsbMetaData esbMetaData) throws DeploymentException, IOException
+ private BeanMetaData createBeanMetaData(final VFSDeploymentUnit deploymentUnit, final EsbMetaData esbMetaData) throws DeploymentException, IOException
{
BeanMetaDataBuilder bmdBuilder = BeanMetaDataBuilder.createBuilder(BEAN_PREFIX + "." + deploymentUnit.getName(), EsbDeployment.class.getName());
// Setup the first constructor argument (esb config xml).
bmdBuilder.addConstructorParameter(String.class.getName(), esbMetaData.getEsbConfigXml());
// Setup the second constructor argument (esb archive name).
- bmdBuilder.addConstructorParameter(String.class.getName(), esbMetaData.getArchiveName());
+ bmdBuilder.addConstructorParameter(String.class.getName(), esbMetaData.getDeploymentName());
// Setup the third constructor argument (the name of the mbean).
final String mbeanName = BEAN_PREFIX + ":deployment=" + deploymentUnit.getSimpleName();
bmdBuilder.addConstructorParameter(String.class.getName(), mbeanName);
@@ -175,68 +135,31 @@
bmdBuilder.addDependency(BEAN_PREFIX + ":service=ESBRegistry");
bmdBuilder.addDependency(BEAN_PREFIX + ":service=JuddiRMI");
- // Add all depenencies parsed by the the previous deployers.
+ // Add the dependencies for this deployment.
Set<ObjectName> dependencies = esbMetaData.getDependencies();
for (ObjectName objectName : dependencies)
{
- bmdBuilder.addDependency(objectName.toString());
+ // The dependencies are added as demands. If we add them as dependencies
+ // they will get undeployed which this unit is undeployed.
+ bmdBuilder.addDemand(objectName.toString());
}
- // create webservice WAR
- final ClassLoader origCL = Thread.currentThread().getContextClassLoader();
- final List<ContractReferencePublisher> publishers = new ArrayList<ContractReferencePublisher>();
- final File warFile;
- try
+ if (esbMetaData.getPublishers().size() > 0)
{
- Thread.currentThread().setContextClassLoader(deploymentUnit.getClassLoader());
- final ModelAdapter model = JBossDeployerUtil.getJbossEsbModel(esbMetaData.getEsbConfigXml());
- warFile = JBossDeployerUtil.createWebserviceWars(esbWarFiles, esbMetaData.getDeploymentName(), model, esbMetaData.getArchiveName(), publishers);
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(origCL);
- }
-
- if (warFile != null)
- {
// set publishers on the deployment instance, or rather tell MC to do this for us.
AbstractCollectionMetaData collectionMetaData = new AbstractCollectionMetaData();
- collectionMetaData.setType(List.class.getName());
+ collectionMetaData.setType(ArrayList.class.getName());
collectionMetaData.setElementType(ContractReferencePublisher.class.getName());
- collectionMetaData.setValue(publishers);
+ collectionMetaData.setValue(esbMetaData.getPublishers());
bmdBuilder.addPropertyMetaData("publishers", collectionMetaData);
-
- //TODO: Deploy the war. Don't know how to do this yet.
- JBossWebMetaData webMetaData = new JBossWebMetaData();
- webMetaData.setContextRoot("/test");
- deploymentUnit.addAttachment(JBossWebMetaData.class, webMetaData);
-
}
return bmdBuilder.getBeanMetaData();
}
-
- /**
- * Specifies a temp directory where ESBWS web applications will be created.
- *
- * @param tmpDir
- * A tmp directory that cat be used for staging web applications.
- */
- public void setServerTmpDir(final String tmpDir)
- {
- this.tmpDir = tmpDir;
- }
-
+
public void create() throws Exception
{
- log.info("EsbDeployer create method called.");
- esbWarFiles = JBossDeployerUtil.createWarFilesDir(tmpDir, "esbwarfiles");
+ log.info("EsbDeployer created");
}
-
- public void destroy() throws Exception
- {
- log.info("EsbDeployer destroy method called.");
- }
-
}
\ No newline at end of file
Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployment.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployment.java 2009-04-01 15:37:24 UTC (rev 25904)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployment.java 2009-04-01 17:59:39 UTC (rev 25905)
@@ -101,13 +101,12 @@
public void create()
{
- log.info("Creating ESB Deployment Service.");
LifecycleResourceManager.getSingleton().associateDeployment(deploymentName);
}
public void start() throws Exception
{
- log.info("Starting EBS Deployment Service.");
+ log.info("Starting EBS Deployment '" + deploymentName + "'");
if (controller == null)
{
controller = Configuration.create(jbossEsbXml, new ObjectName(mbeanName), publishers);
@@ -117,15 +116,14 @@
public void stop() throws Exception
{
- log.info("Stopping ESB Deployment Service.");
+ log.info("Stopping EBS Deployment '" + deploymentName + "'");
ServicePublisher.removeServicePublishers(controller);
controller.stop();
- log.info("Stopped ESB Deployment Service.");
}
public void destroy() throws Exception
{
- log.info("Destroying ESB Deployment Service.");
+ log.info("Destroying ESB Deployment '" + deploymentName + "'");
LifecycleResourceManager.getSingleton().disassociateDeployment(deploymentName);
LifecycleResourceManager.getSingleton().destroyResources();
}
Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbMetaData.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbMetaData.java 2009-04-01 15:37:24 UTC (rev 25904)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbMetaData.java 2009-04-01 17:59:39 UTC (rev 25905)
@@ -21,11 +21,16 @@
package org.jboss.soa.esb.listeners.deployers.mc;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.Collections;
+import java.util.List;
import java.util.Set;
import javax.management.ObjectName;
+import org.jboss.internal.soa.esb.publish.ContractReferencePublisher;
+import org.jboss.soa.esb.listeners.config.model.ModelAdapter;
+
/**
* Metadata for an ESB deployment.
* <p/>
@@ -53,6 +58,11 @@
/** The deployment name */
private final String deploymentName;
+ /** The adapter for querying the model */
+ private ModelAdapter model;
+
+ private List<ContractReferencePublisher> publishers = new ArrayList<ContractReferencePublisher>();
+
/**
* Creates a EsbMetaData with the jboss-esb.xml as a VirtualFile and
* the name of the .esb archive.
@@ -61,12 +71,13 @@
* @param archiveName The name of the .esb archive from which this deployment comes from.
* @param dependencies Dependencies of this deployment. This might be object names or simply bean names.
*/
- public EsbMetaData(final String esbConfigXml, final String archiveName, final String deploymentName, final Set<ObjectName> dependencies)
+ public EsbMetaData(final String esbConfigXml, final String archiveName, final String deploymentName, final Set<ObjectName> dependencies, final ModelAdapter model)
{
this.esbConfigXml = esbConfigXml;
this.archiveName = archiveName;
+ this.deploymentName = deploymentName;
this.dependencies = dependencies;
- this.deploymentName = deploymentName;
+ this.model = model;
}
/**
@@ -93,10 +104,23 @@
{
return deploymentName;
}
+
+ public ModelAdapter getModel()
+ {
+ return model;
+ }
+
+ public void setPublishers(final List<ContractReferencePublisher> publishers)
+ {
+ this.publishers = publishers;
+ }
+
+ public List<ContractReferencePublisher> getPublishers()
+ {
+ return publishers;
+ }
/**
- * toString.
- *
* @return String String representation of this metadata.
*/
@Override
Added: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployer.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployer.java (rev 0)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployer.java 2009-04-01 17:59:39 UTC (rev 25905)
@@ -0,0 +1,192 @@
+/*
+ * JBoss, Home of Professional Open Source Copyright 2009, Red Hat Middleware
+ * LLC, and individual contributors by the @authors tag. See the copyright.txt
+ * in the distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This software is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this software; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
+ * site: http://www.fsf.org.
+ */
+package org.jboss.soa.esb.listeners.deployers.mc;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.DeploymentStages;
+import org.jboss.deployers.vfs.plugins.classloader.HostNameCreator;
+import org.jboss.deployers.vfs.spi.deployer.AbstractSimpleVFSRealDeployer;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.internal.soa.esb.publish.ContractReferencePublisher;
+import org.jboss.internal.soa.esb.util.JBossDeployerUtil;
+import org.jboss.internal.soa.esb.webservice.ESBContractGenerator;
+import org.jboss.internal.soa.esb.webservice.ESBResponseFilter;
+import org.jboss.internal.soa.esb.webservice.ESBServiceContractPublisher;
+import org.jboss.internal.soa.esb.webservice.ESBServiceEndpointInfo;
+import org.jboss.internal.soa.esb.webservice.JAXWSProviderClassGenerator;
+import org.jboss.internal.soa.esb.webservice.WebServicePublishException;
+import org.jboss.metadata.javaee.spec.ParamValueMetaData;
+import org.jboss.metadata.web.jboss.JBossServletMetaData;
+import org.jboss.metadata.web.jboss.JBossServletsMetaData;
+import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.metadata.web.spec.FilterMetaData;
+import org.jboss.metadata.web.spec.FiltersMetaData;
+import org.jboss.metadata.web.spec.ServletMappingMetaData;
+import org.jboss.soa.esb.Service;
+import org.jboss.soa.esb.listeners.config.WebserviceInfo;
+import org.jboss.util.id.GUID;
+import org.jboss.virtual.MemoryFileFactory;
+import org.jboss.virtual.VirtualFile;
+import org.jboss.wsf.spi.metadata.j2ee.JSEArchiveMetaData;
+
+/**
+ *
+ * @author <a href="mailto:dbevenius at jboss.com">Daniel Bevenius</a>
+ *
+ */
+public class EsbWebServiceDeployer extends AbstractSimpleVFSRealDeployer<EsbMetaData>
+{
+ /** Logger */
+ private Logger log = Logger.getLogger(EsbWebServiceDeployer.class);
+
+ private HostNameCreator hostNameCreator;
+
+ /**
+ * No-args constructor.
+ *
+ * Sets the deployment stage to POST_CLASSLOADER and set the output of
+ * this deployer to {@link JSEArchiveMetaData}.
+ */
+ public EsbWebServiceDeployer()
+ {
+ super(EsbMetaData.class);
+ setStage(DeploymentStages.POST_CLASSLOADER);
+ setOutput(JSEArchiveMetaData.class);
+ setOutput(EsbMetaData.class);
+ }
+ protected String createHost(VFSDeploymentUnit unit)
+ {
+ return (hostNameCreator != null) ? hostNameCreator.createHostName(unit) : GUID.asString();
+ }
+
+ @Override
+ public void deploy(final VFSDeploymentUnit deploymentUnit, final EsbMetaData esbMetaData) throws DeploymentException
+ {
+ final List<WebserviceInfo> endpointServices = esbMetaData.getModel().getWebserviceServices();
+ if (endpointServices != null)
+ {
+ if (endpointServices.size() > 0)
+ {
+ log.info("Deploying webservices for : " + esbMetaData);
+ final JBossWebMetaData webMetaData = new JBossWebMetaData();
+ final JBossServletsMetaData servlets = new JBossServletsMetaData();
+ final List<ServletMappingMetaData> servletMappings = new ArrayList<ServletMappingMetaData>();
+ final FiltersMetaData filters = new FiltersMetaData();
+ final List<ContractReferencePublisher> publishers = new ArrayList<ContractReferencePublisher>() ;
+
+ try
+ {
+ // Used to dynamically add inmemory files to the deployment.
+ URL dynamicClassRoot = new URL("vfsmemory", GUID.asString(), "");
+ VirtualFile root = MemoryFileFactory.createRoot(dynamicClassRoot).getRoot();
+
+ final JAXWSProviderClassGenerator generator = new JAXWSProviderClassGenerator(deploymentUnit.getClassLoader());
+ for (WebserviceInfo webserviceInfo : endpointServices)
+ {
+ final ESBServiceEndpointInfo serviceInfo = new ESBServiceEndpointInfo(webserviceInfo);
+ final Service service = webserviceInfo.getService();
+ final String handlers = JBossDeployerUtil.getHandlers(serviceInfo);
+ final boolean includeHandlers = (handlers != null);
+ if (includeHandlers)
+ {
+ final String wsHandlerName = "/WEB-INF/classes/" + serviceInfo.getPackageName().replace('.', '/') + "/esb-jaxws-handlers.xml";
+ VirtualFile jaxwsHandlers = MemoryFileFactory.putFile(new URL(dynamicClassRoot + wsHandlerName), handlers.getBytes());
+ deploymentUnit.prependClassPath(jaxwsHandlers);
+ }
+
+ if (serviceInfo.isOneWay())
+ {
+ filters.add(createFilter(serviceInfo));
+ }
+
+ // Generate the servlet class bytes
+ final byte[] servletClass = generator.generate(service.getCategory(), service.getName(), serviceInfo, includeHandlers);
+ // Add the file to the in memory file system
+ String servletClassName = "/WEB-INF/classes/" + serviceInfo.getClassName().replace('.', '/') + ".class";
+ VirtualFile servletClassFile = MemoryFileFactory.putFile(new URL(dynamicClassRoot + servletClassName), servletClass);
+ deploymentUnit.prependClassPath(servletClassFile);
+
+ servlets.add(createServlets(service, serviceInfo, generator, includeHandlers));
+ servletMappings.add(createServletMapping(serviceInfo));
+
+ final String wsdl = ESBContractGenerator.generateWSDL(webserviceInfo, serviceInfo);
+ VirtualFile wsdlFile = MemoryFileFactory.putFile(new URL(dynamicClassRoot + "/" + serviceInfo.getWSDLFileName()), wsdl.getBytes());
+ deploymentUnit.prependClassPath(wsdlFile);
+
+ final ContractReferencePublisher publisher = new ESBServiceContractPublisher(service, webserviceInfo.getDescription(), serviceInfo.getServletName());
+ publishers.add(publisher);
+ }
+ }
+ catch (final Exception e)
+ {
+ throw new DeploymentException("Failed to create webservice artifact", e);
+ }
+
+ webMetaData.setServlets(servlets);
+ webMetaData.setServletMappings(servletMappings);
+ webMetaData.setFilters(filters);
+
+ esbMetaData.setPublishers(publishers);
+
+ deploymentUnit.addAttachment(JBossWebMetaData.class, webMetaData);
+ }
+ }
+ }
+
+ private ServletMappingMetaData createServletMapping(ESBServiceEndpointInfo serviceInfo)
+ {
+ ServletMappingMetaData servletMapping = new ServletMappingMetaData();
+ servletMapping.setServletName(serviceInfo.getServletName());
+ servletMapping.setUrlPatterns(Arrays.asList(new String[] { serviceInfo.getServletPath()}));
+ return servletMapping;
+ }
+
+ private JBossServletMetaData createServlets(final Service service, final ESBServiceEndpointInfo serviceInfo, final JAXWSProviderClassGenerator generator, final boolean includeHandlers) throws WebServicePublishException
+ {
+ final JBossServletMetaData servlet = new JBossServletMetaData();
+ servlet.setServletName(serviceInfo.getServletName());
+ servlet.setServletClass(serviceInfo.getClassName());
+ servlet.setLoadOnStartup(1);
+ return servlet;
+ }
+
+ private FilterMetaData createFilter(ESBServiceEndpointInfo serviceInfo)
+ {
+ // Filter
+ final FilterMetaData filter = new FilterMetaData();
+ filter.setFilterName(serviceInfo.getServletName() + "_Filter");
+ filter.setFilterClass(ESBResponseFilter.class.getName());
+
+ // Set up the initparam 'OneWay'
+ final ParamValueMetaData oneWayInitParam = new ParamValueMetaData();
+ oneWayInitParam.setParamName("OneWay");
+ oneWayInitParam.setParamValue("true");
+ filter.setInitParam(Arrays.asList(new ParamValueMetaData[] {oneWayInitParam}));
+ return filter;
+ }
+
+}
Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParserUnitTest.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParserUnitTest.java 2009-04-01 15:37:24 UTC (rev 25904)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParserUnitTest.java 2009-04-01 17:59:39 UTC (rev 25905)
@@ -51,6 +51,7 @@
assertEquals("exploded-esb-archive.esb", esbMetaData.getArchiveName());
assertEquals("exploded-esb-archive", esbMetaData.getDeploymentName());
Set<ObjectName> deps = esbMetaData.getDependencies();
+ assertEquals(3, deps.size());
assertTrue(deps.contains(new ObjectName("jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_esb")));
assertTrue(deps.contains(new ObjectName("jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_gw")));
assertTrue(deps.contains(new ObjectName("jboss.web.deployment:war=/test2")));
Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParserUnitTest.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParserUnitTest.xml 2009-04-01 15:37:24 UTC (rev 25904)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParserUnitTest.xml 2009-04-01 17:59:39 UTC (rev 25905)
@@ -4,7 +4,10 @@
xsi:schemaLocation="urn:jboss:bean-deployer:2.0 bean-deployer_2_0.xsd"
xmlns="urn:jboss:bean-deployer:2.0">
- <bean name="EsbConfigParser" class="org.jboss.soa.esb.listeners.deployers.mc.EsbConfigParser"/>
+ <bean name="EsbConfigParser" class="org.jboss.soa.esb.listeners.deployers.mc.EsbConfigParser">
+ <property name="deploymentPrefix">jboss.esb:deployment=</property>
+ <property name="actionArtifactsFile">/org/jboss/soa/esb/listeners/deployers/mc/actionArtifactMap.properties</property>
+ </bean>
<!-- bean name="EsbDeployer" class="org.jboss.soa.esb.listeners.deployers.mc.EsbDeployer"/-->
Added: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployerUnitTest.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployerUnitTest.java (rev 0)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployerUnitTest.java 2009-04-01 17:59:39 UTC (rev 25905)
@@ -0,0 +1,63 @@
+/*
+ * JBoss, Home of Professional Open Source Copyright 2009, Red Hat Middleware
+ * LLC, and individual contributors by the @authors tag. See the copyright.txt
+ * in the distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This software is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this software; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
+ * site: http://www.fsf.org.
+ */
+package org.jboss.soa.esb.listeners.deployers.mc;
+
+import java.net.URL;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.test.kernel.junit.MicrocontainerTest;
+import org.jboss.util.id.GUID;
+import org.jboss.virtual.MemoryFileFactory;
+import org.jboss.virtual.VFS;
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * Unit tests for {@link EsbDeployer}.
+ * <p/>
+ *
+ * @author <a href="mailto:dbevenius at jboss.com">Daniel Bevenius</a>
+ *
+ */
+public class EsbDeployerUnitTest extends MicrocontainerTest
+{
+ private URL dir = getClass().getResource("/org/jboss/soa/esb/listeners/deployers/mc/test_esb_archives");
+
+ private EsbDeployer esbDeployer = new EsbDeployer();
+
+ public EsbDeployerUnitTest(String name)
+ {
+ super(name);
+ }
+
+ public void testExplodedEsbArchive() throws Throwable
+ {
+ final String archiveName = "exploded-esb-archive.esb";
+ EsbMetaData esbMetaData = TestUtil.getEsbMetaData(new EsbConfigParser(), dir, archiveName);
+ VFSDeploymentUnit deploymentUnit = TestUtil.getDeploymentUnit(dir, archiveName);
+
+ esbDeployer.deploy(deploymentUnit, esbMetaData);
+ Object attachment = deploymentUnit.getAttachment(BeanMetaData.class.getName() + "_ESB");
+ assertTrue(attachment instanceof BeanMetaData);
+ }
+
+}
Added: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployerUnitTest.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployerUnitTest.xml (rev 0)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployerUnitTest.xml 2009-04-01 17:59:39 UTC (rev 25905)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:bean-deployer:2.0 bean-deployer_2_0.xsd"
+ xmlns="urn:jboss:bean-deployer:2.0">
+
+ <bean name="EsbConfigParser" class="org.jboss.soa.esb.listeners.deployers.mc.EsbConfigParser"/>
+
+ <!-- bean name="EsbDeployer" class="org.jboss.soa.esb.listeners.deployers.mc.EsbDeployer"/-->
+
+ <bean name="MainDeployer" class="org.jboss.deployers.plugins.main.MainDeployerImpl">
+ <property name="structuralDeployers"><inject bean="StructuralDeployers"/></property>
+ <property name="deployers"><inject bean="Deployers"/></property>
+ </bean>
+
+ <bean name="StructuralDeployers" class="org.jboss.deployers.vfs.plugins.structure.VFSStructuralDeployersImpl">
+ <property name="structureBuilder">
+ <bean name="StructureBuilder" class="org.jboss.deployers.vfs.plugins.structure.VFSStructureBuilder"/>
+ </property>
+ <incallback method="addDeployer"/>
+ <uncallback method="removeDeployer"/>
+ </bean>
+
+ <bean name="Deployers" class="org.jboss.deployers.plugins.deployers.DeployersImpl">
+ <constructor><parameter><inject bean="jboss.kernel:service=KernelController"/></parameter></constructor>
+ <incallback method="addDeployer"/>
+ <uncallback method="removeDeployer"/>
+ </bean>
+
+
+</deployment>
Added: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/actionArtifactMap.properties
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/actionArtifactMap.properties (rev 0)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/actionArtifactMap.properties 2009-04-01 17:59:39 UTC (rev 25905)
@@ -0,0 +1,54 @@
+#
+# The following actions are included in jbossesb.sar and require
+# no additional dependencies
+#
+# org.jboss.soa.esb.actions.converters.XStreamToObject
+# org.jboss.soa.esb.actions.routing.JMSRouter
+# org.jboss.soa.esb.actions.Aggregator
+# org.jboss.soa.esb.actions.converters.ByteArrayToString
+# org.jboss.soa.esb.actions.routing.EchoRouter
+# org.jboss.soa.esb.actions.naming.FileNameGeneratorAction
+# org.jboss.soa.esb.actions.routing.HttpRouter
+# org.jboss.soa.esb.actions.converters.ObjectInvoke
+# org.jboss.soa.esb.actions.converters.ObjectToCSVString
+# org.jboss.soa.esb.actions.converters.ObjectToXStream
+# org.jboss.soa.esb.actions.StaticWiretap
+# org.jboss.soa.esb.actions.StaticRouter
+# org.jboss.soa.esb.actions.StoreMessageToFile
+# org.jboss.soa.esb.actions.templating.StringTemplateProcessor
+# org.jboss.soa.esb.actions.SystemPrintln
+# org.jboss.soa.esb.actions.Notifier
+# org.jboss.soa.esb.listeners.message.BeanConfigActionProcessor
+# org.jboss.soa.esb.actions.scripting.GroovyActionProcessor
+#
+# The following actions are included in jbossesb.esb and require
+# no additional dependencies
+#
+# org.jboss.soa.esb.actions.MessagePersister
+# org.jboss.soa.esb.actions.MessageRedeliverer
+# org.jboss.soa.esb.monitoring.client.DataCollectorAction
+# org.jboss.soa.esb.monitoring.client.InvokerAction
+# org.jboss.soa.esb.monitoring.client.OperationsCollectorAction
+
+# jbrules.esb actions
+org.jboss.soa.esb.actions.ContentBasedWiretap=jbrules.esb
+org.jboss.soa.esb.actions.ContentBasedRouter=jbrules.esb
+org.jboss.soa.esb.actions.BusinessRulesProcessor=jbrules.esb
+org.jboss.soa.esb.actions.MessageFilter=jbrules.esb
+
+# soap.esb actions
+org.jboss.soa.esb.actions.soap.SOAPClient=soap.esb
+org.jboss.soa.esb.actions.soap.SOAPProcessor=soap.esb
+
+# jbpm.esb actions
+org.jboss.soa.esb.services.jbpm.actions.BpmProcessor=jbpm.esb
+org.jboss.soa.esb.services.jbpm.actions.CommandInterpreter=jbpm.esb
+
+# smooks.esb actions
+org.jboss.soa.esb.actions.converters.SmooksTransformer=smooks.esb
+org.jboss.soa.esb.actions.smooks.SmooksAction=smooks.esb
+org.jboss.soa.esb.smooks.SmooksAction=smooks.esb
+
+# management.esb actions
+org.jboss.soa.esb.monitoring.server.DataFilerAction=management.esb
+org.jboss.soa.esb.monitoring.server.FilerAction=management.esb
Added: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/test_esb_archives/exploded-esb-archive.esb/META-INF/deployment.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/test_esb_archives/exploded-esb-archive.esb/META-INF/deployment.xml (rev 0)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/test_esb_archives/exploded-esb-archive.esb/META-INF/deployment.xml 2009-04-01 17:59:39 UTC (rev 25905)
@@ -0,0 +1,5 @@
+<jbossesb-deployment>
+ <depends>jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_esb</depends>
+ <depends>jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_gw</depends>
+ <esb-depends>test2.war</esb-depends>
+</jbossesb-deployment>
More information about the jboss-svn-commits
mailing list