Implement new /changes/{id}/action style REST API
All existing JSON APIs are converted to this new style.
/changes/{id} parses the id field from a JSON response from a prior
response and uses that to uniquely identify a change and verify the
caller can see it. If the user requests only /changes/{id}/ then the
data is returned as a single JSON object.
This commit also gives full remote control of plugins using the
/plugins/ namespace:
PUT /plugins/{name} (JAR as request body)
POST /plugins/{name} (JSON object {url:"https://..."})
DELETE /plugins/{name}
GET /plugins/{name}/gerrit~status
POST /plugins/{name}/gerrit~reload
POST /plugins/{name}/gerrit~enable
POST /plugins/{name}/gerrit~disable
The commit provides some project admin commands:
GET /projects/{name}/description
PUT /projects/{name}/description
GET /projects/{name}/parent
PUT /projects/{name}/parent
Project dashboards have moved:
GET /projects/{name}/dashboards
GET /projects/{name}/dashboards/{id}
GET /projects/{name}/dashboards/default
To access project names containing /, the name must be encoded with
URL encoding, translating / to %2F.
Change-Id: I6a38902ee473003ec637758b7c911f926a2e948a
This commit is contained in:
@@ -14,10 +14,14 @@
|
||||
|
||||
package com.google.gerrit.server.plugins;
|
||||
|
||||
import static com.google.gerrit.server.plugins.PluginResource.PLUGIN_KIND;
|
||||
|
||||
import com.google.gerrit.extensions.registration.DynamicMap;
|
||||
import com.google.gerrit.extensions.restapi.RestApiModule;
|
||||
import com.google.gerrit.extensions.systemstatus.ServerInformation;
|
||||
import com.google.gerrit.lifecycle.LifecycleModule;
|
||||
|
||||
public class PluginModule extends LifecycleModule {
|
||||
public class PluginModule extends RestApiModule {
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(ServerInformationImpl.class);
|
||||
@@ -26,8 +30,20 @@ public class PluginModule extends LifecycleModule {
|
||||
bind(PluginCleanerTask.class);
|
||||
bind(PluginGuiceEnvironment.class);
|
||||
bind(PluginLoader.class);
|
||||
|
||||
bind(CopyConfigModule.class);
|
||||
listener().to(PluginLoader.class);
|
||||
install(new LifecycleModule() {
|
||||
@Override
|
||||
protected void configure() {
|
||||
listener().to(PluginLoader.class);
|
||||
}
|
||||
});
|
||||
|
||||
DynamicMap.mapOf(binder(), PLUGIN_KIND);
|
||||
put(PLUGIN_KIND).to(InstallPlugin.Overwrite.class);
|
||||
delete(PLUGIN_KIND).to(DisablePlugin.class);
|
||||
get(PLUGIN_KIND, "status").to(GetStatus.class);
|
||||
post(PLUGIN_KIND, "disable").to(DisablePlugin.class);
|
||||
post(PLUGIN_KIND, "enable").to(EnablePlugin.class);
|
||||
post(PLUGIN_KIND, "reload").to(ReloadPlugin.class);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user