summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2014-03-21 17:57:21 -0400
committerJames Moger <james.moger@gitblit.com>2014-04-10 18:58:09 -0400
commit67351aa5c1359aeefca5ddd299c262317636619d (patch)
tree5844db311e87d1db1b18e938cc1d0fbfc811a462 /src
parentdca0d1667cf5e6e8b14c0ad633429f2ce8fcc64c (diff)
downloadgitblit-67351aa5c1359aeefca5ddd299c262317636619d.tar.gz
gitblit-67351aa5c1359aeefca5ddd299c262317636619d.zip
Catch dispatchers registered through registerCommand
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java b/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
index 4629bcc5..b5d131fa 100644
--- a/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
+++ b/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
@@ -102,19 +102,20 @@ public abstract class DispatchCommand extends BaseCommand implements ExtensionPo
CommandMetaData meta = dispatcherClass.getAnnotation(CommandMetaData.class);
if (meta.admin() && !user.canAdmin()) {
- log.debug(MessageFormat.format("excluding admin dispatcher {0} for {1}", meta.name(), user.username));
+ log.debug(MessageFormat.format("excluding admin dispatcher {0} for {1}",
+ meta.name(), user.username));
return;
}
- log.debug("registering {} dispatcher", meta.name());
try {
dispatcher.registerCommands(user);
if (dispatcher.commands.isEmpty() && dispatcher.dispatchers.isEmpty()) {
- // exclude because there are no commands available to the user
- log.debug(MessageFormat.format("excluding dispatcher {0} for {1}", meta.name(), user.username));
+ log.debug(MessageFormat.format("excluding empty dispatcher {0} for {1}",
+ meta.name(), user.username));
return;
}
+ log.debug("registering {} dispatcher", meta.name());
dispatchers.put(meta.name(), dispatcher);
for (String alias : meta.aliases()) {
aliasToCommand.put(alias, meta.name());
@@ -128,7 +129,6 @@ public abstract class DispatchCommand extends BaseCommand implements ExtensionPo
}
}
-
protected abstract void registerCommands(UserModel user);
/**
@@ -138,6 +138,11 @@ public abstract class DispatchCommand extends BaseCommand implements ExtensionPo
* @param cmd
*/
protected void registerCommand(UserModel user, Class<? extends BaseCommand> cmd) {
+ if (DispatchCommand.class.isAssignableFrom(cmd)) {
+ log.warn("{} tried to register {} with registerCommand", getName(), cmd.getName());
+ registerDispatcher(user, (Class<? extends DispatchCommand>) cmd);
+ return;
+ }
if (!cmd.isAnnotationPresent(CommandMetaData.class)) {
throw new RuntimeException(MessageFormat.format("{0} must be annotated with {1}!", cmd.getName(),
CommandMetaData.class.getName()));
@@ -157,6 +162,11 @@ public abstract class DispatchCommand extends BaseCommand implements ExtensionPo
* @param cmd
*/
protected void registerCommand(UserModel user, BaseCommand cmd) {
+ if (DispatchCommand.class.isAssignableFrom(cmd.getClass())) {
+ log.warn("{} tried to register {} dispatcher with registerCommand", getName(), cmd.getName());
+ registerDispatcher(user, (DispatchCommand) cmd);
+ return;
+ }
if (!cmd.getClass().isAnnotationPresent(CommandMetaData.class)) {
throw new RuntimeException(MessageFormat.format("{0} must be annotated with {1}!", cmd.getName(),
CommandMetaData.class.getName()));
@@ -194,7 +204,6 @@ public abstract class DispatchCommand extends BaseCommand implements ExtensionPo
}
for (Map.Entry<String, DispatchCommand> entry : dispatchers.entrySet()) {
- DispatchCommand dispatcher = entry.getValue();
map.put(entry.getKey(), entry.getValue().getClass());
}
}