Merge "Expect API field to be null"
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 b61675c..63416a4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
@@ -100,10 +100,15 @@
   public void onChangeAbandoned(ChangeAbandonedListener.Event event) {
     try (ManualRequestContext ctx = oneOffRequestContext.openAs(config.getContextUserId())) {
       ChangeInfo change = event.getChange();
-      String revision = event.getRevision().commit.commit;
+      String revision =
+          gApi.changes()
+              .id(change._number)
+              .revision(event.getRevision()._number)
+              .commit(false)
+              .commit;
       log.debug("Detected revision {} abandoned on {}.", revision, change.project);
       abandonDownstream(change, revision);
-    } catch (ConfigInvalidException | StorageException e) {
+    } catch (ConfigInvalidException | StorageException | RestApiException e) {
       log.error("Automerger plugin failed onChangeAbandoned for {}", event.getChange().id, e);
     }
   }
@@ -191,7 +196,7 @@
         return;
       }
       ChangeInfo change = event.getChange();
-      String revision = change.currentRevision;
+      String revision = gApi.changes().id(event.getChange()._number).current().commit(false).commit;
       Set<String> downstreamBranches;
       downstreamBranches = config.getDownstreamBranches(change.branch, change.project);
 
@@ -558,7 +563,8 @@
   private void automergeChanges(ChangeInfo change, RevisionInfo revisionInfo)
       throws RestApiException, IOException, ConfigInvalidException, InvalidQueryParameterException,
           StorageException {
-    String currentRevision = revisionInfo.commit.commit;
+    String currentRevision =
+        gApi.changes().id(change._number).revision(revisionInfo._number).commit(false).commit;
     log.debug(
         "Handling patchsetevent with change id {} and revision {}", change.id, currentRevision);
 
diff --git a/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java b/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java
index a59bff8..c472128 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreatorIT.java
@@ -56,6 +56,7 @@
 import com.google.gerrit.extensions.restapi.BinaryResult;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.server.group.SystemGroupBackend;
+import com.google.gerrit.testing.ConfigSuite;
 import com.google.inject.Inject;
 import com.googlesource.gerrit.plugins.automerger.helpers.ConfigOption;
 import java.io.InputStream;
@@ -76,6 +77,18 @@
   @Inject private GroupOperations groupOperations;
   @Inject private ProjectOperations projectOperations;
 
+  @ConfigSuite.Default
+  public static Config minimalEventPayload() {
+    Config cfg = new Config();
+    // Expect only identifiers in internal Gerrit events
+    cfg.setStringList(
+        "event",
+        "payload",
+        "listChangeOptions",
+        ImmutableList.of("SKIP_MERGEABLE", "SKIP_DIFFSTAT"));
+    return cfg;
+  }
+
   @Test
   public void testExpectedFlow() throws Exception {
     Project.NameKey manifestNameKey = defaultSetup();