aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2018-02-08 11:06:17 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-08 11:08:43 -0800
commitefa4db5a1d8ce78b6439f653e748c7343c6a61c8 (patch)
tree2d8a74a183ff4eb032ff4fb71da9565e2fc5383e /src/main/java
parent28228e0c812b2d9411c32c7a11716c2f0766086d (diff)
Add an AutoCodec marshaller for UUID. This is required to serialize
CppCompileAction. PiperOrigin-RevId: 185020942
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/Marshallers.java32
1 files changed, 32 insertions, 0 deletions
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 c4c6fb53b7..b625d347bb 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
@@ -42,6 +42,7 @@ import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.UUID;
import java.util.function.Consumer;
import java.util.regex.Pattern;
import javax.annotation.processing.ProcessingEnvironment;
@@ -289,6 +290,36 @@ class Marshallers {
}
};
+ private final Marshaller uuidMarshller =
+ new Marshaller() {
+ @Override
+ public boolean matches(DeclaredType type) {
+ return matchesType(type, UUID.class);
+ }
+
+ @Override
+ public void addSerializationCode(Context context) {
+ context.builder.addStatement(
+ "codedOut.writeInt64NoTag($L.getMostSignificantBits())", context.name);
+ context.builder.addStatement(
+ "codedOut.writeInt64NoTag($L.getLeastSignificantBits())", context.name);
+ }
+
+ @Override
+ public void addDeserializationCode(Context context) {
+ String mostSignificantBitsName = context.makeName("mostSignificantBits");
+ String leastSignificantBitsName = context.makeName("leastSignificantBits");
+ context.builder.addStatement("long $L = codedIn.readInt64()", mostSignificantBitsName);
+ context.builder.addStatement("long $L = codedIn.readInt64()", leastSignificantBitsName);
+ context.builder.addStatement(
+ "$L = new $T($L, $L)",
+ context.name,
+ UUID.class,
+ mostSignificantBitsName,
+ leastSignificantBitsName);
+ }
+ };
+
private final Marshaller supplierMarshaller =
new Marshaller() {
@Override
@@ -922,6 +953,7 @@ class Marshallers {
stringMarshaller,
optionalMarshaller,
supplierMarshaller,
+ uuidMarshller,
mapEntryMarshaller,
listMarshaller,
immutableSetMarshaller,