From 415019b7d9897e09f00be06154e6c9a190d8155c Mon Sep 17 00:00:00 2001 From: Nasser Grainawi Date: Tue, 30 Oct 2018 20:44:15 -0700 Subject: [PATCH] BugFix: Add the BeanReceiver plumbing to the top-level query commands An earlier change made ChangeQueryProcessor implement the BeanReceiver interface, but that's not sufficient to support the real use cases. In order for the ChangeQueryProcessor to get the DynamicBeans invoked with a query, the Query and QueryChanges commands need to set the DynamicBeans on the ChangeQueryProcessor. Change-Id: I087cde95a109fda8b4ca879b293e3586041c3a77 --- .../gerrit/server/query/change/OutputStreamQuery.java | 5 +++++ .../google/gerrit/server/restapi/change/QueryChanges.java | 7 ++++++- java/com/google/gerrit/sshd/commands/Query.java | 7 ++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/java/com/google/gerrit/server/query/change/OutputStreamQuery.java b/java/com/google/gerrit/server/query/change/OutputStreamQuery.java index 1287970a42..17c23b6fdf 100644 --- a/java/com/google/gerrit/server/query/change/OutputStreamQuery.java +++ b/java/com/google/gerrit/server/query/change/OutputStreamQuery.java @@ -24,6 +24,7 @@ import com.google.gerrit.index.query.QueryResult; import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.server.ReviewDb; +import com.google.gerrit.server.DynamicOptions; import com.google.gerrit.server.config.TrackingFooters; import com.google.gerrit.server.data.ChangeAttribute; import com.google.gerrit.server.data.PatchSetAttribute; @@ -180,6 +181,10 @@ public class OutputStreamQuery { this.outputFormat = fmt; } + public void setDynamicBean(String plugin, DynamicOptions.DynamicBean dynamicBean) { + queryProcessor.setDynamicBean(plugin, dynamicBean); + } + public void query(String queryString) throws IOException { out = new PrintWriter( // diff --git a/java/com/google/gerrit/server/restapi/change/QueryChanges.java b/java/com/google/gerrit/server/restapi/change/QueryChanges.java index 2284b008be..4a145bc8b0 100644 --- a/java/com/google/gerrit/server/restapi/change/QueryChanges.java +++ b/java/com/google/gerrit/server/restapi/change/QueryChanges.java @@ -25,6 +25,7 @@ import com.google.gerrit.extensions.restapi.TopLevelResource; import com.google.gerrit.index.query.QueryParseException; import com.google.gerrit.index.query.QueryRequiresAuthException; import com.google.gerrit.index.query.QueryResult; +import com.google.gerrit.server.DynamicOptions; import com.google.gerrit.server.change.ChangeJson; import com.google.gerrit.server.permissions.PermissionBackendException; import com.google.gerrit.server.query.change.ChangeData; @@ -38,7 +39,7 @@ import java.util.EnumSet; import java.util.List; import org.kohsuke.args4j.Option; -public class QueryChanges implements RestReadView { +public class QueryChanges implements RestReadView, DynamicOptions.BeanReceiver { private static final FluentLogger logger = FluentLogger.forEnclosingClass(); private final ChangeJson.Factory json; @@ -81,6 +82,10 @@ public class QueryChanges implements RestReadView { imp.setStart(start); } + public void setDynamicBean(String plugin, DynamicOptions.DynamicBean dynamicBean) { + imp.setDynamicBean(plugin, dynamicBean); + } + @Inject QueryChanges(ChangeJson.Factory json, ChangeQueryBuilder qb, ChangeQueryProcessor qp) { this.json = json; diff --git a/java/com/google/gerrit/sshd/commands/Query.java b/java/com/google/gerrit/sshd/commands/Query.java index 3fe0396a95..c4a21d12ee 100644 --- a/java/com/google/gerrit/sshd/commands/Query.java +++ b/java/com/google/gerrit/sshd/commands/Query.java @@ -14,6 +14,7 @@ package com.google.gerrit.sshd.commands; +import com.google.gerrit.server.DynamicOptions; import com.google.gerrit.server.query.change.OutputStreamQuery; import com.google.gerrit.server.query.change.OutputStreamQuery.OutputFormat; import com.google.gerrit.sshd.CommandMetaData; @@ -24,7 +25,7 @@ import org.kohsuke.args4j.Argument; import org.kohsuke.args4j.Option; @CommandMetaData(name = "query", description = "Query the change database") -public class Query extends SshCommand { +public class Query extends SshCommand implements DynamicOptions.BeanReceiver { @Inject private OutputStreamQuery processor; @Option(name = "--format", metaVar = "FMT", usage = "Output display format") @@ -103,6 +104,10 @@ public class Query extends SshCommand { processor.query(join(query, " ")); } + public void setDynamicBean(String plugin, DynamicOptions.DynamicBean dynamicBean) { + processor.setDynamicBean(plugin, dynamicBean); + } + @Override protected void parseCommandLine() throws UnloggedFailure { processor.setOutput(out, OutputFormat.TEXT);