fixup! Add in_depends-on operator

Fix operator to not fail when the provided change does not exist
or is invalid.

Change-Id: I17d45e814fcc24b0b28146c426e83e9b92934d6f
diff --git a/src/main/java/com/googlesource/gerrit/plugins/depends/on/ChangeMessageStore.java b/src/main/java/com/googlesource/gerrit/plugins/depends/on/ChangeMessageStore.java
index 9d4060c..9840df1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/depends/on/ChangeMessageStore.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/depends/on/ChangeMessageStore.java
@@ -31,6 +31,7 @@
 import com.google.gerrit.server.patch.PatchListNotAvailableException;
 import com.google.gerrit.server.permissions.PermissionBackendException;
 import com.google.gerrit.server.project.InvalidChangeOperationException;
+import com.google.gerrit.server.project.NoSuchChangeException;
 import com.google.gerrit.server.restapi.change.PostReview;
 import com.google.gerrit.server.update.UpdateException;
 import com.google.inject.Inject;
@@ -89,7 +90,12 @@
   }
 
   public List<DependsOn> loadWithOrder(Change.Id cid) throws StorageException {
-    ChangeNotes changeNote = changeNotesFactory.createCheckedUsingIndexLookup(cid);
+    ChangeNotes changeNote;
+    try {
+      changeNote = changeNotesFactory.createCheckedUsingIndexLookup(cid);
+    } catch (NoSuchChangeException e) {
+      return Collections.emptyList();
+    }
     for (ChangeMessage message : Lists.reverse(cmUtil.byChange(changeNote))) {
       Optional<List<DependsOn>> deps = Comment.from(message.getMessage());
       if (deps.isPresent()) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/depends/on/InDependsOnOperator.java b/src/main/java/com/googlesource/gerrit/plugins/depends/on/InDependsOnOperator.java
index e5566f0..3d15985 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/depends/on/InDependsOnOperator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/depends/on/InDependsOnOperator.java
@@ -24,6 +24,8 @@
 import com.google.gerrit.server.query.change.ChangeQueryBuilder.ChangeOperatorFactory;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
+import java.util.Collections;
+import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 import org.slf4j.Logger;
@@ -38,10 +40,13 @@
 
     public InDependsOnPredicate(String value) {
       super(InDependsOnOperator.FIELD, value);
+      Optional<Change.Id> changeId = Change.Id.tryParse(value);
       dependentChanges =
-          changeMessageStore.load(Change.Id.tryParse(value).get()).stream()
-              .map(d -> d.id())
-              .collect(Collectors.toSet());
+          changeId.isPresent()
+              ? changeMessageStore.load(changeId.get()).stream()
+                  .map(d -> d.id())
+                  .collect(Collectors.toSet())
+              : Collections.emptySet();
     }
 
     @Override
diff --git a/test/test_dependson_operators.sh b/test/test_dependson_operators.sh
index 03c31c3..8d64a9b 100755
--- a/test/test_dependson_operators.sh
+++ b/test/test_dependson_operators.sh
@@ -128,6 +128,9 @@
 ACTUAL="$(query "independson:$CHANGE" | jq --raw-output '.number')"
 result_out "independson operator" "$DEPENDENT_CHANGE" "$ACTUAL"
 
+ACTUAL="$(query "independson:99999" | jq --raw-output '.number')"
+result_out "independson operator (non-existent change)" "null" "$ACTUAL"
+
 # ------------------------- has:a_depends-on Tests ---------------------------
 CHANGE_1=$(create_change "$SRC_REF_BRANCH" "$FILE_A") || \
     die "Failed to create change on project: $PROJECT branch: $SRC_REF_BRANCH"