aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2017-08-17 22:36:50 +0200
committerGravatar Irina Iancu <elenairina@google.com>2017-08-18 09:02:07 +0200
commit03732205970679f757e6bb82f98c15607db17aa4 (patch)
tree5c594d9418958153a9ca040f36227c06ecbc2a1d /src/main/java/com/google/devtools/build/lib/skyframe
parent41655a9d68008ada3bb4dc5540c21badf25809ed (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.java18
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;
+ }
}