aboutsummaryrefslogtreecommitdiffstats
path: root/anttasks/src/com/android/ant/MultiFilesTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'anttasks/src/com/android/ant/MultiFilesTask.java')
-rw-r--r--anttasks/src/com/android/ant/MultiFilesTask.java49
1 files changed, 30 insertions, 19 deletions
diff --git a/anttasks/src/com/android/ant/MultiFilesTask.java b/anttasks/src/com/android/ant/MultiFilesTask.java
index 7d4a884..c90a0b9 100644
--- a/anttasks/src/com/android/ant/MultiFilesTask.java
+++ b/anttasks/src/com/android/ant/MultiFilesTask.java
@@ -61,7 +61,7 @@ class MultiFilesTask extends BuildTypedTask {
}
// gather all the source files from all the source folders.
- Map<String, String> sourceFiles = getFileListByExtension(taskProject, sourceFolders,
+ Map<String, String> sourceFiles = getFilesByNameEntryFilter(sourceFolders,
"**/*." + extension);
if (sourceFiles.size() > 0) {
processor.displayMessage(DisplayType.FOUND, sourceFiles.size());
@@ -69,14 +69,15 @@ class MultiFilesTask extends BuildTypedTask {
// go look for all dependency files in the gen folder. This will have all dependency
// files but we can filter them based on the first pre-req file.
- Map<String, String> depFiles = getFileListByExtension(taskProject, genFolder, "**/*.d");
+ Iterator<?> depFiles = getFilesByNameEntryFilter(genFolder, "**/*.d");
// parse all the dep files and keep the ones that are of the proper type and check if
// they require compilation again.
Map<String, String> toCompile = new HashMap<String, String>();
ArrayList<File> toRemove = new ArrayList<File>();
ArrayList<String> depsToRemove = new ArrayList<String>();
- for (String depFile : depFiles.keySet()) {
+ while (depFiles.hasNext()) {
+ String depFile = depFiles.next().toString();
DependencyGraph graph = new DependencyGraph(depFile, null /*watchPaths*/);
// get the source file. it's the first item in the pre-reqs
@@ -145,34 +146,44 @@ class MultiFilesTask extends BuildTypedTask {
}
}
- private Map<String, String> getFileListByExtension(Project taskProject,
- List<String> sourceFolders, String filter) {
- HashMap<String, String> sourceFiles = new HashMap<String, String>();
- for (String sourceFolder : sourceFolders) {
- sourceFiles.putAll(getFileListByExtension(taskProject, sourceFolder, filter));
+ /**
+ * Returns a list of files found in given folders, all matching a given filter.
+ * The result is a map of (file, folder).
+ * @param folders the folders to search
+ * @param filter the filter for the files. Typically a glob.
+ * @return a map of (file, folder)
+ */
+ private Map<String, String> getFilesByNameEntryFilter(List<String> folders, String filter) {
+ Map<String, String> sourceFiles = new HashMap<String, String>();
+
+ for (String folder : folders) {
+ Iterator<?> iterator = getFilesByNameEntryFilter(folder, filter);
+
+ while (iterator.hasNext()) {
+ sourceFiles.put(iterator.next().toString(), folder);
+ }
}
return sourceFiles;
}
- private Map<String, String> getFileListByExtension(Project taskProject,
- String sourceFolder, String filter) {
- HashMap<String, String> sourceFiles = new HashMap<String, String>();
+ /**
+ * Returns a list of files found in a given folder, matching a given filter.
+ * @param folder the folder to search
+ * @param filter the filter for the files. Typically a glob.
+ * @return an iterator.
+ */
+ private Iterator<?> getFilesByNameEntryFilter(String folder, String filter) {
+ Project taskProject = getProject();
// create a fileset to find all the files in the folder
FileSet fs = new FileSet();
fs.setProject(taskProject);
- fs.setDir(new File(sourceFolder));
+ fs.setDir(new File(folder));
NameEntry include = fs.createInclude();
include.setName(filter);
// loop through the results of the file set
- Iterator<?> iter = fs.iterator();
- while (iter.hasNext()) {
- sourceFiles.put(iter.next().toString(), sourceFolder);
- }
-
- return sourceFiles;
+ return fs.iterator();
}
-
}