[jboss-cvs] JBossAS SVN: r91904 - 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 19:33:06 EDT 2009
Author: david.lloyd at jboss.com
Date: 2009-07-31 19:33:05 -0400 (Fri, 31 Jul 2009)
New Revision: 91904
Modified:
projects/vfs/branches/dml-zip-rework/src/main/java/org/jboss/virtual/VirtualFile.java
Log:
Try to get closer to the original visitor logic
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:16:59 UTC (rev 91903)
+++ projects/vfs/branches/dml-zip-rework/src/main/java/org/jboss/virtual/VirtualFile.java 2009-07-31 23:33:05 UTC (rev 91904)
@@ -269,6 +269,9 @@
*/
public List<VirtualFile> getChildren() throws IOException
{
+ 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);
@@ -295,11 +298,18 @@
if (! isDirectory())
return Collections.emptyList();
- if (filter == null)
- filter = MatchAllVirtualFileFilter.INSTANCE;
- FilterVirtualFileVisitor visitor = new FilterVirtualFileVisitor(filter, null);
- visit(visitor);
- return visitor.getMatched();
+ 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;
}
/**
@@ -348,10 +358,15 @@
*/
public void visit(VirtualFileVisitor visitor) throws IOException
{
+ visit(visitor, true);
+ }
+
+ private void visit(VirtualFileVisitor visitor, boolean root) throws IOException
+ {
final VisitorAttributes visitorAttributes = visitor.getAttributes();
if (isDirectory())
{
- if (! visitorAttributes.isLeavesOnly())
+ if (! visitorAttributes.isLeavesOnly() || visitorAttributes.isIncludeRoot() && root)
{
visitor.visit(this);
}
@@ -359,7 +374,7 @@
{
for (VirtualFile virtualFile : getChildren())
{
- virtualFile.visit(visitor);
+ virtualFile.visit(visitor, false);
}
}
} else {
More information about the jboss-cvs-commits
mailing list