diff options
author | 2018-03-05 16:48:58 -0800 | |
---|---|---|
committer | 2018-03-05 16:50:46 -0800 | |
commit | 3e687ff5988aa6b3fb1582ade1362c80698a86ff (patch) | |
tree | 4f9cd76cc1d10c2d2d92acd2503bea836bc33d92 /src/main/java/com/google/devtools/build/lib/vfs/Root.java | |
parent | 7ba939dfd5df48903929e9c14ebd0449656403e4 (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.java | 47 |
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); - } - } - } } |