Author: maartenc Date: Fri Oct 17 14:55:13 2008 New Revision: 705768 URL: http://svn.apache.org/viewvc?rev=705768&view=rev Log: FIX: cachefileset produces an empty fileset when the cache refers to libs in directories that only have the root directory in common (IVY-948) (thanks to Chris Wood)
Modified: ant/ivy/core/trunk/CHANGES.txt ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheFileset.java Modified: ant/ivy/core/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=705768&r1=705767&r2=705768&view=diff ============================================================================== --- ant/ivy/core/trunk/CHANGES.txt (original) +++ ant/ivy/core/trunk/CHANGES.txt Fri Oct 17 14:55:13 2008 @@ -75,6 +75,7 @@ James P. White Tom Widmer John Williams + Chris Wood Patrick Woodworth Jaroslaw Wypychowski @@ -104,6 +105,7 @@ - FIX: Can't use latest.release for pom dependencies (IVY-936) - FIX: Unable to resolve snapshot versions depending on xml elements order (IVY-940) - FIX: pre-resolve-dependency event doesn't export branch information (IVY-941) (thanks to Jaroslaw Wypychowski) +- FIX: cachefileset produces an empty fileset when the cache refers to libs in directories that only have the root directory in common (IVY-948) (thanks to Chris Wood) 2.0.0-rc1 ===================================== Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheFileset.java URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheFileset.java?rev=705768&r1=705767&r2=705768&view=diff ============================================================================== --- ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheFileset.java (original) +++ ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheFileset.java Fri Oct 17 14:55:13 2008 @@ -78,7 +78,7 @@ for (Iterator iter = paths.iterator(); iter.hasNext();) { ArtifactDownloadReport a = (ArtifactDownloadReport) iter.next(); if (a.getLocalFile() != null) { - NameEntry ne = fileset.createInclude(); + NameEntry ne = fileset. createInclude(); ne.setName(getPath(base, a.getLocalFile())); } } @@ -93,10 +93,20 @@ * * @param base the parent directory to which the file must be evaluated. * @param file the file for which the path should be returned - * @returnthe path of the file relative to the given base directory. + * @return the path of the file relative to the given base directory. */ private String getPath(File base, File file) { - return file.getAbsolutePath().substring(base.getAbsolutePath().length() + 1); + String absoluteBasePath = base.getAbsolutePath(); + + int beginIndex = absoluteBasePath.length(); + + // checks if the basePath ends with the file separator (which can for instance + // happen if the basePath is the root on unix) + if (!absoluteBasePath.endsWith(File.separator)) { + beginIndex++; // skip the seperator char as well + } + + return file.getAbsolutePath().substring(beginIndex); } /**