From d5103ff56cf6470a214f082e89364f783d0504e8 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Tue, 18 Nov 2008 04:55:25 +0000 Subject: [PATCH] re-instante contract of resourceCompare by throwing ClassCastException for non-FileProviders git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@718482 13f79535-47bb-0310-9956-ffa450edef68 --- .../types/resources/comparators/FileSystem.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/org/apache/tools/ant/types/resources/comparators/FileSystem.java b/src/main/org/apache/tools/ant/types/resources/comparators/FileSystem.java index 68ab1bab7..60fe952f9 100644 --- a/src/main/org/apache/tools/ant/types/resources/comparators/FileSystem.java +++ b/src/main/org/apache/tools/ant/types/resources/comparators/FileSystem.java @@ -38,8 +38,18 @@ public class FileSystem extends ResourceComparator { * @throws ClassCastException if either resource is not an instance of FileResource. */ protected int resourceCompare(Resource foo, Resource bar) { - File foofile = ((FileProvider) foo.as(FileProvider.class)).getFile(); - File barfile = ((FileProvider) bar.as(FileProvider.class)).getFile(); + FileProvider fooFP = (FileProvider) foo.as(FileProvider.class); + if (fooFP == null) { + throw new ClassCastException(foo.getClass() + + " doesn't provide files"); + } + File foofile = fooFP.getFile(); + FileProvider barFP = (FileProvider) bar.as(FileProvider.class); + if (barFP == null) { + throw new ClassCastException(bar.getClass() + + " doesn't provide files"); + } + File barfile = barFP.getFile(); return foofile.equals(barfile) ? 0 : FILE_UTILS.isLeadingPath(foofile, barfile) ? -1 : FILE_UTILS.normalize(foofile.getAbsolutePath()).compareTo(