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 vm...@apache.org on 2004/03/23 10:29:18 UTC
cvs commit: jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container AbstractJavaContainer.java ContainerWrapper.java Container.java AbstractContainer.java
vmassol 2004/03/23 01:29:18
Modified: documentation/docs/xdocs/integration/ant task_cactus.xml
samples/servlet/src/scripts/share build.xml
integration/ant/src/test/org/apache/cactus/integration/ant/container
MockContainer.java
integration/ant/src/java/org/apache/cactus/integration/ant
CactusTask.java
documentation/docs/xdocs changes.xml
integration/ant/src/java/org/apache/cactus/integration/ant/container
AbstractJavaContainer.java ContainerWrapper.java
Container.java AbstractContainer.java
Log:
Added new optional nested <code><containerclasspath></code> element for the <code><cactus></code> task. It allows specifying additional jars that will be put in the classpath used to start/stop the specified containers.
Revision Changes Path
1.22 +12 -0 jakarta-cactus/documentation/docs/xdocs/integration/ant/task_cactus.xml
Index: task_cactus.xml
===================================================================
RCS file: /home/cvs/jakarta-cactus/documentation/docs/xdocs/integration/ant/task_cactus.xml,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- task_cactus.xml 18 Mar 2004 22:13:14 -0000 1.21
+++ task_cactus.xml 23 Mar 2004 09:29:16 -0000 1.22
@@ -173,6 +173,18 @@
</section>
+ <section title="containerclasspath">
+ <p>
+ The optional <strong>containerclasspath</strong> element lets you
+ specify additional jars that will be added to the container
+ classpaths that are used to start/stop the containers. This is in
+ addition to the container jars which are automatically added by the
+ <code><cactus></code> task. The <code>containerclasspath</code>
+ element behaves exactly the same as the Ant <code>classpath</code>
+ element. In most cases you will not need to use this element.
+ </p>
+ </section>
+
</section>
<section title="Supported Containers">
1.30 +11 -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.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- build.xml 18 Jan 2004 11:03:05 -0000 1.29
+++ build.xml 23 Mar 2004 09:29:17 -0000 1.30
@@ -325,6 +325,13 @@
<cactusproperty server="true"
propertiesFile="${target.dir.normalized}/logging_server.properties"/>
+ <!-- Additional jars that will be added to the classpath used to start the
+ container (in addition to the container jars themseleves which are
+ automatically added by the <cactus> task -->
+ <containerclasspath>
+ <@clover.begin@pathelement location="${clover.jar}"/@clover.end@>
+ </containerclasspath>
+
<classpath>
<path refid="project.classpath"/>
<@clover.begin@pathelement location="${clover.jar}"/@clover.end@>
@@ -334,6 +341,7 @@
<pathelement location="${target.classes.cactus.dir}"/>
<pathelement location="${log4j.jar}"/>
</classpath>
+
<containerset>
<@j2ee13.begin@jboss3x if="cactus.home.jboss3x"
dir="${cactus.home.jboss3x}"
@@ -372,8 +380,10 @@
output="${target.testreports.dir}/weblogic7x.out"
todir="${target.testreports.dir}/weblogic7x"/>
</containerset>
+
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
+
<batchtest>
<fileset dir="${src.cactus.dir}">
<!-- Due to some Cactus synchronization bug, the 'unit' tests need
@@ -388,6 +398,7 @@
<exclude name="**/servlet/Test*All.java"/>
</fileset>
</batchtest>
+
</cactus>
<!-- Generate the JUnit reports -->
1.13 +18 -1 jakarta-cactus/integration/ant/src/test/org/apache/cactus/integration/ant/container/MockContainer.java
Index: MockContainer.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/test/org/apache/cactus/integration/ant/container/MockContainer.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- MockContainer.java 29 Feb 2004 16:32:16 -0000 1.12
+++ MockContainer.java 23 Mar 2004 09:29:17 -0000 1.13
@@ -25,6 +25,7 @@
import org.apache.cactus.integration.ant.util.AntTaskFactory;
import org.apache.commons.logging.Log;
+import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Environment.Variable;
/**
@@ -248,6 +249,22 @@
* @see Container#getSystemProperties()
*/
public Variable[] getSystemProperties()
+ {
+ throw new RuntimeException("not implemented");
+ }
+
+ /**
+ * @see Container#setContainerClasspath(Path)
+ */
+ public void setContainerClasspath(Path theClasspath)
+ {
+ // do nothing
+ }
+
+ /**
+ * @see Container#getContainerClasspath()
+ */
+ public Path getContainerClasspath()
{
throw new RuntimeException("not implemented");
}
1.30 +29 -1 jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/CactusTask.java
Index: CactusTask.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/CactusTask.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- CactusTask.java 29 Feb 2004 10:05:26 -0000 1.29
+++ CactusTask.java 23 Mar 2004 09:29:17 -0000 1.30
@@ -41,6 +41,7 @@
import org.apache.tools.ant.taskdefs.optional.junit.JUnitTask;
import org.apache.tools.ant.taskdefs.optional.junit.JUnitTest;
import org.apache.tools.ant.types.Environment;
+import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Environment.Variable;
/**
@@ -73,6 +74,12 @@
* System properties that will be set in the container JVM.
*/
private List systemProperties = new ArrayList();
+
+ /**
+ * Additional classpath entries for the classpath that will be used to
+ * start the containers.
+ */
+ private Path containerClasspath;
/**
* The factory for creating ant tasks that is passed to the containers.
@@ -196,6 +203,10 @@
containers[i].setSystemProperties(
(Variable[]) this.systemProperties.toArray(
new Variable[0]));
+
+ // Add extra classpath entries
+ containers[i].setContainerClasspath(this.containerClasspath);
+
if (containers[i].isEnabled())
{
containers[i].init();
@@ -314,6 +325,23 @@
}
}
+ /**
+ * Adds container classpath to the classpath that will be used for starting
+ * the container.
+ *
+ * @return reference to the classpath
+ * @since Cactus 1.6
+ */
+ public Path createContainerClasspath()
+ {
+ if (this.containerClasspath == null)
+ {
+ this.containerClasspath = new Path(this.project);
+ }
+
+ return this.containerClasspath.createPath();
+ }
+
// Private Methods ---------------------------------------------------------
/**
1.176 +6 -0 jakarta-cactus/documentation/docs/xdocs/changes.xml
Index: changes.xml
===================================================================
RCS file: /home/cvs/jakarta-cactus/documentation/docs/xdocs/changes.xml,v
retrieving revision 1.175
retrieving revision 1.176
diff -u -r1.175 -r1.176
--- changes.xml 15 Mar 2004 20:06:49 -0000 1.175
+++ changes.xml 23 Mar 2004 09:29:17 -0000 1.176
@@ -90,6 +90,12 @@
</devs>
<release version="1.6dev" date="in CVS">
+ <action dev="VMA" type="add">
+ Added new optional nested <code><containerclasspath></code>
+ element for the <code><cactus></code> task. It allows
+ specifying additional jars that will be put in the classpath used to
+ start/stop the specified containers.
+ </action>
<action dev="VMA" type="remove">
Removed ability to choose different HTTP connection helpers. The only
one supported now is the Commons HttpClient one provided internally
1.11 +13 -16 jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/AbstractJavaContainer.java
Index: AbstractJavaContainer.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/AbstractJavaContainer.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- AbstractJavaContainer.java 22 Mar 2004 20:26:56 -0000 1.10
+++ AbstractJavaContainer.java 23 Mar 2004 09:29:17 -0000 1.11
@@ -22,7 +22,6 @@
import java.io.File;
import java.io.FileNotFoundException;
-import org.apache.cactus.integration.ant.util.ResourceUtils;
import org.apache.tools.ant.taskdefs.Java;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Environment.Variable;
@@ -83,6 +82,10 @@
{
Java java = (Java) createAntTask("java");
java.setFork(true);
+
+ // Add extra container classpath entries specified by the user.
+ addExtraClasspath(java);
+
return java;
}
@@ -99,10 +102,8 @@
java.setOutput(this.output);
java.setAppend(this.append);
- // Add Clover jar to the server classpath if Clover is in the classpath
- // that started the <cactus> task. This is required when running in
- // Clovered mode.
- addCloverJar(java);
+ // Add extra container classpath entries specified by the user.
+ addExtraClasspath(java);
// Add Cactus properties for the server side
for (int i = 0; i < getSystemProperties().length; i++)
@@ -116,21 +117,17 @@
}
/**
- * Add Clover jar to the server classpath if Clover is in the classpath
- * that started the <cactus> task. This is required when running in
- * Clovered mode.
+ * Add extra container classpath entries specified by the user.
*
- * @param theJavaCommand the java command that will start the container
+ * @param theJavaCommand the java command used to start/stop the container
*/
- private void addCloverJar(Java theJavaCommand)
+ private void addExtraClasspath(Java theJavaCommand)
{
Path classpath = theJavaCommand.createClasspath();
- File file = ResourceUtils.getResourceLocation(
- "/com/cortexeb/tools/clover/tasks/CloverTask.class");
- if (file != null)
+ if (getContainerClasspath() != null)
{
- classpath.createPathElement().setLocation(file);
- }
+ classpath.addExisting(getContainerClasspath());
+ }
}
/**
1.13 +20 -1 jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/ContainerWrapper.java
Index: ContainerWrapper.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/ContainerWrapper.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- ContainerWrapper.java 29 Feb 2004 10:10:41 -0000 1.12
+++ ContainerWrapper.java 23 Mar 2004 09:29:17 -0000 1.13
@@ -23,6 +23,7 @@
import org.apache.cactus.integration.ant.util.AntTaskFactory;
import org.apache.commons.logging.Log;
+import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Environment.Variable;
/**
@@ -177,5 +178,23 @@
public void setSystemProperties(Variable[] theProperties)
{
this.container.setSystemProperties(theProperties);
+ }
+
+ /**
+ * @see Container#setContainerClasspath(Path)
+ * @since Cactus 1.6
+ */
+ public void setContainerClasspath(Path theClasspath)
+ {
+ this.container.setContainerClasspath(theClasspath);
+ }
+
+ /**
+ * @see Container#getContainerClasspath()
+ * @since Cactus 1.6
+ */
+ public Path getContainerClasspath()
+ {
+ return this.container.getContainerClasspath();
}
}
1.12 +17 -1 jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/Container.java
Index: Container.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/Container.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- Container.java 29 Feb 2004 10:05:26 -0000 1.11
+++ Container.java 23 Mar 2004 09:29:17 -0000 1.12
@@ -23,6 +23,7 @@
import org.apache.cactus.integration.ant.util.AntTaskFactory;
import org.apache.commons.logging.Log;
+import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Environment.Variable;
/**
@@ -133,6 +134,21 @@
*/
void setSystemProperties(Variable[] theProperties);
+ /**
+ * Sets additional classpath entries that will be added to the container
+ * classpath used to start the containers.
+ *
+ * @param theClasspath the container classpath entries to add
+ * @since Cactus 1.6
+ */
+ void setContainerClasspath(Path theClasspath);
+
+ /**
+ * @return additional container classpath entries
+ * @since Cactus 1.6
+ */
+ Path getContainerClasspath();
+
/**
* Subclasses must implement this method to perform the actual task of
* starting up the container.
1.17 +26 -1 jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/AbstractContainer.java
Index: AbstractContainer.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/AbstractContainer.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- AbstractContainer.java 29 Feb 2004 10:05:26 -0000 1.16
+++ AbstractContainer.java 23 Mar 2004 09:29:17 -0000 1.17
@@ -32,6 +32,7 @@
import org.apache.tools.ant.taskdefs.Delete;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.FilterChain;
+import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PatternSet;
import org.apache.tools.ant.types.Environment.Variable;
import org.apache.tools.ant.types.selectors.SelectorUtils;
@@ -103,6 +104,12 @@
*/
private long startUpWait = 1000;
+ /**
+ * Additional classpath entries for the classpath that will be used to
+ * start the containers.
+ */
+ private Path containerClasspath;
+
// Public Methods ----------------------------------------------------------
/**
@@ -285,6 +292,24 @@
public Variable[] getSystemProperties()
{
return this.systemProperties;
+ }
+
+ /**
+ * @see Container#setContainerClasspath(Path)
+ * @since Cactus 1.6
+ */
+ public void setContainerClasspath(Path theClasspath)
+ {
+ this.containerClasspath = theClasspath;
+ }
+
+ /**
+ * @see Container#getContainerClasspath()
+ * @since Cactus 1.6
+ */
+ public Path getContainerClasspath()
+ {
+ return this.containerClasspath;
}
// Protected Methods -------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: cactus-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: cactus-dev-help@jakarta.apache.org