aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/vfs/Path.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/Path.java
parent7ba939dfd5df48903929e9c14ebd0449656403e4 (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.java41
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));
- }
- }
}