You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cactus-dev@jakarta.apache.org by gr...@apache.org on 2005/04/26 11:57:59 UTC
cvs commit: jakarta-cactus/integration/ant/src/test/org/apache/cactus/integration/ant TestCactifyWarTask.java TestCactifyEarTask.java
grimsell 2005/04/26 02:57:59
Modified: samples/servlet/src/scripts/share build.xml
integration/ant/src/test-input/org/apache/cactus/integration/ant
test-cactifywar.xml test-cactifyear.xml
integration/ant/src/java/org/apache/cactus/integration/ant
CactusWar.java CactifyEarTask.java
CactifyWarTask.java WebXmlMergeTask.java
. dependencies.xml.default download.xml
build.properties.default
integration/ant build.xml
integration/ant/src/test/org/apache/cactus/integration/ant
TestCactifyWarTask.java TestCactifyEarTask.java
Added: integration/ant/src/test-input/org/apache/cactus/integration/ant
weblogic.ear weblogic.war
Log:
Added feature to add ejb-refs to a cactified war. This feature depends on cargo.
PR: CACTUS-191
Revision Changes Path
1.31 +1 -0 jakarta-cactus/samples/servlet/src/scripts/share/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/jakarta-cactus/samples/servlet/src/scripts/share/build.xml,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- build.xml 23 Mar 2004 09:29:17 -0000 1.30
+++ build.xml 26 Apr 2005 09:57:58 -0000 1.31
@@ -125,6 +125,7 @@
<pathelement location="${aspectjrt.jar}"/>
<pathelement location="${cactus.jar}"/>
<pathelement location="${cactus.ant.jar}"/>
+ <pathelement location="${cargo.jar}"/>
<pathelement location="${commons.httpclient.jar}"/>
<pathelement location="${commons.logging.jar}"/>
<pathelement location="${junit.jar}"/>
1.11 +11 -0 jakarta-cactus/integration/ant/src/test-input/org/apache/cactus/integration/ant/test-cactifywar.xml
Index: test-cactifywar.xml
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/test-input/org/apache/cactus/integration/ant/test-cactifywar.xml,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- test-cactifywar.xml 21 Apr 2005 11:56:33 -0000 1.10
+++ test-cactifywar.xml 26 Apr 2005 09:57:58 -0000 1.11
@@ -137,6 +137,17 @@
destfile="${work.dir}/destfile.war"/>
</target>
+ <target name="testAddWeblogicEjbRefs">
+ <cactifywar srcfile="weblogic.war"
+ destfile="${work.dir}/destfile.war">
+ <ejbref name="MyEjb"
+ localInterface="com.wombat.MyEjb"
+ localHomeInterface="com.wombat.MyEjbHome"
+ jndiName="/wombat/MyEjb"
+ type="Session"/>
+ </cactifywar>
+ </target>
+
<target name="tearDown">
<delete dir="${work.dir}"/>
</target>
1.2 +8 -0 jakarta-cactus/integration/ant/src/test-input/org/apache/cactus/integration/ant/test-cactifyear.xml
Index: test-cactifyear.xml
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/test-input/org/apache/cactus/integration/ant/test-cactifyear.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- test-cactifyear.xml 15 Feb 2005 10:31:44 -0000 1.1
+++ test-cactifyear.xml 26 Apr 2005 09:57:58 -0000 1.2
@@ -16,6 +16,14 @@
<cactuswar context="/myTestFramework" version="2.3"/>
</cactifyear>
</target>
+
+ <target name="testAddEjbReferences">
+ <cactifyear srcfile="weblogic.ear"
+ destfile="${work.dir}/cactified.ear"
+ addEjbReferences="yes">
+ <cactuswar srcfile="weblogic.war"/>
+ </cactifyear>
+ </target>
<target name="tearDown">
<delete dir="${work.dir}"/>
1.1 jakarta-cactus/integration/ant/src/test-input/org/apache/cactus/integration/ant/weblogic.ear
<<Binary file>>
1.1 jakarta-cactus/integration/ant/src/test-input/org/apache/cactus/integration/ant/weblogic.war
<<Binary file>>
1.2 +4 -2 jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/CactusWar.java
Index: CactusWar.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/CactusWar.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CactusWar.java 15 Feb 2005 10:31:44 -0000 1.1
+++ CactusWar.java 26 Apr 2005 09:57:59 -0000 1.2
@@ -20,7 +20,9 @@
package org.apache.cactus.integration.ant;
/**
- *
+ * Implements the nested element cactuswar of the cactifyear task.
+ * This element can be configured exactly as the cactifywar task
+ * with som additions as context within the ear file.
*
*
* @version $Id$
1.2 +118 -5 jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/CactifyEarTask.java
Index: CactifyEarTask.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/CactifyEarTask.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CactifyEarTask.java 15 Feb 2005 10:31:44 -0000 1.1
+++ CactifyEarTask.java 26 Apr 2005 09:57:59 -0000 1.2
@@ -21,17 +21,23 @@
import java.io.File;
import java.io.IOException;
+import java.util.Iterator;
import javax.xml.parsers.ParserConfigurationException;
-import org.apache.cactus.integration.ant.deployment.application.ApplicationXml;
-import org.apache.cactus.integration.ant.deployment.application.ApplicationXmlIo;
-import org.apache.cactus.integration.ant.deployment.application.DefaultEarArchive;
-import org.apache.cactus.integration.ant.deployment.application.EarArchive;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Ear;
import org.apache.tools.ant.types.ZipFileSet;
import org.apache.tools.ant.util.FileUtils;
+import org.codehaus.cargo.module.application.ApplicationXml;
+import org.codehaus.cargo.module.application.ApplicationXmlIo;
+import org.codehaus.cargo.module.application.DefaultEarArchive;
+import org.codehaus.cargo.module.application.EarArchive;
+import org.codehaus.cargo.module.ejb.EjbArchive;
+import org.codehaus.cargo.module.ejb.EjbJarXml;
+import org.codehaus.cargo.module.ejb.Entity;
+import org.codehaus.cargo.module.ejb.Session;
+import org.codehaus.cargo.module.ejb.VendorEjbDescriptor;
import org.xml.sax.SAXException;
/**
@@ -51,6 +57,12 @@
* The archive that contains the web-app that should be cactified.
*/
private File srcFile;
+
+ /**
+ * Indicates whether or not we should add ejb references to local ejbs
+ * in the deployment descriptor.
+ */
+ private boolean addEjbReferences;
/**
*
@@ -70,6 +82,25 @@
}
/**
+ * @return Returns the addEjbReferences.
+ */
+ public boolean getAddEjbReferences()
+ {
+ return addEjbReferences;
+ }
+ /**
+ * Indicates whether or not ejb references should be added.
+ * If set to true all local ejbs will be accessible via
+ * java:comp/env/ejb/<EJB_NAME>
+ *
+ * @param isAddEjbReferences if ejb references should be added.
+ */
+ public void setAddEjbReferences(boolean isAddEjbReferences)
+ {
+ this.addEjbReferences = isAddEjbReferences;
+ }
+
+ /**
* @see org.apache.tools.ant.Task#execute()
*/
public void execute() throws BuildException
@@ -169,6 +200,12 @@
getProject().getBaseDir());
tmpCactusWar.deleteOnExit();
cactusWar.setDestFile(tmpCactusWar);
+
+ if (addEjbReferences)
+ {
+ addEjbReferencesToWar(tmpCactusWar);
+ }
+
cactusWar.execute();
return tmpCactusWar;
@@ -203,4 +240,80 @@
return cactusWarConfig;
}
+
+ /**
+ * Add ejb references.
+ *
+ * @param theWar temporary cactus war
+ */
+ private void addEjbReferencesToWar(File theWar)
+ {
+ try
+ {
+ EarArchive ear = new DefaultEarArchive(srcFile);
+ ApplicationXml appXml = ear.getApplicationXml();
+ Iterator ejbModules = appXml.getEjbModules();
+ while (ejbModules.hasNext())
+ {
+ String module = (String) ejbModules.next();
+ EjbArchive ejbArchive = ear.getEjbModule(module);
+ EjbJarXml descr = ejbArchive.getEjbJarXml();
+ Iterator ejbs = descr.getSessionEjbs();
+ while (ejbs.hasNext())
+ {
+ Session ejb = (Session) ejbs.next();
+ String name = ejb.getName();
+ String local = ejb.getLocal();
+ String localHome = ejb.getLocalHome();
+ if (local != null)
+ {
+ CactifyWarTask.EjbRef ref = new CactifyWarTask.EjbRef();
+ ref.setType("Session");
+ ref.setName("ejb/" + name);
+ ref.setLocalInterface(local);
+ ref.setLocalHomeInterface(localHome);
+ VendorEjbDescriptor vendorDescr =
+ descr.getVendorDescriptor();
+ String jndiName = vendorDescr.getJndiName(ejb);
+ ref.setJndiName(jndiName);
+ cactusWar.addConfiguredEjbref(ref);
+ }
+ }
+ ejbs = descr.getEntityEjbs();
+ while (ejbs.hasNext())
+ {
+ Entity ejb = (Entity) ejbs.next();
+ String name = ejb.getName();
+ String local = ejb.getLocal();
+ String localHome = ejb.getLocalHome();
+ if (local != null)
+ {
+ CactifyWarTask.EjbRef ref = new CactifyWarTask.EjbRef();
+ ref.setType("Entity");
+ ref.setName("ejb/" + name);
+ ref.setLocalInterface(local);
+ ref.setLocalHomeInterface(localHome);
+ VendorEjbDescriptor vendorDescr =
+ descr.getVendorDescriptor();
+ String jndiName = vendorDescr.getJndiName(ejb);
+ ref.setJndiName(jndiName);
+ cactusWar.addConfiguredEjbref(ref);
+ }
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ throw new BuildException("Could not merge deployment "
+ + "descriptors", e);
+ }
+ catch (SAXException e)
+ {
+ throw new BuildException("Parsing of merge file failed", e);
+ }
+ catch (ParserConfigurationException e)
+ {
+ throw new BuildException("XML parser configuration error", e);
+ }
+ }
}
1.34 +202 -14 jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/CactifyWarTask.java
Index: CactifyWarTask.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/CactifyWarTask.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- CactifyWarTask.java 21 Apr 2005 11:56:33 -0000 1.33
+++ CactifyWarTask.java 26 Apr 2005 09:57:59 -0000 1.34
@@ -28,14 +28,7 @@
import javax.xml.parsers.ParserConfigurationException;
-import org.apache.cactus.integration.ant.util.AntLog;
import org.apache.cactus.integration.ant.util.ResourceUtils;
-import org.apache.cactus.integration.ant.deployment.webapp.DefaultWarArchive;
-import org.apache.cactus.integration.ant.deployment.webapp.WarArchive;
-import org.apache.cactus.integration.ant.deployment.webapp.WebXml;
-import org.apache.cactus.integration.ant.deployment.webapp.WebXmlIo;
-import org.apache.cactus.integration.ant.deployment.webapp.WebXmlMerger;
-import org.apache.cactus.integration.ant.deployment.webapp.WebXmlVersion;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.War;
@@ -44,6 +37,13 @@
import org.apache.tools.ant.types.XMLCatalog;
import org.apache.tools.ant.types.ZipFileSet;
import org.apache.tools.ant.util.FileUtils;
+import org.codehaus.cargo.module.webapp.DefaultWarArchive;
+import org.codehaus.cargo.module.webapp.WarArchive;
+import org.codehaus.cargo.module.webapp.WebXml;
+import org.codehaus.cargo.module.webapp.WebXmlIo;
+import org.codehaus.cargo.module.webapp.WebXmlMerger;
+import org.codehaus.cargo.module.webapp.WebXmlVersion;
+import org.codehaus.cargo.util.monitor.AntMonitor;
import org.xml.sax.SAXException;
/**
@@ -303,6 +303,131 @@
}
+ /**
+ * Implements the nested element ejbref
+ */
+ public static final class EjbRef
+ {
+ /**
+ * The name
+ */
+ private String name;
+ /**
+ * The local interface
+ */
+ private String localInterface;
+ /**
+ * The local home interface
+ */
+ private String localHomeInterface;
+ /**
+ * The jndi name
+ */
+ private String jndiName;
+ /**
+ * The type
+ */
+ private String type;
+
+ /**
+ * Returns the jndi name
+ *
+ * @return Returns the jndiName.
+ */
+ public String getJndiName()
+ {
+ return jndiName;
+ }
+ /**
+ * Sets the jndiName
+ *
+ * @param theJndiName The jndiName to set.
+ */
+ public void setJndiName(String theJndiName)
+ {
+ this.jndiName = theJndiName;
+ }
+
+ /**
+ * Returns the local home interface
+ *
+ * @return Returns the localHomeInterface.
+ */
+ public String getLocalHomeInterface()
+ {
+ return localHomeInterface;
+ }
+
+ /**
+ * Sets the local home interface
+ *
+ * @param theLocalHomeInterface The localHomeInterface to set.
+ */
+ public void setLocalHomeInterface(String theLocalHomeInterface)
+ {
+ this.localHomeInterface = theLocalHomeInterface;
+ }
+
+ /**
+ * Return the local interface
+ *
+ * @return Returns the localInterface.
+ */
+ public String getLocalInterface()
+ {
+ return localInterface;
+ }
+
+ /**
+ * Sets the local interface
+ *
+ * @param theLocalInterface The localInterface to set.
+ */
+ public void setLocalInterface(String theLocalInterface)
+ {
+ this.localInterface = theLocalInterface;
+ }
+
+ /**
+ * Returns the name
+ *
+ * @return Returns the name.
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Sets the name
+ *
+ * @param theName The name to set.
+ */
+ public void setName(String theName)
+ {
+ this.name = theName;
+ }
+
+ /**
+ * Returns the type
+ *
+ * @return Returns the type.
+ */
+ public String getType()
+ {
+ return type;
+ }
+
+ /**
+ * Sets the type
+ *
+ * @param theType The type to set.
+ */
+ public void setType(String theType)
+ {
+ this.type = theType;
+ }
+ }
// Instance Variables ------------------------------------------------------
/**
@@ -330,6 +455,11 @@
* The web-app version to use when creating a WAR from scratch.
*/
private String version = null;
+
+ /**
+ * List of ejb-refs to add to the deployment descriptor of the cactified war
+ */
+ private List ejbRefs = new ArrayList();
// Public Methods ----------------------------------------------------------
@@ -348,6 +478,9 @@
ZipFileSet currentFiles = new ZipFileSet();
currentFiles.setSrc(this.srcFile);
currentFiles.createExclude().setName("WEB-INF/web.xml");
+ currentFiles.createExclude().setName("WEB-INF/weblogic.xml");
+ currentFiles.createExclude().setName("WEB-INF/orion-web.xml");
+ currentFiles.createExclude().setName("WEB-INF/ibm-web-bnd.xmi");
addZipfileset(currentFiles);
// Parse the original deployment descriptor
@@ -445,6 +578,16 @@
}
/**
+ * Adds a configured EjbRef instance. Called by Ant.
+ *
+ * @param theEjbRef the EjbRef to add
+ */
+ public final void addConfiguredEjbref(EjbRef theEjbRef)
+ {
+ ejbRefs.add(theEjbRef);
+ }
+
+ /**
* The descriptor to merge into the original file.
*
* @param theMergeFile the <code>web.xml</code> to merge
@@ -622,6 +765,7 @@
{
addRedirectorDefinitions(theWebXml);
addJspRedirector();
+ addEjbRefs(theWebXml);
// If the user has specified a deployment descriptor to merge into the
// cactified descriptor, perform the merge
@@ -632,9 +776,7 @@
WebXml parsedMergeWebXml = WebXmlIo.parseWebXmlFromFile(
this.mergeWebXml, this.xmlCatalog);
WebXmlMerger merger = new WebXmlMerger(theWebXml);
- merger.setLog(new AntLog(this));
- merger = new WebXmlMerger(theWebXml);
- merger.setLog(new AntLog(this));
+ merger.setMonitor(new AntMonitor(this));
merger.merge(parsedMergeWebXml);
}
catch (IOException e)
@@ -655,19 +797,38 @@
// Serialize the cactified deployment descriptor into a temporary file,
// so that it can get picked up by the War task
FileUtils fileUtils = FileUtils.newFileUtils();
- File tmpWebXml = fileUtils.createTempFile("cactus", "web.xml",
+ File tmpDir = fileUtils.createTempFile("cactus", "tmp.dir",
getProject().getBaseDir());
- tmpWebXml.deleteOnExit();
+ tmpDir.mkdirs();
+ tmpDir.deleteOnExit();
+ File webXmlFile = null;
try
{
- WebXmlIo.writeWebXml(theWebXml, tmpWebXml, null, true);
+ ZipFileSet fileSet = new ZipFileSet();
+ fileSet.setDir(tmpDir);
+ File[] files = WebXmlIo.writeAll(theWebXml, tmpDir);
+ for (int i = 0; i < files.length; i++)
+ {
+ File f = files[i];
+ f.deleteOnExit();
+ if (f.getName().equals("web.xml"))
+ {
+ setWebxml(f);
+ webXmlFile = f;
+ }
+ else
+ {
+ fileSet.createInclude().setName(f.getName());
+ }
+ }
+ addWebinf(fileSet);
}
catch (IOException ioe)
{
throw new BuildException(
"Could not write temporary deployment descriptor", ioe);
}
- return tmpWebXml;
+ return webXmlFile;
}
/**
@@ -703,4 +864,31 @@
}
}
+ /**
+ * Add ejb references to a web.xml.
+ *
+ * @param theWebXml the web.xml to modify
+ */
+ private void addEjbRefs(WebXml theWebXml)
+ {
+ Iterator i = ejbRefs.iterator();
+ while (i.hasNext())
+ {
+ EjbRef ref = (EjbRef) i.next();
+ if ("Session".equals(ref.getType()))
+ {
+ theWebXml.addLocalSessionEjbRef(ref.getName(),
+ ref.getLocalInterface(),
+ ref.getLocalHomeInterface(),
+ ref.getJndiName());
+ }
+ else if ("Entity".equals(ref.getType()))
+ {
+ theWebXml.addLocalEntityEjbRef(ref.getName(),
+ ref.getLocalInterface(),
+ ref.getLocalHomeInterface(),
+ ref.getJndiName());
+ }
+ }
+ }
}
1.21 +6 -6 jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/WebXmlMergeTask.java
Index: WebXmlMergeTask.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/WebXmlMergeTask.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- WebXmlMergeTask.java 31 May 2004 20:05:24 -0000 1.20
+++ WebXmlMergeTask.java 26 Apr 2005 09:57:59 -0000 1.21
@@ -24,14 +24,14 @@
import javax.xml.parsers.ParserConfigurationException;
-import org.apache.cactus.integration.ant.util.AntLog;
-import org.apache.cactus.integration.ant.deployment.webapp.WebXml;
-import org.apache.cactus.integration.ant.deployment.webapp.WebXmlIo;
-import org.apache.cactus.integration.ant.deployment.webapp.WebXmlMerger;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.types.XMLCatalog;
+import org.codehaus.cargo.module.webapp.WebXml;
+import org.codehaus.cargo.module.webapp.WebXmlIo;
+import org.codehaus.cargo.module.webapp.WebXmlMerger;
+import org.codehaus.cargo.util.monitor.AntMonitor;
import org.xml.sax.SAXException;
/**
@@ -115,7 +115,7 @@
WebXml mergeWebXml = WebXmlIo.parseWebXmlFromFile(
this.mergeFile, this.xmlCatalog);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
- merger.setLog(new AntLog(this));
+ merger.setMonitor(new AntMonitor(this));
merger.merge(mergeWebXml);
WebXmlIo.writeWebXml(srcWebXml, this.destFile,
this.encoding, this.indent);
1.8 +2 -0 jakarta-cactus/dependencies.xml.default
Index: dependencies.xml.default
===================================================================
RCS file: /home/cvs/jakarta-cactus/dependencies.xml.default,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- dependencies.xml.default 26 Jan 2005 15:04:47 -0000 1.7
+++ dependencies.xml.default 26 Apr 2005 09:57:59 -0000 1.8
@@ -9,6 +9,8 @@
artifact="aspectjrt" version="1.2.1"/>
<aspectj-tools project="aspectj"
artifact="aspectjtools" version="1.2.1"/>
+ <cargo project="cargo"
+ artifact="cargo" version="0.5-SNAPSHOT"/>
<checkstyle project="checkstyle"
artifact="checkstyle" version="3.4"/>
<clover project="clover"
1.7 +2 -1 jakarta-cactus/download.xml
Index: download.xml
===================================================================
RCS file: /home/cvs/jakarta-cactus/download.xml,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- download.xml 23 May 2004 14:37:04 -0000 1.6
+++ download.xml 26 Apr 2005 09:57:59 -0000 1.7
@@ -108,6 +108,7 @@
<download jar="antlr"/>
<download jar="aspectjrt"/>
<download jar="aspectj-tools"/>
+ <download jar="cargo"/>
<download jar="checkstyle"/>
<download jar="clover"/>
<download jar="commons.beanutils"/>
1.8 +4 -1 jakarta-cactus/build.properties.default
Index: build.properties.default
===================================================================
RCS file: /home/cvs/jakarta-cactus/build.properties.default,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- build.properties.default 27 Jan 2005 20:55:31 -0000 1.7
+++ build.properties.default 26 Apr 2005 09:57:59 -0000 1.8
@@ -190,6 +190,9 @@
jsp.12.jar = ${servlet.23.jar}
jsp.20.jar = ${lib.repo}/${jsp.20.project}/jars/${jsp.20.artifact}-${jsp.20.version}.jar
+# The location of the Cargo jar
+cargo.jar = ${lib.repo}/${cargo.project}/jars/${cargo.artifact}-${cargo.version}.jar
+
# The location of the Commons Logging jar
commons.logging.jar = ${lib.repo}/${commons.logging.project}/jars/${commons.logging.artifact}-${commons.logging.version}.jar
1.61 +4 -1 jakarta-cactus/integration/ant/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/build.xml,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -r1.60 -r1.61
--- build.xml 15 Feb 2005 10:31:44 -0000 1.60
+++ build.xml 26 Apr 2005 09:57:59 -0000 1.61
@@ -77,6 +77,7 @@
depends="init.common, properties, init.clover">
<echo>Dependencies:</echo>
+ <echo> cargo.jar = [${cargo.jar}]</echo>
<echo> commons.logging.jar = [${commons.logging.jar}]</echo>
<echo> junit.jar = [${junit.jar}]</echo>
<echo> mockobjects.jar = [${mockobjects.jar}]</echo>
@@ -88,6 +89,7 @@
<echo> clover.jar = [${clover.jar}]</echo>
<path id="project.classpath">
+ <pathelement location="${cargo.jar}"/>
<pathelement location="${commons.logging.jar}"/>
<pathelement location="${xerces.jar}"/>
<pathelement location="${xmlapis.jar}"/>
@@ -99,6 +101,7 @@
<condition property="properties.ok">
<and>
+ <available file="${cargo.jar}"/>
<available file="${commons.logging.jar}"/>
<available file="${junit.jar}"/>
<available file="${mockobjects.jar}"/>
1.25 +71 -28 jakarta-cactus/integration/ant/src/test/org/apache/cactus/integration/ant/TestCactifyWarTask.java
Index: TestCactifyWarTask.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/test/org/apache/cactus/integration/ant/TestCactifyWarTask.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- TestCactifyWarTask.java 25 Apr 2005 00:29:34 -0000 1.24
+++ TestCactifyWarTask.java 26 Apr 2005 09:57:59 -0000 1.25
@@ -22,13 +22,15 @@
import java.io.File;
import java.util.Iterator;
-import org.apache.cactus.integration.ant.deployment.webapp.DefaultWarArchive;
-import org.apache.cactus.integration.ant.deployment.webapp.WarArchive;
-import org.apache.cactus.integration.ant.deployment.webapp.WebXml;
-import org.apache.cactus.integration.ant.deployment.webapp.WebXmlTag;
-import org.apache.cactus.integration.ant.deployment.webapp.WebXmlVersion;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
+import org.codehaus.cargo.module.webapp.DefaultWarArchive;
+import org.codehaus.cargo.module.webapp.WarArchive;
+import org.codehaus.cargo.module.webapp.WebXml;
+import org.codehaus.cargo.module.webapp.WebXmlTag;
+import org.codehaus.cargo.module.webapp.WebXmlVersion;
+import org.codehaus.cargo.module.webapp.weblogic.WeblogicXml;
+import org.codehaus.cargo.module.webapp.weblogic.WeblogicXmlTag;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
@@ -125,17 +127,17 @@
catch (BuildException expected)
{
assertEquals("You need to specify either the [srcfile] or the "
- + "[version] attribute",
- expected.getMessage());
+ + "[version] attribute",
+ expected.getMessage());
}
}
-
+
/**
- * Verifies an empty web was created when the source archive does not
- * contain a web deployment descriptor but specifies the version.
- *
- * @throws Exception If an unexpected error occurs
- */
+ * Verifies an empty web was created when the source archive does not
+ * contain a web deployment descriptor but specifies the version.
+ *
+ * @throws Exception If an unexpected error occurs
+ */
public void testSrcFileWithoutWebXmlNewWebXml22() throws Exception
{
try
@@ -145,17 +147,17 @@
catch (BuildException e)
{
fail("The WAR source file does not contain a "
- + "WEB-INF/web.xml deployment descriptor, but Cactus "
- + "should have created an empty one");
+ + "WEB-INF/web.xml deployment descriptor, but Cactus "
+ + "should have created an empty one");
}
- }
-
+ }
+
/**
- * Verifies an empty web was created when the source archive does not
- * contain a web deployment descriptor but specifies the version.
- *
- * @throws Exception If an unexpected error occurs
- */
+ * Verifies an empty web was created when the source archive does not
+ * contain a web deployment descriptor but specifies the version.
+ *
+ * @throws Exception If an unexpected error occurs
+ */
public void testSrcFileWithoutWebXmlNewWebXml23() throws Exception
{
try
@@ -164,12 +166,12 @@
}
catch (BuildException e)
{
- fail("The WAR source file does not contain a "
- + "WEB-INF/web.xml deployment descriptor, but Cactus "
- + "should have created an empty one");
+ fail("The WAR source file does not contain a "
+ + "WEB-INF/web.xml deployment descriptor, but Cactus "
+ + "should have created an empty one");
}
- }
-
+ }
+
/**
* Tests whether the Cactus test redirectors are correctly added to the
* descriptor of the cactified WAR.
@@ -519,6 +521,47 @@
Project.MSG_VERBOSE);
}
+ /**
+ * Tests that ejb refs can be added for weblogic
+ *
+ * @throws Exception iIf an unexpected error occurs
+ */
+ public void testAddWeblogicEjbRefs() throws Exception
+ {
+ executeTestTarget();
+
+ File destFile = getProject().resolveFile("work/destfile.war");
+ WarArchive destWar = new DefaultWarArchive(destFile);
+
+ // test web.xml
+ WebXml webXml = destWar.getWebXml();
+ Iterator i = webXml.getElements(WebXmlTag.EJB_LOCAL_REF);
+ Element e = (Element) i.next();
+ NodeList nl = e.getElementsByTagName("ejb-ref-name");
+ Element f = (Element) nl.item(0);
+ assertEquals("MyEjb", f.getFirstChild().getNodeValue());
+ nl = e.getElementsByTagName("ejb-ref-type");
+ f = (Element) nl.item(0);
+ assertEquals("Session", f.getFirstChild().getNodeValue());
+ nl = e.getElementsByTagName("local-home");
+ f = (Element) nl.item(0);
+ assertEquals("com.wombat.MyEjbHome", f.getFirstChild().getNodeValue());
+ nl = e.getElementsByTagName("local");
+ f = (Element) nl.item(0);
+ assertEquals("com.wombat.MyEjb", f.getFirstChild().getNodeValue());
+
+ // test weblogic.xml
+ WeblogicXml weblogicXml = (WeblogicXml) webXml.getVendorDescriptor();
+ i = weblogicXml.getElements(WeblogicXmlTag.EJB_REFERENCE_DESCRIPTION);
+ e = (Element) i.next();
+ nl = e.getElementsByTagName("ejb-ref-name");
+ f = (Element) nl.item(0);
+ assertEquals("MyEjb", f.getFirstChild().getNodeValue());
+ nl = e.getElementsByTagName("jndi-name");
+ f = (Element) nl.item(0);
+ assertEquals("/wombat/MyEjb", f.getFirstChild().getNodeValue());
+ }
+
// Private Methods ---------------------------------------------------------
/**
1.2 +87 -6 jakarta-cactus/integration/ant/src/test/org/apache/cactus/integration/ant/TestCactifyEarTask.java
Index: TestCactifyEarTask.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/test/org/apache/cactus/integration/ant/TestCactifyEarTask.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestCactifyEarTask.java 15 Feb 2005 10:31:44 -0000 1.1
+++ TestCactifyEarTask.java 26 Apr 2005 09:57:59 -0000 1.2
@@ -20,12 +20,18 @@
package org.apache.cactus.integration.ant;
import java.io.File;
+import java.util.Iterator;
-import org.apache.cactus.integration.ant.deployment.application.ApplicationXml;
-import org.apache.cactus.integration.ant.deployment.application.DefaultEarArchive;
-import org.apache.cactus.integration.ant.deployment.application.EarArchive;
-import org.apache.cactus.integration.ant.deployment.webapp.WarArchive;
-import org.apache.cactus.integration.ant.deployment.webapp.WebXml;
+import org.codehaus.cargo.module.application.ApplicationXml;
+import org.codehaus.cargo.module.application.DefaultEarArchive;
+import org.codehaus.cargo.module.application.EarArchive;
+import org.codehaus.cargo.module.webapp.WarArchive;
+import org.codehaus.cargo.module.webapp.WebXml;
+import org.codehaus.cargo.module.webapp.WebXmlTag;
+import org.codehaus.cargo.module.webapp.weblogic.WeblogicXml;
+import org.codehaus.cargo.module.webapp.weblogic.WeblogicXmlTag;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
/**
* Test class for the CactifyEar task.
@@ -86,4 +92,79 @@
assertEquals("/myTestFramework",
appXml.getWebModuleContextRoot("cactus.war"));
}
+
+ /**
+ * @throws Exception If an unexpected error occurs
+ */
+ public void testAddEjbReferences() throws Exception
+ {
+ executeTestTarget();
+
+ File destFile = getProject().resolveFile("work/cactified.ear");
+ EarArchive destEar = new DefaultEarArchive(destFile);
+ WarArchive cactusWar = destEar.getWebModule("cactus.war");
+
+ // test web.xml
+ WebXml webXml = cactusWar.getWebXml();
+ Iterator i = webXml.getElements(WebXmlTag.EJB_LOCAL_REF);
+ assertEjbRef((Element) i.next(), "ejb/Session2", "Session",
+ "com.wombat.Session2", "com.wombat.Session2Home");
+ assertEjbRef((Element) i.next(), "ejb/Entity1", "Entity",
+ "com.wombat.Entity1", "com.wombat.Entity1Home");
+ assertFalse(i.hasNext());
+
+ // test weblogic.xml
+ WeblogicXml weblogicXml = (WeblogicXml) webXml.getVendorDescriptor();
+ i = weblogicXml.getElements(WeblogicXmlTag.EJB_REFERENCE_DESCRIPTION);
+ assertWeblogicEjbRef((Element) i.next(),
+ "ejb/Session2", "/wombat/Session2");
+ assertWeblogicEjbRef((Element) i.next(),
+ "ejb/Entity1", "/wombat/Entity1");
+ assertFalse(i.hasNext());
+ }
+
+ /**
+ * Help method to check that a given element is a correct ejb-ref
+ *
+ * @param theElement the Element to check
+ * @param theName correct name of the ejb-ref
+ * @param theType correct ejb-ref type
+ * @param theLocal correct local interface of the ejb-ref
+ * @param theLocalHome correct local home interface of the ejb-ref
+ */
+ private void assertEjbRef(Element theElement, String theName,
+ String theType, String theLocal,
+ String theLocalHome)
+ {
+ NodeList nl = theElement.getElementsByTagName("ejb-ref-name");
+ Element f = (Element) nl.item(0);
+ assertEquals(theName, f.getFirstChild().getNodeValue());
+ nl = theElement.getElementsByTagName("ejb-ref-type");
+ f = (Element) nl.item(0);
+ assertEquals(theType, f.getFirstChild().getNodeValue());
+ nl = theElement.getElementsByTagName("local-home");
+ f = (Element) nl.item(0);
+ assertEquals(theLocalHome, f.getFirstChild().getNodeValue());
+ nl = theElement.getElementsByTagName("local");
+ f = (Element) nl.item(0);
+ assertEquals(theLocal, f.getFirstChild().getNodeValue());
+ }
+
+ /**
+ * Help method to check that a given element is a correct weblogic ejb-ref
+ *
+ * @param theElement the Element to check
+ * @param theName correct name of the ejb-ref
+ * @param theJndiName correct jndi name of the ejb-ref
+ */
+ private void assertWeblogicEjbRef(Element theElement, String theName,
+ String theJndiName)
+ {
+ NodeList nl = theElement.getElementsByTagName("ejb-ref-name");
+ Element f = (Element) nl.item(0);
+ assertEquals(theName, f.getFirstChild().getNodeValue());
+ nl = theElement.getElementsByTagName("jndi-name");
+ f = (Element) nl.item(0);
+ assertEquals(theJndiName, f.getFirstChild().getNodeValue());
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: cactus-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: cactus-dev-help@jakarta.apache.org