mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-06 21:45:43 +01:00
Expose ScmCommandProtocol as extension point
This is necessary so that multiple providers (git, hg, ...) can implement this. The using class has to find the matching implementation.
This commit is contained in:
@@ -10,27 +10,35 @@ import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException;
|
||||
import org.eclipse.jgit.util.FS;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import sonia.scm.plugin.Extension;
|
||||
import sonia.scm.protocolcommand.CommandContext;
|
||||
import sonia.scm.protocolcommand.RepositoryContext;
|
||||
import sonia.scm.protocolcommand.ScmSshProtocol;
|
||||
import sonia.scm.protocolcommand.ScmCommandProtocol;
|
||||
import sonia.scm.repository.GitRepositoryHandler;
|
||||
import sonia.scm.repository.RepositoryPermissions;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.io.IOException;
|
||||
|
||||
public class GitSshProtocol implements ScmSshProtocol {
|
||||
@Extension
|
||||
public class GitCommandProtocol implements ScmCommandProtocol {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(GitSshProtocol.class);
|
||||
private static final Logger LOG = LoggerFactory.getLogger(GitCommandProtocol.class);
|
||||
|
||||
private SshUploadPackFactory uploadPackFactory;
|
||||
private SshReceivePackFactory receivePackFactory;
|
||||
|
||||
@Inject
|
||||
public GitSshProtocol(SshUploadPackFactory uploadPackFactory, SshReceivePackFactory receivePackFactory) {
|
||||
public GitCommandProtocol(SshUploadPackFactory uploadPackFactory, SshReceivePackFactory receivePackFactory) {
|
||||
this.uploadPackFactory = uploadPackFactory;
|
||||
this.receivePackFactory = receivePackFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canHandle(RepositoryContext repositoryContext) {
|
||||
return GitRepositoryHandler.TYPE_NAME.equals(repositoryContext.getRepository().getType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(CommandContext commandContext, RepositoryContext repositoryContext) throws IOException {
|
||||
String subCommand = commandContext.getArgs()[0];
|
||||
@@ -3,13 +3,11 @@ package sonia.scm.protocolcommand.git;
|
||||
import com.google.inject.servlet.ServletModule;
|
||||
import sonia.scm.plugin.Extension;
|
||||
import sonia.scm.protocolcommand.RepositoryContextResolver;
|
||||
import sonia.scm.protocolcommand.ScmSshProtocol;
|
||||
|
||||
@Extension
|
||||
public class GitProtocolModule extends ServletModule {
|
||||
@Override
|
||||
protected void configureServlets() {
|
||||
bind(RepositoryContextResolver.class).to(GitRepositoryContextResolver.class);
|
||||
bind(ScmSshProtocol.class).to(GitSshProtocol.class);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user