@@ -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);
}
}
}
}
}
}