From ffbf9e4fba049e89e55ebc47b8afe514bcf31b1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Mon, 4 Mar 2019 13:22:40 +0100 Subject: [PATCH] Add independent classes from ssh plugin --- .../scm/protocolcommand/CommandContext.java | 20 ++++++++++++++++ .../scm/protocolcommand/CommandParser.java | 8 +++++++ .../protocolcommand/RepositoryContext.java | 23 +++++++++++++++++++ .../RepositoryContextResolver.java | 11 +++++++++ .../scm/protocolcommand/ScmSshProtocol.java | 9 ++++++++ 5 files changed, 71 insertions(+) create mode 100644 scm-core/src/main/java/sonia/scm/protocolcommand/CommandContext.java create mode 100644 scm-core/src/main/java/sonia/scm/protocolcommand/CommandParser.java create mode 100644 scm-core/src/main/java/sonia/scm/protocolcommand/RepositoryContext.java create mode 100644 scm-core/src/main/java/sonia/scm/protocolcommand/RepositoryContextResolver.java create mode 100644 scm-core/src/main/java/sonia/scm/protocolcommand/ScmSshProtocol.java diff --git a/scm-core/src/main/java/sonia/scm/protocolcommand/CommandContext.java b/scm-core/src/main/java/sonia/scm/protocolcommand/CommandContext.java new file mode 100644 index 0000000000..44a1cce95a --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/protocolcommand/CommandContext.java @@ -0,0 +1,20 @@ +package sonia.scm.protocolcommand; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.io.InputStream; +import java.io.OutputStream; + +@Getter +@AllArgsConstructor +public class CommandContext { + + private String command; + private String[] args; + + private InputStream inputStream; + private OutputStream outputStream; + private OutputStream errorStream; + +} diff --git a/scm-core/src/main/java/sonia/scm/protocolcommand/CommandParser.java b/scm-core/src/main/java/sonia/scm/protocolcommand/CommandParser.java new file mode 100644 index 0000000000..86fa9554e9 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/protocolcommand/CommandParser.java @@ -0,0 +1,8 @@ +package sonia.scm.protocolcommand; + +@FunctionalInterface +public interface CommandParser { + + String[] parse(String command); + +} diff --git a/scm-core/src/main/java/sonia/scm/protocolcommand/RepositoryContext.java b/scm-core/src/main/java/sonia/scm/protocolcommand/RepositoryContext.java new file mode 100644 index 0000000000..a64d5a6047 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/protocolcommand/RepositoryContext.java @@ -0,0 +1,23 @@ +package sonia.scm.protocolcommand; + +import sonia.scm.repository.Repository; + +import java.nio.file.Path; + +public class RepositoryContext { + private Repository repository; + private Path directory; + + public RepositoryContext(Repository repository, Path directory) { + this.repository = repository; + this.directory = directory; + } + + public Repository getRepository() { + return repository; + } + + public Path getDirectory() { + return directory; + } +} diff --git a/scm-core/src/main/java/sonia/scm/protocolcommand/RepositoryContextResolver.java b/scm-core/src/main/java/sonia/scm/protocolcommand/RepositoryContextResolver.java new file mode 100644 index 0000000000..69d762109d --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/protocolcommand/RepositoryContextResolver.java @@ -0,0 +1,11 @@ +package sonia.scm.protocolcommand; + +import sonia.scm.plugin.ExtensionPoint; + +@FunctionalInterface +@ExtensionPoint +public interface RepositoryContextResolver { + + RepositoryContext resolve(String[] args); + +} diff --git a/scm-core/src/main/java/sonia/scm/protocolcommand/ScmSshProtocol.java b/scm-core/src/main/java/sonia/scm/protocolcommand/ScmSshProtocol.java new file mode 100644 index 0000000000..0a016c3806 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/protocolcommand/ScmSshProtocol.java @@ -0,0 +1,9 @@ +package sonia.scm.protocolcommand; + +import java.io.IOException; + +public interface ScmSshProtocol { + + void handle(CommandContext context, RepositoryContext repositoryContext) throws IOException; + +}