From 7f0eeea180a809355885bfcb6dbb65d5da307849 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Sat, 12 Sep 2015 22:14:36 +0200 Subject: [PATCH] Make really work with non-filesystem resources --- src/main/org/apache/tools/ant/taskdefs/GUnzip.java | 4 ++-- src/main/org/apache/tools/ant/taskdefs/Unpack.java | 12 +++++++++++- src/tests/antunit/taskdefs/gunzip-test.xml | 4 ++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/GUnzip.java b/src/main/org/apache/tools/ant/taskdefs/GUnzip.java index 13e88034c..b891bae54 100644 --- a/src/main/org/apache/tools/ant/taskdefs/GUnzip.java +++ b/src/main/org/apache/tools/ant/taskdefs/GUnzip.java @@ -52,8 +52,8 @@ public class GUnzip extends Unpack { * Implement the gunzipping. */ protected void extract() { - if (source.lastModified() > dest.lastModified()) { - log("Expanding " + source.getAbsolutePath() + " to " + if (srcResource.getLastModified() > dest.lastModified()) { + log("Expanding " + srcResource.getName() + " to " + dest.getAbsolutePath()); FileOutputStream out = null; diff --git a/src/main/org/apache/tools/ant/taskdefs/Unpack.java b/src/main/org/apache/tools/ant/taskdefs/Unpack.java index 8640f8fba..ccc457731 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Unpack.java +++ b/src/main/org/apache/tools/ant/taskdefs/Unpack.java @@ -131,6 +131,10 @@ public abstract class Unpack extends Task { } if (dest == null) { + if (source == null) { + throw new BuildException("dest is required when using a non-filesystem source", + getLocation()); + } dest = new File(source.getParent()); } @@ -141,7 +145,8 @@ public abstract class Unpack extends Task { } private void createDestFile(String defaultExtension) { - String sourceName = source.getName(); + String sourceName = source == null + ? getLastNamePart(srcResource) : source.getName(); int len = sourceName.length(); if (defaultExtension != null && len > defaultExtension.length() @@ -192,4 +197,9 @@ public abstract class Unpack extends Task { return false; } + private String getLastNamePart(Resource r) { + String n = r.getName(); + int idx = n.lastIndexOf("/"); + return idx < 0 ? n : n.substring(idx + 1); + } } diff --git a/src/tests/antunit/taskdefs/gunzip-test.xml b/src/tests/antunit/taskdefs/gunzip-test.xml index 5c6f82ca2..e678eb064 100644 --- a/src/tests/antunit/taskdefs/gunzip-test.xml +++ b/src/tests/antunit/taskdefs/gunzip-test.xml @@ -38,7 +38,7 @@ actual="${output}/asf-logo.gif"/> - + @@ -48,7 +48,7 @@ actual="${output}/greeting.txt"/> - +