DependencyResolver: Resolve using ChangeNotes input Instead of taking a PatchSet.Id as input, prefer a ChangeNotes object and deprecate the less efficient API. Change-Id: Idc9d5ba4d84ba52ec20d204fb0b19da6035ff4c2
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 c7fa832..6633132 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
@@ -134,10 +134,9 @@ /** If needed, create a comment on the change with a DependsOn for the dependencies. */ @Override - public boolean resolveDependencies(PatchSet.Id patchSetId, Set<Set<BranchNameKey>> deliverables) + public boolean resolveDependencies(ChangeNotes changeNotes, Set<Set<BranchNameKey>> deliverables) throws InvalidChangeOperationException, StorageException { - Change.Id cid = patchSetId.changeId(); - Set<DependsOn> deps = load(cid); + Set<DependsOn> deps = load(changeNotes); if (Resolver.isResolved(deps)) { return false; } @@ -146,22 +145,25 @@ return false; // Nothing resolved this pass } // ToDo: add info about the resolved depends-on (deliverable, branch, and ChangeId?) - store(patchSetId, resolved, "Auto-updating resolved Depends-on"); + store(changeNotes, resolved, "Auto-updating resolved Depends-on"); return true; } + /** If needed, create a comment on the change with a DependsOn for the dependencies. */ + @Deprecated + @Override + public boolean resolveDependencies(PatchSet.Id patchSetId, Set<Set<BranchNameKey>> deliverables) + throws InvalidChangeOperationException, StorageException { + return resolveDependencies( + changeNotesFactory.createCheckedUsingIndexLookup(patchSetId.changeId()), deliverables); + } + @Override public boolean hasUnresolvedDependsOn(Change.Id changeId) { return !Resolver.isResolved(load(changeId)); } /** Create a comment on the change with a DependsOn for the deps. */ - public void store(PatchSet.Id patchSetId, Set<DependsOn> deps, String message) - throws InvalidChangeOperationException, StorageException { - store(changeNotesFactory.createCheckedUsingIndexLookup(patchSetId.changeId()), deps, message); - } - - /** Create a comment on the change with a DependsOn for the deps. */ public void store(ChangeNotes changeNotes, Set<DependsOn> deps, String message) throws InvalidChangeOperationException, StorageException { StringBuilder comment = new StringBuilder();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/depends/on/Module.java b/src/main/java/com/googlesource/gerrit/plugins/depends/on/Module.java index 2b40b88..0ac50e2 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/depends/on/Module.java +++ b/src/main/java/com/googlesource/gerrit/plugins/depends/on/Module.java
@@ -26,6 +26,7 @@ import com.google.gerrit.server.DynamicOptions.DynamicBean; import com.google.gerrit.server.change.ChangePluginDefinedInfoFactory; import com.google.gerrit.server.events.EventListener; +import com.google.gerrit.server.notedb.ChangeNotes; import com.google.gerrit.server.project.InvalidChangeOperationException; import com.google.gerrit.server.project.NoSuchChangeException; import com.google.gerrit.server.query.change.ChangeQueryBuilder.ChangeHasOperandFactory; @@ -79,6 +80,14 @@ } @Override + public boolean resolveDependencies( + ChangeNotes changeNotes, Set<Set<BranchNameKey>> deliverables) + throws InvalidChangeOperationException { + return changeMessageStore.resolveDependencies(changeNotes, deliverables); + } + + @Deprecated + @Override public boolean resolveDependencies(PatchSet.Id patchSetId, Set<Set<BranchNameKey>> deliverables) throws InvalidChangeOperationException, StorageException, NoSuchChangeException { return changeMessageStore.resolveDependencies(patchSetId, deliverables);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/depends/on/extensions/DependencyResolver.java b/src/main/java/com/googlesource/gerrit/plugins/depends/on/extensions/DependencyResolver.java index bf92899..3cde2eb 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/depends/on/extensions/DependencyResolver.java +++ b/src/main/java/com/googlesource/gerrit/plugins/depends/on/extensions/DependencyResolver.java
@@ -19,12 +19,17 @@ import com.google.gerrit.entities.PatchSet; import com.google.gerrit.exceptions.StorageException; import com.google.gerrit.server.DynamicOptions.DynamicBean; +import com.google.gerrit.server.notedb.ChangeNotes; import com.google.gerrit.server.project.InvalidChangeOperationException; import java.util.Set; public interface DependencyResolver extends DynamicBean { - public boolean resolveDependencies(PatchSet.Id patchSetId, Set<Set<BranchNameKey>> deliverables) + boolean resolveDependencies(ChangeNotes changeNotes, Set<Set<BranchNameKey>> deliverables) throws InvalidChangeOperationException, StorageException; - public boolean hasUnresolvedDependsOn(Change.Id changeId) throws StorageException; + @Deprecated + boolean resolveDependencies(PatchSet.Id patchSetId, Set<Set<BranchNameKey>> deliverables) + throws InvalidChangeOperationException, StorageException; + + boolean hasUnresolvedDependsOn(Change.Id changeId) throws StorageException; }