Browse Source

Provide a way to specify addtional class path for blgenclient

task.

The borland Generate client uses a java call instead of the launch of an
external process.
The previous mode is still available if you set mode="fork"

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


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268953 13f79535-47bb-0310-9956-ffa450edef68
master
Conor MacNeill 24 years ago
parent
commit
fc42e57c2c
3 changed files with 134 additions and 41 deletions
  1. +14
    -5
      docs/manual/OptionalTasks/BorlandGenerateClient.html
  2. +4
    -0
      src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandDeploymentTool.java
  3. +116
    -36
      src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java

+ 14
- 5
docs/manual/OptionalTasks/BorlandGenerateClient.html View File

@@ -37,15 +37,24 @@
=&gt; hellobean-ejbclient.jar</td> =&gt; hellobean-ejbclient.jar</td>
<td align="center" valign="middle" width="62">no</td> <td align="center" valign="middle" width="62">no</td>
</tr> </tr>
<tr>
<td valign="top" width="63">mode</td>
<td valign="top" width="915">choose the command launching mode. Two values:
java or fork. default = java. Possibility to specify a classpath.</td>
<td align="center" valign="middle" width="62">no</td>
</tr>
</table> </table>


<h3>Examples</h3> <h3>Examples</h3>
<p>The following build.xml snippit is an example of how to use Borland element <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>
into the ejbjar task using the java mode.
<pre>
&lt;blgenclient ejbjar=&quot;lib/secutest-ejb.jar&quot; clientjar=&quot;lib/client.jar&quot; debug=&quot;true&quot; mode=&quot;java&quot;&gt;
&lt;classpath&gt;
&lt;pathelement locacation=&quot;mymodule.jar&quot;/&gt;
&lt;/classpath&gt;
&lt;/blgenclient&gt;
</pre>
<pre>&nbsp;</pre> <pre>&nbsp;</pre>


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


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

@@ -314,6 +314,10 @@ public class BorlandDeploymentTool extends GenericDeploymentTool
gentask = (BorlandGenerateClient) getTask().getProject().createTask("internal_bas_generateclient"); gentask = (BorlandGenerateClient) getTask().getProject().createTask("internal_bas_generateclient");
gentask.setEjbjar(sourceJar); gentask.setEjbjar(sourceJar);
gentask.setDebug(java2iiopdebug); gentask.setDebug(java2iiopdebug);
Path classpath = getCombinedClasspath();
if (classpath != null) {
gentask.setClasspath(classpath);
}
gentask.setTaskName("generate client"); gentask.setTaskName("generate client");
gentask.execute(); gentask.execute();
} }


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

@@ -1,7 +1,7 @@
/* /*
* The Apache Software License, Version 1.1 * The Apache Software License, Version 1.1
* *
* Copyright (c) 2000 The Apache Software Foundation. All rights
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved. * reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@@ -56,12 +56,8 @@
package org.apache.tools.ant.taskdefs.optional.ejb; package org.apache.tools.ant.taskdefs.optional.ejb;


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


@@ -75,12 +71,16 @@ import org.xml.sax.*;
/** /**
* BorlandGenerateClient is dedicated to the Borland Application Server 4.5 * BorlandGenerateClient is dedicated to the Borland Application Server 4.5
* This task generates the client jar using as input the ejb jar file. * This task generates the client jar using as input the ejb jar file.
* Two mode are available: java mode (default) and fork mode. With the fork mode,
* it is impossible to add classpath to the commmand line.
* *
* @author <a href="mailto:benoit.moussaud@criltelecom.com">Benoit Moussaud</a>
* @author <a href="mailto:benoit.moussaud@criltelecom.com">Benoit Moussaud</a>
* *
*/ */
public class BorlandGenerateClient extends Task public class BorlandGenerateClient extends Task
{ {
static final String JAVA_MODE = "java";
static final String FORK_MODE = "fork";


/** debug the generateclient task */ /** debug the generateclient task */
boolean debug = false; boolean debug = false;
@@ -91,20 +91,48 @@ public class BorlandGenerateClient extends Task
/** hold the client jar file name */ /** hold the client jar file name */
File clientjarfile = null; File clientjarfile = null;


public void setDebug(boolean debug)
{
/** hold the classpath */
Path classpath;

/** hold the mode (java|fork) */
String mode = JAVA_MODE;

public void setMode(String s) {
mode = s;
}
public void setDebug(boolean debug) {
this.debug = debug; this.debug = debug;
} }


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


public void setClasspath(Path classpath) {
if (this.classpath == null) {
this.classpath = classpath;
}
else {
this.classpath.append(classpath);
}
}
public Path createClasspath() {
if (this.classpath == null) {
this.classpath = new Path(project);
}
return this.classpath.createPath();
}
public void setClasspathRef(Reference r) {
createClasspath().setRefid(r);
}

/** /**
* Do the work. * Do the work.
* *
@@ -112,29 +140,84 @@ public class BorlandGenerateClient extends Task
* *
* @exception BuildException if someting goes wrong with the build * @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 ()
public void execute() throws BuildException {
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 ()

if ( mode == null ) {
log("mode is null default mode is java");
setMode(JAVA_MODE);
} // end of if ()

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

if ( mode.equalsIgnoreCase(FORK_MODE)) {
executeFork();
} // end of if ()
else {
executeJava();
} // end of else
}
/** launch the generate client using java api */
protected void executeJava() throws BuildException {
try {
log("mode : java");


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);
org.apache.tools.ant.taskdefs.Java execTask = null;
execTask = (Java) getProject().createTask("java");
execTask.setDir(new File("."));
execTask.setClassname("com.inprise.server.commandline.EJBUtilities");
//classpath
//add at the end of the classpath
//the system classpath in order to find the tools.jar file
execTask.setClasspath(classpath.concatSystemClasspath());


execTask.setFork(true);
execTask.createArg().setValue("generateclient");
if ( debug ) {
execTask.createArg().setValue("-trace");
} // end of if () } // end of if ()


log("client jar file is " + clientjarfile);
//
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 EJBUtilities",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);
}
}

/** launch the generate client using system api */
protected void executeFork() throws BuildException {
try {
log("mode : fork");


org.apache.tools.ant.taskdefs.ExecTask execTask = null; org.apache.tools.ant.taskdefs.ExecTask execTask = null;
execTask = (ExecTask) getProject().createTask("exec"); execTask = (ExecTask) getProject().createTask("exec");
@@ -142,8 +225,7 @@ public class BorlandGenerateClient extends Task
execTask.setDir(new File(".")); execTask.setDir(new File("."));
execTask.setExecutable("iastool"); execTask.setExecutable("iastool");
execTask.createArg().setValue("generateclient"); execTask.createArg().setValue("generateclient");
if ( debug )
{
if ( debug ){
execTask.createArg().setValue("-trace"); execTask.createArg().setValue("-trace");
} // end of if () } // end of if ()


@@ -160,13 +242,11 @@ public class BorlandGenerateClient extends Task
log("Calling java2iiop",Project.MSG_VERBOSE); log("Calling java2iiop",Project.MSG_VERBOSE);
execTask.execute(); execTask.execute();
} }
catch (Exception e)
{
catch (Exception e) {
// Have to catch this because of the semantics of calling main() // Have to catch this because of the semantics of calling main()
String msg = "Exception while calling generateclient Details: " + e.toString(); String msg = "Exception while calling generateclient Details: " + e.toString();
throw new BuildException(msg, e); throw new BuildException(msg, e);
} }


} }
} }

Loading…
Cancel
Save