From 03732205970679f757e6bb82f98c15607db17aa4 Mon Sep 17 00:00:00 2001 From: janakr Date: Thu, 17 Aug 2017 22:36:50 +0200 Subject: Properly handle some values that can be null in AppleCommandLineOptions. PiperOrigin-RevId: 165622047 --- .../serialization/SerializationCommonUtils.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/main/java/com/google/devtools/build/lib/skyframe') diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationCommonUtils.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationCommonUtils.java index 50d81b43e7..5efea4b5cd 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationCommonUtils.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationCommonUtils.java @@ -17,6 +17,9 @@ package com.google.devtools.build.lib.skyframe.serialization; import com.google.devtools.build.lib.cmdline.LabelSyntaxException; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.protobuf.ByteString; +import com.google.protobuf.CodedInputStream; +import com.google.protobuf.CodedOutputStream; +import java.io.IOException; /** Common utilities for serialization. */ public class SerializationCommonUtils { @@ -38,4 +41,19 @@ public class SerializationCommonUtils { return RepositoryName.create(repoNameBytes.toStringUtf8()); } } + + public static void serializeNullable(T obj, CodedOutputStream out, ObjectCodec codec) + throws IOException, SerializationException { + if (obj == null) { + out.writeBoolNoTag(false); + } else { + out.writeBoolNoTag(true); + codec.serialize(obj, out); + } + } + + public static T deserializeNullable(CodedInputStream in, ObjectCodec codec) + throws IOException, SerializationException { + return in.readBool() ? codec.deserialize(in) : null; + } } -- cgit v1.2.3