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/Path.java | |
parent | 7ba939dfd5df48903929e9c14ebd0449656403e4 (diff) |
Serialize Path using AutoCodec.
PiperOrigin-RevId: 187945746
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/vfs/Path.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/vfs/Path.java | 41 |
1 files changed, 4 insertions, 37 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/Path.java b/src/main/java/com/google/devtools/build/lib/vfs/Path.java index af2b1c7322..f9bc9d18fc 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/Path.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/Path.java @@ -15,17 +15,11 @@ package com.google.devtools.build.lib.vfs; import com.google.common.base.Preconditions; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; -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.devtools.build.lib.skyframe.serialization.strings.StringCodecs; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.skylarkinterface.SkylarkPrintable; import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; import com.google.devtools.build.lib.util.FileType; import com.google.devtools.build.lib.vfs.FileSystem.HashFunction; -import com.google.protobuf.CodedInputStream; -import com.google.protobuf.CodedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -59,6 +53,7 @@ import javax.annotation.Nullable; * <p>Mac and Windows file paths are case insensitive. Case is preserved. */ @ThreadSafe +@AutoCodec public class Path implements Comparable<Path>, Serializable, SkylarkPrintable, FileType.HasFileType { private static FileSystem fileSystemForSerialization; @@ -92,6 +87,8 @@ public class Path return createAlreadyNormalized(normalizedPath, fileSystem); } + @AutoCodec.VisibleForSerialization + @AutoCodec.Instantiator static Path createAlreadyNormalized(String path, FileSystem fileSystem) { int driveStrLength = OS.getDriveStrLength(path); return createAlreadyNormalized(path, driveStrLength, fileSystem); @@ -902,34 +899,4 @@ public class Path fileSystem = fileSystemForSerialization; driveStrLength = OS.getDriveStrLength(path); } - - private static class Codec implements ObjectCodec<Path> { - private final ObjectCodec<String> stringCodec = StringCodecs.asciiOptimized(); - - @Override - public Class<Path> getEncodedClass() { - return Path.class; - } - - @Override - public void serialize( - SerializationContext context, - Path path, - CodedOutputStream codedOut) - throws IOException, SerializationException { - Preconditions.checkArgument( - path.getFileSystem() == context.getDependency(FileSystem.class), - "%s != %s", - path.getFileSystem(), - context.getDependency(FileSystem.class)); - stringCodec.serialize(context, path.getPathString(), codedOut); - } - - @Override - public Path deserialize(DeserializationContext context, CodedInputStream codedIn) - throws IOException, SerializationException { - return Path.createAlreadyNormalized( - stringCodec.deserialize(context, codedIn), context.getDependency(FileSystem.class)); - } - } } |