diff --git a/docs/manual/OptionalTasks/BorlandGenerateClient.html b/docs/manual/OptionalTasks/BorlandGenerateClient.html index 2ee61c31d..cd7a99359 100644 --- a/docs/manual/OptionalTasks/BorlandGenerateClient.html +++ b/docs/manual/OptionalTasks/BorlandGenerateClient.html @@ -37,15 +37,24 @@ => hellobean-ejbclient.jar no + + mode + choose the command launching mode. Two values: + java or fork. default = java. Possibility to specify a classpath. + no +

Examples

The following build.xml snippit is an example of how to use Borland element - into the ejbjar task -

  ....
-<generateclient ejbjar="lib/secutest-ejb.jar" clientjar="lib/client.jar" debug="true"/>
-....
-   
+ into the ejbjar task using the java mode. +
+<blgenclient ejbjar="lib/secutest-ejb.jar" clientjar="lib/client.jar" debug="true" mode="java">
+    <classpath>
+        <pathelement locacation="mymodule.jar"/>
+    </classpath>
+</blgenclient>
+
 

Copyright © 2000,2001 Apache Software Foundation. All rights diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandDeploymentTool.java index 30aa3723b..49af28f18 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandDeploymentTool.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandDeploymentTool.java @@ -314,6 +314,10 @@ public class BorlandDeploymentTool extends GenericDeploymentTool 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(); } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java index 69f58f0a3..16ba621f0 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/BorlandGenerateClient.java @@ -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 @@ 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. + * 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 Benoit Moussaud + * @author Benoit Moussaud * */ 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 @@ public class BorlandGenerateClient extends Task /** 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,29 +140,84 @@ public class BorlandGenerateClient extends 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 () + 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"); @@ -142,8 +225,7 @@ public class BorlandGenerateClient extends Task 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 @@ public class BorlandGenerateClient extends Task 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); } } - }