David Ostrovsky
2014-02-17 7613df52959b6e2ac1094d2263be310fb3e2723b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.gitblit.transport.ssh;
 
import java.util.Map;
import java.util.Set;
 
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Provider;
 
import org.apache.sshd.server.Command;
 
import com.gitblit.transport.ssh.commands.DispatchCommand;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
 
public class CommandDispatcher extends DispatchCommand {
 
  Provider<Command> repo;
  Provider<Command> version;
 
  @Inject
  public CommandDispatcher(final @Named("create-repository") Provider<Command> repo,
      final @Named("version") Provider<Command> version) {
    this.repo = repo;
    this.version = version;
  }
 
  public DispatchCommand get() {
    DispatchCommand root = new DispatchCommand();
    Map<String, Provider<Command>> origin = Maps.newHashMapWithExpectedSize(2);
    origin.put("gitblit", new Provider<Command>() {
      @Override
      public Command get() {
        Set<Provider<Command>> gitblit = Sets.newHashSetWithExpectedSize(2);
        gitblit.add(repo);
        gitblit.add(version);
        Command cmd = new DispatchCommand(gitblit);
        return cmd;
      }
    });
    root.setMap(origin);
    return root;
  }
}