Browse Source

Remove the (at least for now) superfluous ResourceScanner interface.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274060 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 22 years ago
parent
commit
91a07a1f68
6 changed files with 26 additions and 236 deletions
  1. +3
    -48
      src/main/org/apache/tools/ant/DirectoryScanner.java
  2. +0
    -85
      src/main/org/apache/tools/ant/ResourceScanner.java
  3. +0
    -1
      src/main/org/apache/tools/ant/taskdefs/Jar.java
  4. +23
    -12
      src/main/org/apache/tools/ant/taskdefs/Zip.java
  5. +0
    -60
      src/main/org/apache/tools/ant/types/ZipScanner.java
  6. +0
    -30
      src/testcases/org/apache/tools/ant/DirectoryScannerTest.java

+ 3
- 48
src/main/org/apache/tools/ant/DirectoryScanner.java View File

@@ -58,6 +58,7 @@ import java.io.File;
import java.io.IOException;
import java.util.Vector;
import org.apache.tools.ant.types.Resource;
import org.apache.tools.ant.types.ResourceFactory;
import org.apache.tools.ant.types.selectors.FileSelector;
import org.apache.tools.ant.types.selectors.SelectorScanner;
import org.apache.tools.ant.types.selectors.SelectorUtils;
@@ -151,7 +152,7 @@ import org.apache.tools.ant.util.FileUtils;
* @author <a href="mailto:bruce@callenish.com">Bruce Atherton</a>
* @author <a href="mailto:levylambert@tiscali-dsl.de">Antoine Levy-Lambert</a>
*/
public class DirectoryScanner implements ResourceScanner, SelectorScanner {
public class DirectoryScanner implements FileScanner, SelectorScanner, ResourceFactory {

/**
* Patterns which should be excluded by default.
@@ -810,27 +811,6 @@ public class DirectoryScanner implements ResourceScanner, SelectorScanner {
return files;
}

/**
* Returns the resources of the files which matched at least one
* of the include patterns and none of the exclude patterns. The
* names are relative to the base directory.
*
* @return resource information for the files which matched at
* least one of the include patterns and none of the exclude
* patterns.
*
* @since Ant 1.5.2
*/
public Resource[] getIncludedFileResources() {
String[] names = getIncludedFiles();
int count = names.length;
Resource[] resources = new Resource[count];
for (int i = 0; i < count; i++) {
resources[i] = getResource(names[i]);
}
return resources;
}

/**
* Returns the names of the files which matched none of the include
* patterns. The names are relative to the base directory. This involves
@@ -898,26 +878,6 @@ public class DirectoryScanner implements ResourceScanner, SelectorScanner {
return directories;
}

/**
* Returns the resource object for the directories which matched
* at least one of the include patterns and none of the exclude
* patterns. The names are relative to the base directory.
*
* @return the names of the directories which matched at least one of the
* include patterns and none of the exclude patterns.
*
* @since Ant 1.5.2
*/
public Resource[] getIncludedDirectoryResources() {
String[] names = getIncludedDirectories();
int count = names.length;
Resource[] resources = new Resource[count];
for (int i = 0; i < count; i++) {
resources[i] = getResource(names[i]);
}
return resources;
}
/**
* Returns the names of the directories which matched none of the include
* patterns. The names are relative to the base directory. This involves
@@ -994,12 +954,7 @@ public class DirectoryScanner implements ResourceScanner, SelectorScanner {
* @since Ant 1.5.2
*/
public Resource getResource(String name) {
File f = null;
if (basedir != null) {
f = new File(basedir, name);
} else {
f = new File(name);
}
File f = fileUtils.resolveFile(basedir, name);
return new Resource(name, f.exists(), f.lastModified(),
f.isDirectory());
}


+ 0
- 85
src/main/org/apache/tools/ant/ResourceScanner.java View File

@@ -1,85 +0,0 @@
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "Ant" and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.tools.ant;

import org.apache.tools.ant.types.Resource;
import org.apache.tools.ant.types.ResourceFactory;

/**
* Extends the FileScanner concept to {@link
* org.apache.tools.ant.types.Resource Resources}.
*
* @since Ant 1.5.2
*/
public interface ResourceScanner extends FileScanner, ResourceFactory {

/**
* Returns resources for the directories which matched at least
* one of the include patterns and none of the exclude patterns.
*
* @return resources for the directories which matched at least
* one of the include patterns and none of the exclude patterns.
*/
Resource[] getIncludedDirectoryResources();
/**
* Returns resources for the files which matched at least one of
* the include patterns and none of the exclude patterns.
*
* @return the names of the files which matched at least one of the
* include patterns and none of the exclude patterns.
*/
Resource[] getIncludedFileResources();
}

+ 0
- 1
src/main/org/apache/tools/ant/taskdefs/Jar.java View File

@@ -70,7 +70,6 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ResourceScanner;
import org.apache.tools.ant.types.EnumeratedAttribute;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.Resource;


+ 23
- 12
src/main/org/apache/tools/ant/taskdefs/Zip.java View File

@@ -73,7 +73,6 @@ import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.FileScanner;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ResourceScanner;
import org.apache.tools.ant.types.EnumeratedAttribute;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.PatternSet;
@@ -441,10 +440,15 @@ public class Zip extends MatchingTask {
PatternSet.NameEntry ne = oldFiles.createExclude();
ne.setName((String) addedFiles.elementAt(i));
}
addResources(oldFiles,
oldFiles.getDirectoryScanner(getProject())
.getIncludedFileResources(),
zOut);
DirectoryScanner ds =
oldFiles.getDirectoryScanner(getProject());
String[] f = ds.getIncludedFiles();
Resource[] r = new Resource[f.length];
for (int i = 0; i < f.length; i++) {
r[i] = ds.getResource(f[i]);
}
addResources(oldFiles, r, zOut);
}
finalizeZipOutputStream(zOut);

@@ -801,13 +805,20 @@ public class Zip extends MatchingTask {
protected Resource[][] grabResources(FileSet[] filesets) {
Resource[][] result = new Resource[filesets.length][];
for (int i = 0; i < filesets.length; i++) {
ResourceScanner rs = filesets[i].getDirectoryScanner(getProject());
Resource[] files = rs.getIncludedFileResources();
Resource[] directories = rs.getIncludedDirectoryResources();
result[i] = new Resource[files.length + directories.length];
System.arraycopy(directories, 0, result[i], 0, directories.length);
System.arraycopy(files, 0, result[i], directories.length,
files.length);
DirectoryScanner rs =
filesets[i].getDirectoryScanner(getProject());
Vector resources = new Vector();
String[] directories = rs.getIncludedDirectories();
for (int j = 0; j < directories.length; j++) {
resources.add(rs.getResource(directories[j]));
}
String[] files = rs.getIncludedFiles();
for (int j = 0; j < files.length; j++) {
resources.add(rs.getResource(files[j]));
}
result[i] = new Resource[resources.size()];
resources.copyInto(result[i]);
}
return result;
}


+ 0
- 60
src/main/org/apache/tools/ant/types/ZipScanner.java View File

@@ -201,66 +201,6 @@ public class ZipScanner extends DirectoryScanner {
return isIncluded(vpath) && !isExcluded(vpath);
}

/**
* Returns the resources of the files which matched at least one of the
* include patterns and none of the exclude patterns.
* The names are relative to the base directory.
*
* @return resource information for the files which matched at
* least one of the include patterns and none of the exclude
* patterns.
*
* @since Ant 1.5.2
*/
public Resource[] getIncludedFileResources() {
if (srcFile != null) {
Vector myvector = new Vector();
// first check if the archive needs to be scanned again
scanme();
for (Enumeration e = myentries.elements(); e.hasMoreElements() ;) {
Resource myresource= (Resource) e.nextElement();
if (!myresource.isDirectory() && match(myresource.getName())) {
myvector.addElement(myresource.clone());
}
}
Resource[] resources = new Resource[myvector.size()];
myvector.copyInto(resources);
return resources;
} else {
return super.getIncludedFileResources();
}
}

/**
* Returns the resources of the files which matched at least one of the
* include patterns and none of the exclude patterns.
* The names are relative to the base directory.
*
* @return resource information for the files which matched at
* least one of the include patterns and none of the exclude
* patterns.
*
* @since Ant 1.5.2
*/
public Resource[] getIncludedDirectoryResources() {
if (srcFile != null) {
Vector myvector = new Vector();
// first check if the archive needs to be scanned again
scanme();
for (Enumeration e = myentries.elements(); e.hasMoreElements() ;) {
Resource myresource= (Resource) e.nextElement();
if (myresource.isDirectory() && match(myresource.getName())) {
myvector.addElement(myresource.clone());
}
}
Resource[] resources = new Resource[myvector.size()];
myvector.copyInto(resources);
return resources;
} else {
return super.getIncludedDirectoryResources();
}
}

/**
* @param name path name of the file sought in the archive
*


+ 0
- 30
src/testcases/org/apache/tools/ant/DirectoryScannerTest.java View File

@@ -187,20 +187,6 @@ public class DirectoryScannerTest extends TestCase {
assertTrue("(1) zip package included", haveZipPackage);
assertTrue("(1) taskdefs package not included", !haveTaskdefsPackage);

haveZipPackage = false;
Resource[] includedResources = ds.getIncludedDirectoryResources();
for (int i=0; i<includedResources.length; i++) {
if (includedResources[i].getName().equals("zip")) {
haveZipPackage = true;
} else if (includedResources[i].getName().equals("ant"
+ File.separator
+ "taskdefs")) {
haveTaskdefsPackage = true;
}
}
assertTrue("(1b) zip package included", haveZipPackage);
assertTrue("(1b) taskdefs package not included", !haveTaskdefsPackage);

ds = new DirectoryScanner();
ds.setBasedir(dir);
ds.setExcludes(new String[] {"ant"});
@@ -216,22 +202,6 @@ public class DirectoryScannerTest extends TestCase {
}
assertTrue("(2) zip package included", haveZipPackage);
assertTrue("(2) taskdefs package included", haveTaskdefsPackage);

haveZipPackage = false;
haveTaskdefsPackage = false;
includedResources = ds.getIncludedDirectoryResources();
for (int i=0; i<includedResources.length; i++) {
if (includedResources[i].getName().equals("zip")) {
haveZipPackage = true;
} else if (includedResources[i].getName().equals("ant"
+ File.separator
+ "taskdefs")) {
haveTaskdefsPackage = true;
}
}
assertTrue("(2b) zip package included", haveZipPackage);
assertTrue("(2b) taskdefs package included", haveTaskdefsPackage);

}

}

Loading…
Cancel
Save