aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/vfs/Root.java
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-03-05 16:48:58 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-05 16:50:46 -0800
commit3e687ff5988aa6b3fb1582ade1362c80698a86ff (patch)
tree4f9cd76cc1d10c2d2d92acd2503bea836bc33d92 /src/main/java/com/google/devtools/build/lib/vfs/Root.java
parent7ba939dfd5df48903929e9c14ebd0449656403e4 (diff)
Serialize Path using AutoCodec.
PiperOrigin-RevId: 187945746
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/vfs/Root.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/Root.java47
1 files changed, 3 insertions, 44 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/Root.java b/src/main/java/com/google/devtools/build/lib/vfs/Root.java
index b39eb2e48c..c7c78900f8 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/Root.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/Root.java
@@ -15,12 +15,7 @@ package com.google.devtools.build.lib.vfs;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
-import com.google.devtools.build.lib.skyframe.serialization.DeserializationContext;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
-import com.google.devtools.build.lib.skyframe.serialization.SerializationContext;
-import com.google.devtools.build.lib.skyframe.serialization.SerializationException;
-import com.google.protobuf.CodedInputStream;
-import com.google.protobuf.CodedOutputStream;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
@@ -74,6 +69,7 @@ public abstract class Root implements Comparable<Root>, Serializable {
public abstract boolean isAbsolute();
/** Implementation of Root that is backed by a {@link Path}. */
+ @AutoCodec
public static final class PathRoot extends Root {
private final Path path;
@@ -158,6 +154,7 @@ public abstract class Root implements Comparable<Root>, Serializable {
}
/** An absolute root of a file system. Can only resolve absolute path fragments. */
+ @AutoCodec
public static final class AbsoluteRoot extends Root {
private FileSystem fileSystem; // Non-final for serialization
@@ -254,42 +251,4 @@ public abstract class Root implements Comparable<Root>, Serializable {
Path.getFileSystemForSerialization());
}
}
-
- /** Codec to serialize {@link Root}s. */
- private static class RootCodec implements ObjectCodec<Root> {
- @Override
- public Class<Root> getEncodedClass() {
- return Root.class;
- }
-
- @Override
- public void serialize(
- SerializationContext context,
- Root obj,
- CodedOutputStream codedOut)
- throws SerializationException, IOException {
- if (obj instanceof PathRoot) {
- codedOut.writeBoolNoTag(false);
- context.serialize(((PathRoot) obj).path, codedOut);
- } else if (obj instanceof AbsoluteRoot) {
- Preconditions.checkArgument(
- ((AbsoluteRoot) obj).fileSystem == context.getDependency(FileSystem.class));
- codedOut.writeBoolNoTag(true);
- } else {
- throw new AssertionError("Unknown Root subclass: " + obj.getClass().getName());
- }
- }
-
- @Override
- public Root deserialize(DeserializationContext context, CodedInputStream codedIn)
- throws SerializationException, IOException {
- boolean isAbsolute = codedIn.readBool();
- if (isAbsolute) {
- return context.getDependency(FileSystem.class).getAbsoluteRoot();
- } else {
- Path path = context.deserialize(codedIn);
- return new PathRoot(path);
- }
- }
- }
}