diff options
Diffstat (limited to 'sched/src/com/android/sched/vfs/PrefixedFS.java')
-rw-r--r-- | sched/src/com/android/sched/vfs/PrefixedFS.java | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/sched/src/com/android/sched/vfs/PrefixedFS.java b/sched/src/com/android/sched/vfs/PrefixedFS.java index af1c14b..cc63ea4 100644 --- a/sched/src/com/android/sched/vfs/PrefixedFS.java +++ b/sched/src/com/android/sched/vfs/PrefixedFS.java @@ -52,7 +52,7 @@ public class PrefixedFS extends BaseVFS<BaseVDir, BaseVFile> implements VFS { } catch (NoSuchFileException e) { rootDir = this.vfs.getRootDir().createVDir(prefix); } - this.rootDir = rootDir; + this.rootDir = changeVFS(rootDir); } @Override @@ -99,35 +99,39 @@ public class PrefixedFS extends BaseVFS<BaseVDir, BaseVFile> implements VFS { @Override @Nonnull Collection<? extends BaseVElement> list(@Nonnull BaseVDir dir) { - return vfs.list(dir); + Collection<? extends BaseVElement> elements = vfs.list(dir); + for (BaseVElement element : elements) { + element.changeVFS(this); + } + return elements; } @Override @Nonnull BaseVFile createVFile(@Nonnull BaseVDir parent, @Nonnull String name) throws CannotCreateFileException { - return vfs.createVFile(parent, name); + return changeVFS(vfs.createVFile(parent, name)); } @Override @Nonnull BaseVDir createVDir(@Nonnull BaseVDir parent, @Nonnull String name) throws CannotCreateFileException { - return vfs.createVDir(parent, name); + return changeVFS(vfs.createVDir(parent, name)); } @Override @Nonnull BaseVDir getVDir(@Nonnull BaseVDir parent, @Nonnull String name) throws NotDirectoryException, NoSuchFileException { - return vfs.getVDir(parent, name); + return changeVFS(vfs.getVDir(parent, name)); } @Override @Nonnull BaseVFile getVFile(@Nonnull BaseVDir parent, @Nonnull String name) throws NotFileException, NoSuchFileException { - return vfs.getVFile(parent, name); + return changeVFS(vfs.getVFile(parent, name)); } @@ -188,4 +192,28 @@ public class PrefixedFS extends BaseVFS<BaseVDir, BaseVFile> implements VFS { Location getVDirLocation(@Nonnull BaseVDir parent, @Nonnull VPath path) { return vfs.getVDirLocation(parent, path); } + + @Override + @Nonnull + VPath getPathFromDir(@Nonnull BaseVDir parent, @Nonnull BaseVFile file) { + return vfs.getPathFromDir(parent, file); + } + + @Override + @Nonnull + VPath getPathFromRoot(@Nonnull BaseVFile file) { + return vfs.getPathFromDir(rootDir, file); + } + + @Nonnull + private BaseVDir changeVFS(@Nonnull BaseVDir dir) { + dir.changeVFS(this); + return dir; + } + + @Nonnull + private BaseVFile changeVFS(@Nonnull BaseVFile file) { + file.changeVFS(this); + return file; + } } |