Fix serialization of missing UUID

new byte['e'] was thought to produce [101] but it produces an byte[]
of length 101 containing only zero's.

Add serialization test for missing UUID.

Solves: Jira GER-1615
Change-Id: I5ead35124111aa3c33180e2cc889a9c06dce4e34
diff --git a/src/main/java/com/googlesource/gerrit/plugins/eventseiffel/cache/UUIDSerializer.java b/src/main/java/com/googlesource/gerrit/plugins/eventseiffel/cache/UUIDSerializer.java
index 64e4e6e..a6bfaa3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/eventseiffel/cache/UUIDSerializer.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/eventseiffel/cache/UUIDSerializer.java
@@ -15,15 +15,18 @@
 package com.googlesource.gerrit.plugins.eventseiffel.cache;
 
 import com.google.gerrit.server.cache.serialize.CacheSerializer;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
 import java.util.Optional;
 import java.util.UUID;
 
 public class UUIDSerializer implements CacheSerializer<Optional<UUID>> {
+  public static final byte[] EMPTY = "empty".getBytes(StandardCharsets.US_ASCII);
 
   @Override
   public byte[] serialize(Optional<UUID> object) {
     if (object.isEmpty()) {
-      return new byte['e'];
+      return EMPTY;
     }
     byte[] result = new byte[Long.BYTES * 2];
     int i = result.length - 1;
@@ -42,7 +45,7 @@
 
   @Override
   public Optional<UUID> deserialize(byte[] in) {
-    if (in.length == 1 && in[0] == 'e') {
+    if (Arrays.equals(in, EMPTY)) {
       return Optional.empty();
     }
     long ls = 0;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/eventseiffel/cache/IdCacheSerializerTest.java b/src/test/java/com/googlesource/gerrit/plugins/eventseiffel/cache/IdCacheSerializerTest.java
index cf6805a..5badcd8 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/eventseiffel/cache/IdCacheSerializerTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/eventseiffel/cache/IdCacheSerializerTest.java
@@ -15,6 +15,7 @@
 package com.googlesource.gerrit.plugins.eventseiffel.cache;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import com.googlesource.gerrit.plugins.eventseiffel.eiffel.ArtifactEventKey;
 import com.googlesource.gerrit.plugins.eventseiffel.eiffel.CompositionDefinedEventKey;
@@ -55,6 +56,14 @@
     assertEquals(actual, deserialized);
   }
 
+  @Test
+  public void missingUuidSerializedCorrectly() throws Exception {
+    UUIDSerializer uuidSerializer = new UUIDSerializer();
+    byte[] serialized = uuidSerializer.serialize(Optional.empty());
+    Optional<UUID> deserialized = uuidSerializer.deserialize(serialized);
+    assertTrue(deserialized.isEmpty());
+  }
+
   private void eventKeyIsSerializedCorrectly(EventKey actual) throws Exception {
     EventKeySerializer keySerializer = new EventKeySerializer();
     byte[] serialized = keySerializer.serialize(actual);