Browse Source

Borland ejbjar element documentation

New blgenclient task to generate client jar for Borland EJBs

Submitted by:	Beno�t MOUSSAUD <benoit.moussaud@criltelecom.com>


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268929 13f79535-47bb-0310-9956-ffa450edef68
master
Conor MacNeill 24 years ago
parent
commit
edd396be18
6 changed files with 432 additions and 68 deletions
  1. +100
    -0
      docs/manual/OptionalTasks/BorlandEJBTasks.html
  2. +56
    -0
      docs/manual/OptionalTasks/BorlandGenerateClient.html
  3. +11
    -6
      docs/manual/OptionalTasks/ejb.html
  4. +1
    -0
      src/main/org/apache/tools/ant/taskdefs/defaults.properties
  5. +92
    -62
      src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandDeploymentTool.java
  6. +172
    -0
      src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java

+ 100
- 0
docs/manual/OptionalTasks/BorlandEJBTasks.html View File

@@ -0,0 +1,100 @@
<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<title>Ant User Manual</title>
</head>

<body>

<h2><a name="log">BorlandDeploy</a>Tool</h2>
<h3>Description</h3>
<p>The BorlandDeployTool is a vendor specifc nested element for the Ejbjar optionaltask.
<p>BorlandDeploymentTool is dedicated to the Borland Application Server 4.5. It
generates and compiles the stubs and skeletons for all ejb described into the
Deployement Descriptor, builds the jar file including the support files and
verify whether the produced jar is valid or not.
<h3>Borland element</h3>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
<td valign="top" width="63"><b>Attribute</b></td>
<td valign="top" width="915"><b>Description</b></td>
<td align="center" valign="top" width="62"><b>Required</b></td>
</tr>
<tr>
<td valign="top" width="63">destdir</td>
<td valign="top" width="915">The base directory into which the generated borland
ready jar files are deposited</td>
<td align="center" valign="middle" width="62">yes</td>
</tr>
<tr>
<td valign="top" width="63">debug</td>
<td valign="top" width="915">If true, turn on the debug mode for each borland
tools (java2iiop, iastool ...) default = false</td>
<td align="center" valign="middle" width="62">no</td>
</tr>
<tr>
<td valign="top" width="63">verify</td>
<td valign="top" width="915">If true, turn on the verification at the end
of the jar production (default = false)</td>
<td align="center" valign="middle" width="62">no</td>
</tr>
<tr>
<td valign="top" width="63">verifyargs</td>
<td valign="top" width="915">extra parameter for verify command</td>
<td align="center" valign="middle" width="62">no</td>
</tr>
<tr>
<td valign="top" width="63">suffix</td>
<td valign="top" width="915">String value appended to the basename of the
deployment descriptor to create the filename of the Borland EJB jar file.</td>
<td align="center" valign="middle" width="62">No, defaults to '-ejb.jar'.</td>
</tr>
<tr>
<td valign="top" width="63">basdtd</td>
<td valign="top" width="915"><b>Deprecated</b>. Defines the location of the
weblogic-ejb-jar DTD which covers the Borland specific deployment descriptors.
This should not be necessary if you have borland in your classpath. If you
do not, you should use a nested <dtd> element, described above</td>
<td align="center" valign="middle" width="62">no</td>
</tr>
<tr>
<td valign="top" width="63">ejbdtd</td>
<td valign="top" width="915"><b>Deprecated</b>. Defines the location of the
ejb-jar DTD in the weblogic class hierarchy. This should not be necessary
if you have weblogic in your classpath. If you do not, you should use a
nested <dtd> element, described above. </td>
<td align="center" valign="middle" width="62">no</td>
</tr>
<tr>
<td valign="top" width="63">generateclient </td>
<td valign="top" width="915">If true, turn on the generation of the corresponding
ejbjar (default = false)</td>
<td align="center" valign="middle" width="62">no</td>
</tr>
</table>

<h3>Examples</h3>
<p>The following build.xml snippit is an example of how to use Borland element
into the ejbjar task
<pre> &lt;ejbjar srcdir=&quot;${build.classes}&quot; basejarname=&quot;vsmp&quot; descriptordir=&quot;${rsc.dir}/hrmanager&quot;&gt;
&lt;borland destdir=&quot;lib&quot; verify=&quot;on&quot; generateclient=&quot;on&quot;&gt;
&lt;classpath refid=&quot;classpath&quot; /&gt;
&lt;/borland&gt;
&lt;include name=&quot;**\ejb-jar.xml&quot;/&gt;
&lt;support dir=&quot;${build.classes}&quot;&gt;
&lt;include name=&quot;demo\*.class&quot;/&gt;
&lt;include name=&quot;demo\helper\*.class&quot;/&gt;
&lt;/support&gt;
&lt;/ejbjar&gt;</pre>
<pre>The borland element will generate into the lib dir an ejb jar file using the deployment descriptor placed into the ${rsc.dir}/hrmanager directory.
The verify phase is turned on and the generate client phase as well.
</pre>

<h3>&nbsp;</h3>
<p align="center">Copyright &copy; 2000,2001 Apache Software Foundation. All rights
Reserved.</p>

</body>
</html>


+ 56
- 0
docs/manual/OptionalTasks/BorlandGenerateClient.html View File

@@ -0,0 +1,56 @@
<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<title>Ant User Manual</title>
</head>

<body>

<h2><a name="log">BorlandGenerateClient</a></h2>
<h3>Description</h3>
<p>The BorlandGenerateClient is a task dedicated to Borland Application Server
v 4.5. It offers to generate the client jar file corresponding to an ejb jar
file.
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
<td valign="top" width="63"><b>Attribute</b></td>
<td valign="top" width="915"><b>Description</b></td>
<td align="center" valign="top" width="62"><b>Required</b></td>
</tr>
<tr>
<td valign="top" width="63">ejbjar</td>
<td valign="top" width="915">ejb jar file</td>
<td align="center" valign="middle" width="62">yes</td>
</tr>
<tr>
<td valign="top" width="63">debug</td>
<td valign="top" width="915">If true, turn on the debug mode for each borland
tools (java2iiop, iastool ...) default = false</td>
<td align="center" valign="middle" width="62">no</td>
</tr>
<tr>
<td valign="top" width="63">clientjar</td>
<td valign="top" width="915">client jar file name. If missing the client jar
file name is build using the ejbjar file name: ejbjar = hellobean-ejb.jar
=&gt; hellobean-ejbclient.jar</td>
<td align="center" valign="middle" width="62">no</td>
</tr>
</table>

<h3>Examples</h3>
<p>The following build.xml snippit is an example of how to use Borland element
into the ejbjar task
<pre> ....
&lt;generateclient ejbjar=&quot;lib/secutest-ejb.jar&quot; clientjar=&quot;lib/client.jar&quot; debug=&quot;true&quot;/&gt;
....
</pre>
<pre>&nbsp;</pre>

<p align="center">Copyright &copy; 2000,2001 Apache Software Foundation. All rights
Reserved.</p>

</body>
</html>


+ 11
- 6
docs/manual/OptionalTasks/ejb.html View File

@@ -35,12 +35,16 @@ to support additional EJB Servers.
<hr>
<h2><a name="ejbtasks">EJB Tasks</a></h2>
<table border="1" cellpadding="5">
<tr><td>Task</td><td>Application Servers</td></tr>
<tr><td><a href="#ddcreator">ddcreator</a></td><td>Weblogic 4.5.1</td></tr>
<tr><td><a href="#ejbc">ejbc</a></td><td>Weblogic 4.5.1</td></tr>
<tr><td><a href="#wlrun">wlrun</a></td><td>Weblogic 4.5.1, 5.1 &amp; 6.0</td></tr>
<tr><td><a href="#wlstop">wlstop</a></td><td>Weblogic 4.5.1, 5.1 &amp; 6.0</td></tr>
<tr><td><a href="#ejbjar">ejbjar</a></td><td>Weblogic 5.1 &amp; 6.0</td></tr>
<tr><td>Task</td><td colspan="2">Application Servers</td></tr>
<tr><td><a href="BorlandGenerateClient.html">blgenclient</a></td><td colspan="2">Borland Application Server 4.5</td></tr>
<tr><td><a href="#ddcreator">ddcreator</a></td><td colspan="2">Weblogic 4.5.1</td></tr>
<tr><td><a href="#ejbc">ejbc</a></td><td colspan="2">Weblogic 4.5.1</td></tr>
<tr><td rowspan="3"><a href="#ejbjar">ejbjar</a></td><td colspan="2" align="center">Nested Elements</td></tr>
<tr><td><a href="#ejbjar_weblogic">weblogic</a></td><td>Weblogic 5.1 &amp; 6.0</td></tr>
<tr><td><a href="BorlandEJBTasks.html">borland</a></td><td>Borland Application Server 4.5</td></tr>
<tr><td><a href="#wlrun">wlrun</a></td><td colspan="2">Weblogic 4.5.1, 5.1 &amp; 6.0</td></tr>
<tr><td><a href="#wlstop">wlstop</a></td><td colspan="2">Weblogic 4.5.1, 5.1 &amp; 6.0</td></tr>

</table>

<hr>
@@ -558,6 +562,7 @@ Each vendor-specific nested element controls the generation of a deployable jar
specific to that vendor's EJB container. The parameters for each supported
deployment element are detailed here.

<a name="ejbjar_weblogic"></a>
<h3>Weblogic element</h3>

<p>The weblogic element is used to control the weblogic.ejbc compiler for


+ 1
- 0
src/main/org/apache/tools/ant/taskdefs/defaults.properties View File

@@ -94,6 +94,7 @@ sound=org.apache.tools.ant.taskdefs.optional.sound.SoundTask
junitreport=org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator
vsslabel=org.apache.tools.ant.taskdefs.optional.vss.MSVSSLABEL
vsshistory=org.apache.tools.ant.taskdefs.optional.vss.MSVSSHISTORY
blgenclient=org.apache.tools.ant.taskdefs.optional.ejb.BorlandGenerateClient

# deprecated ant tasks (kept for back compatibility)
javadoc2=org.apache.tools.ant.taskdefs.Javadoc


+ 92
- 62
src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandDeploymentTool.java View File

@@ -52,6 +52,7 @@
* <http://www.apache.org/>.
*/


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

import java.io.*;
@@ -73,7 +74,7 @@ import org.xml.sax.*;

/**
* BorlandDeploymentTool is dedicated to the Borland Application Server 4.5
* This task generates and compilesthe stubs and skeletons for all ejb described into the
* This task generates and compiles the stubs and skeletons for all ejb described into the
* Deployement Descriptor, builds the jar file including the support files and verify
* whether the produced jar is valid or not.
* The supported options are:
@@ -83,6 +84,7 @@ import org.xml.sax.*;
* <li>verifyargs (String) : add optional argument to verify command (see vbj com.inprise.ejb.util.Verify)</li>
* <li>ejbdtd (String) : location of the SUN DTD </li>
* <li>basdtd (String) : location of the BAS DTD </li>
* <li>generatelclient (boolean) : turn on the client jar file generation </li>
* </ul>
*
*<PRE>
@@ -98,6 +100,7 @@ import org.xml.sax.*;
* &lt;/support&gt;
* &lt;/ejbjar&gt;
*</PRE>
* @author <a href="mailto:benoit.moussaud@criltelecom.com">Benoit Moussaud</a>
*
*/
public class BorlandDeploymentTool extends GenericDeploymentTool
@@ -125,7 +128,7 @@ public class BorlandDeploymentTool extends GenericDeploymentTool
protected static final String VERIFY = "com.inprise.ejb.util.Verify";

/** Instance variable that stores the suffix for the borland jarfile. */
private String jarSuffix = ".jar";
private String jarSuffix = "-ejb.jar";

/** Instance variable that stores the location of the borland DTD file. */
private String borlandDTD;
@@ -137,6 +140,8 @@ public class BorlandDeploymentTool extends GenericDeploymentTool
/** Instance variable that determines whether the debug mode is on */
private boolean java2iiopdebug = false;

/** Instance variable that determines whetger the client jar file is generated */
private boolean generateclient = false;
/** Instance variable that determines whether it is necessary to verify the produced jar */
private boolean verify = true;
private String verifyArgs = "";
@@ -156,7 +161,6 @@ public class BorlandDeploymentTool extends GenericDeploymentTool
}


/**
* Setter used to store the suffix for the generated borland jar file.
* @param inString the string to use as the suffix.
@@ -168,9 +172,9 @@ public class BorlandDeploymentTool extends GenericDeploymentTool

/**
* sets some additional args to send to verify command
* @param args addtions command line parameters
*/
public void setVerifyArgs(String args)
{
public void setVerifyArgs(String args) {
this.verifyArgs = args;
}
@@ -193,28 +197,35 @@ public class BorlandDeploymentTool extends GenericDeploymentTool
this.ejb11DTD = inString;
}
/**
* setter used to store whether the task will include the generate client task.
* (see : BorlandGenerateClient task)
*/
public void setGenerateclient(boolean b) {
this.generateclient = b;
}


protected void registerKnownDTDs(DescriptorHandler handler) {
handler.registerDTD(PUBLICID_EJB11, DEFAULT_BAS45_EJB11_DTD_LOCATION);
}

protected DescriptorHandler getBorlandDescriptorHandler(final File srcDir) {
DescriptorHandler handler =
new DescriptorHandler(getTask(), srcDir) {
protected void processElement() {
if (currentElement.equals("type-storage")) {
// Get the filename of vendor specific descriptor
String fileNameWithMETA = currentText;
//trim the META_INF\ off of the file name
String fileName = fileNameWithMETA.substring(META_DIR.length(),
fileNameWithMETA.length() );
File descriptorFile = new File(srcDir, fileName);
ejbFiles.put(fileNameWithMETA, descriptorFile);
}
}
DescriptorHandler handler =
new DescriptorHandler(getTask(), srcDir) {
protected void processElement() {
if (currentElement.equals("type-storage")) {
// Get the filename of vendor specific descriptor
String fileNameWithMETA = currentText;
//trim the META_INF\ off of the file name
String fileName = fileNameWithMETA.substring(META_DIR.length(),
fileNameWithMETA.length() );
File descriptorFile = new File(srcDir, fileName);
ejbFiles.put(fileNameWithMETA, descriptorFile);
}
}
};

handler.registerDTD(PUBLICID_BORLAND_EJB,
borlandDTD == null ? DEFAULT_BAS_DTD_LOCATION : borlandDTD);
@@ -232,35 +243,30 @@ public class BorlandDeploymentTool extends GenericDeploymentTool
protected void addVendorFiles(Hashtable ejbFiles, String baseName) {

File borlandDD = new File(getConfig().descriptorDir,META_DIR+BAS_DD);
if (borlandDD.exists())
{
if (borlandDD.exists()) {
log("Borland specific file found "+ borlandDD, Project.MSG_VERBOSE);
ejbFiles.put(META_DIR + BAS_DD, borlandDD);
}
else
{
else {
log("Unable to locate borland deployment descriptor. It was expected to be in " +
borlandDD.getPath(), Project.MSG_WARN);
return;
}

}
/**
* Get the vendor specific name of the Jar that will be output. The modification date
* of this jar will be checked against the dependent bean classes.
*/
File getVendorOutputJarFile(String baseName)
{
return new File(getDestDir(), baseName + jarSuffix);
File getVendorOutputJarFile(String baseName) {
return new File(getDestDir(), baseName + jarSuffix);
}

/**
* Verify the produced jar file by invoking the Borland verify tool
* @param sourceJar java.io.File representing the produced jar file
*/
private void verifyBorlandJar(File sourceJar)
{
private void verifyBorlandJar(File sourceJar) {
org.apache.tools.ant.taskdefs.Java javaTask = null;
log("verify "+sourceJar,Project.MSG_INFO);
try {
@@ -283,14 +289,39 @@ public class BorlandDeploymentTool extends GenericDeploymentTool
log("Calling "+VERIFY+" for " + sourceJar.toString(), Project.MSG_VERBOSE);
javaTask.execute();
}
catch (Exception e)
{
catch (Exception e) {
//TO DO : delete the file if it is not a valid file.
String msg = "Exception while calling "+VERIFY+" Details: " + e.toString();
throw new BuildException(msg, e);
}
}

/**
* Generate the client jar corresponding to the jar file passed as paremeter
* the method uses the BorlandGenerateClient task.
* @param sourceJar java.io.File representing the produced jar file
*/
private void generateClient(File sourceJar) {
getTask().getProject().addTaskDefinition("internal_bas_generateclient",
org.apache.tools.ant.taskdefs.optional.ejb.BorlandGenerateClient.class);

org.apache.tools.ant.taskdefs.optional.ejb.BorlandGenerateClient gentask = null;
log("generate client for "+sourceJar,Project.MSG_INFO);
try {
String args = verifyArgs;
args += " "+sourceJar.getPath();
gentask = (BorlandGenerateClient) getTask().getProject().createTask("internal_bas_generateclient");
gentask.setEjbjar(sourceJar);
gentask.setDebug(java2iiopdebug);
gentask.setTaskName("generate client");
gentask.execute();
}
catch (Exception e) {
//TO DO : delete the file if it is not a valid file.
String msg = "Exception while calling "+VERIFY+" Details: " + e.toString();
throw new BuildException(msg, e);
}
}

/**
@@ -299,16 +330,17 @@ public class BorlandDeploymentTool extends GenericDeploymentTool
* @param ithomes : iterator on home class
* @param files : file list , updated by the adding generated files
*/
private void buildBorlandStubs(Iterator ithomes,Hashtable files )
{
private void buildBorlandStubs(Iterator ithomes,Hashtable files ) {
org.apache.tools.ant.taskdefs.ExecTask execTask = null;
File java2iiopOut = new File("java2iiop.log");
try
{
//File java2iiopOut = new File("java2iiop.log");
File java2iiopOut = null;
try {
java2iiopOut = File.createTempFile("java2iiop","log");
log(" iiop log file : "+ java2iiopOut ,Project.MSG_DEBUG);

execTask = (ExecTask) getTask().getProject().createTask("exec");
execTask.setOutput(java2iiopOut);
if ( java2iiopdebug )
{
if ( java2iiopdebug ) {
execTask.createArg().setValue("-VBJdebug");
} // end of if ()
@@ -319,14 +351,15 @@ public class BorlandDeploymentTool extends GenericDeploymentTool
execTask.createArg().setPath(getCombinedClasspath());
//list file
execTask.createArg().setValue("-list_files");
//no TIE classes
execTask.createArg().setValue("-no_tie");
//root dir
execTask.createArg().setValue("-root_dir");
execTask.createArg().setValue(getConfig().srcDir.getAbsolutePath());
//compiling order
execTask.createArg().setValue("-compile");
//add the home class
while ( ithomes.hasNext())
{
while ( ithomes.hasNext()) {
execTask.createArg().setValue(ithomes.next().toString());
} // end of while ()
log("Calling java2iiop",Project.MSG_VERBOSE);
@@ -338,15 +371,12 @@ public class BorlandDeploymentTool extends GenericDeploymentTool
throw new BuildException(msg, e);
}

try
{
try {
FileReader fr = new FileReader(java2iiopOut);
LineNumberReader lnr = new LineNumberReader(fr);
String javafile;
while ( ( javafile = lnr.readLine()) != null)
{
if ( javafile.endsWith(".java") )
{
while ( ( javafile = lnr.readLine()) != null) {
if ( javafile.endsWith(".java") ) {
String classfile = toClassFile(javafile);
String key = classfile.substring(getConfig().srcDir.getAbsolutePath().length()+1);
@@ -357,11 +387,13 @@ public class BorlandDeploymentTool extends GenericDeploymentTool
} // end of while ()
lnr.close();
}
catch(Exception e)
{
catch(Exception e) {
String msg = "Exception while parsing java2iiop output. Details: " + e.toString();
throw new BuildException(msg, e);
}

//delete the output , only if all is succesfull
java2iiopOut.delete();
}

/**
@@ -369,16 +401,14 @@ public class BorlandDeploymentTool extends GenericDeploymentTool
* filenames/java.io.Files in the Hashtable stored on the instance variable
* ejbFiles.
*/
protected void writeJar(String baseName, File jarFile, Hashtable files,
String publicId) throws BuildException {
protected void writeJar(String baseName, File jarFile, Hashtable files, String publicId)
throws BuildException {
//build the home classes list.
Vector homes = new Vector();
Iterator it = files.keySet().iterator();
while ( it.hasNext())
{
while ( it.hasNext()) {
String clazz = (String) it.next();
if ( clazz.endsWith("Home.class") )
{
if ( clazz.endsWith("Home.class") ) {
//remove .class extension
String home = toClass(clazz);
homes.add(home);
@@ -390,19 +420,20 @@ public class BorlandDeploymentTool extends GenericDeploymentTool
super.writeJar(baseName, jarFile, files, publicId);

if ( verify )
{
if ( verify ) {
verifyBorlandJar(jarFile);
} // end of if ()

if ( generateclient) {
generateClient(jarFile);
} // end of if ()
}

/**
* convert a class file name : A/B/C/toto.class
* into a class name: A.B.C.toto
*/
protected String toClass(String filename)
{
private String toClass(String filename) {
//remove the .class
String classname = filename.substring(0,filename.lastIndexOf(".class"));
classname = classname.replace('\\','.');
@@ -413,8 +444,7 @@ public class BorlandDeploymentTool extends GenericDeploymentTool
* convert a file name : A/B/C/toto.java
* into a class name: A/B/C/toto.class
*/
protected String toClassFile(String filename)
{
private String toClassFile(String filename) {
//remove the .class
String classfile = filename.substring(0,filename.lastIndexOf(".java"));
classfile = classfile+".class";


+ 172
- 0
src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java View File

@@ -0,0 +1,172 @@
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Ant", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/


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

import java.io.*;
import java.io.FileReader;
import java.io.LineNumberReader;
import java.io.StringReader;
import java.net.*;
import java.util.*;
import java.util.Iterator;
import java.util.jar.*;
import javax.xml.parsers.*;

import org.apache.tools.ant.*;
import org.apache.tools.ant.taskdefs.ExecTask;
import org.apache.tools.ant.taskdefs.Java;
import org.apache.tools.ant.types.*;
import org.apache.tools.ant.types.Commandline.Argument;
import org.xml.sax.*;

/**
* BorlandGenerateClient is dedicated to the Borland Application Server 4.5
* This task generates the client jar using as input the ejb jar file.
*
* @author <a href="mailto:benoit.moussaud@criltelecom.com">Benoit Moussaud</a>
*
*/
public class BorlandGenerateClient extends Task
{

/** debug the generateclient task */
boolean debug = false;

/** hold the ejbjar file name */
File ejbjarfile = null;

/** hold the client jar file name */
File clientjarfile = null;

public void setDebug(boolean debug)
{
this.debug = debug;
}

public void setEjbjar(File ejbfile)
{
ejbjarfile = ejbfile;
}
public void setClientjar(File clientjar)
{
clientjarfile = clientjar;
}

/**
* Do the work.
*
* The work is actually done by creating a separate JVM to run a java task.
*
* @exception BuildException if someting goes wrong with the build
*/
public void execute() throws BuildException
{
try
{
if ( ejbjarfile == null ||
ejbjarfile.isDirectory())
{
throw new BuildException("invalid ejb jar file.");
} // end of if ()

if ( clientjarfile == null ||
clientjarfile.isDirectory())
{
log("invalid or missing client jar file.",Project.MSG_VERBOSE);
String ejbjarname = ejbjarfile.getAbsolutePath();
//clientname = ejbjarfile+client.jar
String clientname = ejbjarname.substring(0,ejbjarname.lastIndexOf("."));
clientname = clientname + "client.jar";
clientjarfile = new File(clientname);

} // end of if ()

log("client jar file is " + clientjarfile);

org.apache.tools.ant.taskdefs.ExecTask execTask = null;
execTask = (ExecTask) getProject().createTask("exec");
execTask.setDir(new File("."));
execTask.setExecutable("iastool");
execTask.createArg().setValue("generateclient");
if ( debug )
{
execTask.createArg().setValue("-trace");
} // end of if ()

//
execTask.createArg().setValue("-short");
execTask.createArg().setValue("-jarfile");
// ejb jar file
execTask.createArg().setValue(ejbjarfile.getAbsolutePath());
//client jar file
execTask.createArg().setValue("-single");
execTask.createArg().setValue("-clientjarfile");
execTask.createArg().setValue(clientjarfile.getAbsolutePath());

log("Calling java2iiop",Project.MSG_VERBOSE);
execTask.execute();
}
catch (Exception e)
{
// Have to catch this because of the semantics of calling main()
String msg = "Exception while calling generateclient Details: " + e.toString();
throw new BuildException(msg, e);
}

}
}

Loading…
Cancel
Save