aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/PathCodec.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java41
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/PathFragmentCodec.java57
5 files changed, 45 insertions, 66 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java
index 8107714e33..dc94ea8574 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifierCodec.java
@@ -17,7 +17,6 @@ package com.google.devtools.build.lib.cmdline;
import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
import com.google.devtools.build.lib.skyframe.serialization.SerializationException;
import com.google.devtools.build.lib.vfs.PathFragment;
-import com.google.devtools.build.lib.vfs.PathFragmentCodec;
import com.google.protobuf.CodedInputStream;
import com.google.protobuf.CodedOutputStream;
import java.io.IOException;
@@ -26,7 +25,6 @@ import java.io.IOException;
public class PackageIdentifierCodec implements ObjectCodec<PackageIdentifier> {
private final RepositoryNameCodec repoNameCodec = new RepositoryNameCodec();
- private final PathFragmentCodec pathFragmentCodec = new PathFragmentCodec();
@Override
public Class<PackageIdentifier> getEncodedClass() {
@@ -37,14 +35,14 @@ public class PackageIdentifierCodec implements ObjectCodec<PackageIdentifier> {
public void serialize(PackageIdentifier pkgId, CodedOutputStream codedOut)
throws IOException, SerializationException {
repoNameCodec.serialize(pkgId.getRepository(), codedOut);
- pathFragmentCodec.serialize(pkgId.getPackageFragment(), codedOut);
+ PathFragment.CODEC.serialize(pkgId.getPackageFragment(), codedOut);
}
@Override
public PackageIdentifier deserialize(CodedInputStream codedIn)
throws IOException, SerializationException {
RepositoryName repoName = repoNameCodec.deserialize(codedIn);
- PathFragment pathFragment = pathFragmentCodec.deserialize(codedIn);
+ PathFragment pathFragment = PathFragment.CODEC.deserialize(codedIn);
return PackageIdentifier.create(repoName, pathFragment);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/BUILD b/src/main/java/com/google/devtools/build/lib/vfs/BUILD
index 7beb483fa3..88c7c86490 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/vfs/BUILD
@@ -9,7 +9,6 @@ filegroup(
PATH_FRAGMENT_SOURCES = [
"Canonicalizer.java",
"PathFragment.java",
- "PathFragmentCodec.java",
"PathFragmentSerializationProxy.java",
"UnixPathFragment.java",
"WindowsPathFragment.java",
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/PathCodec.java b/src/main/java/com/google/devtools/build/lib/vfs/PathCodec.java
index 872466316d..ee0ef364e3 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/PathCodec.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/PathCodec.java
@@ -25,12 +25,10 @@ import java.io.IOException;
public class PathCodec implements ObjectCodec<Path> {
private final FileSystem fileSystem;
- private final PathFragmentCodec pathFragmentCodec;
/** Create an instance for serializing and deserializing {@link Path}s on {@code fileSystem}. */
public PathCodec(FileSystem fileSystem) {
this.fileSystem = fileSystem;
- this.pathFragmentCodec = new PathFragmentCodec();
}
@Override
@@ -46,12 +44,12 @@ public class PathCodec implements ObjectCodec<Path> {
"Path's FileSystem (%s) did not match the configured FileSystem (%s)",
path.getFileSystem(),
fileSystem);
- pathFragmentCodec.serialize(path.asFragment(), codedOut);
+ PathFragment.CODEC.serialize(path.asFragment(), codedOut);
}
@Override
public Path deserialize(CodedInputStream codedIn) throws IOException, SerializationException {
- PathFragment pathFragment = pathFragmentCodec.deserialize(codedIn);
+ PathFragment pathFragment = PathFragment.CODEC.deserialize(codedIn);
return fileSystem.getPath(pathFragment);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
index da3846cd9f..05e4ee86c8 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
@@ -21,11 +21,17 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
+import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
+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.skylarkinterface.SkylarkPrintable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
import com.google.devtools.build.lib.util.OS;
import com.google.devtools.build.lib.util.StringCanonicalizer;
+import com.google.protobuf.CodedInputStream;
+import com.google.protobuf.CodedOutputStream;
import java.io.File;
+import java.io.IOException;
import java.io.InvalidObjectException;
import java.io.ObjectInputStream;
import java.io.Serializable;
@@ -65,6 +71,8 @@ public abstract class PathFragment
/** The path fragment representing the root directory. */
public static final PathFragment ROOT_FRAGMENT = create(ROOT_DIR);
+ public static final ObjectCodec<PathFragment> CODEC = new PathFragmentCodec();
+
/**
* A helper object for manipulating the various internal {@link PathFragment} implementations.
*
@@ -743,6 +751,39 @@ public abstract class PathFragment
printer.append(getPathString());
}
+ private static class PathFragmentCodec implements ObjectCodec<PathFragment> {
+ private final ObjectCodec<String> stringCodec = StringCodecs.asciiOptimized();
+
+ @Override
+ public Class<PathFragment> getEncodedClass() {
+ return PathFragment.class;
+ }
+
+ @Override
+ public void serialize(PathFragment pathFragment, CodedOutputStream codedOut)
+ throws IOException, SerializationException {
+ codedOut.writeInt32NoTag(pathFragment.getDriveLetter());
+ codedOut.writeBoolNoTag(pathFragment.isAbsolute());
+ codedOut.writeInt32NoTag(pathFragment.segmentCount());
+ for (int i = 0; i < pathFragment.segmentCount(); i++) {
+ stringCodec.serialize(pathFragment.getSegment(i), codedOut);
+ }
+ }
+
+ @Override
+ public PathFragment deserialize(CodedInputStream codedIn)
+ throws IOException, SerializationException {
+ char driveLetter = (char) codedIn.readInt32();
+ boolean isAbsolute = codedIn.readBool();
+ int segmentCount = codedIn.readInt32();
+ String[] segments = new String[segmentCount];
+ for (int i = 0; i < segmentCount; i++) {
+ segments[i] = stringCodec.deserialize(codedIn);
+ }
+ return PathFragment.create(driveLetter, isAbsolute, segments);
+ }
+ }
+
private static void checkBaseName(String baseName) {
if (baseName.length() == 0) {
throw new IllegalArgumentException("Child must not be empty string ('')");
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/PathFragmentCodec.java b/src/main/java/com/google/devtools/build/lib/vfs/PathFragmentCodec.java
deleted file mode 100644
index 2c0f493fc8..0000000000
--- a/src/main/java/com/google/devtools/build/lib/vfs/PathFragmentCodec.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2017 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.vfs;
-
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
-import com.google.devtools.build.lib.skyframe.serialization.SerializationException;
-import com.google.devtools.build.lib.skyframe.serialization.strings.StringCodecs;
-import com.google.protobuf.CodedInputStream;
-import com.google.protobuf.CodedOutputStream;
-import java.io.IOException;
-
-/** Custom serialization for {@link PathFragment}s. */
-public class PathFragmentCodec implements ObjectCodec<PathFragment> {
-
- private final ObjectCodec<String> stringCodec = StringCodecs.asciiOptimized();
-
- @Override
- public Class<PathFragment> getEncodedClass() {
- return PathFragment.class;
- }
-
- @Override
- public void serialize(PathFragment pathFragment, CodedOutputStream codedOut)
- throws IOException, SerializationException {
- codedOut.writeInt32NoTag(pathFragment.getDriveLetter());
- codedOut.writeBoolNoTag(pathFragment.isAbsolute());
- codedOut.writeInt32NoTag(pathFragment.segmentCount());
- for (int i = 0; i < pathFragment.segmentCount(); i++) {
- stringCodec.serialize(pathFragment.getSegment(i), codedOut);
- }
- }
-
- @Override
- public PathFragment deserialize(CodedInputStream codedIn)
- throws IOException, SerializationException {
- char driveLetter = (char) codedIn.readInt32();
- boolean isAbsolute = codedIn.readBool();
- int segmentCount = codedIn.readInt32();
- String[] segments = new String[segmentCount];
- for (int i = 0; i < segmentCount; i++) {
- segments[i] = stringCodec.deserialize(codedIn);
- }
- return PathFragment.create(driveLetter, isAbsolute, segments);
- }
-}