summaryrefslogtreecommitdiffstats
path: root/sched
diff options
context:
space:
mode:
authorBenoit Lamarche <benoitlamarche@google.com>2015-05-05 15:38:30 +0200
committerBenoit Lamarche <benoitlamarche@google.com>2015-05-29 11:47:18 +0200
commit21fe55835a54f27ddb4e239d1b88907874b62feb (patch)
tree5d86139b4ce169274d5a594788b63e73a8cf6aa8 /sched
parentc2ac6825048f1b81d945e25a13aa5f4203311b8b (diff)
downloadtoolchain_jack-21fe55835a54f27ddb4e239d1b88907874b62feb.zip
toolchain_jack-21fe55835a54f27ddb4e239d1b88907874b62feb.tar.gz
toolchain_jack-21fe55835a54f27ddb4e239d1b88907874b62feb.tar.bz2
Fix MessageDigestFS by creating specific VDirs
Bug: 20684001 (cherry picked from commit 60f97293c68fbb7382b2ae8c811bcbe7c646aa17) Change-Id: Iee65e010e3f1ba81367958d460aafe37ee051ab0
Diffstat (limited to 'sched')
-rw-r--r--sched/src/com/android/sched/vfs/MessageDigestFS.java84
-rw-r--r--sched/tests/com/android/sched/vfs/VFSTest.java2
2 files changed, 53 insertions, 33 deletions
diff --git a/sched/src/com/android/sched/vfs/MessageDigestFS.java b/sched/src/com/android/sched/vfs/MessageDigestFS.java
index 2b414b4..123d607 100644
--- a/sched/src/com/android/sched/vfs/MessageDigestFS.java
+++ b/sched/src/com/android/sched/vfs/MessageDigestFS.java
@@ -30,6 +30,7 @@ import com.android.sched.util.findbugs.SuppressFBWarnings;
import com.android.sched.util.location.LineLocation;
import com.android.sched.util.location.Location;
import com.android.sched.util.log.LoggerFactory;
+import com.android.sched.vfs.MessageDigestFS.MessageDigestVDir;
import com.android.sched.vfs.MessageDigestFS.MessageDigestVFile;
import java.io.IOException;
@@ -59,7 +60,7 @@ import javax.annotation.Nonnull;
* A {@link VFS} filter implementation that creates a file containing a message digest for each
* file.
*/
-public class MessageDigestFS extends BaseVFS<BaseVDir, MessageDigestVFile> implements VFS {
+public class MessageDigestFS extends BaseVFS<MessageDigestVDir, MessageDigestVFile> implements VFS {
@Nonnull
private static final Logger logger = LoggerFactory.getLogger();
@Nonnull
@@ -81,7 +82,7 @@ public class MessageDigestFS extends BaseVFS<BaseVDir, MessageDigestVFile> imple
@Nonnull
private final BaseVFile wrappedFile;
- public MessageDigestVFile(@Nonnull BaseVFS<BaseVDir, MessageDigestVFile> vfs,
+ public MessageDigestVFile(@Nonnull BaseVFS<MessageDigestVDir, MessageDigestVFile> vfs,
@Nonnull BaseVFile wrappedFile) {
super(vfs, wrappedFile.getName());
this.wrappedFile = wrappedFile;
@@ -140,12 +141,40 @@ public class MessageDigestFS extends BaseVFS<BaseVDir, MessageDigestVFile> imple
}
}
+ static class MessageDigestVDir extends BaseVDir {
+
+ @Nonnull
+ private final BaseVDir wrappedFile;
+
+ public MessageDigestVDir(@Nonnull BaseVFS<MessageDigestVDir, MessageDigestVFile> vfs,
+ @Nonnull BaseVDir wrappedFile) {
+ super(vfs, wrappedFile.getName());
+ this.wrappedFile = wrappedFile;
+ }
+
+ @Override
+ @Nonnull
+ public Location getLocation() {
+ return wrappedFile.getLocation();
+ }
+
+ @Override
+ @Nonnull
+ public VPath getPath() {
+ return wrappedFile.getPath();
+ }
+
+ @Nonnull
+ public BaseVDir getWrappedDir() {
+ return wrappedFile;
+ }
+ }
+
@SuppressWarnings("unchecked")
public MessageDigestFS(@Nonnull VFS vfs, @Nonnull MessageDigestFactory factory)
throws WrongVFSFormatException {
this.vfs = (BaseVFS<BaseVDir, BaseVFile>) vfs;
this.mdFactory = factory;
- changeVFS(this.vfs.getRootDir());
Set<Capabilities> capabilities = EnumSet.copyOf(vfs.getCapabilities());
capabilities.add(Capabilities.DIGEST);
@@ -309,8 +338,8 @@ public class MessageDigestFS extends BaseVFS<BaseVDir, MessageDigestVFile> imple
@Override
@Nonnull
- public BaseVDir getRootDir() {
- return vfs.getRootDir();
+ public MessageDigestVDir getRootDir() {
+ return new MessageDigestVDir(this, vfs.getRootDir());
}
@Override
@@ -330,21 +359,20 @@ public class MessageDigestFS extends BaseVFS<BaseVDir, MessageDigestVFile> imple
@Override
@Nonnull
synchronized void delete(@Nonnull MessageDigestVFile file) throws CannotDeleteFileException {
- vfs.delete(file.getWrappedFile());
+ file.getWrappedFile().delete();
digests.remove(file.getPath());
digest = null;
}
@Override
@Nonnull
- Collection<? extends BaseVElement> list(@Nonnull BaseVDir dir) {
- Collection<? extends BaseVElement> elements = vfs.list(dir);
+ Collection<? extends BaseVElement> list(@Nonnull MessageDigestVDir dir) {
+ Collection<? extends BaseVElement> elements = dir.getWrappedDir().list();
List<BaseVElement> newElements = new ArrayList<BaseVElement>(elements.size());
for (BaseVElement element : elements) {
BaseVElement newElement;
if (element.isVDir()) {
- element.changeVFS(this);
- newElement = element;
+ newElement = new MessageDigestVDir(this, (BaseVDir) element);
} else {
newElement = new MessageDigestVFile(this, (BaseVFile) element);
}
@@ -356,42 +384,36 @@ public class MessageDigestFS extends BaseVFS<BaseVDir, MessageDigestVFile> imple
@Override
- boolean isEmpty(@Nonnull BaseVDir dir) {
+ boolean isEmpty(@Nonnull MessageDigestVDir dir) {
return vfs.isEmpty(dir);
}
@Override
@Nonnull
- MessageDigestVFile createVFile(@Nonnull BaseVDir parent, @Nonnull String name)
+ MessageDigestVFile createVFile(@Nonnull MessageDigestVDir parent, @Nonnull String name)
throws CannotCreateFileException {
- return new MessageDigestVFile(this, vfs.createVFile(parent, name));
+ return new MessageDigestVFile(this, parent.getWrappedDir().createVFile(name));
}
@Override
@Nonnull
- BaseVDir createVDir(@Nonnull BaseVDir parent, @Nonnull String name)
+ MessageDigestVDir createVDir(@Nonnull MessageDigestVDir parent, @Nonnull String name)
throws CannotCreateFileException {
- return changeVFS(vfs.createVDir(parent, name));
+ return new MessageDigestVDir(this, parent.getWrappedDir().createVDir(name));
}
@Override
@Nonnull
- BaseVDir getVDir(@Nonnull BaseVDir parent, @Nonnull String name) throws NotDirectoryException,
- NoSuchFileException {
- return changeVFS(vfs.getVDir(parent, name));
+ MessageDigestVDir getVDir(@Nonnull MessageDigestVDir parent, @Nonnull String name)
+ throws NotDirectoryException, NoSuchFileException {
+ return new MessageDigestVDir(this, parent.getWrappedDir().getVDir(name));
}
@Override
@Nonnull
- MessageDigestVFile getVFile(@Nonnull BaseVDir parent, @Nonnull String name)
+ MessageDigestVFile getVFile(@Nonnull MessageDigestVDir parent, @Nonnull String name)
throws NotFileException, NoSuchFileException {
- return new MessageDigestVFile(this, vfs.getVFile(parent, name));
- }
-
- @Nonnull
- private BaseVDir changeVFS(@Nonnull BaseVDir dir) {
- dir.changeVFS(this);
- return dir;
+ return new MessageDigestVFile(this, parent.getWrappedDir().getVFile(name));
}
@Override
@@ -414,31 +436,31 @@ public class MessageDigestFS extends BaseVFS<BaseVDir, MessageDigestVFile> imple
@Override
@Nonnull
- Location getVFileLocation(@Nonnull BaseVDir parent, @Nonnull String name) {
+ Location getVFileLocation(@Nonnull MessageDigestVDir parent, @Nonnull String name) {
return vfs.getVFileLocation(parent, name);
}
@Override
@Nonnull
- Location getVFileLocation(@Nonnull BaseVDir parent, @Nonnull VPath path) {
+ Location getVFileLocation(@Nonnull MessageDigestVDir parent, @Nonnull VPath path) {
return vfs.getVFileLocation(parent, path);
}
@Override
@Nonnull
- Location getVDirLocation(@Nonnull BaseVDir dir) {
+ Location getVDirLocation(@Nonnull MessageDigestVDir dir) {
return vfs.getVDirLocation(dir);
}
@Override
@Nonnull
- Location getVDirLocation(@Nonnull BaseVDir parent, @Nonnull String name) {
+ Location getVDirLocation(@Nonnull MessageDigestVDir parent, @Nonnull String name) {
return vfs.getVDirLocation(parent, name);
}
@Override
@Nonnull
- Location getVDirLocation(@Nonnull BaseVDir parent, @Nonnull VPath path) {
+ Location getVDirLocation(@Nonnull MessageDigestVDir parent, @Nonnull VPath path) {
return vfs.getVDirLocation(parent, path);
}
}
diff --git a/sched/tests/com/android/sched/vfs/VFSTest.java b/sched/tests/com/android/sched/vfs/VFSTest.java
index 01f25a9..9315dc5 100644
--- a/sched/tests/com/android/sched/vfs/VFSTest.java
+++ b/sched/tests/com/android/sched/vfs/VFSTest.java
@@ -43,7 +43,6 @@ import com.android.sched.util.location.ZipLocation;
import junit.framework.Assert;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import java.io.BufferedReader;
@@ -322,7 +321,6 @@ public class VFSTest {
}
@Test
- @Ignore
public void testMessageDigestFSWithCaseInsensitiveFS()
throws NotDirectoryException,
CannotCreateFileException,