📄 borlanddeploymenttool.java
字号:
} if (version == BES) { verifyBorlandJarV5(sourceJar); return; } log("verify jar skipped because the version is invalid [" + version + "]", Project.MSG_WARN); } /** * Verify the produced jar file by invoking the Borland iastool tool * @param sourceJar java.io.File representing the produced jar file */ private void verifyBorlandJarV5(File sourceJar) { log("verify BES " + sourceJar, Project.MSG_INFO); try { ExecTask execTask = null; execTask = new ExecTask(getTask()); execTask.setDir(new File(".")); execTask.setExecutable("iastool"); //classpath if (getCombinedClasspath() != null) { execTask.createArg().setValue("-VBJclasspath"); execTask.createArg().setValue(getCombinedClasspath().toString()); } if (java2iiopdebug) { execTask.createArg().setValue("-debug"); } execTask.createArg().setValue("-verify"); execTask.createArg().setValue("-src"); // ejb jar file to verify execTask.createArg().setValue(sourceJar.getPath()); 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); } } /** * Verify the produced jar file by invoking the Borland verify tool * @param sourceJar java.io.File representing the produced jar file */ private void verifyBorlandJarV4(File sourceJar) { org.apache.tools.ant.taskdefs.Java javaTask = null; log("verify BAS " + sourceJar, Project.MSG_INFO); try { String args = verifyArgs; args += " " + sourceJar.getPath(); javaTask = new Java(getTask()); javaTask.setTaskName("verify"); javaTask.setClassname(VERIFY); Commandline.Argument arguments = javaTask.createArg(); arguments.setLine(args); Path classpath = getCombinedClasspath(); if (classpath != null) { javaTask.setClasspath(classpath); javaTask.setFork(true); } log("Calling " + VERIFY + " for " + sourceJar.toString(), Project.MSG_VERBOSE); javaTask.execute(); } catch (Exception e) { //TO DO : delete the file if it is not a valid file. String msg = "Exception while calling " + VERIFY + " Details: " + e.toString(); throw new BuildException(msg, e); } } /** * Generate the client jar corresponding to the jar file passed as parameter * the method uses the BorlandGenerateClient task. * @param sourceJar java.io.File representing the produced jar file */ private void generateClient(File sourceJar) { getTask().getProject().addTaskDefinition("internal_bas_generateclient", org.apache.tools.ant.taskdefs.optional.ejb.BorlandGenerateClient.class); org.apache.tools.ant.taskdefs.optional.ejb.BorlandGenerateClient gentask = null; log("generate client for " + sourceJar, Project.MSG_INFO); try { Project project = getTask().getProject(); gentask = (BorlandGenerateClient) project.createTask("internal_bas_generateclient"); gentask.setEjbjar(sourceJar); gentask.setDebug(java2iiopdebug); Path classpath = getCombinedClasspath(); if (classpath != null) { gentask.setClasspath(classpath); } gentask.setVersion(version); gentask.setTaskName("generate client"); gentask.execute(); } catch (Exception e) { //TO DO : delete the file if it is not a valid file. String msg = "Exception while calling " + VERIFY + " Details: " + e.toString(); throw new BuildException(msg, e); } } /** * Generate stubs & skeleton for each home found into the DD * Add all the generate class file into the ejb files * @param ithomes : iterator on home class */ private void buildBorlandStubs(Iterator ithomes) { Execute execTask = null; execTask = new Execute(this); Project project = getTask().getProject(); execTask.setAntRun(project); execTask.setWorkingDirectory(project.getBaseDir()); Commandline commandline = new Commandline(); commandline.setExecutable(JAVA2IIOP); //debug ? if (java2iiopdebug) { commandline.createArgument().setValue("-VBJdebug"); } //set the classpath commandline.createArgument().setValue("-VBJclasspath"); commandline.createArgument().setPath(getCombinedClasspath()); //list file commandline.createArgument().setValue("-list_files"); //no TIE classes commandline.createArgument().setValue("-no_tie"); if (java2iioparams != null) { log("additional " + java2iioparams + " to java2iiop ", 0); commandline.createArgument().setValue(java2iioparams); } //root dir commandline.createArgument().setValue("-root_dir"); commandline.createArgument().setValue(getConfig().srcDir.getAbsolutePath()); //compiling order commandline.createArgument().setValue("-compile"); //add the home class while (ithomes.hasNext()) { commandline.createArgument().setValue(ithomes.next().toString()); } try { log("Calling java2iiop", Project.MSG_VERBOSE); log(commandline.describeCommand(), Project.MSG_DEBUG); execTask.setCommandline(commandline.getCommandline()); int result = execTask.execute(); if (Execute.isFailure(result)) { String msg = "Failed executing java2iiop (ret code is " + result + ")"; throw new BuildException(msg, getTask().getLocation()); } } catch (java.io.IOException e) { log("java2iiop exception :" + e.getMessage(), Project.MSG_ERR); throw new BuildException(e, getTask().getLocation()); } } /** * Method used to encapsulate the writing of the JAR file. Iterates over the * filenames/java.io.Files in the Hashtable stored on the instance variable * ejbFiles. * @param baseName the base name. * @param jarFile the jar file to write to. * @param files the files to write to the jar. * @param publicId the id to use. * @throws BuildException if there is an error. */ protected void writeJar(String baseName, File jarFile, Hashtable files, String publicId) throws BuildException { //build the home classes list. Vector homes = new Vector(); Iterator it = files.keySet().iterator(); while (it.hasNext()) { String clazz = (String) it.next(); if (clazz.endsWith("Home.class")) { //remove .class extension String home = toClass(clazz); homes.add(home); log(" Home " + home, Project.MSG_VERBOSE); } } buildBorlandStubs(homes.iterator()); //add the gen files to the collection files.putAll(genfiles); super.writeJar(baseName, jarFile, files, publicId); if (verify) { verifyBorlandJar(jarFile); } if (generateclient) { generateClient(jarFile); } } /** * convert a class file name : A/B/C/toto.class * into a class name: A.B.C.toto */ private String toClass(String filename) { //remove the .class String classname = filename.substring(0, filename.lastIndexOf(".class")); classname = classname.replace('\\', '.'); return classname; } /** * convert a file name : A/B/C/toto.java * into a class name: A/B/C/toto.class */ private String toClassFile(String filename) { //remove the .class String classfile = filename.substring(0, filename.lastIndexOf(".java")); classfile = classfile + ".class"; return classfile; } // implementation of org.apache.tools.ant.taskdefs.ExecuteStreamHandler interface /** {@inheritDoc}. */ public void start() throws IOException { } /** {@inheritDoc}. */ public void stop() { } /** {@inheritDoc}. */ public void setProcessInputStream(OutputStream param1) throws IOException { } /** * Set the output stream of the process. * @param is the input stream. * @throws IOException if there is an error. */ public void setProcessOutputStream(InputStream is) throws IOException { try { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String javafile; while ((javafile = reader.readLine()) != null) { if (javafile.endsWith(".java")) { String classfile = toClassFile(javafile); String key = classfile.substring( getConfig().srcDir.getAbsolutePath().length() + 1); genfiles.put(key, new File(classfile)); } } reader.close(); } catch (Exception e) { String msg = "Exception while parsing java2iiop output. Details: " + e.toString(); throw new BuildException(msg, e); } } /** * Set the error stream of the process. * @param is the input stream. * @throws IOException if there is an error. */ public void setProcessErrorStream(InputStream is) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String s = reader.readLine(); if (s != null) { log("[java2iiop] " + s, Project.MSG_ERR); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -