From 6a3d5030bb4a0e4e05944e6c906881bd047fa5c5 Mon Sep 17 00:00:00 2001 From: Peter Reilly Date: Fri, 26 Nov 2004 09:52:06 +0000 Subject: [PATCH] add new preservelastmodified attribute to signjar PR: 30987 Obtained from: Ignacio Coloma git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@277079 13f79535-47bb-0310-9956-ffa450edef68 --- CONTRIBUTORS | 1 + WHATSNEW | 3 +++ docs/manual/CoreTasks/signjar.html | 6 +++++ src/etc/testcases/taskdefs/signjar.xml | 26 +++++++++++++++++++ .../apache/tools/ant/taskdefs/SignJar.java | 20 ++++++++++++++ .../tools/ant/taskdefs/SignJarTest.java | 4 +++ 6 files changed, 60 insertions(+) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 4d4105d07..3568e1090 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -74,6 +74,7 @@ Harish Prabandham Haroon Rafique Hiroaki Nakamura Holger Engels +Ignacio Coloma Ingenonsya France Ingmar Stein Irene Rusman diff --git a/WHATSNEW b/WHATSNEW index f43dede82..7a94eca26 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -92,6 +92,9 @@ Other changes: * Added isSigned condition and task, and signedselector selector Bugzilla report 32126. +* Added preserveLastModified attribute to signjar task. + Bugzilla report 30987. + Changes from Ant 1.6.2 to current Ant 1.6 CVS version ===================================================== diff --git a/docs/manual/CoreTasks/signjar.html b/docs/manual/CoreTasks/signjar.html index ac40facb3..a77c1b51d 100644 --- a/docs/manual/CoreTasks/signjar.html +++ b/docs/manual/CoreTasks/signjar.html @@ -92,6 +92,12 @@ block style of standard java memory specs (e.g. 128m = 128 MBytes) No + + preservelastmodified + Give the signed file the same last modified + time as the original jar file. + No; default false. +

Parameters as nested elements

diff --git a/src/etc/testcases/taskdefs/signjar.xml b/src/etc/testcases/taskdefs/signjar.xml index 14e870760..8ac1d080c 100644 --- a/src/etc/testcases/taskdefs/signjar.xml +++ b/src/etc/testcases/taskdefs/signjar.xml @@ -32,6 +32,32 @@ storepass="apacheant" maxmemory="128m"/> + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/org/apache/tools/ant/taskdefs/SignJar.java b/src/main/org/apache/tools/ant/taskdefs/SignJar.java index cd19b03f0..7e7662c17 100644 --- a/src/main/org/apache/tools/ant/taskdefs/SignJar.java +++ b/src/main/org/apache/tools/ant/taskdefs/SignJar.java @@ -66,6 +66,7 @@ public class SignJar extends Task { protected boolean verbose; protected boolean internalsf; protected boolean sectionsonly; + protected boolean preserveLastModified; /** The maximum amount of memory to use for Jar signer */ private String maxMemory; @@ -237,6 +238,7 @@ public class SignJar extends Task { return; } + long lastModified = jarSource.lastModified(); final ExecTask cmd = (ExecTask) getProject().createTask("exec"); cmd.setExecutable(JavaEnvUtils.getJdkExecutable("jarsigner")); @@ -302,6 +304,15 @@ public class SignJar extends Task { cmd.setFailonerror(true); cmd.setTaskName(getTaskName()); cmd.execute(); + + // restore the lastModified attribute + if (preserveLastModified) { + if (jarTarget != null) { + jarTarget.setLastModified(lastModified); + } else { + jarSource.setLastModified(lastModified); + } + } } protected boolean isUpToDate(File jarFile, File signedjarFile) { @@ -345,5 +356,14 @@ public class SignJar extends Task { return false; } } + + /** + * true to indicate that the signed jar modification date remains the same as the original. + * Defaults to false + * @param preserveLastModified if true preserve the last modified time + */ + public void setPreserveLastModified(boolean preserveLastModified) { + this.preserveLastModified = preserveLastModified; + } } diff --git a/src/testcases/org/apache/tools/ant/taskdefs/SignJarTest.java b/src/testcases/org/apache/tools/ant/taskdefs/SignJarTest.java index 8f946edcb..7921b84bb 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/SignJarTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/SignJarTest.java @@ -66,4 +66,8 @@ public class SignJarTest extends BuildFileTest { public void testURLKeystoreHTTP() { executeTarget("urlKeystoreHTTP"); } + + public void testPreserveLastModified() { + executeTarget("preserveLastModified"); + } }