David Ostrovsky
2014-03-18 821eb4bbe1a4fac8d17b4df96ab6441985df58d7
Expose SSH command as plugin extension point

Example plugin is provided [1].

[1] https://github.com/davido/gitblit-cookbook-plugin
1 files added
2 files modified
28 ■■■■■ changed files
src/main/java/com/gitblit/transport/ssh/commands/PluginDispatchCommand.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/transport/ssh/commands/RootDispatcher.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/transport/ssh/commands/SshCommand.java 4 ●●● patch | view | raw | blame | history
src/main/java/com/gitblit/transport/ssh/commands/PluginDispatchCommand.java
New file
@@ -0,0 +1,11 @@
package com.gitblit.transport.ssh.commands;
import com.gitblit.models.UserModel;
public class PluginDispatchCommand extends DispatchCommand {
    @Override
    protected void registerCommands(UserModel user) {
        // no op
    }
}
src/main/java/com/gitblit/transport/ssh/commands/RootDispatcher.java
@@ -15,6 +15,10 @@
 */
package com.gitblit.transport.ssh.commands;
import java.util.List;
import ro.fortsoft.pf4j.PluginWrapper;
import com.gitblit.manager.IGitblit;
import com.gitblit.models.UserModel;
import com.gitblit.transport.ssh.SshDaemonClient;
@@ -36,7 +40,14 @@
        registerDispatcher(user, GitblitDispatcher.class);
        registerDispatcher(user, GitDispatcher.class);
        // TODO register plugin dispatchers here
        List<SshCommand> exts = gitblit.getExtensions(SshCommand.class);
        for (SshCommand sshCommand : exts) {
            PluginDispatchCommand pluginCmd = new PluginDispatchCommand();
            PluginWrapper wrapper = gitblit.whichPlugin(sshCommand.getClass());
            pluginCmd.registerCommand(user, sshCommand.getClass());
            // TODO(davido): add dispatcher registration per plugin name
            //registerDispatcher(wrapper.getDescriptor().getPluginId(), pluginCmd);
        }
    }
    @Override
src/main/java/com/gitblit/transport/ssh/commands/SshCommand.java
@@ -19,7 +19,9 @@
import org.apache.sshd.server.Environment;
public abstract class SshCommand extends BaseCommand {
import ro.fortsoft.pf4j.ExtensionPoint;
public abstract class SshCommand extends BaseCommand implements ExtensionPoint {
    protected PrintWriter stdout;
    protected PrintWriter stderr;