--- BorlandGenerateClient.java.orig	Wed May 29 14:57:59 2002
+++ BorlandGenerateClient.java	Mon May 27 09:47:12 2002
@@ -57,19 +57,14 @@
 
 import java.io.File;
 
-
-
-
-import org.apache.tools.ant.Task;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
 import org.apache.tools.ant.taskdefs.ExecTask;
 import org.apache.tools.ant.taskdefs.Java;
 import org.apache.tools.ant.types.Path;
 import org.apache.tools.ant.types.Reference;
 
-
-
 /**
  * BorlandGenerateClient is dedicated to the Borland Application Server 4.5
  * This task generates the client jar using as input the ejb jar file.
@@ -83,7 +78,7 @@
 public class BorlandGenerateClient extends Task {
     static final String JAVA_MODE = "java";
     static final String FORK_MODE = "fork";
-
+    
     /** debug the generateclient task */
     boolean debug = false;
 
@@ -97,7 +92,14 @@
     Path classpath;
 
     /** hold the mode (java|fork) */
-    String mode = JAVA_MODE;
+    String mode = FORK_MODE;
+
+    /** hold the version */
+    int version = 0;
+
+    public void setVersion(int version) {
+        this.version = version;
+    }
 
     public void setMode(String s) {
         mode = s;
@@ -144,7 +146,7 @@
     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);
@@ -153,13 +155,16 @@
             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 ()
+        } 
+
+        if ( !(version == BorlandDeploymentTool.BES || version == BorlandDeploymentTool.BAS)) {
+            throw new BuildException("version "+version+" is not supported");
+        }        
 
         log("client jar file is " + clientjarfile);
 
@@ -173,6 +178,10 @@
     /** launch the generate client using java api */
     protected void executeJava() throws BuildException {
         try {
+            if ( version == BorlandDeploymentTool.BES)  {
+                throw new BuildException("java mode is supported only for previous version <="+BorlandDeploymentTool.BAS);
+            }
+            
             log("mode : java");
 
             org.apache.tools.ant.taskdefs.Java execTask = null;                
@@ -189,9 +198,8 @@
             execTask.createArg().setValue("generateclient");
             if (debug) {
                 execTask.createArg().setValue("-trace");                
-            } // end of if ()
+            } 
 
-            //
             execTask.createArg().setValue("-short");
             execTask.createArg().setValue("-jarfile");
             // ejb jar file
@@ -213,8 +221,19 @@
 
     /** launch the generate client using system api */
     protected  void executeFork() throws BuildException {
-        try {
-            log("mode : fork");
+            if ( version == BorlandDeploymentTool.BAS) {
+                executeForkV4();
+            }
+            if ( version == BorlandDeploymentTool.BES ) {
+                executeForkV5();
+            }
+    }
+
+    /** launch the generate client using system api */
+    protected  void executeForkV4() throws BuildException {
+        try {            
+            
+            log("mode : fork "+BorlandDeploymentTool.BAS,Project.MSG_DEBUG);
 
             org.apache.tools.ant.taskdefs.ExecTask execTask = null;                
             execTask = (ExecTask) getProject().createTask("exec");
@@ -224,9 +243,8 @@
             execTask.createArg().setValue("generateclient");
             if (debug) {
                 execTask.createArg().setValue("-trace");                
-            } // end of if ()
+            } 
 
-            //
             execTask.createArg().setValue("-short");
             execTask.createArg().setValue("-jarfile");
             // ejb jar file
@@ -236,7 +254,40 @@
             execTask.createArg().setValue("-clientjarfile");
             execTask.createArg().setValue(clientjarfile.getAbsolutePath());
 
-            log("Calling java2iiop", Project.MSG_VERBOSE);
+            log("Calling iastool", 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 executeForkV5() throws BuildException {
+        try {
+            log("mode : fork "+BorlandDeploymentTool.BES,Project.MSG_DEBUG);
+            org.apache.tools.ant.taskdefs.ExecTask execTask = null;                
+            execTask = (ExecTask) getProject().createTask("exec");
+                       
+            execTask.setDir(new File("."));
+
+            execTask.setExecutable("iastool");
+            if (debug) {
+                execTask.createArg().setValue("-debug");                
+            }
+            execTask.createArg().setValue("-genclient");            
+            execTask.createArg().setValue("-jars");
+            // ejb jar file
+            execTask.createArg().setValue(ejbjarfile.getAbsolutePath());
+            //client jar file
+            execTask.createArg().setValue("-target");
+            execTask.createArg().setValue(clientjarfile.getAbsolutePath());
+            //classpath
+            execTask.createArg().setValue("-cp");
+            execTask.createArg().setValue(classpath.toString());
+            log("Calling iastool", Project.MSG_VERBOSE);
             execTask.execute();        
         } catch (Exception e) {
             // Have to catch this because of the semantics of calling main()
@@ -246,5 +297,6 @@
         }
 
     }
+
 }
 

