diff --git a/scm-core/src/main/java/sonia/scm/protocolcommand/CommandInterpreter.java b/scm-core/src/main/java/sonia/scm/protocolcommand/CommandInterpreter.java new file mode 100644 index 0000000000..1e04eb3b66 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/protocolcommand/CommandInterpreter.java @@ -0,0 +1,13 @@ +package sonia.scm.protocolcommand; + +import sonia.scm.plugin.ExtensionPoint; + +@ExtensionPoint +public interface CommandInterpreter { + + boolean canHandle(String command); + + CommandParser getParser(); + + ScmCommandProtocol getProtocolHandler(); +} diff --git a/scm-core/src/main/java/sonia/scm/protocolcommand/CommandParser.java b/scm-core/src/main/java/sonia/scm/protocolcommand/CommandParser.java index 86fa9554e9..1d1f0c9b34 100644 --- a/scm-core/src/main/java/sonia/scm/protocolcommand/CommandParser.java +++ b/scm-core/src/main/java/sonia/scm/protocolcommand/CommandParser.java @@ -1,6 +1,5 @@ package sonia.scm.protocolcommand; -@FunctionalInterface public interface CommandParser { String[] parse(String command); diff --git a/scm-core/src/main/java/sonia/scm/protocolcommand/ScmCommandProtocol.java b/scm-core/src/main/java/sonia/scm/protocolcommand/ScmCommandProtocol.java index 8def99c057..e7dbf65cad 100644 --- a/scm-core/src/main/java/sonia/scm/protocolcommand/ScmCommandProtocol.java +++ b/scm-core/src/main/java/sonia/scm/protocolcommand/ScmCommandProtocol.java @@ -1,14 +1,9 @@ package sonia.scm.protocolcommand; -import sonia.scm.plugin.ExtensionPoint; - import java.io.IOException; -@ExtensionPoint public interface ScmCommandProtocol { - boolean canHandle(RepositoryContext repositoryContext); - void handle(CommandContext context, RepositoryContext repositoryContext) throws IOException; } diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/protocolcommand/git/GitCommandProtocol.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/protocolcommand/git/GitCommandProtocol.java index 02e75c2015..b81e00a13c 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/protocolcommand/git/GitCommandProtocol.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/protocolcommand/git/GitCommandProtocol.java @@ -14,7 +14,6 @@ import sonia.scm.plugin.Extension; import sonia.scm.protocolcommand.CommandContext; import sonia.scm.protocolcommand.RepositoryContext; import sonia.scm.protocolcommand.ScmCommandProtocol; -import sonia.scm.repository.GitRepositoryHandler; import sonia.scm.repository.RepositoryPermissions; import javax.inject.Inject; @@ -34,11 +33,6 @@ public class GitCommandProtocol implements ScmCommandProtocol { 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];