bodewig 2004/11/22 03:42:53 Modified: src/main/org/apache/tools/ant/taskdefs SignJar.java src/main/org/apache/tools/ant/taskdefs/condition IsSigned.java Log: * Use <issigned> from <signjar> * Refactor <issigned> by moving the test into a static method so it is easier to use from a different task. * Avoid IndexOutOfBoundsException if name is shorter than eight characters. Revision Changes Path 1.39 +2 -28 ant/src/main/org/apache/tools/ant/taskdefs/SignJar.java Index: SignJar.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/SignJar.java,v retrieving revision 1.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- SignJar.java 22 Nov 2004 09:23:28 -0000 1.38 +++ SignJar.java 22 Nov 2004 11:42:53 -0000 1.39 @@ -26,6 +26,7 @@ import org.apache.tools.ant.DirectoryScanner; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; +import org.apache.tools.ant.taskdefs.condition.IsSigned; import org.apache.tools.ant.types.FileSet; import org.apache.tools.ant.util.JavaEnvUtils; import org.apache.tools.ant.util.FileUtils; @@ -338,37 +339,10 @@ * @return true if the file is signed */ protected boolean isSigned(File file) { - final String SIG_START = "META-INF/"; - final String SIG_END = ".SF"; - - if (!file.exists()) { - return false; - } - ZipFile jarFile = null; try { - jarFile = new ZipFile(file); - if (null == alias) { - Enumeration entries = jarFile.entries(); - while (entries.hasMoreElements()) { - String name = ((ZipEntry) entries.nextElement()).getName(); - if (name.startsWith(SIG_START) && name.endsWith(SIG_END)) { - return true; - } - } - return false; - } else { - return jarFile.getEntry(SIG_START + alias.toUpperCase() - + SIG_END) != null; - } + return IsSigned.isSigned(file, alias); } catch (IOException e) { return false; - } finally { - if (jarFile != null) { - try { - jarFile.close(); - } catch (IOException e) { - } - } } } } 1.2 +47 -30 ant/src/main/org/apache/tools/ant/taskdefs/condition/IsSigned.java Index: IsSigned.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/condition/IsSigned.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- IsSigned.java 22 Nov 2004 10:48:57 -0000 1.1 +++ IsSigned.java 22 Nov 2004 11:42:53 -0000 1.2 @@ -64,49 +64,35 @@ * specified, if the file contains a signature. * @return true if the file is signed. */ - public boolean eval() { - if (file == null) { - throw new BuildException("The file attribute must be set."); - } - if (file != null && !file.exists()) { - log("The file \"" + file.getAbsolutePath() - + "\" does not exist.", Project.MSG_VERBOSE); - return false; - } - + public static boolean isSigned(File zipFile, String name) + throws IOException { ZipFile jarFile = null; try { - jarFile = new ZipFile(file); + jarFile = new ZipFile(zipFile); if (null == name) { Enumeration entries = jarFile.entries(); while (entries.hasMoreElements()) { - String name = ((ZipEntry) entries.nextElement()).getName(); - if (name.startsWith(SIG_START) && name.endsWith(SIG_END)) { - log("File \"" + file.getAbsolutePath() - + "\" is signed.", Project.MSG_VERBOSE); + String eName = ((ZipEntry) entries.nextElement()).getName(); + if (eName.startsWith(SIG_START) + && eName.endsWith(SIG_END)) { return true; } } return false; } else { boolean shortSig = jarFile.getEntry(SIG_START - + name.toUpperCase() - + SIG_END) != null; - boolean longSig = jarFile.getEntry(SIG_START - + name.substring(0, 8).toUpperCase() - + SIG_END) != null; - if (shortSig || longSig) { - log("File \"" + file.getAbsolutePath() - + "\" is signed.", Project.MSG_VERBOSE); - return true; - } else { - return false; + + name.toUpperCase() + + SIG_END) != null; + boolean longSig = false; + if (name.length() > 8) { + longSig = + jarFile.getEntry(SIG_START + + name.substring(0, 8).toUpperCase() + + SIG_END) != null; } + + return shortSig || longSig; } - } catch (IOException e) { - log("Got IOException reading file \"" + file.getAbsolutePath() - + "\"" + e, Project.MSG_VERBOSE); - return false; } finally { if (jarFile != null) { try { @@ -116,5 +102,36 @@ } } } + } + + /** + * Returns <CODE>true</code> if the file exists and is signed with + * the signature specified, or, if <CODE>name</code> wasn't + * specified, if the file contains a signature. + * @return true if the file is signed. + */ + public boolean eval() { + if (file == null) { + throw new BuildException("The file attribute must be set."); + } + if (file != null && !file.exists()) { + log("The file \"" + file.getAbsolutePath() + + "\" does not exist.", Project.MSG_VERBOSE); + return false; + } + + boolean r = false; + try { + r = isSigned(file, name); + } catch (IOException e) { + log("Got IOException reading file \"" + file.getAbsolutePath() + + "\"" + e, Project.MSG_WARN); + } + + if (r) { + log("File \"" + file.getAbsolutePath() + "\" is signed.", + Project.MSG_VERBOSE); + } + return r; } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]