You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by zh...@apache.org on 2006/01/30 17:45:31 UTC
svn commit: r373547 - in /portals/pluto/trunk: maven-pluto-plugin/
maven-pluto-plugin/src/main/java/org/apache/pluto/maven/
pluto-portal-driver/ pluto-site/
pluto-util/src/main/java/org/apache/pluto/util/assemble/
pluto-util/src/main/java/org/apache/pl...
Author: zheng
Date: Mon Jan 30 08:44:59 2006
New Revision: 373547
URL: http://svn.apache.org/viewcvs?rev=373547&view=rev
Log:
Updated javadoc
Modified:
portals/pluto/trunk/maven-pluto-plugin/pom.xml
portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractManagementMojo.java
portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractPlutoMojo.java
portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractPortletMojo.java
portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AssembleMojo.java
portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/DeployMojo.java
portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/InstallMojo.java
portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/UninstallMojo.java
portals/pluto/trunk/pluto-portal-driver/pom.xml
portals/pluto/trunk/pluto-site/pom.xml
portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/Assembler.java
portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/AssemblerConfig.java
portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/AssemblerFactory.java
portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/file/FileAssembler.java
portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/Deployer.java
portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/DeployerFactory.java
portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/DeploymentConfig.java
portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/file/FileSystemDeployer.java
portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/file/Tomcat5FileSystemDeployer.java
Modified: portals/pluto/trunk/maven-pluto-plugin/pom.xml
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/maven-pluto-plugin/pom.xml?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/maven-pluto-plugin/pom.xml (original)
+++ portals/pluto/trunk/maven-pluto-plugin/pom.xml Mon Jan 30 08:44:59 2006
@@ -1,27 +1,34 @@
-<project>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <parent>
+ <groupId>org.apache.pluto</groupId>
+ <artifactId>pluto</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
+
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pluto-plugin</artifactId>
<packaging>maven-plugin</packaging>
- <parent>
- <groupId>org.apache.pluto</groupId>
- <artifactId>pluto</artifactId>
- <version>1.1.0-SNAPSHOT</version>
- </parent>
- <name>Maven Pluto Installer Plugin</name>
- <dependencies>
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-core</artifactId>
- <version>2.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.pluto</groupId>
- <artifactId>pluto-util</artifactId>
- <version>${pom.version}</version>
- <scope>compile</scope>
- </dependency>
+ <name>Maven Pluto Installer Plugin</name>
+
+ <dependencies>
<dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-core</artifactId>
+ <version>2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.pluto</groupId>
+ <artifactId>pluto-util</artifactId>
+ <version>${pom.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
<version>2.0</version>
@@ -76,7 +83,9 @@
<resources>
<resource>
<directory>src/main/scripts</directory>
- <includes><include>**/*.mmld</include></includes>
+ <includes>
+ <include>**/*.mmld</include>
+ </includes>
</resource>
</resources>
<plugins>
Modified: portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractManagementMojo.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractManagementMojo.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractManagementMojo.java (original)
+++ portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractManagementMojo.java Mon Jan 30 08:44:59 2006
@@ -41,7 +41,7 @@
* @since 07/29/2005
* @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
*/
-public abstract class AbstractManagementMojo extends org.apache.pluto.maven.AbstractPlutoMojo {
+public abstract class AbstractManagementMojo extends AbstractPlutoMojo {
/**
* @parameter expression="${domain}"
@@ -100,7 +100,7 @@
protected Map portletApps = new HashMap();
protected AbstractManagementMojo() {
-
+ // Do nothing.
}
protected List getSharedDependencies() throws ArtifactNotFoundException, ArtifactResolutionException {
Modified: portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractPlutoMojo.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractPlutoMojo.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractPlutoMojo.java (original)
+++ portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractPlutoMojo.java Mon Jan 30 08:44:59 2006
@@ -16,7 +16,8 @@
package org.apache.pluto.maven;
-import org.apache.maven.plugin.*;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.project.MavenProject;
import java.io.File;
@@ -31,26 +32,24 @@
/**
* @parameter expression="${installDir}"
*/
- protected File installationDirectory;
+ protected File installationDirectory = null;
/**
* @parameter expression="${project}"
* @required
* @readonly
*/
- protected MavenProject project;
+ protected MavenProject project = null;
public void execute() throws MojoExecutionException {
// Validation of the installDir property is done by maven.
try {
doValidate();
doExecute();
- }
- catch(MojoExecutionException mee) {
- throw mee;
- }
- catch(Exception e) {
- throw new MojoExecutionException("Error Installing Pluto", e);
+ } catch (MojoExecutionException ex) {
+ throw ex;
+ } catch (Exception ex) {
+ throw new MojoExecutionException("Error Installing Pluto", ex);
}
}
Modified: portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractPortletMojo.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractPortletMojo.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractPortletMojo.java (original)
+++ portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AbstractPortletMojo.java Mon Jan 30 08:44:59 2006
@@ -16,11 +16,6 @@
package org.apache.pluto.maven;
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.FileInputStream;
-import java.io.File;
-
/**
* @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
* @todo Document
Modified: portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AssembleMojo.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AssembleMojo.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AssembleMojo.java (original)
+++ portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/AssembleMojo.java Mon Jan 30 08:44:59 2006
@@ -19,11 +19,9 @@
import org.apache.pluto.util.assemble.Assembler;
import org.apache.pluto.util.assemble.AssemblerConfig;
import org.apache.pluto.util.assemble.AssemblerFactory;
-import org.apache.pluto.util.assemble.file.FileAssembler;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.logging.Log;
-import java.io.IOException;
import java.io.File;
/**
Modified: portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/DeployMojo.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/DeployMojo.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/DeployMojo.java (original)
+++ portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/DeployMojo.java Mon Jan 30 08:44:59 2006
@@ -34,11 +34,13 @@
* @requiresDependencyResolution runtime
*/
public class DeployMojo extends AbstractPortletMojo {
-
+
+ // Private Member Variables ------------------------------------------------
+
/**
* @parameter expression="${project.build.outputDirectory}/${maven.final.name}
*/
- private File deployment;
+ private File deployment = null;
/**
* @parameter expression="${pluto.deploy.file}"
@@ -49,15 +51,33 @@
* @parameter expression="${pluto.deploy.tomcat5.service}"
*/
private String tomcatService = "Catalina";
-
+
/**
* @parameter expression="${pluto.deploy.tomcat5.host}"
*/
private String tomcatHost = "localhost";
-
+
+
+ // AbstractPlutoMojo Impl --------------------------------------------------
+
+ protected void doValidate() throws MojoExecutionException {
+ System.err.println("installationDirectory: " + installationDirectory);
+ if (deployment != null) {
+ System.err.println("deployment: " + deployment.getAbsolutePath());
+ } else {
+ System.err.println("deployment: null");
+ }
+ System.err.println("DeployerClass: " + deployerClass);
+
+ if (deployment == null || !deployment.exists()) {
+ throw new MojoExecutionException("Deployment must be specified.");
+ }
+ }
+
protected void doExecute() throws Exception {
- if(!deployment.getName().endsWith(".war")) {
- throw new MojoExecutionException(deployment.getName()+" is an invalid deployment. Please specify a war.");
+ if (!deployment.getName().endsWith(".war")) {
+ throw new MojoExecutionException(deployment.getName()
+ + " is not a valid deployment. Please specify a war.");
}
Deployer deployer = createDeployer();
@@ -65,11 +85,6 @@
}
- protected void doValidate() throws MojoExecutionException {
- if(deployment == null || !deployment.exists()) {
- throw new MojoExecutionException("Deployment must be specified");
- }
- }
private DeploymentConfig createConfig() {
return new DeploymentConfigImpl();
@@ -77,8 +92,8 @@
private Deployer createDeployer() throws Exception {
- Class cl = Class.forName(deployerClass);
- return (Deployer)cl.newInstance();
+ Class clazz = Class.forName(deployerClass);
+ return (Deployer) clazz.newInstance();
}
private class DeploymentConfigImpl extends DeploymentConfig {
Modified: portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/InstallMojo.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/InstallMojo.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/InstallMojo.java (original)
+++ portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/InstallMojo.java Mon Jan 30 08:44:59 2006
@@ -16,14 +16,6 @@
package org.apache.pluto.maven;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.plugin.MojoExecutionException;
-
-import java.io.File;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ArrayList;
-
/**
* @goal install
* @description the pluto ApplicationServerHook goal installs the pluto portal into the specified application server
Modified: portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/UninstallMojo.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/UninstallMojo.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/UninstallMojo.java (original)
+++ portals/pluto/trunk/maven-pluto-plugin/src/main/java/org/apache/pluto/maven/UninstallMojo.java Mon Jan 30 08:44:59 2006
@@ -16,15 +16,6 @@
package org.apache.pluto.maven;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.project.MavenProject;
-
-import java.io.File;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
/**
* @goal uninstall
* @requiresDependencyResolution runtime
Modified: portals/pluto/trunk/pluto-portal-driver/pom.xml
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/pluto-portal-driver/pom.xml?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver/pom.xml (original)
+++ portals/pluto/trunk/pluto-portal-driver/pom.xml Mon Jan 30 08:44:59 2006
@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
@@ -102,7 +104,9 @@
<resources>
<resource>
<directory>src/resources</directory>
- <includes name="**/*.sql"/>
+ <includes>
+ <include>**/*.sql</include>
+ </includes>
</resource>
</resources>
<plugins>
Modified: portals/pluto/trunk/pluto-site/pom.xml
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/pluto-site/pom.xml?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-site/pom.xml (original)
+++ portals/pluto/trunk/pluto-site/pom.xml Mon Jan 30 08:44:59 2006
@@ -1,40 +1,48 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
<parent>
<artifactId>pluto</artifactId>
<groupId>org.apache.pluto</groupId>
<version>1.1.0-SNAPSHOT</version>
</parent>
+
<modelVersion>4.0.0</modelVersion>
<artifactId>pluto-site</artifactId>
<name>Pluto Website Documentation</name>
<url>http://portals.apache.org/pluto/</url>
<inceptionYear>2001</inceptionYear>
+
<distributionManagement>
<site>
<id>website</id>
- <url>scp://minotaur.apache.org/www/portals.apache.org/pluto</url>
+ <url>scp://minotaur.apache.org/www/portals.apache.org/pluto</url>
</site>
</distributionManagement>
+
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
</plugin>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <descriptor>src/assemble/bin.xml</descriptor>
- </configuration>
- </plugin>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <descriptor>src/assemble/bin.xml</descriptor>
+ </configuration>
+ </plugin>
</plugins>
</reporting>
- <!-- repeated here so that pluto-site is not appended -->
+ <!-- repeated here so that pluto-site is not appended -->
<scm>
<connection>scm:svn:http://svn.apache.org/repos/asf/portals/pluto/trunk/</connection>
- <developerConnection>scm:svn:https://svn.apache.org/repos/asf/portals/pluto/trunk/</developerConnection>
- <url>http://svn.apache.org/viewcvs.cgi/portals/pluto/trunk/</url>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/portals/pluto/trunk/</developerConnection>
+ <url>http://svn.apache.org/viewcvs.cgi/portals/pluto/trunk/</url>
</scm>
</project>
+
Modified: portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/Assembler.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/Assembler.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/Assembler.java (original)
+++ portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/Assembler.java Mon Jan 30 08:44:59 2006
@@ -17,33 +17,29 @@
import org.apache.pluto.util.UtilityException;
-import java.io.IOException;
-
/**
- * Used to assemble a web application into a portlet application.
+ * The pluto assembler is used to assemble a portlet application which is
+ * deployable to pluto.
*
- * @author <a href="ddewolf@apache.org">David H. DeWolf</a>
+ * @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
* @version 1.0
* @since Oct 15, 2004
*/
public interface Assembler {
- String PORTLET_XML = "WEB-INF/portlet.xml";
+ public static final String PORTLET_XML = "WEB-INF/portlet.xml";
- String SERVLET_XML = "WEB-INF/web.xml";
+ public static final String SERVLET_XML = "WEB-INF/web.xml";
- String DISPATCH_SERVLET_CLASS =
- "org.apache.pluto.core.PortletServlet";
+ public static final String DISPATCH_SERVLET_CLASS =
+ "org.apache.pluto.core.PortletServlet";
/**
- * Assemble a web applicaiton into a portlet
- * web application which is deployable into
- * the pluto-1.1 portlet container. The
- * specified web application will be overwritten
- * with the new application.
- *
+ * Assemble a web applicaiton into a portlet web application which is
+ * deployable into the pluto-1.1 portlet container. The specified web
+ * application will be overwritten with the new application.
*/
- void assemble(AssemblerConfig config) throws UtilityException;
+ public void assemble(AssemblerConfig config) throws UtilityException;
}
Modified: portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/AssemblerConfig.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/AssemblerConfig.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/AssemblerConfig.java (original)
+++ portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/AssemblerConfig.java Mon Jan 30 08:44:59 2006
@@ -15,45 +15,51 @@
*/
package org.apache.pluto.util.assemble;
-import org.apache.pluto.util.install.ServerConfig;
-
-import java.util.List;
-import java.util.Map;
import java.io.File;
/**
- *
+ * The pluto assembler configuration.
+ * @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
*/
public class AssemblerConfig {
-
- private File portletDescriptor;
-
- private File webappDescriptor;
-
- private File destination;
-
+
+ // Private Member Variables ------------------------------------------------
+
+ /** The portlet app descriptor, which is usually WEB-INF/portlet.xml. */
+ private File portletDescriptor = null;
+
+ /** The webapp descriptor, which is usually WEB-INF/web.xml. */
+ private File webappDescriptor = null;
+
+ /** The assemble destination, which points to the assembled WAR file. */
+ private File destination = null;
+
+
+ // Public Methods ----------------------------------------------------------
+
public File getPortletDescriptor() {
return portletDescriptor;
}
-
+
public void setPortletDescriptor(File portletDescriptor) {
this.portletDescriptor = portletDescriptor;
}
-
+
public File getWebappDescriptor() {
return webappDescriptor;
}
-
+
public void setWebappDescriptor(File webappDescriptor) {
this.webappDescriptor = webappDescriptor;
}
-
+
public File getDestination() {
return destination;
}
-
+
public void setDestination(File destination) {
this.destination = destination;
this.destination.getParentFile().mkdirs();
}
+
}
Modified: portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/AssemblerFactory.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/AssemblerFactory.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/AssemblerFactory.java (original)
+++ portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/AssemblerFactory.java Mon Jan 30 08:44:59 2006
@@ -17,30 +17,44 @@
import org.apache.pluto.util.assemble.file.FileAssembler;
-import java.io.File;
-
/**
- * <B>TODO</B>: Document
- * @author <a href="ddewolf@apache.org">David H. DeWolf</a>
+ * The pluto assembler factory that creates an assembler.
+ * @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
+ * @author <a href="mailto:zheng@apache.org">ZHENG Zhong</a>
* @version 1.0
* @since Nov 8, 2004
*/
public class AssemblerFactory {
-
- private static AssemblerFactory factory;
-
+
+ /** The singleton factory instance. */
+ private static final AssemblerFactory FACTORY = new AssemblerFactory();
+
+ /**
+ * Private constructor that prevents external instantiation.
+ */
private AssemblerFactory() {
-
+ // Do nothing.
}
-
+
+ /**
+ * Returns the singleton factory instance.
+ * @return the singleton factory instance.
+ */
public static AssemblerFactory getFactory() {
- if(factory == null) {
- factory = new AssemblerFactory();
- }
- return factory;
+ return FACTORY;
}
-
+
+
+ // Public Methods ----------------------------------------------------------
+
+ /**
+ * Creates an assembler to assemble a portlet app WAR file to a web app WAR
+ * file deployable to pluto.
+ * @param config the assembler configuration.
+ * @return an assembler instance.
+ */
public Assembler createAssembler(AssemblerConfig config) {
- return new FileAssembler();
+ return new FileAssembler();
}
+
}
Modified: portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/file/FileAssembler.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/file/FileAssembler.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/file/FileAssembler.java (original)
+++ portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/assemble/file/FileAssembler.java Mon Jan 30 08:44:59 2006
@@ -44,60 +44,91 @@
/**
*
- * @author <a href="ddewolf@apache.org">David H. DeWolf</a>
+ * @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
* @version 1.0
* @since Nov 8, 2004
*/
public class FileAssembler implements Assembler {
-
- private static final Properties PROPERTIES =
- new Properties();
+
+ /** The XML output properties. */
+ private static final Properties PROPERTIES = new Properties();
+
+ /** Element tagnames that may appear before servlet elements. */
+ private static final Collection BEFORE_SERVLET_DEF = new ArrayList();
+
+ /** Element tagnames that may appear before servlet-mapping elements. */
+ private static final Collection BEFORE_MAPPING_DEF = new ArrayList();
static {
+ // Initialize xml output properties.
PROPERTIES.setProperty(OutputKeys.INDENT, "yes");
- }
-
+
+ // Initialize BEFORE_SERVLET_DEF collection.
+ BEFORE_SERVLET_DEF.add("icon");
+ BEFORE_SERVLET_DEF.add("display-name");
+ BEFORE_SERVLET_DEF.add("description");
+ BEFORE_SERVLET_DEF.add("distributable");
+ BEFORE_SERVLET_DEF.add("context-param");
+ BEFORE_SERVLET_DEF.add("filter");
+ BEFORE_SERVLET_DEF.add("filter-mapping");
+ BEFORE_SERVLET_DEF.add("listener");
+
+ // initialize BEFORE_MAPPING_DEF collection.
+ BEFORE_MAPPING_DEF.addAll(BEFORE_SERVLET_DEF);
+ BEFORE_MAPPING_DEF.add("servlet");
+ }
+
+ // Constructor -------------------------------------------------------------
+
+ /**
+ * Default no-arg constructor.
+ */
public FileAssembler() {
- }
-
- public void assemble(AssemblerConfig config)
- throws UtilityException {
-
- try {
- InputStream servletIn =
- new FileInputStream(config.getWebappDescriptor());
-
- InputStream portletIn =
- new FileInputStream(config.getPortletDescriptor());
-
- Document xml = updateWebXML(servletIn, portletIn);
- servletIn.close();
-
- FileOutputStream servletOut =
- new FileOutputStream(config.getDestination());
-
- save(xml, servletOut);
- }
- catch(IOException io) {
- throw new UtilityException(io.getMessage(), io, null);
- }
-
+ // Do nothing.
}
-
-
- protected void save(Document doc, OutputStream out)
+
+
+ // Assembler Impl ----------------------------------------------------------
+
+ public void assemble(AssemblerConfig config) throws UtilityException {
+ try {
+ InputStream webXmlIn = new FileInputStream(
+ config.getWebappDescriptor());
+ InputStream portletXmlIn = new FileInputStream(
+ config.getPortletDescriptor());
+ Document xmlDoc = updateWebappDescriptor(webXmlIn, portletXmlIn);
+ webXmlIn.close();
+ FileOutputStream webXmlOut = new FileOutputStream(
+ config.getDestination());
+ save(xmlDoc, webXmlOut);
+ } catch (IOException ex) {
+ throw new UtilityException(ex.getMessage(), ex, null);
+ }
+ }
+
+
+ // Protected Methods -------------------------------------------------------
+
+ /**
+ * Saves the XML document to the specified output stream.
+ * @param xmlDoc the XML document.
+ * @param out the output stream.
+ * @throws IOException if an error occurs.
+ */
+ protected void save(Document xmlDoc, OutputStream out)
throws IOException {
try {
- TransformerFactory fact = TransformerFactory.newInstance();
- Transformer trans = fact.newTransformer();
- trans.setOutputProperties(PROPERTIES);
- trans.transform(new DOMSource(doc), new StreamResult(out));
- } catch (TransformerConfigurationException e) {
- e.printStackTrace();
- throw new IOException(e.getMessage());
- } catch (TransformerException e) {
- e.printStackTrace();
- throw new IOException(e.getMessage());
+ TransformerFactory factory = TransformerFactory.newInstance();
+ Transformer transformer = factory.newTransformer();
+ transformer.setOutputProperties(PROPERTIES);
+ transformer.transform(new DOMSource(xmlDoc),
+ new StreamResult(out));
+ } catch (TransformerConfigurationException ex) {
+ ex.printStackTrace();
+ throw new IOException(ex.getMessage());
+ } catch (TransformerException ex) {
+ ex.printStackTrace();
+ throw new IOException(ex.getMessage());
} finally {
out.flush();
out.close();
@@ -106,91 +137,96 @@
/**
- * @todo currently we rely specifically on the castor implementation.
- * @param servletIn
- * @param portletIn
- * @return
+ * Updates the webapp descriptor by injecting portlet wrapper servlet
+ * definitions and mappings.
+ *
+ * TODO: currently we rely specifically on the castor implementation.
+ *
+ * @param webXmlIn input stream to the webapp descriptor.
+ * @param portletXmlIn input stream to the portlet app descriptor.
+ * @return the updated webapp descriptor XML document.
* @throws IOException
*/
- protected Document updateWebXML(InputStream servletIn, InputStream portletIn)
+ protected Document updateWebappDescriptor(InputStream webXmlIn,
+ InputStream portletXmlIn)
throws IOException {
- PortletAppDescriptorService portletService =
- new PortletAppDescriptorServiceImpl();
-
- Document doc = parse(servletIn);
-
- Collection servlets = new ArrayList();
- Collection mappings = new ArrayList();
-
- PortletAppDD portletAppDD = portletService.read(portletIn);
- List portlets = portletAppDD.getPortlets();
- Iterator it = portlets.iterator();
-
- while(it.hasNext()) {
- PortletDD portlet = (PortletDD)it.next();
+
+ Document webXmlDoc = parse(webXmlIn);
+ Collection servletElements = new ArrayList();
+ Collection mappingElements = new ArrayList();
+
+ PortletAppDescriptorService portletAppDescriptorService =
+ new PortletAppDescriptorServiceImpl();
+ PortletAppDD portletAppDD = portletAppDescriptorService.read(portletXmlIn);
+
+ for (Iterator it = portletAppDD.getPortlets().iterator();
+ it.hasNext(); ) {
+
+ // Read portlet definition.
+ PortletDD portlet = (PortletDD) it.next();
String name = portlet.getPortletName();
-
- Element servlet = doc.createElement("servlet");
-
- Element servletName = doc.createElement("servlet-name");
- servletName.appendChild(doc.createTextNode(name));
+
+ // Create servlet definition element.
+ Element servlet = webXmlDoc.createElement("servlet");
+ Element servletName = webXmlDoc.createElement("servlet-name");
+ servletName.appendChild(webXmlDoc.createTextNode(name));
servlet.appendChild(servletName);
-
- Element servletClass = doc.createElement("servlet-class");
- servletClass.appendChild(doc.createTextNode(DISPATCH_SERVLET_CLASS));
+
+ Element servletClass = webXmlDoc.createElement("servlet-class");
+ servletClass.appendChild(webXmlDoc.createTextNode(DISPATCH_SERVLET_CLASS));
servlet.appendChild(servletClass);
-
- Element initParam = doc.createElement("init-param");
- Element paramName = doc.createElement("param-name");
- paramName.appendChild(doc.createTextNode("portlet-name"));
-
- Element paramValue = doc.createElement("param-value");
- paramValue.appendChild(doc.createTextNode(name));
-
+
+ Element initParam = webXmlDoc.createElement("init-param");
+ Element paramName = webXmlDoc.createElement("param-name");
+ paramName.appendChild(webXmlDoc.createTextNode("portlet-name"));
+
+ Element paramValue = webXmlDoc.createElement("param-value");
+ paramValue.appendChild(webXmlDoc.createTextNode(name));
+
initParam.appendChild(paramName);
initParam.appendChild(paramValue);
servlet.appendChild(initParam);
-
- Element load = doc.createElement("load-on-startup");
- load.appendChild(doc.createTextNode("1"));
+
+ Element load = webXmlDoc.createElement("load-on-startup");
+ load.appendChild(webXmlDoc.createTextNode("1"));
servlet.appendChild(load);
-
- Element mapping = doc.createElement("servlet-mapping");
- servletName = doc.createElement("servlet-name");
- servletName.appendChild(doc.createTextNode(name));
- Element uri = doc.createElement("url-pattern");
- uri.appendChild(doc.createTextNode("/PlutoInvoker/"+name));
+
+ // Create servlet mapping element.
+ Element mapping = webXmlDoc.createElement("servlet-mapping");
+ servletName = webXmlDoc.createElement("servlet-name");
+ servletName.appendChild(webXmlDoc.createTextNode(name));
+ Element uri = webXmlDoc.createElement("url-pattern");
+ uri.appendChild(webXmlDoc.createTextNode("/PlutoInvoker/"+name));
mapping.appendChild(servletName);
mapping.appendChild(uri);
-
- servlets.add(servlet);
- mappings.add(mapping);
+
+ // Save servlet definition and servlet mapping.
+ servletElements.add(servlet);
+ mappingElements.add(mapping);
}
-
-
- Element webAppNode = doc.getDocumentElement();
+ Element webAppNode = webXmlDoc.getDocumentElement();
NodeList nodes = webAppNode.getChildNodes();
-
-// Find the first node that shouldn't be before the servlet
-// and start appending. This is kind of ugly, but the hack
-// works for now!
- for(int i=0;i<nodes.getLength();i++) {
+
+ // Find the first node that shouldn't be before the servlet and start
+ // appending. This is kind of ugly, but the hack works for now!
+ for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
- if(node.getNodeType() == Node.ELEMENT_NODE) {
- if(!BEFORE_SERVLET_DEF.contains(node.getNodeName())) {
- it = servlets.iterator();
- while(it.hasNext()) {
- Node servlet = (Node)it.next();
+ if (node.getNodeType() == Node.ELEMENT_NODE) {
+
+ if (!BEFORE_SERVLET_DEF.contains(node.getNodeName())) {
+ for (Iterator it = servletElements.iterator();
+ it.hasNext(); ) {
+ Node servlet = (Node) it.next();
webAppNode.insertBefore(servlet, node);
it.remove();
}
}
-
- if(!BEFORE_SERVLET_MAPPING_DEF.contains(node.getNodeName())) {
- it = mappings.iterator();
- while(it.hasNext()) {
- Node mapping = (Node)it.next();
+
+ if(!BEFORE_MAPPING_DEF.contains(node.getNodeName())) {
+ for (Iterator it = mappingElements.iterator();
+ it.hasNext(); ) {
+ Node mapping = (Node) it.next();
webAppNode.insertBefore(mapping, node);
it.remove();
}
@@ -199,51 +235,37 @@
}
// Now, in case there are not any nodes after the servlet def!
- it = servlets.iterator();
- while(it.hasNext()) {
+ for (Iterator it = servletElements.iterator(); it.hasNext(); ) {
webAppNode.appendChild((Node)it.next());
}
-
- it = mappings.iterator();
- while(it.hasNext()) {
+ for (Iterator it = mappingElements.iterator(); it.hasNext(); ) {
webAppNode.appendChild((Node)it.next());
}
-
- return doc;
+
+ // Return the updated web.xml document.
+ return webXmlDoc;
}
-
- private static final Collection BEFORE_SERVLET_DEF = new ArrayList();
-
- private static final Collection BEFORE_SERVLET_MAPPING_DEF = new ArrayList();
-
- static {
- BEFORE_SERVLET_DEF.add("icon");
- BEFORE_SERVLET_DEF.add("display-name");
- BEFORE_SERVLET_DEF.add("description");
- BEFORE_SERVLET_DEF.add("distributable");
- BEFORE_SERVLET_DEF.add("context-param");
- BEFORE_SERVLET_DEF.add("filter");
- BEFORE_SERVLET_DEF.add("filter-mapping");
- BEFORE_SERVLET_DEF.add("listener");
-
- BEFORE_SERVLET_MAPPING_DEF.addAll(BEFORE_SERVLET_DEF);
- BEFORE_SERVLET_MAPPING_DEF.add("servlet");
- }
-
- private Document parse(InputStream in)
- throws IOException {
- Document doc = null;
+
+ /**
+ * Parses an input stream of an XML file to an XML document.
+ * @param xmlIn the input stream of an XML file.
+ * @return the XML document.
+ * @throws IOException if an error occurs.
+ */
+ private Document parse(InputStream xmlIn) throws IOException {
+ Document xmlDoc = null;
try {
- DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = fact.newDocumentBuilder();
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
builder.setEntityResolver(new EntityResolverImpl());
- doc = builder.parse(in);
- } catch (ParserConfigurationException e) {
- throw new IOException(e.getMessage());
- } catch (SAXException e) {
- throw new IOException(e.getMessage());
+ xmlDoc = builder.parse(xmlIn);
+ } catch (ParserConfigurationException ex) {
+ throw new IOException(ex.getMessage());
+ } catch (SAXException ex) {
+ throw new IOException(ex.getMessage());
}
- return doc;
+ return xmlDoc;
}
+
}
Modified: portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/Deployer.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/Deployer.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/Deployer.java (original)
+++ portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/Deployer.java Mon Jan 30 08:44:59 2006
@@ -19,23 +19,24 @@
import java.io.InputStream;
/**
- * Interface defining the methods necessary to deploy a portlet
- * application to a servlet container.
+ * Interface defining the methods necessary to deploy a portlet application to
+ * a servlet container.
*
- * @author <a href="ddewolf@apache.org">David H. DeWolf</a>
+ * @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
* @version 1.0
* @since Oct 15, 2004
*/
public interface Deployer {
/**
- * Deploy the specified web application
- * @param config
- * @param webapp
- * @throws IOException
+ * Deploy the specified portlet application to pluto.
+ * @param config the deployment configuration of the portlet app.
+ * @param webappInputStream the input stream to the WAR file.
+ * @throws IOException if an IO error occurs.
+ * @throws DeploymentException if a deployment error occurs.
*/
- void deploy(DeploymentConfig config, InputStream webapp)
- throws IOException, DeploymentException;
+ public void deploy(DeploymentConfig config, InputStream webappInputStream)
+ throws IOException, DeploymentException;
}
Modified: portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/DeployerFactory.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/DeployerFactory.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/DeployerFactory.java (original)
+++ portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/DeployerFactory.java Mon Jan 30 08:44:59 2006
@@ -16,34 +16,61 @@
package org.apache.pluto.util.deploy;
/**
- * <B>TODO</B>: Document
- * @author <a href="ddewolf@apache.org">David H. DeWolf</a>
+ * The pluto deployer factory that creates a deployer instance to deploy portlet
+ * applications to pluto.
+ * @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
+ * @author <a href="mailto:zheng@apache.org">ZHENG Zhong</a>
* @version 1.0
* @since Oct 28, 2004
*/
public class DeployerFactory {
-
- private static DeployerFactory factory;
-
+
+ /** The property key to the deployer class name. */
+ private static final String DEPLOYER_KEY = Deployer.class.getName();
+
+ /** FIXME: abstract class! The default deployer class name. */
+ private static final String DEFAULT_DEPLOYER_CLASS =
+ "org.apache.pluto.util.deploy.impl.FileSystemDeployer";
+
+ /** The singleton factory instance. */
+ private static final DeployerFactory FACTORY = new DeployerFactory();
+
+
+ // Constructor -------------------------------------------------------------
+
+ /**
+ * Private constructor that prevents external instantiation.
+ */
+ private DeployerFactory() {
+ // Do nothing.
+ }
+
+ /**
+ * Returns the singleton factory instance.
+ * @return the singleton factory instance.
+ */
public static DeployerFactory getFactory() {
- if(factory == null) {
- factory = new DeployerFactory();
- }
- return factory;
+ return FACTORY;
}
-
+
+
+ // Public Methods ----------------------------------------------------------
+
+ /**
+ * Creates a pluto deployer to deploy portlet applications to pluto.
+ * @return a pluto deployer.
+ */
public Deployer createFactory() {
- String className = System.getProperty(
- "org.apache.pluto.deploy.Deployer",
- "org.apache.pluto.util.deploy.impl.FileSystemDeployer"
- );
-
- try {
- Class cl = Class.forName(className);
- return (Deployer)cl.newInstance();
+ String className = System.getProperty(DEPLOYER_KEY);
+ if (className == null || className.trim().length() == 0) {
+ className = DEFAULT_DEPLOYER_CLASS;
}
- catch(Throwable t) {
- t.printStackTrace();
+ try {
+ Class clazz = Class.forName(className);
+ return (Deployer) clazz.newInstance();
+ } catch (Throwable th) {
+ System.err.println("Unable to create deployer from: " + className);
+ th.printStackTrace();
return null;
}
}
Modified: portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/DeploymentConfig.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/DeploymentConfig.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/DeploymentConfig.java (original)
+++ portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/DeploymentConfig.java Mon Jan 30 08:44:59 2006
@@ -16,18 +16,17 @@
package org.apache.pluto.util.deploy;
/**
- * Encapsulation of deployment configuration info.
- * Implementations must provide a way to retrieved
- * context specific deployment properties.
+ * Encapsulation of deployment configuration info. Implementations must provide
+ * a way to retrieved context specific deployment properties.
*
- * @author <a href="ddewolf@apache.org">David H. DeWolf</a>
+ * @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
* @version 1.0
* @since Oct 15, 2004
*/
public abstract class DeploymentConfig {
/** The deployment name. */
- private String deploymentName;
+ private String deploymentName = null;
/**
* Default Constructor.
Modified: portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/file/FileSystemDeployer.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/file/FileSystemDeployer.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/file/FileSystemDeployer.java (original)
+++ portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/file/FileSystemDeployer.java Mon Jan 30 08:44:59 2006
@@ -25,52 +25,57 @@
import java.io.InputStream;
/**
- * @author <a href="ddewolf@apache.org">David H. DeWolf</a>
+ * @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
* @version 1.0
* @since Oct 15, 2004
*/
public abstract class FileSystemDeployer implements Deployer {
-
- public FileSystemDeployer() {
-
+
+ // Constructor -------------------------------------------------------------
+
+ /**
+ * Protected no-arg constructor.
+ */
+ protected FileSystemDeployer() {
+ // Do nothing.
}
-
- public void deploy(DeploymentConfig config, InputStream webapp)
- throws IOException, DeploymentException {
+
+
+ // Deployer Impl -----------------------------------------------------------
+
+ public void deploy(DeploymentConfig config, InputStream webappInputStream)
+ throws IOException, DeploymentException {
File dir = getWebApplicationDirectory(config);
- File file = new File(dir, config.getDeploymentName()+".war");
-
+ File file = new File(dir, config.getDeploymentName() + ".war");
FileOutputStream out = new FileOutputStream(file);
int read = -1;
byte[] bits = new byte[256];
- while( (read = webapp.read(bits)) != -1) {
+ while ((read = webappInputStream.read(bits)) != -1) {
out.write(bits, 0, read);
}
-
out.flush();
out.close();
-
configure(config);
-
}
-
-
+
+
+ // Protected Abstract Methods ----------------------------------------------
+
/**
- * Retrieve the directory to which the webapp
- * should be deployed.
+ * Retrieves the directory to which the portlet app should be deployed.
* @return
*/
protected abstract File getWebApplicationDirectory(DeploymentConfig config)
- throws DeploymentException;
-
+ throws DeploymentException;
+
/**
- * Configure the deployment.
+ * Configures the deployment.
* @param config
*/
protected abstract void configure(DeploymentConfig config)
- throws DeploymentException, IOException;
+ throws DeploymentException, IOException;
}
Modified: portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/file/Tomcat5FileSystemDeployer.java
URL: http://svn.apache.org/viewcvs/portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/file/Tomcat5FileSystemDeployer.java?rev=373547&r1=373546&r2=373547&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/file/Tomcat5FileSystemDeployer.java (original)
+++ portals/pluto/trunk/pluto-util/src/main/java/org/apache/pluto/util/deploy/file/Tomcat5FileSystemDeployer.java Mon Jan 30 08:44:59 2006
@@ -28,7 +28,7 @@
* the ${tomcat.home}/conf/${tomcat.service}/${tomcat.host}
* directory.
*
- * @author <a href="ddewolf@apache.org">David H. DeWolf</a>
+ * @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
* @version 1.0
* @since Oct 28, 2004
*/