conor 02/02/02 03:35:40
Modified: src/main/org/apache/tools/ant/taskdefs/optional/ejb
EjbJar.java
Log:
Clean up ejbjar task a little
Revision Changes Path
1.28 +148 -86
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EjbJar.java
Index: EjbJar.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EjbJar.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -w -u -r1.27 -r1.28
--- EjbJar.java 2 Feb 2002 11:04:43 -0000 1.27
+++ EjbJar.java 2 Feb 2002 11:35:40 -0000 1.28
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2000-2001 The Apache Software Foundation. All rights
+ * Copyright (c) 2000-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -76,53 +76,70 @@
import org.apache.tools.ant.types.FileSet;
/**
- * <p>Provides automated ejb jar file creation for ant. Extends the
MatchingTask
- * class provided in the default ant distribution to provide a directory
scanning
- * EJB jarfile generator.</p>
+ * <p>
+ * Provides automated ejb jar file creation for ant. Extends the
+ * MatchingTask class provided in the default ant distribution to provide a
+ * directory scanning EJB jarfile generator.
+ * </p>
*
- * <p>The task works by taking the deployment descriptors one at a time and
+ * <p>
+ * The task works by taking the deployment descriptors one at a time and
* parsing them to locate the names of the classes which should be placed in
- * the jar. The classnames are translated to java.io.Files by replacing
periods
- * with File.separatorChar and resolving the generated filename as a relative
- * path under the srcDir attribute. All necessary files are then assembled
into
- * a jarfile. One jarfile is constructed for each deployment descriptor
found.
+ * the jar. The classnames are translated to java.io.Files by replacing
+ * periods with File.separatorChar and resolving the generated filename as a
+ * relative path under the srcDir attribute. All necessary files are then
+ * assembled into a jarfile. One jarfile is constructed for each deployment
+ * descriptor found.
* </p>
*
- * <p>Functionality is currently provided for standard EJB1.1 jars and
Weblogic
- * 5.1 jars. The weblogic deployment descriptors, used in constructing the
- * Weblogic jar, are located based on a simple naming convention. The name
of the
- * standard deployment descriptor is taken upto the first instance of a
String,
- * specified by the attribute baseNameTerminator, and then the regular
Weblogic
- * descriptor name is appended. For example if baseNameTerminator is set to
'-',
- * its default value, and a standard descriptor is called Foo-ejb-jar.xml
then
- * the files Foo-weblogic-ejb-jar.xml and Foo-weblogic-cmp-rdbms-jar.xml
will be
- * looked for, and if found, included in the jarfile.</p>
- *
- * <p>Attributes and setter methods are provided to support optional
generation
- * of Weblogic5.1 jars, optional deletion of generic jar files, setting
alternate
- * values for baseNameTerminator, and setting the strings to append to the
names
- * of the generated jarfiles.</p>
- *
* @author <a href="mailto:[EMAIL PROTECTED]">Tim Fennell</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Conor MacNeill</a>
*/
public class EjbJar extends MatchingTask {
+ /**
+ * Inner class used to record information about the location of a local
DTD
+ */
public static class DTDLocation {
+ /** The public ID of the DTD */
private String publicId = null;
+ /** The DTD's local location */
private String location = null;
+
+ /**
+ * Sets the publicId of the DTDLocation
+ *
+ * @param publicId the new publicId value
+ */
public void setPublicId(String publicId) {
this.publicId = publicId;
}
+ /**
+ * Sets the location of the DTDLocation. This value may be file path
or
+ * a local resource on the classpath
+ *
+ * @param location the new location value
+ */
public void setLocation(String location) {
this.location = location;
}
+ /**
+ * Gets the publicId of the DTDLocation
+ *
+ * @return the publicId value
+ */
public String getPublicId() {
return publicId;
}
+ /**
+ * Gets the location of the DTDLocation
+ *
+ * @return the location value
+ */
public String getLocation() {
return location;
}
@@ -133,10 +150,16 @@
* This state is passed to the deployment tools for configuration
*/
static class Config {
- /** Stores a handle to the directory under which to search for class
files */
+ /**
+ * Stores a handle to the directory under which to search for class
+ * files
+ */
public File srcDir;
- /** Stores a handle to the directory under which to search for
deployment descriptors */
+ /**
+ * Stores a handle to the directory under which to search for
+ * deployment descriptors
+ */
public File descriptorDir;
/** Instance variable that marks the end of the 'basename' */
@@ -178,31 +201,64 @@
public File manifest;
}
+ /**
+ * An EnumeratedAttribute class for handling different EJB jar naming
+ * schemes
+ */
public static class NamingScheme extends EnumeratedAttribute {
+ /**
+ * Naming scheme where generated jar is determined from the ejb-name
in
+ * the deployment descripor
+ */
public final static String EJB_NAME = "ejb-name";
+
+ /**
+ * Naming scheme where the generated jar name is based on the
+ * name of the directory containing the deployment descriptor
+ */
public final static String DIRECTORY = "directory";
+
+ /**
+ * Naming scheme where the generated jar name is based on the name of
+ * the deployment descriptor file
+ */
public final static String DESCRIPTOR = "descriptor";
+
+ /**
+ * Naming scheme where the generated jar is named by the basejarname
+ * attribute
+ */
public final static String BASEJARNAME = "basejarname";
+
+ /**
+ * Gets the values of the NamingScheme
+ *
+ * @return an array of the values of this attribute class.
+ */
public String[] getValues() {
return new String[] {EJB_NAME, DIRECTORY, DESCRIPTOR,
BASEJARNAME};
}
}
+ /**
+ * The config which is built by this task and used by the various
deployment
+ * tools to access the configuration of the ejbjar task
+ */
private Config config = new Config();
- /** Stores a handle to the directory to put the Jar files in. This is
only used
- by the generic deployment descriptor tool which is created if no
other
- deployment descriptor tools are provided. Normally each deployment
tool
- will specify the desitination dir itself. */
+ /**
+ * Stores a handle to the directory to put the Jar files in. This is
+ * only used by the generic deployment descriptor tool which is created
+ * if no other deployment descriptor tools are provided. Normally each
+ * deployment tool will specify the desitination dir itself.
+ */
private File destDir;
/** Instance variable that stores the suffix for the generated jarfile.
*/
private String genericJarSuffix = "-generic.jar";
- /**
- * The list of deployment tools we are going to run.
- */
+ /** The list of deployment tools we are going to run. */
private ArrayList deploymentTools = new ArrayList();
/**
@@ -296,7 +352,8 @@
* @return the deployment tool instance to be configured.
*/
public WeblogicTOPLinkDeploymentTool createWeblogictoplink() {
- WeblogicTOPLinkDeploymentTool tool = new
WeblogicTOPLinkDeploymentTool();
+ WeblogicTOPLinkDeploymentTool tool
+ = new WeblogicTOPLinkDeploymentTool();
tool.setTask(this);
deploymentTools.add(tool);
return tool;
@@ -318,8 +375,11 @@
}
/**
- * Create a DTD location record. This stores the location of a DTD. The
DTD is identified
- * by its public Id. The location may either be a file location or a
resource location.
+ * Create a DTD location record. This stores the location of a DTD. The
+ * DTD is identified by its public Id. The location may either be a file
+ * location or a resource location.
+ *
+ * @return the DTD location object to be configured by Ant
*/
public DTDLocation createDTD() {
DTDLocation dtdLocation = new DTDLocation();
@@ -341,22 +401,24 @@
/**
- * Set the Manifest file to use when jarring.
+ * Set the Manifest file to use when jarring. As of EJB 1.1, manifest
+ * files are no longer used to configure the EJB. However, they still
+ * have a vital importance if the EJB is intended to be packaged in an
+ * EAR file. By adding "Class-Path" settings to a Manifest file, the EJB
+ * can look for classes inside the EAR file itself, allowing for easier
+ * deployment. This is outlined in the J2EE specification, and all J2EE
+ * components are meant to support it.
*
- * As of EJB 1.1, manifest files are no longer used to configure the
EJB. However, they
- * still have a vital importance if the EJB is intended to be packaged
in an EAR file.
- * By adding "Class-Path" settings to a Manifest file, the EJB can look
for classes inside
- * the EAR file itself, allowing for easier deployment. This is
outlined in the J2EE
- * specification, and all J2EE components are meant to support it.
+ * @param manifest the manifest to be used in the EJB jar
*/
public void setManifest(File manifest) {
config.manifest = manifest;
}
/**
- * Set the srcdir attribute. The source directory is the directory that
contains
- * the classes that will be added to the EJB jar. Typically this will
include the
- * home and remote interfaces and the bean class.
+ * Set the srcdir attribute. The source directory is the directory that
+ * contains the classes that will be added to the EJB jar. Typically
+ * this will include the home and remote interfaces and the bean class.
*
* @param inDir the source directory.
*/
@@ -365,12 +427,11 @@
}
/**
- * Set the descriptor directory.
- *
- * The descriptor directory contains the EJB deployment descriptors.
These are XML
- * files that declare the properties of a bean in a particular
deployment scenario. Such
- * properties include, for example, the transactional nature of the bean
and the security
- * access control to the bean's methods.
+ * Set the descriptor directory. The descriptor directory contains the
+ * EJB deployment descriptors. These are XML files that declare the
+ * properties of a bean in a particular deployment scenario. Such
+ * properties include, for example, the transactional nature of the bean
+ * and the security access control to the bean's methods.
*
* @param inDir the directory containing the deployment descriptors.
*/
@@ -379,11 +440,11 @@
}
/**
- * Set the base name of the EJB jar that is to be created if it is not
to be
- * determined from the name of the deployment descriptor files.
+ * Set the base name of the EJB jar that is to be created if it is not
+ * to be determined from the name of the deployment descriptor files.
*
- * @param inValue the basename that will be used when writing the jar
file containing
- * the EJB
+ * @param inValue the basename that will be used when writing the jar
+ * file containing the EJB
*/
public void setBasejarname(String inValue) {
config.baseJarName = inValue;
@@ -401,7 +462,7 @@
* Set the naming scheme used to determine the name of the generated jars
* from the deployment descriptor
*
- * @param NamingScheme the namign scheme to be used
+ * @param namingScheme the naming scheme to be used
*/
public void setNaming(NamingScheme namingScheme) {
config.namingScheme = namingScheme;
@@ -414,16 +475,14 @@
/**
- * Set the destination directory.
- *
- * The EJB jar files will be written into this directory. The jar files
that exist in
- * this directory are also used when determining if the contents of the
jar file
- * have changed.
+ * Set the destination directory. The EJB jar files will be written into
+ * this directory. The jar files that exist in this directory are also
+ * used when determining if the contents of the jar file have changed.
+ * Note that this parameter is only used if no deployment tools are
+ * specified. Typically each deployment tool will specify its own
+ * destination directory.
*
- * Note that this parameter is only used if no deployment tools are
specified. Typically
- * each deployment tool will specify its own destination directory.
- *
- * @param inFile the destination directory.
+ * @param inDir the destination directory in which to generate jars
*/
public void setDestdir(File inDir) {
this.destDir = inDir;
@@ -439,13 +498,12 @@
}
/**
- * Set the flat dest dir flag.
- *
- * This flag controls whether the destination jars are written out in the
- * destination directory with the same hierarchal structure from which
- * the deployment descriptors have been read. If this is set to true the
- * generated EJB jars are written into the root of the destination
directory,
- * otherwise they are written out in the same relative position as the
deployment
+ * Set the flat dest dir flag. This flag controls whether the
+ * destination jars are written out in the destination directory with
+ * the same hierarchal structure from which the deployment descriptors
+ * have been read. If this is set to true the generated EJB jars are
+ * written into the root of the destination directory, otherwise they
+ * are written out in the same relative position as the deployment
* descriptors in the descriptor directory.
*
* @param inValue the new value of the flatdestdir flag.
@@ -455,11 +513,11 @@
}
/**
- * Set the suffix for the generated jar file.
- * When generic jars are generated, they have a suffix which is appended
to the
- * the bean name to create the name of the jar file. Note that this
suffix includes
- * the extension fo te jar file and should therefore end with an
appropriate
- * extension such as .jar or .ear
+ * Set the suffix for the generated jar file. When generic jars are
+ * generated, they have a suffix which is appended to the the bean name
+ * to create the name of the jar file. Note that this suffix includes
+ * the extension fo te jar file and should therefore end with an
+ * appropriate extension such as .jar or .ear
*
* @param inString the string to use as the suffix.
*/
@@ -468,12 +526,11 @@
}
/**
- * Set the baseNameTerminator.
- *
- * The basename terminator is the string which terminates the bean name.
The convention
- * used by this task is that bean descriptors are named as the BeanName
with some suffix.
- * The baseNameTerminator string separates the bean name and the suffix
and is used to
- * determine the bean name.
+ * Set the baseNameTerminator. The basename terminator is the string
+ * which terminates the bean name. The convention used by this task is
+ * that bean descriptors are named as the BeanName with some suffix. The
+ * baseNameTerminator string separates the bean name and the suffix and
+ * is used to determine the bean name.
*
* @param inValue a string which marks the end of the basename.
*/
@@ -481,6 +538,11 @@
config.baseNameTerminator = inValue;
}
+ /**
+ * Validate the config that has been configured from the build file
+ *
+ * @throws BuildException if the config is not valid
+ */
private void validateConfig() {
if (config.srcDir == null) {
throw new BuildException("The srcDir attribute must be
specified");
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>