diff options
author | mjhalupka <mjhalupka@google.com> | 2018-02-28 11:01:37 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-02-28 11:03:44 -0800 |
commit | de8138f6c0c4ab8a0e14c1fc63b5f61cc21f4798 (patch) | |
tree | 1f2220e606d34557084a2f5a937c6c00297cbc38 /src/main/java/com/google/devtools/build | |
parent | dfa0b12a44c6cd434de612db2c6b5573ef4e64bb (diff) |
Create a runtime codec for HashCode.
Remove the HashCode marshaller.
PiperOrigin-RevId: 187350917
Diffstat (limited to 'src/main/java/com/google/devtools/build')
2 files changed, 41 insertions, 22 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/HashCodeCodec.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/HashCodeCodec.java new file mode 100644 index 0000000000..fbd2712792 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/HashCodeCodec.java @@ -0,0 +1,41 @@ +// Copyright 2018 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.skyframe.serialization; + +import com.google.common.hash.HashCode; +import com.google.protobuf.CodedInputStream; +import com.google.protobuf.CodedOutputStream; +import java.io.IOException; + +/** Encodes a HashCode. */ +public class HashCodeCodec implements ObjectCodec<HashCode> { + + @Override + public void serialize(SerializationContext context, HashCode obj, CodedOutputStream codedOut) + throws SerializationException, IOException { + codedOut.writeByteArrayNoTag(obj.asBytes()); + } + + @Override + public HashCode deserialize(DeserializationContext context, CodedInputStream codedIn) + throws SerializationException, IOException { + return HashCode.fromBytes(codedIn.readByteArray()); + } + + @Override + public Class<HashCode> getEncodedClass() { + return HashCode.class; + } +} diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/Marshallers.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/Marshallers.java index 5c78bed826..d64fe9da4e 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/Marshallers.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/Marshallers.java @@ -25,7 +25,6 @@ import com.google.common.collect.ImmutableSortedMap; import com.google.common.collect.ImmutableSortedSet; import com.google.common.collect.Iterables; import com.google.common.collect.Maps; -import com.google.common.hash.HashCode; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetCodec; import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationCodeGenerator.Context; @@ -860,26 +859,6 @@ class Marshallers { } }; - /** Since we cannot add a codec to {@link HashCode}, it needs to be supported natively. */ - private final Marshaller hashCodeMarshaller = - new Marshaller() { - @Override - public boolean matches(DeclaredType type) { - return matchesType(type, HashCode.class); - } - - @Override - public void addSerializationCode(Context context) { - context.builder.addStatement("codedOut.writeByteArrayNoTag($L.asBytes())", context.name); - } - - @Override - public void addDeserializationCode(Context context) { - context.builder.addStatement( - "$L = $T.fromBytes(codedIn.readByteArray())", context.name, HashCode.class); - } - }; - private final Marshaller protoMarshaller = new Marshaller() { @Override @@ -1037,7 +1016,6 @@ class Marshallers { multimapMarshaller, nestedSetMarshaller, patternMarshaller, - hashCodeMarshaller, protoMarshaller, iterableMarshaller, charsetMarshaller, |