Rename @CommandMetaData(descr) to description

In e51c428fe5 the metadata was
introduced using the attribute "descr".  We do not usually permit
abbreviations in APIs, and especially should not have accepted it
for an API plugins can use.

Mark descr as deprecated so current plugins can migrate.  Use
description if available, and fall back to descr for older code.

Change-Id: I662482cd228f81bf1537062b9fe03b6c23354a78
This commit is contained in:
Shawn Pearce
2013-08-12 19:49:41 -07:00
committed by David Pursehouse
parent be2d53e50b
commit 5b70c223ba
35 changed files with 47 additions and 35 deletions

View File

@@ -357,7 +357,7 @@ this capability in the usual way, using the `RequiresCapability` annotation:
==== ====
@RequiresCapability("printHello") @RequiresCapability("printHello")
@CommandMetaData(name="print", descr="Print greeting in different languages") @CommandMetaData(name="print", description="Print greeting in different languages")
public final class PrintHelloWorldCommand extends SshCommand { public final class PrintHelloWorldCommand extends SshCommand {
... ...
==== ====

View File

@@ -27,5 +27,9 @@ import java.lang.annotation.Target;
@Retention(RUNTIME) @Retention(RUNTIME)
public @interface CommandMetaData { public @interface CommandMetaData {
String name(); String name();
String description() default "";
/** @deprecated use description intead. */
@Deprecated
String descr() default ""; String descr() default "";
} }

View File

@@ -14,6 +14,8 @@
package com.google.gerrit.sshd; package com.google.gerrit.sshd;
import com.google.common.base.Objects;
import com.google.common.base.Strings;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
import com.google.inject.binder.LinkedBindingBuilder; import com.google.inject.binder.LinkedBindingBuilder;
@@ -74,7 +76,7 @@ public abstract class CommandModule extends AbstractModule {
if (meta == null) { if (meta == null) {
throw new IllegalStateException("no CommandMetaData annotation found"); throw new IllegalStateException("no CommandMetaData annotation found");
} }
bind(Commands.key(parent, meta.name(), meta.descr())).to(clazz); bind(Commands.key(parent, meta.name(), description(meta))).to(clazz);
} }
/** /**
@@ -93,7 +95,13 @@ public abstract class CommandModule extends AbstractModule {
if (meta == null) { if (meta == null) {
throw new IllegalStateException("no CommandMetaData annotation found"); throw new IllegalStateException("no CommandMetaData annotation found");
} }
bind(Commands.key(parent, name, meta.descr())).to(clazz); bind(Commands.key(parent, name, description(meta))).to(clazz);
}
private static String description(CommandMetaData meta) {
return Objects.firstNonNull(
Strings.emptyToNull(meta.description()),
meta.descr());
} }
/** /**

View File

@@ -28,7 +28,7 @@ import org.kohsuke.args4j.Option;
/** Opens a query processor. */ /** Opens a query processor. */
@AdminHighPriorityCommand @AdminHighPriorityCommand
@RequiresCapability(GlobalCapability.ACCESS_DATABASE) @RequiresCapability(GlobalCapability.ACCESS_DATABASE)
@CommandMetaData(name = "gsql", descr = "Administrative interface to active database") @CommandMetaData(name = "gsql", description = "Administrative interface to active database")
final class AdminQueryShell extends SshCommand { final class AdminQueryShell extends SshCommand {
@Inject @Inject
private QueryShell.Factory factory; private QueryShell.Factory factory;

View File

@@ -50,7 +50,7 @@ import java.util.List;
import java.util.Set; import java.util.Set;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@CommandMetaData(name = "set-project-parent", descr = "Change the project permissions are inherited from") @CommandMetaData(name = "set-project-parent", description = "Change the project permissions are inherited from")
final class AdminSetParent extends SshCommand { final class AdminSetParent extends SshCommand {
private static final Logger log = LoggerFactory.getLogger(AdminSetParent.class); private static final Logger log = LoggerFactory.getLogger(AdminSetParent.class);

View File

@@ -33,7 +33,7 @@ import java.io.PrintWriter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@CommandMetaData(name = "ban-commit", descr = "Ban a commit from a project's repository") @CommandMetaData(name = "ban-commit", description = "Ban a commit from a project's repository")
public class BanCommitCommand extends SshCommand { public class BanCommitCommand extends SshCommand {
@Option(name = "--reason", aliases = {"-r"}, metaVar = "REASON", usage = "reason for banning the commit") @Option(name = "--reason", aliases = {"-r"}, metaVar = "REASON", usage = "reason for banning the commit")
private String reason; private String reason;

View File

@@ -39,7 +39,7 @@ import java.util.List;
/** Create a new user account. **/ /** Create a new user account. **/
@RequiresCapability(GlobalCapability.CREATE_ACCOUNT) @RequiresCapability(GlobalCapability.CREATE_ACCOUNT)
@CommandMetaData(name = "create-account", descr = "Create a new batch/role account") @CommandMetaData(name = "create-account", description = "Create a new batch/role account")
final class CreateAccountCommand extends SshCommand { final class CreateAccountCommand extends SshCommand {
@Option(name = "--group", aliases = {"-g"}, metaVar = "GROUP", usage = "groups to add account to") @Option(name = "--group", aliases = {"-g"}, metaVar = "GROUP", usage = "groups to add account to")
private List<AccountGroup.Id> groups = new ArrayList<AccountGroup.Id>(); private List<AccountGroup.Id> groups = new ArrayList<AccountGroup.Id>();

View File

@@ -38,7 +38,7 @@ import java.util.Set;
* Optionally, puts an initial set of user in the newly created group. * Optionally, puts an initial set of user in the newly created group.
*/ */
@RequiresCapability(GlobalCapability.CREATE_GROUP) @RequiresCapability(GlobalCapability.CREATE_GROUP)
@CommandMetaData(name = "create-group", descr = "Create a new account group") @CommandMetaData(name = "create-group", description = "Create a new account group")
final class CreateGroupCommand extends SshCommand { final class CreateGroupCommand extends SshCommand {
@Option(name = "--owner", aliases = {"-o"}, metaVar = "GROUP", usage = "owning group, if not specified the group will be self-owning") @Option(name = "--owner", aliases = {"-o"}, metaVar = "GROUP", usage = "owning group, if not specified the group will be self-owning")
private AccountGroup.Id ownerGroupId; private AccountGroup.Id ownerGroupId;

View File

@@ -36,7 +36,7 @@ import java.util.List;
/** Create a new project. **/ /** Create a new project. **/
@RequiresCapability(GlobalCapability.CREATE_PROJECT) @RequiresCapability(GlobalCapability.CREATE_PROJECT)
@CommandMetaData(name = "create-project", descr = "Create a new project and associated Git repository") @CommandMetaData(name = "create-project", description = "Create a new project and associated Git repository")
final class CreateProjectCommand extends SshCommand { final class CreateProjectCommand extends SshCommand {
@Option(name = "--name", aliases = {"-n"}, metaVar = "NAME", usage = "name of project to be created (deprecated option)") @Option(name = "--name", aliases = {"-n"}, metaVar = "NAME", usage = "name of project to be created (deprecated option)")
void setProjectNameFromOption(String name) { void setProjectNameFromOption(String name) {

View File

@@ -31,7 +31,7 @@ import java.util.SortedSet;
/** Causes the caches to purge all entries and reload. */ /** Causes the caches to purge all entries and reload. */
@RequiresCapability(GlobalCapability.FLUSH_CACHES) @RequiresCapability(GlobalCapability.FLUSH_CACHES)
@CommandMetaData(name = "flush-caches", descr = "Flush some/all server caches from memory") @CommandMetaData(name = "flush-caches", description = "Flush some/all server caches from memory")
final class FlushCaches extends CacheCommand { final class FlushCaches extends CacheCommand {
private static final String WEB_SESSIONS = "web_sessions"; private static final String WEB_SESSIONS = "web_sessions";

View File

@@ -37,7 +37,7 @@ import java.util.List;
/** Runs the Git garbage collection. */ /** Runs the Git garbage collection. */
@RequiresCapability(GlobalCapability.RUN_GC) @RequiresCapability(GlobalCapability.RUN_GC)
@CommandMetaData(name = "gc", descr = "Run Git garbage collection") @CommandMetaData(name = "gc", description = "Run Git garbage collection")
public class GarbageCollectionCommand extends BaseCommand { public class GarbageCollectionCommand extends BaseCommand {
@Option(name = "--all", usage = "runs the Git garbage collection for all projects") @Option(name = "--all", usage = "runs the Git garbage collection for all projects")

View File

@@ -37,7 +37,7 @@ import org.kohsuke.args4j.Option;
import java.io.PrintWriter; import java.io.PrintWriter;
@CommandMetaData(name = "ls-groups", descr = "List groups visible to the caller") @CommandMetaData(name = "ls-groups", description = "List groups visible to the caller")
public class ListGroupsCommand extends BaseCommand { public class ListGroupsCommand extends BaseCommand {
@Inject @Inject
private MyListGroups impl; private MyListGroups impl;

View File

@@ -39,7 +39,7 @@ import javax.inject.Inject;
/** /**
* Implements a command that allows the user to see the members of a group. * Implements a command that allows the user to see the members of a group.
*/ */
@CommandMetaData(name = "ls-members", descr = "Lists the members of a given group") @CommandMetaData(name = "ls-members", description = "Lists the members of a given group")
public class ListMembersCommand extends BaseCommand { public class ListMembersCommand extends BaseCommand {
@Inject @Inject
ListMembersCommandImpl impl; ListMembersCommandImpl impl;

View File

@@ -23,7 +23,7 @@ import org.apache.sshd.server.Environment;
import java.util.List; import java.util.List;
@CommandMetaData(name = "ls-projects", descr = "List projects visible to the caller") @CommandMetaData(name = "ls-projects", description = "List projects visible to the caller")
final class ListProjectsCommand extends BaseCommand { final class ListProjectsCommand extends BaseCommand {
@Inject @Inject
private ListProjects impl; private ListProjects impl;

View File

@@ -40,7 +40,7 @@ import java.io.IOException;
import java.util.Map; import java.util.Map;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@CommandMetaData(name = "ls-user-refs", descr = "List refs visible to a specific user") @CommandMetaData(name = "ls-user-refs", description = "List refs visible to a specific user")
public class LsUserRefs extends SshCommand { public class LsUserRefs extends SshCommand {
@Inject @Inject
private AccountResolver accountResolver; private AccountResolver accountResolver;

View File

@@ -28,7 +28,7 @@ import org.kohsuke.args4j.Argument;
import java.util.List; import java.util.List;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@CommandMetaData(name = "enable", descr = "Enable plugins") @CommandMetaData(name = "enable", description = "Enable plugins")
final class PluginEnableCommand extends SshCommand { final class PluginEnableCommand extends SshCommand {
@Argument(index = 0, metaVar = "NAME", required = true, usage = "plugin(s) to enable") @Argument(index = 0, metaVar = "NAME", required = true, usage = "plugin(s) to enable")
List<String> names; List<String> names;

View File

@@ -35,7 +35,7 @@ import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@CommandMetaData(name = "install", descr = "Install/Add a plugin") @CommandMetaData(name = "install", description = "Install/Add a plugin")
final class PluginInstallCommand extends SshCommand { final class PluginInstallCommand extends SshCommand {
@Option(name = "--name", aliases = {"-n"}, usage = "install under name") @Option(name = "--name", aliases = {"-n"}, usage = "install under name")
private String name; private String name;

View File

@@ -26,7 +26,7 @@ import org.apache.sshd.server.Environment;
import java.io.IOException; import java.io.IOException;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@CommandMetaData(name = "ls", descr = "List the installed plugins") @CommandMetaData(name = "ls", description = "List the installed plugins")
final class PluginLsCommand extends BaseCommand { final class PluginLsCommand extends BaseCommand {
@Inject @Inject
private ListPlugins impl; private ListPlugins impl;

View File

@@ -28,7 +28,7 @@ import org.kohsuke.args4j.Argument;
import java.util.List; import java.util.List;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@CommandMetaData(name = "reload", descr = "Reload/Restart plugins") @CommandMetaData(name = "reload", description = "Reload/Restart plugins")
final class PluginReloadCommand extends SshCommand { final class PluginReloadCommand extends SshCommand {
@Argument(index = 0, metaVar = "NAME", usage = "plugins to reload/restart") @Argument(index = 0, metaVar = "NAME", usage = "plugins to reload/restart")
private List<String> names; private List<String> names;

View File

@@ -27,7 +27,7 @@ import org.kohsuke.args4j.Argument;
import java.util.List; import java.util.List;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@CommandMetaData(name = "remove", descr = "Disable plugins") @CommandMetaData(name = "remove", description = "Disable plugins")
final class PluginRemoveCommand extends SshCommand { final class PluginRemoveCommand extends SshCommand {
@Argument(index = 0, metaVar = "NAME", required = true, usage = "plugin to remove") @Argument(index = 0, metaVar = "NAME", required = true, usage = "plugin to remove")
List<String> names; List<String> names;

View File

@@ -24,7 +24,7 @@ import org.kohsuke.args4j.Option;
import java.util.List; import java.util.List;
@CommandMetaData(name = "query", descr = "Query the change database") @CommandMetaData(name = "query", description = "Query the change database")
class Query extends SshCommand { class Query extends SshCommand {
@Inject @Inject
private QueryProcessor processor; private QueryProcessor processor;

View File

@@ -42,7 +42,7 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
/** Receives change upload over SSH using the Git receive-pack protocol. */ /** Receives change upload over SSH using the Git receive-pack protocol. */
@CommandMetaData(name = "receive-pack", descr = "Standard Git server side command for client side git push") @CommandMetaData(name = "receive-pack", description = "Standard Git server side command for client side git push")
final class Receive extends AbstractGitCommand { final class Receive extends AbstractGitCommand {
private static final Logger log = LoggerFactory.getLogger(Receive.class); private static final Logger log = LoggerFactory.getLogger(Receive.class);

View File

@@ -25,7 +25,7 @@ import com.google.inject.Inject;
import org.kohsuke.args4j.Argument; import org.kohsuke.args4j.Argument;
@CommandMetaData(name = "rename-group", descr = "Rename an account group") @CommandMetaData(name = "rename-group", description = "Rename an account group")
public class RenameGroupCommand extends SshCommand { public class RenameGroupCommand extends SshCommand {
@Argument(index = 0, required = true, metaVar = "GROUP", usage = "name of the group to be renamed") @Argument(index = 0, required = true, metaVar = "GROUP", usage = "name of the group to be renamed")
private String groupName; private String groupName;

View File

@@ -63,7 +63,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@CommandMetaData(name = "review", descr = "Verify, approve and/or submit one or more patch sets") @CommandMetaData(name = "review", description = "Verify, approve and/or submit one or more patch sets")
public class ReviewCommand extends SshCommand { public class ReviewCommand extends SshCommand {
private static final Logger log = private static final Logger log =
LoggerFactory.getLogger(ReviewCommand.class); LoggerFactory.getLogger(ReviewCommand.class);

View File

@@ -55,7 +55,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
/** Set a user's account settings. **/ /** Set a user's account settings. **/
@CommandMetaData(name = "set-account", descr = "Change an account's settings") @CommandMetaData(name = "set-account", description = "Change an account's settings")
final class SetAccountCommand extends BaseCommand { final class SetAccountCommand extends BaseCommand {
@Argument(index = 0, required = true, metaVar = "USER", usage = "full name, email-address, ssh username or account id") @Argument(index = 0, required = true, metaVar = "USER", usage = "full name, email-address, ssh username or account id")

View File

@@ -43,7 +43,7 @@ import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.util.List; import java.util.List;
@CommandMetaData(name = "set-members", descr = "Modifies members of specific group or number of groups") @CommandMetaData(name = "set-members", description = "Modifies members of specific group or number of groups")
public class SetMembersCommand extends SshCommand { public class SetMembersCommand extends SshCommand {
@Option(name = "--add", aliases = {"-a"}, metaVar = "USER", usage = "users that should be added as group member") @Option(name = "--add", aliases = {"-a"}, metaVar = "USER", usage = "users that should be added as group member")

View File

@@ -38,7 +38,7 @@ import org.slf4j.LoggerFactory;
import java.io.IOException; import java.io.IOException;
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER) @RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
@CommandMetaData(name = "set-project", descr = "Change a project's settings") @CommandMetaData(name = "set-project", description = "Change a project's settings")
final class SetProjectCommand extends SshCommand { final class SetProjectCommand extends SshCommand {
private static final Logger log = LoggerFactory private static final Logger log = LoggerFactory
.getLogger(SetProjectCommand.class); .getLogger(SetProjectCommand.class);

View File

@@ -45,7 +45,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@CommandMetaData(name = "set-reviewers", descr = "Add or remove reviewers on a change") @CommandMetaData(name = "set-reviewers", description = "Add or remove reviewers on a change")
public class SetReviewersCommand extends SshCommand { public class SetReviewersCommand extends SshCommand {
private static final Logger log = private static final Logger log =
LoggerFactory.getLogger(SetReviewersCommand.class); LoggerFactory.getLogger(SetReviewersCommand.class);

View File

@@ -52,7 +52,7 @@ import java.util.SortedMap;
/** Show the current cache states. */ /** Show the current cache states. */
@RequiresCapability(GlobalCapability.VIEW_CACHES) @RequiresCapability(GlobalCapability.VIEW_CACHES)
@CommandMetaData(name = "show-caches", descr = "Display current cache statistics") @CommandMetaData(name = "show-caches", description = "Display current cache statistics")
final class ShowCaches extends CacheCommand { final class ShowCaches extends CacheCommand {
private static volatile long serverStarted; private static volatile long serverStarted;

View File

@@ -44,7 +44,7 @@ import java.util.List;
/** Show the current SSH connections. */ /** Show the current SSH connections. */
@RequiresCapability(GlobalCapability.VIEW_CONNECTIONS) @RequiresCapability(GlobalCapability.VIEW_CONNECTIONS)
@CommandMetaData(name = "show-connections", descr = "Display active client SSH connections") @CommandMetaData(name = "show-connections", description = "Display active client SSH connections")
final class ShowConnections extends SshCommand { final class ShowConnections extends SshCommand {
@Option(name = "--numeric", aliases = {"-n"}, usage = "don't resolve names") @Option(name = "--numeric", aliases = {"-n"}, usage = "don't resolve names")
private boolean numeric; private boolean numeric;

View File

@@ -40,7 +40,7 @@ import java.util.concurrent.TimeUnit;
/** Display the current work queue. */ /** Display the current work queue. */
@AdminHighPriorityCommand @AdminHighPriorityCommand
@CommandMetaData(name = "show-queue", descr = "Display the background work queues, including replication") @CommandMetaData(name = "show-queue", description = "Display the background work queues, including replication")
final class ShowQueue extends SshCommand { final class ShowQueue extends SshCommand {
@Option(name = "--wide", aliases = {"-w"}, usage = "display without line width truncation") @Option(name = "--wide", aliases = {"-w"}, usage = "display without line width truncation")
private boolean wide; private boolean wide;

View File

@@ -36,7 +36,7 @@ import java.util.concurrent.Future;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
@RequiresCapability(GlobalCapability.STREAM_EVENTS) @RequiresCapability(GlobalCapability.STREAM_EVENTS)
@CommandMetaData(name = "stream-events", descr = "Monitor events occurring in real time") @CommandMetaData(name = "stream-events", description = "Monitor events occurring in real time")
final class StreamEvents extends BaseCommand { final class StreamEvents extends BaseCommand {
/** Maximum number of events that may be queued up for each connection. */ /** Maximum number of events that may be queued up for each connection. */
private static final int MAX_EVENTS = 128; private static final int MAX_EVENTS = 128;

View File

@@ -23,7 +23,7 @@ import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
/** Command that allows testing of prolog submit-rules in a live instance. */ /** Command that allows testing of prolog submit-rules in a live instance. */
@CommandMetaData(name = "rule", descr = "Test prolog submit rules") @CommandMetaData(name = "rule", description = "Test prolog submit rules")
final class TestSubmitRuleCommand extends BaseTestPrologCommand { final class TestSubmitRuleCommand extends BaseTestPrologCommand {
@Inject @Inject
private Provider<TestSubmitRule> view; private Provider<TestSubmitRule> view;

View File

@@ -23,7 +23,7 @@ import com.google.gerrit.sshd.CommandMetaData;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provider; import com.google.inject.Provider;
@CommandMetaData(name = "type", descr = "Test prolog submit type") @CommandMetaData(name = "type", description = "Test prolog submit type")
final class TestSubmitTypeCommand extends BaseTestPrologCommand { final class TestSubmitTypeCommand extends BaseTestPrologCommand {
@Inject @Inject
private Provider<TestSubmitType> view; private Provider<TestSubmitType> view;

View File

@@ -18,7 +18,7 @@ import com.google.gerrit.common.Version;
import com.google.gerrit.sshd.CommandMetaData; import com.google.gerrit.sshd.CommandMetaData;
import com.google.gerrit.sshd.SshCommand; import com.google.gerrit.sshd.SshCommand;
@CommandMetaData(name = "version", descr = "Display gerrit version") @CommandMetaData(name = "version", description = "Display gerrit version")
final class VersionCommand extends SshCommand { final class VersionCommand extends SshCommand {
@Override @Override