org.apache.tools.ant.taskdefs.optional.ejb

Class GenericDeploymentTool

public class GenericDeploymentTool extends Object implements EJBDeploymentTool

A deployment tool which creates generic EJB jars. Generic jars contains only those classes and META-INF entries specified in the EJB 1.1 standard This class is also used as a framework for the creation of vendor specific deployment tools. A number of template methods are provided through which the vendor specific tool can hook into the EJB creation process.
Field Summary
static StringANALYZER_CLASS_FULL
The analyzer class for the super analyzer
static StringANALYZER_CLASS_SUPER
The analyzer class for the super analyzer
static StringANALYZER_FULL
A dependency analyzer name to find all related classes
static StringANALYZER_NONE
A dependency analyzer name for no analyzer
static StringANALYZER_SUPER
A dependency analyzer name to find ancestor classes
static StringDEFAULT_ANALYZER
The default analyzer
protected static StringEJB_DD
Name for EJB Deployment descriptor within EJB jars
protected static StringMANIFEST
The standard MANIFEST file
protected static StringMETA_DIR
The standard META-INF directory in jar files
Constructor Summary
GenericDeploymentTool()
Method Summary
protected voidaddFileToJar(JarOutputStream jStream, File inputFile, String logicalFilename)
Utility method that encapsulates the logic of adding a file entry to a .jar file.
protected voidaddSupportClasses(Hashtable ejbFiles)
Adds any classes the user specifies using support nested elements to the ejbFiles Hashtable.
protected voidaddVendorFiles(Hashtable ejbFiles, String ddPrefix)
Add any vendor specific files which should be included in the EJB Jar.
protected voidcheckAndAddDependants(Hashtable checkEntries)
Add all available classes, that depend on Remote, Home, Bean, PK
protected voidcheckConfiguration(String descriptorFileName, SAXParser saxParser)
This method is called as the first step in the processDescriptor method to allow vendor-specific subclasses to validate the task configuration prior to processing the descriptor.
voidconfigure(EjbJar.Config config)
Configure this tool for use in the ejbjar task.
PathcreateClasspath()
Add the classpath for the user classes
protected ClassLoadergetClassLoaderForBuild()
Returns a Classloader object which parses the passed in generic EjbJar classpath.
protected PathgetCombinedClasspath()
Get the classpath by combining the one from the surrounding task, if any and the one from this tool.
protected EjbJar.ConfiggetConfig()
Get the basename terminator.
protected DescriptorHandlergetDescriptorHandler(File srcDir)
protected FilegetDestDir()
Get the destination directory.
protected StringgetJarBaseName(String descriptorFileName)
Using the EJB descriptor file name passed from the ejbjar task, this method returns the "basename" which will be used to name the completed JAR file.
protected LocationgetLocation()
Get the build file location associated with this element's task.
protected FilegetManifestFile(String prefix)
Get the manifets file to use for building the generic jar.
protected StringgetPublicId()
Returns the Public ID of the DTD specified in the EJB descriptor.
protected TaskgetTask()
Get the task for this tool.
StringgetVendorDDPrefix(String baseName, String descriptorFileName)
Get the prefix for vendor deployment descriptors.
protected voidlog(String message, int level)
Log a message to the Ant output.
protected booleanneedToRebuild(Hashtable ejbFiles, File jarFile)
This method checks the timestamp on each file listed in the ejbFiles and compares them to the timestamp on the jarFile .
protected HashtableparseEjbFiles(String descriptorFileName, SAXParser saxParser)
This method returns a list of EJB files found when the specified EJB descriptor is parsed and processed.
voidprocessDescriptor(String descriptorFileName, SAXParser saxParser)
protected voidregisterKnownDTDs(DescriptorHandler handler)
Register the locations of all known DTDs. vendor-specific subclasses should override this method to define the vendor-specific locations of the EJB DTDs
voidsetClasspath(Path classpath)
Set the classpath to be used for this compilation.
voidsetDestdir(File inDir)
Set the destination directory; required.
voidsetGenericJarSuffix(String inString)
Set the suffix for the generated jar file.
voidsetTask(Task task)
Set the task which owns this tool
protected booleanusingBaseJarName()
Indicate if this build is using the base jar name.
voidvalidateConfigured()
Called to validate that the tool parameters have been configured.
protected voidwriteJar(String baseName, File jarfile, Hashtable files, String publicId)
Method used to encapsulate the writing of the JAR file.

Field Detail

ANALYZER_CLASS_FULL

public static final String ANALYZER_CLASS_FULL
The analyzer class for the super analyzer

ANALYZER_CLASS_SUPER

public static final String ANALYZER_CLASS_SUPER
The analyzer class for the super analyzer

ANALYZER_FULL

public static final String ANALYZER_FULL
A dependency analyzer name to find all related classes

ANALYZER_NONE

public static final String ANALYZER_NONE
A dependency analyzer name for no analyzer

ANALYZER_SUPER

public static final String ANALYZER_SUPER
A dependency analyzer name to find ancestor classes

DEFAULT_ANALYZER

public static final String DEFAULT_ANALYZER
The default analyzer

EJB_DD

protected static final String EJB_DD
Name for EJB Deployment descriptor within EJB jars

MANIFEST

protected static final String MANIFEST
The standard MANIFEST file

META_DIR

protected static final String META_DIR
The standard META-INF directory in jar files

Constructor Detail

GenericDeploymentTool

public GenericDeploymentTool()

Method Detail

addFileToJar

protected void addFileToJar(JarOutputStream jStream, File inputFile, String logicalFilename)
Utility method that encapsulates the logic of adding a file entry to a .jar file. Used by execute() to add entries to the jar file as it is constructed.

Parameters: jStream A JarOutputStream into which to write the jar entry. inputFile A File from which to read the contents the file being added. logicalFilename A String representing the name, including all relevant path information, that should be stored for the entry being added.

addSupportClasses

protected void addSupportClasses(Hashtable ejbFiles)
Adds any classes the user specifies using support nested elements to the ejbFiles Hashtable.

Parameters: ejbFiles Hashtable of EJB classes (and other) files that will be added to the completed JAR file

addVendorFiles

protected void addVendorFiles(Hashtable ejbFiles, String ddPrefix)
Add any vendor specific files which should be included in the EJB Jar.

checkAndAddDependants

protected void checkAndAddDependants(Hashtable checkEntries)
Add all available classes, that depend on Remote, Home, Bean, PK

Parameters: checkEntries files, that are extracted from the deployment descriptor

checkConfiguration

protected void checkConfiguration(String descriptorFileName, SAXParser saxParser)
This method is called as the first step in the processDescriptor method to allow vendor-specific subclasses to validate the task configuration prior to processing the descriptor. If the configuration is invalid, a BuildException should be thrown.

Parameters: descriptorFileName String representing the file name of an EJB descriptor to be processed saxParser SAXParser which may be used to parse the XML descriptor

Throws: BuildException Thrown if the configuration is invalid

configure

public void configure(EjbJar.Config config)
Configure this tool for use in the ejbjar task.

Parameters: config the configuration from the surrounding ejbjar task.

createClasspath

public Path createClasspath()
Add the classpath for the user classes

Returns: a Path instance to be configured by Ant.

getClassLoaderForBuild

protected ClassLoader getClassLoaderForBuild()
Returns a Classloader object which parses the passed in generic EjbJar classpath. The loader is used to dynamically load classes from javax.ejb.* and the classes being added to the jar.

getCombinedClasspath

protected Path getCombinedClasspath()
Get the classpath by combining the one from the surrounding task, if any and the one from this tool.

Returns: the combined classpath

getConfig

protected EjbJar.Config getConfig()
Get the basename terminator.

Returns: an ejbjar task configuration

getDescriptorHandler

protected DescriptorHandler getDescriptorHandler(File srcDir)

getDestDir

protected File getDestDir()
Get the destination directory.

Returns: the destination directory into which EJB jars are to be written

getJarBaseName

protected String getJarBaseName(String descriptorFileName)
Using the EJB descriptor file name passed from the ejbjar task, this method returns the "basename" which will be used to name the completed JAR file.

Parameters: descriptorFileName String representing the file name of an EJB descriptor to be processed

Returns: The "basename" which will be used to name the completed JAR file

getLocation

protected Location getLocation()
Get the build file location associated with this element's task.

Returns: the task's location instance.

getManifestFile

protected File getManifestFile(String prefix)
Get the manifets file to use for building the generic jar. If the file does not exist the global manifest from the config is used otherwise the default Ant manifest will be used.

Parameters: prefix the prefix where to llook for the manifest file based on the naming convention.

Returns: the manifest file or null if the manifest file does not exist

getPublicId

protected String getPublicId()
Returns the Public ID of the DTD specified in the EJB descriptor. Not every vendor-specific DeploymentTool will need to reference this value or may want to determine this value in a vendor-specific way.

Returns: Public ID of the DTD specified in the EJB descriptor.

getTask

protected Task getTask()
Get the task for this tool.

Returns: the Task instance this tool is associated with.

getVendorDDPrefix

public String getVendorDDPrefix(String baseName, String descriptorFileName)
Get the prefix for vendor deployment descriptors. This will contain the path and the start of the descriptor name, depending on the naming scheme

log

protected void log(String message, int level)
Log a message to the Ant output.

Parameters: message the message to be logged. level the severity of this message.

needToRebuild

protected boolean needToRebuild(Hashtable ejbFiles, File jarFile)
This method checks the timestamp on each file listed in the ejbFiles and compares them to the timestamp on the jarFile . If the jarFile's timestamp is more recent than each EJB file, true is returned. Otherwise, false is returned. TODO: find a way to check the manifest-file, that is found by naming convention

Parameters: ejbFiles Hashtable of EJB classes (and other) files that will be added to the completed JAR file jarFile JAR file which will contain all of the EJB classes (and other) files

Returns: boolean indicating whether or not the jarFile is up to date

parseEjbFiles

protected Hashtable parseEjbFiles(String descriptorFileName, SAXParser saxParser)
This method returns a list of EJB files found when the specified EJB descriptor is parsed and processed.

Parameters: descriptorFileName String representing the file name of an EJB descriptor to be processed saxParser SAXParser which may be used to parse the XML descriptor

Returns: Hashtable of EJB class (and other) files to be added to the completed JAR file

Throws: SAXException Any SAX exception, possibly wrapping another exception IOException An IOException from the parser, possibly from a the byte stream or character stream

processDescriptor

public void processDescriptor(String descriptorFileName, SAXParser saxParser)

registerKnownDTDs

protected void registerKnownDTDs(DescriptorHandler handler)
Register the locations of all known DTDs. vendor-specific subclasses should override this method to define the vendor-specific locations of the EJB DTDs

setClasspath

public void setClasspath(Path classpath)
Set the classpath to be used for this compilation.

Parameters: classpath the classpath to be used for this build.

setDestdir

public void setDestdir(File inDir)
Set the destination directory; required.

Parameters: inDir the destination directory.

setGenericJarSuffix

public void setGenericJarSuffix(String inString)
Set the suffix for the generated jar file.

Parameters: inString the string to use as the suffix.

setTask

public void setTask(Task task)
Set the task which owns this tool

Parameters: task the Task to which this deployment tool is associated.

usingBaseJarName

protected boolean usingBaseJarName()
Indicate if this build is using the base jar name.

Returns: true if the name of the generated jar is coming from the basejarname attribute

validateConfigured

public void validateConfigured()
Called to validate that the tool parameters have been configured.

Throws: BuildException If the Deployment Tool's configuration isn't valid

writeJar

protected void writeJar(String baseName, File jarfile, Hashtable files, String publicId)
Method used to encapsulate the writing of the JAR file. Iterates over the filenames/java.io.Files in the Hashtable stored on the instance variable ejbFiles.
Copyright