FileDocCategorySizeDatePackage
Ejbc.javaAPI DocApache Ant 1.707137Wed Dec 13 06:16:18 GMT 2006org.apache.tools.ant.taskdefs.optional.ejb

Ejbc

public class Ejbc extends org.apache.tools.ant.taskdefs.MatchingTask
Builds EJB support classes using WebLogic's ejbc tool from a directory containing a set of deployment descriptors.

Fields Summary
private File
descriptorDirectory
The root directory of the tree containing the serialised deployment desciptors. The actual deployment descriptor files are selected using include and exclude constructs on the ejbc task provided by the MatchingTask superclass.
private File
generatedFilesDirectory
The directory where generated files are placed.
private File
generatedManifestFile
The name of the manifest file generated for the EJB jar.
private String
classpath
The classpath to be used in the weblogic ejbc calls. It must contain the weblogic classes and the implementation classes of the home and remote interfaces.
private File
sourceDirectory
The source directory for the home and remote interfaces. This is used to determine if the generated deployment classes are out of date.
public boolean
keepgenerated
Whether to keep the generated files
Constructors Summary
Methods Summary
public voidexecute()
Do the work. The work is actually done by creating a separate JVM to run a helper task. This approach allows the classpath of the helper task to be set. Since the weblogic tools require the class files of the project's home and remote interfaces to be available in the classpath, this also avoids having to start ant with the class path of the project it is building.

exception
BuildException if someting goes wrong with the build

        if (descriptorDirectory == null
            || !descriptorDirectory.isDirectory()) {
            throw new BuildException("descriptors directory "
                + descriptorDirectory.getPath() + " is not valid");
        }
        if (generatedFilesDirectory == null
            || !generatedFilesDirectory.isDirectory()) {
            throw new BuildException("dest directory "
                + generatedFilesDirectory.getPath() + " is not valid");
        }

        if (sourceDirectory == null
            || !sourceDirectory.isDirectory()) {
            throw new BuildException("src directory "
                + sourceDirectory.getPath() + " is not valid");
        }

        String systemClassPath = System.getProperty("java.class.path");
        String execClassPath
            = FileUtils.translatePath(systemClassPath + ":" + classpath
                                         + ":" + generatedFilesDirectory);
        // get all the files in the descriptor directory
        DirectoryScanner ds = super.getDirectoryScanner(descriptorDirectory);

        String[] files = ds.getIncludedFiles();

        Java helperTask = new Java(this);
        helperTask.setFork(true);
        helperTask.setClassname("org.apache.tools.ant.taskdefs.optional.ejb.EjbcHelper");
        String args = "";
        args += " " + descriptorDirectory;
        args += " " + generatedFilesDirectory;
        args += " " + sourceDirectory;
        args += " " + generatedManifestFile;
        args += " " + keepgenerated;

        for (int i = 0; i < files.length; ++i) {
            args += " " + files[i];
        }

        Commandline.Argument arguments = helperTask.createArg();
        arguments.setLine(args);
        helperTask.setClasspath(new Path(getProject(), execClassPath));
        if (helperTask.executeJava() != 0) {
            throw new BuildException("Execution of ejbc helper failed");
        }
    
public booleangetKeepgenerated()
get the keep generated attribute.

return
the attribute.

        return keepgenerated;
    
public voidsetClasspath(java.lang.String s)
Set the classpath to be used for this compilation.

param
s the classpath (as a string) to use.

        this.classpath = FileUtils.translatePath(s);
    
public voidsetDescriptors(java.lang.String dirName)
Set the directory from where the serialized deployment descriptors are to be read.

param
dirName the name of the directory containing the serialised deployment descriptors.

        descriptorDirectory = new File(dirName);
    
public voidsetDest(java.lang.String dirName)
Set the directory into which the support classes, RMI stubs, etc are to be written.

param
dirName the name of the directory into which code is generated

        generatedFilesDirectory = new File(dirName);
    
public voidsetKeepgenerated(java.lang.String newKeepgenerated)
If true, ejbc will keep the intermediate Java files used to build the class files. This can be useful when debugging.

param
newKeepgenerated a boolean as a string.

        keepgenerated = Boolean.valueOf(newKeepgenerated.trim()).booleanValue();

    
public voidsetManifest(java.lang.String manifestFilename)
Set the name of the generated manifest file. For each EJB that is processed an entry is created in this file. This can then be used to create a jar file for dploying the beans.

param
manifestFilename the name of the manifest file to be generated.

        generatedManifestFile = new File(manifestFilename);
    
public voidsetSrc(java.lang.String dirName)
Set the directory containing the source code for the home interface, remote interface and public key class definitions.

param
dirName the directory containg the source tree for the EJB's interface classes.

        sourceDirectory = new File(dirName);