Set topic before we try to use it if it is empty.

Change-Id: I47e1ada1667466f0987af2ff15b07e1bf8e3fec6
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergeChangeAction.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergeChangeAction.java
index c51cd1a..cec8427 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergeChangeAction.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergeChangeAction.java
@@ -73,7 +73,7 @@
     mdsMergeInput.dsBranchMap = branchMap;
     mdsMergeInput.sourceId = change.getId().get();
     mdsMergeInput.project = change.getProject().get();
-    mdsMergeInput.topic = change.getTopic();
+    mdsMergeInput.topic = dsCreator.getOrSetTopic(change.getId().get(), change.getTopic());
     mdsMergeInput.subject = change.getSubject();
     mdsMergeInput.obsoleteRevision = revision;
     mdsMergeInput.currentRevision = revision;
@@ -87,7 +87,7 @@
           "Automerger configuration file is invalid: " + e.getMessage());
     } catch (InvalidQueryParameterException e) {
       throw new ResourceConflictException(
-          "Topic or branch cannot have both braces and quotes: " + e.getMessage());      
+          "Topic or branch cannot have both braces and quotes: " + e.getMessage());
     }
     return Response.none();
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
index 4a4aba0..8de671f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
@@ -390,7 +390,7 @@
   public void createSingleDownstreamMerge(SingleDownstreamMergeInput sdsMergeInput)
       throws RestApiException, ConfigInvalidException {
 
-    String currentTopic = setTopic(sdsMergeInput.sourceId, sdsMergeInput.topic);
+    String currentTopic = getOrSetTopic(sdsMergeInput.sourceId, sdsMergeInput.topic);
 
     MergeInput mergeInput = new MergeInput();
     mergeInput.source = sdsMergeInput.currentRevision;
@@ -422,6 +422,15 @@
     updateVote(downstreamChange.get(), config.getAutomergeLabel(), config.getMaxAutomergeVote());
   }
 
+  public String getOrSetTopic(int sourceId, String topic) throws RestApiException {
+    if (topic == null || topic.isEmpty()) {
+      topic = "am-" + UUID.randomUUID().toString();
+      log.debug("Setting original change {} topic to {}", sourceId, topic);
+      gApi.changes().id(sourceId).topic(topic);
+    }
+    return topic;
+  }
+
   private void automergeChanges(ChangeInfo change, RevisionInfo revisionInfo)
       throws RestApiException, IOException, ConfigInvalidException, InvalidQueryParameterException {
     if (revisionInfo.draft != null && revisionInfo.draft) {
@@ -550,13 +559,4 @@
     abandonInput.message = "Merge parent updated; abandoning due to upstream conflict.";
     gApi.changes().id(changeNumber).abandon(abandonInput);
   }
-
-  private String setTopic(int sourceId, String topic) throws RestApiException {
-    if (topic == null || topic.isEmpty()) {
-      topic = "am-" + UUID.randomUUID().toString();
-      log.debug("Setting original change {} topic to {}", sourceId, topic);
-      gApi.changes().id(sourceId).topic(topic);
-    }
-    return topic;
-  }
 }