Allow plugins to register options for both ssh and restapi commands
Change-Id: I6976dffa98cb822a207a4de4c549486591e849e8
This commit is contained in:
@@ -14,9 +14,11 @@
|
||||
|
||||
package com.google.gerrit.httpd.plugins;
|
||||
|
||||
import com.google.gerrit.extensions.registration.DynamicMap;
|
||||
import com.google.gerrit.httpd.resources.Resource;
|
||||
import com.google.gerrit.httpd.resources.ResourceKey;
|
||||
import com.google.gerrit.httpd.resources.ResourceWeigher;
|
||||
import com.google.gerrit.server.DynamicOptions;
|
||||
import com.google.gerrit.server.cache.CacheModule;
|
||||
import com.google.gerrit.server.plugins.ModuleGenerator;
|
||||
import com.google.gerrit.server.plugins.ReloadPluginListener;
|
||||
@@ -62,5 +64,7 @@ public class HttpPluginModule extends ServletModule {
|
||||
.weigher(ResourceWeigher.class);
|
||||
}
|
||||
});
|
||||
|
||||
DynamicMap.mapOf(binder(), DynamicOptions.DynamicBean.class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,9 +24,11 @@ import com.google.common.base.Strings;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.ListMultimap;
|
||||
import com.google.gerrit.extensions.registration.DynamicMap;
|
||||
import com.google.gerrit.extensions.restapi.BadRequestException;
|
||||
import com.google.gerrit.extensions.restapi.BinaryResult;
|
||||
import com.google.gerrit.extensions.restapi.Url;
|
||||
import com.google.gerrit.server.DynamicOptions;
|
||||
import com.google.gerrit.util.cli.CmdLineParser;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
@@ -49,16 +51,19 @@ class ParameterParser {
|
||||
ImmutableSet.of("pp", "prettyPrint", "strict", "callback", "alt", "fields");
|
||||
|
||||
private final CmdLineParser.Factory parserFactory;
|
||||
private final DynamicMap<DynamicOptions.DynamicBean> dynamicBeans;
|
||||
|
||||
@Inject
|
||||
ParameterParser(CmdLineParser.Factory pf) {
|
||||
ParameterParser(CmdLineParser.Factory pf, DynamicMap<DynamicOptions.DynamicBean> dynamicBeans) {
|
||||
this.parserFactory = pf;
|
||||
this.dynamicBeans = dynamicBeans;
|
||||
}
|
||||
|
||||
<T> boolean parse(
|
||||
T param, ListMultimap<String, String> in, HttpServletRequest req, HttpServletResponse res)
|
||||
throws IOException {
|
||||
CmdLineParser clp = parserFactory.create(param);
|
||||
DynamicOptions.parse(dynamicBeans, clp, param);
|
||||
try {
|
||||
clp.parseOptionMap(in);
|
||||
} catch (CmdLineException | NumberFormatException e) {
|
||||
|
||||
Reference in New Issue
Block a user