summaryrefslogtreecommitdiffstats
path: root/sched/src/com/android/sched/vfs/PrefixedFS.java
diff options
context:
space:
mode:
Diffstat (limited to 'sched/src/com/android/sched/vfs/PrefixedFS.java')
-rw-r--r--sched/src/com/android/sched/vfs/PrefixedFS.java40
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;
+ }
}