diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/ejb/JonasDeploymentTool.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/ejb/JonasDeploymentTool.java | 835 |
1 files changed, 0 insertions, 835 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/ejb/JonasDeploymentTool.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/ejb/JonasDeploymentTool.java deleted file mode 100644 index 81fe8059..00000000 --- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/ejb/JonasDeploymentTool.java +++ /dev/null @@ -1,835 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tools.ant.taskdefs.optional.ejb; - -import java.io.File; -import java.io.IOException; -import java.util.Enumeration; -import java.util.Hashtable; - -import javax.xml.parsers.SAXParser; - -import org.apache.tools.ant.AntClassLoader; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.taskdefs.Java; -import org.apache.tools.ant.types.Path; - -/** - * The deployment tool to add the jonas specific deployment descriptors to the - * ejb JAR file. JONAS only requires one additional file jonas-ejb-jar.xml. - * - * @version 1.0 - * @see EjbJar#createJonas - */ -public class JonasDeploymentTool extends GenericDeploymentTool { - - /** Public Id of the standard deployment descriptor DTD. */ - protected static final String EJB_JAR_1_1_PUBLIC_ID - = "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN"; - protected static final String EJB_JAR_2_0_PUBLIC_ID - = "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"; - - /** Public Id of the JOnAS-specific deployment descriptor DTD. */ - protected static final String JONAS_EJB_JAR_2_4_PUBLIC_ID - = "-//ObjectWeb//DTD JOnAS 2.4//EN"; - protected static final String JONAS_EJB_JAR_2_5_PUBLIC_ID - = "-//ObjectWeb//DTD JOnAS 2.5//EN"; - - /** RMI ORB. */ - protected static final String RMI_ORB = "RMI"; - - /** JEREMIE ORB. */ - protected static final String JEREMIE_ORB = "JEREMIE"; - - /** DAVID ORB. */ - protected static final String DAVID_ORB = "DAVID"; - - /** - * Name of the standard deployment descriptor DTD (these files are stored in - * the ${JONAS_ROOT}/xml directory). - */ - protected static final String EJB_JAR_1_1_DTD = "ejb-jar_1_1.dtd"; - protected static final String EJB_JAR_2_0_DTD = "ejb-jar_2_0.dtd"; - - /** - * Name of the JOnAS-specific deployment descriptor DTD (these files are - * stored in the ${JONAS_ROOT}/xml directory). - */ - protected static final String JONAS_EJB_JAR_2_4_DTD - = "jonas-ejb-jar_2_4.dtd"; - protected static final String JONAS_EJB_JAR_2_5_DTD - = "jonas-ejb-jar_2_5.dtd"; - - /** Default JOnAS deployment descriptor name. */ - protected static final String JONAS_DD = "jonas-ejb-jar.xml"; - - /** GenIC class name (JOnAS 2.5) */ - protected static final String GENIC_CLASS = - "org.objectweb.jonas_ejb.genic.GenIC"; - - /** Old GenIC class name (JOnAS 2.4.x). */ - protected static final String OLD_GENIC_CLASS_1 = - "org.objectweb.jonas_ejb.tools.GenWholeIC"; - - /** Old GenIC class name. */ - protected static final String OLD_GENIC_CLASS_2 = - "org.objectweb.jonas_ejb.tools.GenIC"; - - /** - * Filename of the standard EJB descriptor (which is passed to this class - * from the parent "ejbjar" task). This file is relative to the directory - * specified by the "srcdir" attribute in the ejbjar task. - */ - private String descriptorName; - - /** - * Filename of the JOnAS-specific EJB descriptor (which is passed to this - * class from the parent "ejbjar" task). This file is relative to the - * directory specified by the "srcdir" attribute in the ejbjar task. - */ - private String jonasDescriptorName; - - /* ------------- */ - /* GenIC options */ - /* ------------- */ - - /** - * Temporary output directory used by GenIC. - */ - private File outputdir; - - /** - * <code>true</code> if the intermediate Java source files generated by - * GenIC must be deleted or not. The default is <code>false</code> - */ - private boolean keepgenerated = false; - - /** - * <code>true</code> if the generated source files must not be compiled via - * the java and rmi compilers. The default is <code>false</code>. - */ - private boolean nocompil = false; - - /** - * <code>true</code> if the XML deployment descriptors must be parsed - * without validation. The default is <code>false</code>. - */ - private boolean novalidation = false; - - /** - * Java compiler to use. The default is the value of - * <code>build.compiler</code> property. - */ - private String javac; - - /** Options to pass to the java compiler. */ - private String javacopts; - - /** Options to pass to the rmi compiler. */ - private String rmicopts; - - /** - * Whether or not the RMI skeleton and stub must be modified to - * implement the implicit propagation of the security context (the - * transactional context is always provided). The default is - * <code>false</code>. - */ - private boolean secpropag = false; - - /** - * <code>true</code> if the GenIC call must be verbose. The default - * is <code>false</code>. - */ - private boolean verbose = false; - - /** Additional args to send to GenIC. */ - private String additionalargs; - - /* ------------- */ - /* other options */ - /* ------------- */ - - /** JOnAS root directory. */ - private File jonasroot; - - /** - * <code>true</code> if the generic JAR file used as input to GenIC must be - * retained. The default is <code>false</code>. - */ - private boolean keepgeneric = false; - - /** Stores the suffix for the JOnAS JAR file. The default is '.jar'. */ - private String suffix = ".jar"; - - /** - * ORB to use (RMI, JEREMIE or DAVID). If omitted, it defaults to the one - * present in classpath. If specified, the corresponding JOnAS JAR is - * automatically added to the classpath. - */ - private String orb; - - /** - * <code>true</code> if GenIC must not be run on the EJB JAR. - * The default is <code>false</code>. - */ - private boolean nogenic = false; - - /* -------------------- */ - /* GenIC options setter */ - /* -------------------- */ - - /** - * Sets the <code>keepgenerated</code> flag. - * - * @param aBoolean <code>true</code> if the flag must be set. - */ - public void setKeepgenerated(boolean aBoolean) { - keepgenerated = aBoolean; - } - - /** - * Sets the additional arguments. - * - * @param aString additional args. - */ - public void setAdditionalargs(String aString) { - additionalargs = aString; - } - - /** - * Sets the <code>nocompil</code> flag. - * - * @param aBoolean <code>true</code> if the flag must be set. - */ - public void setNocompil(boolean aBoolean) { - nocompil = aBoolean; - } - - /** - * Sets the <code>novalidation</code> flag. - * - * @param aBoolean <code>true</code> if the flag must be set. - */ - public void setNovalidation(boolean aBoolean) { - novalidation = aBoolean; - } - - /** - * Sets the java compiler to use. - * - * @param aString the java compiler. - */ - public void setJavac(String aString) { - javac = aString; - } - - /** - * Set the options to pass to the java compiler. - * - * @param aString the options. - */ - public void setJavacopts(String aString) { - javacopts = aString; - } - - /** - * Set the options to pass to the rmi compiler. - * - * @param aString the options. - */ - public void setRmicopts(String aString) { - rmicopts = aString; - } - - /** - * Sets the <code>secpropag</code> flag. - * - * @param aBoolean <code>true</code> if the flag must be set. - */ - public void setSecpropag(boolean aBoolean) { - secpropag = aBoolean; - } - - /** - * Sets the <code>verbose</code> flag. - * - * @param aBoolean <code>true</code> if the flag must be set. - */ - public void setVerbose(boolean aBoolean) { - verbose = aBoolean; - } - - /* -------------------- */ - /* other options setter */ - /* -------------------- */ - - /** - * Set the JOnAS root directory. - * - * @param aFile the JOnAS root directory. - */ - public void setJonasroot(File aFile) { - jonasroot = aFile; - } - - /** - * Sets the <code>keepgeneric</code> flag. - * - * @param aBoolean <code>true</code> if the flag must be set. - */ - public void setKeepgeneric(boolean aBoolean) { - keepgeneric = aBoolean; - } - - /** - * Sets the jar suffix. - * - * @param aString the string to use as the suffix. - */ - public void setJarsuffix(String aString) { - suffix = aString; - } - - /** - * Sets the <code>orb</code> to construct classpath. - * - * @param aString 'RMI', 'JEREMIE', or 'DAVID'. - */ - public void setOrb(String aString) { - orb = aString; - } - - /** - * Sets the <code>nogenic</code> flag. - * - * @param aBoolean <code>true</code> if the flag must be set. - */ - public void setNogenic(boolean aBoolean) { - nogenic = aBoolean; - } - - /* ------------- */ - /* other methods */ - /* ------------- */ - - /** {@inheritDoc}. */ - public void processDescriptor(String aDescriptorName, SAXParser saxParser) { - - descriptorName = aDescriptorName; - - log("JOnAS Deployment Tool processing: " + descriptorName, - Project.MSG_VERBOSE); - - super.processDescriptor(descriptorName, saxParser); - - if (outputdir != null) { - // the method deleteOnExit() do not work because the directory is not empty - log("Deleting temp output directory '" + outputdir + "'.", Project.MSG_VERBOSE); - deleteAllFiles(outputdir); - } - } - - /** {@inheritDoc}. */ - protected void writeJar(String baseName, File jarfile, Hashtable ejbFiles, String publicId) - throws BuildException { - - // create the generic jar first - File genericJarFile = super.getVendorOutputJarFile(baseName); - super.writeJar(baseName, genericJarFile, ejbFiles, publicId); - - // GenIC call on generic jar - addGenICGeneratedFiles(genericJarFile, ejbFiles); - - // create the real jar - super.writeJar(baseName, getVendorOutputJarFile(baseName), ejbFiles, publicId); - - if (!keepgeneric) { - log("Deleting generic JAR " + genericJarFile.toString(), Project.MSG_VERBOSE); - genericJarFile.delete(); - } - } - - /** {@inheritDoc}. */ - protected void addVendorFiles(Hashtable ejbFiles, String ddPrefix) { - - // JOnAS-specific descriptor deployment - jonasDescriptorName = getJonasDescriptorName(); - File jonasDD = new File(getConfig().descriptorDir, jonasDescriptorName); - - if (jonasDD.exists()) { - ejbFiles.put(META_DIR + JONAS_DD, jonasDD); - } else { - log("Unable to locate the JOnAS deployment descriptor. It was expected to be in: " - + jonasDD.getPath() + ".", Project.MSG_WARN); - } - } - - /** {@inheritDoc}. */ - protected File getVendorOutputJarFile(String baseName) { - return new File(getDestDir(), baseName + suffix); - } - - /** - * Determines the name of the JOnAS-specific EJB descriptor using the - * specified standard EJB descriptor name. In general, the standard - * descriptor will be named "[basename]-ejb-jar.xml", and this method will - * return "[basename]-jonas-ejb-jar.xml" or "jonas-[basename].xml" - * - * @return The name of the JOnAS-specific EJB descriptor file. - */ - private String getJonasDescriptorName() { - - // descriptorName = <path><basename><basenameterminator><remainder> - // examples = /org/objectweb/fooAppli/foo/Foo-ejb-jar.xml - // examples = /org/objectweb/fooAppli/foo/Foo.xml (JOnAS convention) - - String jonasDN; // JOnAS-specific DD - boolean jonasConvention = false; // true if the JOnAS convention is used for the DD - String path; // Directory path of the EJB descriptor - String fileName; // EJB descriptor file name - String baseName; // Filename appearing before name terminator - String remainder; // Filename appearing after the name terminator - - int startOfFileName = descriptorName.lastIndexOf(File.separatorChar); - if (startOfFileName != -1) { - // extract path info - path = descriptorName.substring(0, startOfFileName + 1); - fileName = descriptorName.substring(startOfFileName + 1); - } else { - // descriptorName is just a file without path - path = ""; - fileName = descriptorName; - } - - if (fileName.startsWith(EJB_DD)) { - return path + JONAS_DD; - } - - int endOfBaseName = descriptorName.indexOf(getConfig().baseNameTerminator, startOfFileName); - - /* - * Check for the odd case where the terminator and/or filename - * extension aren't found. These will ensure "jonas-" appears at the - * end of the name and before the '.' (if present). - */ - if (endOfBaseName < 0) { - // baseNameTerminator not found: the descriptor use the - // JOnAS naming convention, ie [Foo.xml,jonas-Foo.xml] and - // not [Foo<baseNameTerminator>-ejb-jar.xml, - // Foo<baseNameTerminator>-jonas-ejb-jar.xml]. - endOfBaseName = descriptorName.lastIndexOf('.') - 1; - if (endOfBaseName < 0) { - // no . found - endOfBaseName = descriptorName.length() - 1; - } - - jonasConvention = true; - } - - baseName = descriptorName.substring(startOfFileName + 1, endOfBaseName + 1); - remainder = descriptorName.substring(endOfBaseName + 1); - - if (jonasConvention) { - jonasDN = path + "jonas-" + baseName + ".xml"; - } else { - jonasDN = path + baseName + "jonas-" + remainder; - } - - log("Standard EJB descriptor name: " + descriptorName, Project.MSG_VERBOSE); - log("JOnAS-specific descriptor name: " + jonasDN, Project.MSG_VERBOSE); - - return jonasDN; - } - - /** {@inheritDoc}. */ - protected String getJarBaseName(String descriptorFileName) { - - String baseName = null; - - if (getConfig().namingScheme.getValue().equals(EjbJar.NamingScheme.DESCRIPTOR)) { - - // try to find JOnAS specific convention name - if (descriptorFileName.indexOf(getConfig().baseNameTerminator) == -1) { - - // baseNameTerminator not found: the descriptor use the - // JOnAS naming convention, ie [Foo.xml,jonas-Foo.xml] and - // not [Foo<baseNameTerminator>-ejb-jar.xml, - // Foo<baseNameTerminator>-jonas-ejb-jar.xml]. - - String aCanonicalDescriptor = descriptorFileName.replace('\\', '/'); - int lastSeparatorIndex = aCanonicalDescriptor.lastIndexOf('/'); - int endOfBaseName; - - if (lastSeparatorIndex != -1) { - endOfBaseName = descriptorFileName.indexOf(".xml", lastSeparatorIndex); - } else { - endOfBaseName = descriptorFileName.indexOf(".xml"); - } - - if (endOfBaseName != -1) { - baseName = descriptorFileName.substring(0, endOfBaseName); - } - } - } - - if (baseName == null) { - // else get standard baseName - baseName = super.getJarBaseName(descriptorFileName); - } - - log("JAR base name: " + baseName, Project.MSG_VERBOSE); - - return baseName; - } - - /** {@inheritDoc}. */ - protected void registerKnownDTDs(DescriptorHandler handler) { - handler.registerDTD(EJB_JAR_1_1_PUBLIC_ID, - jonasroot + File.separator + "xml" + File.separator + EJB_JAR_1_1_DTD); - handler.registerDTD(EJB_JAR_2_0_PUBLIC_ID, - jonasroot + File.separator + "xml" + File.separator + EJB_JAR_2_0_DTD); - - handler.registerDTD(JONAS_EJB_JAR_2_4_PUBLIC_ID, - jonasroot + File.separator + "xml" + File.separator + JONAS_EJB_JAR_2_4_DTD); - handler.registerDTD(JONAS_EJB_JAR_2_5_PUBLIC_ID, - jonasroot + File.separator + "xml" + File.separator + JONAS_EJB_JAR_2_5_DTD); - } - - /** - * Add to the given hashtable all the file generated by GenIC. - * - * @param genericJarFile jar file. - * @param ejbFiles the hashtable. - */ - private void addGenICGeneratedFiles( - File genericJarFile, Hashtable ejbFiles) { - Java genicTask = null; // GenIC task - String genicClass = null; // GenIC class (3 are supported for various - // versions - if (nogenic) { - return; - } - - genicTask = new Java(getTask()); - genicTask.setTaskName("genic"); - genicTask.setFork(true); - - // jonasroot - genicTask.createJvmarg().setValue("-Dinstall.root=" + jonasroot); - - // java policy file - String jonasConfigDir = jonasroot + File.separator + "config"; - File javaPolicyFile = new File(jonasConfigDir, "java.policy"); - if (javaPolicyFile.exists()) { - genicTask.createJvmarg().setValue("-Djava.security.policy=" - + javaPolicyFile.toString()); - } - - // outputdir - try { - outputdir = createTempDir(); - } catch (IOException aIOException) { - String msg = "Cannot create temp dir: " + aIOException.getMessage(); - throw new BuildException(msg, aIOException); - } - log("Using temporary output directory: " + outputdir, Project.MSG_VERBOSE); - - genicTask.createArg().setValue("-d"); - genicTask.createArg().setFile(outputdir); - - // work around a bug of GenIC 2.5 - String key; - File f; - Enumeration keys = ejbFiles.keys(); - while (keys.hasMoreElements()) { - key = (String) keys.nextElement(); - f = new File(outputdir + File.separator + key); - f.getParentFile().mkdirs(); - } - log("Worked around a bug of GenIC 2.5.", Project.MSG_VERBOSE); - - // classpath - Path classpath = getCombinedClasspath(); - if (classpath == null) { - classpath = new Path(getTask().getProject()); - } - classpath.append(new Path(classpath.getProject(), jonasConfigDir)); - classpath.append(new Path(classpath.getProject(), outputdir.toString())); - - // try to create the classpath for the correct ORB - if (orb != null) { - String orbJar = jonasroot + File.separator + "lib" - + File.separator + orb + "_jonas.jar"; - classpath.append(new Path(classpath.getProject(), orbJar)); - } - log("Using classpath: " + classpath.toString(), Project.MSG_VERBOSE); - genicTask.setClasspath(classpath); - - // class name (search in the classpath provided for the ejbjar element) - genicClass = getGenicClassName(classpath); - if (genicClass == null) { - log("Cannot find GenIC class in classpath.", Project.MSG_ERR); - throw new BuildException("GenIC class not found, please check the classpath."); - } else { - log("Using '" + genicClass + "' GenIC class." , Project.MSG_VERBOSE); - genicTask.setClassname(genicClass); - } - - // keepgenerated - if (keepgenerated) { - genicTask.createArg().setValue("-keepgenerated"); - } - - // nocompil - if (nocompil) { - genicTask.createArg().setValue("-nocompil"); - } - - // novalidation - if (novalidation) { - genicTask.createArg().setValue("-novalidation"); - } - - // javac - if (javac != null) { - genicTask.createArg().setValue("-javac"); - genicTask.createArg().setLine(javac); - } - - // javacopts - if (javacopts != null && !javacopts.equals("")) { - genicTask.createArg().setValue("-javacopts"); - genicTask.createArg().setLine(javacopts); - } - - // rmicopts - if (rmicopts != null && !rmicopts.equals("")) { - genicTask.createArg().setValue("-rmicopts"); - genicTask.createArg().setLine(rmicopts); - } - - // secpropag - if (secpropag) { - genicTask.createArg().setValue("-secpropag"); - } - - // verbose - if (verbose) { - genicTask.createArg().setValue("-verbose"); - } - - // additionalargs - if (additionalargs != null) { - genicTask.createArg().setValue(additionalargs); - } - - // the generated classes must not be added in the generic JAR! - // is that buggy on old JOnAS (2.4) ?? - genicTask.createArg().setValue("-noaddinjar"); - - // input file to process by GenIC - genicTask.createArg().setValue(genericJarFile.getPath()); - - // calling GenIC task - log("Calling " + genicClass + " for " + getConfig().descriptorDir - + File.separator + descriptorName + ".", Project.MSG_VERBOSE); - - if (genicTask.executeJava() != 0) { - - // the method deleteOnExit() do not work because the directory is not empty - log("Deleting temp output directory '" + outputdir + "'.", Project.MSG_VERBOSE); - deleteAllFiles(outputdir); - - if (!keepgeneric) { - log("Deleting generic JAR " + genericJarFile.toString(), - Project.MSG_VERBOSE); - genericJarFile.delete(); - } - - throw new BuildException("GenIC reported an error."); - } - - // add the generated files to the ejbFiles - addAllFiles(outputdir, "", ejbFiles); - } - - /** - * Get the GenIC class name to use in the given classpath. - * - * @param classpath classpath where the GenIC class must be searched. - * @return the GenIC class name. Return <code>null</code> if the class name - * cannot be found. - */ - String getGenicClassName(Path classpath) { - - log("Looking for GenIC class in classpath: " - + classpath.toString(), Project.MSG_VERBOSE); - - AntClassLoader cl = null; - - try { - cl = classpath.getProject().createClassLoader(classpath); - - try { - cl.loadClass(JonasDeploymentTool.GENIC_CLASS); - log("Found GenIC class '" + JonasDeploymentTool.GENIC_CLASS - + "' in classpath.", Project.MSG_VERBOSE); - return JonasDeploymentTool.GENIC_CLASS; - - } catch (ClassNotFoundException cnf1) { - log("GenIC class '" + JonasDeploymentTool.GENIC_CLASS - + "' not found in classpath.", - Project.MSG_VERBOSE); - } - - try { - cl.loadClass(JonasDeploymentTool.OLD_GENIC_CLASS_1); - log("Found GenIC class '" - + JonasDeploymentTool.OLD_GENIC_CLASS_1 - + "' in classpath.", Project.MSG_VERBOSE); - return JonasDeploymentTool.OLD_GENIC_CLASS_1; - - } catch (ClassNotFoundException cnf2) { - log("GenIC class '" + JonasDeploymentTool.OLD_GENIC_CLASS_1 - + "' not found in classpath.", - Project.MSG_VERBOSE); - } - - try { - cl.loadClass(JonasDeploymentTool.OLD_GENIC_CLASS_2); - log("Found GenIC class '" - + JonasDeploymentTool.OLD_GENIC_CLASS_2 - + "' in classpath.", Project.MSG_VERBOSE); - return JonasDeploymentTool.OLD_GENIC_CLASS_2; - - } catch (ClassNotFoundException cnf3) { - log("GenIC class '" + JonasDeploymentTool.OLD_GENIC_CLASS_2 - + "' not found in classpath.", - Project.MSG_VERBOSE); - } - } finally { - if (cl != null) { - cl.cleanup(); - } - } - return null; - } - - /** - * Verify the configuration. - * @param descriptorFileName the name of the descriptor file. - * @param saxParser not used. - * @throws BuildException if there is an error. - */ - protected void checkConfiguration(String descriptorFileName, - SAXParser saxParser) throws BuildException { - - // jonasroot - if (jonasroot == null) { - throw new BuildException("The jonasroot attribut is not set."); - } else if (!jonasroot.isDirectory()) { - throw new BuildException("The jonasroot attribut '" + jonasroot - + "' is not a valid directory."); - } - - // orb - if (orb != null && !orb.equals(RMI_ORB) && !orb.equals(JEREMIE_ORB) - && !orb.equals(DAVID_ORB)) { - throw new BuildException("The orb attribut '" + orb - + "' is not valid (must be either " - + RMI_ORB + ", " + JEREMIE_ORB + " or " + DAVID_ORB + ")."); - } - - // additionalargs - if (additionalargs != null && additionalargs.equals("")) { - throw new BuildException("Empty additionalargs attribut."); - } - - // javac - if (javac != null && javac.equals("")) { - throw new BuildException("Empty javac attribut."); - } - } - - /* ----------------------------------------------------------------------------------- */ - /* utilitary methods */ - /* ----------------------------------------------------------------------------------- */ - - /** - * Create a temporary directory for GenIC output. - * - * @return the temp directory. - * @throws BuildException if a temp directory cannot be created. - */ - private File createTempDir() throws IOException { - File tmpDir = File.createTempFile("genic", null, null); - tmpDir.delete(); - if (!tmpDir.mkdir()) { - throw new IOException("Cannot create the temporary directory '" + tmpDir + "'."); - } - return tmpDir; - } - - /** - * Delete a file. If the file is a directory, delete recursivly all the - * files inside. - * - * @param aFile file to delete. - */ - private void deleteAllFiles(File aFile) { - if (aFile.isDirectory()) { - File[] someFiles = aFile.listFiles(); - - for (int i = 0; i < someFiles.length; i++) { - deleteAllFiles(someFiles[i]); - } - } - aFile.delete(); - } - - /** - * Add a file to the a given hashtable. If the file is a directory, add - * recursivly all the files inside to the hashtable. - * - * @param file the file to add. - * @param rootDir the current sub-directory to scan. - * @param hashtable the hashtable where to add the files. - */ - private void addAllFiles(File file, String rootDir, Hashtable hashtable) { - - if (!file.exists()) { - throw new IllegalArgumentException(); - } - - String newRootDir; - if (file.isDirectory()) { - File[] files = file.listFiles(); - for (int i = 0; i < files.length; i++) { - if (rootDir.length() > 0) { - newRootDir = rootDir + File.separator + files[i].getName(); - } else { - newRootDir = files[i].getName(); - } - addAllFiles(files[i], newRootDir, hashtable); - } - } else { - hashtable.put(rootDir, file); - } - } -} |