TracingHook: Simplify parsing of trace option

We don't need to create a map just to parse the trace option.

Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: I55b4839111d22f30b5c28fd24a6e1869a7892a4b
diff --git a/java/com/google/gerrit/server/git/TracingHook.java b/java/com/google/gerrit/server/git/TracingHook.java
index 4191373..63d8bc6 100644
--- a/java/com/google/gerrit/server/git/TracingHook.java
+++ b/java/com/google/gerrit/server/git/TracingHook.java
@@ -16,9 +16,6 @@
 
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.collect.Iterables;
-import com.google.common.collect.LinkedListMultimap;
-import com.google.common.collect.ListMultimap;
 import com.google.gerrit.server.logging.TraceContext;
 import java.util.List;
 import java.util.Optional;
@@ -79,21 +76,20 @@
       return Optional.empty();
     }
 
-    ListMultimap<String, String> serverOptions = LinkedListMultimap.create();
-    for (String option : serverOptionList) {
-      int e = option.indexOf('=');
-      if (e > 0) {
-        serverOptions.put(option.substring(0, e), option.substring(e + 1));
-      } else {
-        serverOptions.put(option, "");
-      }
+    Optional<String> traceOption =
+        serverOptionList.stream().filter(o -> o.startsWith("trace")).findAny();
+    if (!traceOption.isPresent()) {
+      return Optional.empty();
     }
 
-    List<String> traceValues = serverOptions.get("trace");
-    if (!traceValues.isEmpty()) {
-      return Optional.of(Iterables.getLast(traceValues));
+    int e = traceOption.get().indexOf('=');
+    if (e > 0) {
+      // trace option was specified with trace ID: "--trace=<trace-ID>"
+      return Optional.of(traceOption.get().substring(e + 1));
     }
 
-    return Optional.empty();
+    // trace option was specified without trace ID: "--trace",
+    // return an empty string so that a trace ID is generated
+    return Optional.of("");
   }
 }