conor 01/04/19 07:02:17
Modified: docs/manual/OptionalTasks BorlandGenerateClient.html
src/main/org/apache/tools/ant/taskdefs/optional/ejb
BorlandDeploymentTool.java
BorlandGenerateClient.java
Log:
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 <[EMAIL PROTECTED]>
Revision Changes Path
1.2 +14 -5
jakarta-ant/docs/manual/OptionalTasks/BorlandGenerateClient.html
Index: BorlandGenerateClient.html
===================================================================
RCS file:
/home/cvs/jakarta-ant/docs/manual/OptionalTasks/BorlandGenerateClient.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BorlandGenerateClient.html 2001/04/07 03:51:30 1.1
+++ BorlandGenerateClient.html 2001/04/19 14:02:15 1.2
@@ -37,15 +37,24 @@
=> hellobean-ejbclient.jar</td>
<td align="center" valign="middle" width="62">no</td>
</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>
<h3>Examples</h3>
<p>The following build.xml snippit is an example of how to use Borland
element
- into the ejbjar task
-<pre> ....
-<generateclient ejbjar="lib/secutest-ejb.jar"
clientjar="lib/client.jar" debug="true"/>
-....
- </pre>
+ into the ejbjar task using the java mode.
+<pre>
+<blgenclient ejbjar="lib/secutest-ejb.jar"
clientjar="lib/client.jar" debug="true"
mode="java">
+ <classpath>
+ <pathelement locacation="mymodule.jar"/>
+ </classpath>
+</blgenclient>
+</pre>
<pre> </pre>
<p align="center">Copyright © 2000,2001 Apache Software Foundation. All
rights
1.3 +4 -0
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandDeploymentTool.java
Index: BorlandDeploymentTool.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandDeploymentTool.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BorlandDeploymentTool.java 2001/04/07 03:51:32 1.2
+++ BorlandDeploymentTool.java 2001/04/19 14:02:16 1.3
@@ -314,6 +314,10 @@
gentask = (BorlandGenerateClient)
getTask().getProject().createTask("internal_bas_generateclient");
gentask.setEjbjar(sourceJar);
gentask.setDebug(java2iiopdebug);
+ Path classpath = getCombinedClasspath();
+ if (classpath != null) {
+ gentask.setClasspath(classpath);
+ }
gentask.setTaskName("generate client");
gentask.execute();
}
1.2 +116 -36
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java
Index: BorlandGenerateClient.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BorlandGenerateClient.java 2001/04/07 03:51:32 1.1
+++ BorlandGenerateClient.java 2001/04/19 14:02:16 1.2
@@ -1,7 +1,7 @@
/*
* 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.
*
* Redistribution and use in source and binary forms, with or without
@@ -56,12 +56,8 @@
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.*;
@@ -75,12 +71,16 @@
/**
* BorlandGenerateClient is dedicated to the Borland Application Server 4.5
* 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:[EMAIL PROTECTED]">Benoit Moussaud</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Benoit Moussaud</a>
*
*/
public class BorlandGenerateClient extends Task
{
+ static final String JAVA_MODE = "java";
+ static final String FORK_MODE = "fork";
/** debug the generateclient task */
boolean debug = false;
@@ -91,20 +91,48 @@
/** hold the client jar file name */
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;
}
- public void setEjbjar(File ejbfile)
- {
+ public void setEjbjar(File ejbfile) {
ejbjarfile = ejbfile;
}
- public void setClientjar(File clientjar)
- {
+
+ public void setClientjar(File 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.
*
@@ -112,38 +140,92 @@
*
* @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 ()
- 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;
execTask = (ExecTask) getProject().createTask("exec");
execTask.setDir(new File("."));
execTask.setExecutable("iastool");
execTask.createArg().setValue("generateclient");
- if ( debug )
- {
+ if ( debug ){
execTask.createArg().setValue("-trace");
} // end of if ()
@@ -160,13 +242,11 @@
log("Calling java2iiop",Project.MSG_VERBOSE);
execTask.execute();
}
- catch (Exception e)
- {
+ 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);
}
}
-
}