[jboss-cvs] JBossAS SVN: r91906 - projects/vfs/branches/dml-zip-rework/src/main/java/org/jboss/virtual.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jul 31 20:43:23 EDT 2009
Author: jason.greene at jboss.com
Date: 2009-07-31 20:43:22 -0400 (Fri, 31 Jul 2009)
New Revision: 91906
Modified:
projects/vfs/branches/dml-zip-rework/src/main/java/org/jboss/virtual/VirtualFile.java
Log:
Fix visitors, switch getChildren() back to visit approach for now, since a filter can force recursion (strange)
Modified: projects/vfs/branches/dml-zip-rework/src/main/java/org/jboss/virtual/VirtualFile.java
===================================================================
--- projects/vfs/branches/dml-zip-rework/src/main/java/org/jboss/virtual/VirtualFile.java 2009-07-31 23:36:34 UTC (rev 91905)
+++ projects/vfs/branches/dml-zip-rework/src/main/java/org/jboss/virtual/VirtualFile.java 2009-08-01 00:43:22 UTC (rev 91906)
@@ -298,18 +298,11 @@
if (! isDirectory())
return Collections.emptyList();
- final VFS.Mount mount = vfs.getMount(this);
- final Set<String> submounts = vfs.getSubmounts(this);
- final List<String> names = mount.getFileSystem().getDirectoryEntries(mount.getMountPoint(), this);
- final List<VirtualFile> virtualFiles = new ArrayList<VirtualFile>(names.size() + submounts.size());
- for (String name : names)
- {
- final VirtualFile child = new VirtualFile(vfs, name, this);
- if (filter.accepts(child))
- virtualFiles.add(child);
- submounts.remove(name);
- }
- return virtualFiles;
+ if (filter == null)
+ filter = MatchAllVirtualFileFilter.INSTANCE;
+ FilterVirtualFileVisitor visitor = new FilterVirtualFileVisitor(filter, null);
+ visit(visitor);
+ return visitor.getMatched();
}
/**
@@ -364,21 +357,21 @@
private void visit(VirtualFileVisitor visitor, boolean root) throws IOException
{
final VisitorAttributes visitorAttributes = visitor.getAttributes();
- if (isDirectory())
- {
- if (! visitorAttributes.isLeavesOnly() || visitorAttributes.isIncludeRoot() && root)
- {
- visitor.visit(this);
- }
- if (visitorAttributes.isRecurse(this))
- {
- for (VirtualFile virtualFile : getChildren())
- {
- virtualFile.visit(visitor, false);
- }
- }
- } else {
+
+ if (root && visitorAttributes.isIncludeRoot())
visitor.visit(this);
+
+ if (! isDirectory())
+ return;
+
+ for (VirtualFile child : getChildren())
+ {
+ // Always visit a leaf, and visit directories when leaves only is false
+ if (!child.isDirectory() || !visitorAttributes.isLeavesOnly())
+ visitor.visit(child);
+
+ if (child.isDirectory() && visitorAttributes.isRecurse(child))
+ child.visit(visitor, false);
}
}
More information about the jboss-cvs-commits
mailing list