diff options
author | 2017-08-17 22:36:50 +0200 | |
---|---|---|
committer | 2017-08-18 09:02:07 +0200 | |
commit | 03732205970679f757e6bb82f98c15607db17aa4 (patch) | |
tree | 5c594d9418958153a9ca040f36227c06ecbc2a1d /src/main/java/com/google/devtools/build/lib/skyframe | |
parent | 41655a9d68008ada3bb4dc5540c21badf25809ed (diff) |
Properly handle some values that can be null in AppleCommandLineOptions.
PiperOrigin-RevId: 165622047
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationCommonUtils.java | 18 |
1 files changed, 18 insertions, 0 deletions
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 <T> void serializeNullable(T obj, CodedOutputStream out, ObjectCodec<T> codec) + throws IOException, SerializationException { + if (obj == null) { + out.writeBoolNoTag(false); + } else { + out.writeBoolNoTag(true); + codec.serialize(obj, out); + } + } + + public static <T> T deserializeNullable(CodedInputStream in, ObjectCodec<T> codec) + throws IOException, SerializationException { + return in.readBool() ? codec.deserialize(in) : null; + } } |