diff --git a/java/com/google/gerrit/server/query/change/ChangeQueryProcessor.java b/java/com/google/gerrit/server/query/change/ChangeQueryProcessor.java index 7a7f71d175..7bdfcab7e1 100644 --- a/java/com/google/gerrit/server/query/change/ChangeQueryProcessor.java +++ b/java/com/google/gerrit/server/query/change/ChangeQueryProcessor.java @@ -17,6 +17,7 @@ package com.google.gerrit.server.query.change; import static com.google.common.base.Preconditions.checkState; import static com.google.gerrit.server.query.change.ChangeQueryBuilder.FIELD_LIMIT; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableListMultimap; import com.google.gerrit.extensions.common.PluginDefinedInfo; import com.google.gerrit.extensions.registration.DynamicMap; @@ -45,7 +46,6 @@ import com.google.gerrit.server.project.ProjectCache; import com.google.inject.Inject; import com.google.inject.Provider; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Set; @@ -56,9 +56,7 @@ import java.util.Set; * holding on to a single instance. */ public class ChangeQueryProcessor extends QueryProcessor - implements DynamicOptions.BeanReceiver, - DynamicOptions.BeanProvider, - PluginDefinedAttributesFactory { + implements DynamicOptions.BeanReceiver, DynamicOptions.BeanProvider { private final Provider userProvider; private final ChangeNotes.Factory notesFactory; private final ImmutableListMultimap attributeFactoriesByPlugin; @@ -131,8 +129,11 @@ public class ChangeQueryProcessor extends QueryProcessor return dynamicBeans.get(plugin); } - @Override - public List create(ChangeData cd) { + public PluginDefinedAttributesFactory getAttributesFactory() { + return this::buildPluginInfo; + } + + private ImmutableList buildPluginInfo(ChangeData cd) { return PluginDefinedAttributesFactories.createAll( cd, this, diff --git a/java/com/google/gerrit/server/query/change/OutputStreamQuery.java b/java/com/google/gerrit/server/query/change/OutputStreamQuery.java index 607d970199..09ff687054 100644 --- a/java/com/google/gerrit/server/query/change/OutputStreamQuery.java +++ b/java/com/google/gerrit/server/query/change/OutputStreamQuery.java @@ -324,7 +324,7 @@ public class OutputStreamQuery { eventFactory.addDependencies(rw, c, d.change(), d.currentPatchSet()); } - c.plugins = queryProcessor.create(d); + c.plugins = queryProcessor.getAttributesFactory().create(d); return c; } diff --git a/java/com/google/gerrit/server/restapi/change/QueryChanges.java b/java/com/google/gerrit/server/restapi/change/QueryChanges.java index 23b3011676..6176ea05c4 100644 --- a/java/com/google/gerrit/server/restapi/change/QueryChanges.java +++ b/java/com/google/gerrit/server/restapi/change/QueryChanges.java @@ -143,7 +143,8 @@ public class QueryChanges implements RestReadView, DynamicOpti int cnt = queries.size(); List> results = imp.query(qb.parse(queries)); - List> res = json.create(options, this.imp).format(results); + List> res = + json.create(options, this.imp.getAttributesFactory()).format(results); for (int n = 0; n < cnt; n++) { List info = res.get(n); if (results.get(n).more() && !info.isEmpty()) {