Repository: mina-sshd Updated Branches: refs/heads/master 1a0409ee8 -> a4f4e2811
[SSHD-819] Revert the fact that CommandFactory now extends NamedFactory Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/d1c4f608 Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/d1c4f608 Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/d1c4f608 Branch: refs/heads/master Commit: d1c4f608c6dc5544eb76334eaa82e46808ec81b1 Parents: 1a0409e Author: Guillaume Nodet <gno...@apache.org> Authored: Mon May 28 08:43:31 2018 +0200 Committer: Guillaume Nodet <gno...@apache.org> Committed: Mon May 28 08:52:27 2018 +0200 ---------------------------------------------------------------------- .../apache/sshd/cli/server/SshFsMounter.java | 2 +- .../AbstractDelegatingCommandFactory.java | 2 +- .../sshd/server/command/CommandFactory.java | 5 +- .../shell/ProcessShellCommandFactory.java | 2 +- .../server/shell/UnknownCommandFactory.java | 2 +- .../sshd/client/channel/ChannelExecTest.java | 24 +--- .../sshd/client/session/ClientSessionTest.java | 98 +++++-------- .../java/org/apache/sshd/server/ServerTest.java | 144 +++++++------------ 8 files changed, 96 insertions(+), 183 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/d1c4f608/sshd-cli/src/test/java/org/apache/sshd/cli/server/SshFsMounter.java ---------------------------------------------------------------------- diff --git a/sshd-cli/src/test/java/org/apache/sshd/cli/server/SshFsMounter.java b/sshd-cli/src/test/java/org/apache/sshd/cli/server/SshFsMounter.java index c270be7..4fe1d99 100644 --- a/sshd-cli/src/test/java/org/apache/sshd/cli/server/SshFsMounter.java +++ b/sshd-cli/src/test/java/org/apache/sshd/cli/server/SshFsMounter.java @@ -232,7 +232,7 @@ public final class SshFsMounter extends SshServerCliSupport { } @Override - public String getName() { + public String toString() { return "mounter"; } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/d1c4f608/sshd-core/src/main/java/org/apache/sshd/server/command/AbstractDelegatingCommandFactory.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/server/command/AbstractDelegatingCommandFactory.java b/sshd-core/src/main/java/org/apache/sshd/server/command/AbstractDelegatingCommandFactory.java index 3169958..e780c52 100644 --- a/sshd-core/src/main/java/org/apache/sshd/server/command/AbstractDelegatingCommandFactory.java +++ b/sshd-core/src/main/java/org/apache/sshd/server/command/AbstractDelegatingCommandFactory.java @@ -40,7 +40,7 @@ public abstract class AbstractDelegatingCommandFactory extends AbstractLoggingBe } @Override - public String getName() { + public String toString() { return name; } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/d1c4f608/sshd-core/src/main/java/org/apache/sshd/server/command/CommandFactory.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/server/command/CommandFactory.java b/sshd-core/src/main/java/org/apache/sshd/server/command/CommandFactory.java index aff407b..807add1 100644 --- a/sshd-core/src/main/java/org/apache/sshd/server/command/CommandFactory.java +++ b/sshd-core/src/main/java/org/apache/sshd/server/command/CommandFactory.java @@ -18,8 +18,6 @@ */ package org.apache.sshd.server.command; -import org.apache.sshd.common.NamedResource; - /** * A factory of commands. * Commands are executed on the server side when an "exec" channel is @@ -27,7 +25,8 @@ import org.apache.sshd.common.NamedResource; * * @author <a href="mailto:d...@mina.apache.org">Apache MINA SSHD Project</a> */ -public interface CommandFactory extends NamedResource { +@FunctionalInterface +public interface CommandFactory { /** * Create a command with the given name. http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/d1c4f608/sshd-core/src/main/java/org/apache/sshd/server/shell/ProcessShellCommandFactory.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/server/shell/ProcessShellCommandFactory.java b/sshd-core/src/main/java/org/apache/sshd/server/shell/ProcessShellCommandFactory.java index af9af82..8c33b6f 100644 --- a/sshd-core/src/main/java/org/apache/sshd/server/shell/ProcessShellCommandFactory.java +++ b/sshd-core/src/main/java/org/apache/sshd/server/shell/ProcessShellCommandFactory.java @@ -38,7 +38,7 @@ public class ProcessShellCommandFactory implements CommandFactory { } @Override - public String getName() { + public String toString() { return FACTORY_NAME; } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/d1c4f608/sshd-core/src/main/java/org/apache/sshd/server/shell/UnknownCommandFactory.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/server/shell/UnknownCommandFactory.java b/sshd-core/src/main/java/org/apache/sshd/server/shell/UnknownCommandFactory.java index ea94525..ef71d99 100644 --- a/sshd-core/src/main/java/org/apache/sshd/server/shell/UnknownCommandFactory.java +++ b/sshd-core/src/main/java/org/apache/sshd/server/shell/UnknownCommandFactory.java @@ -35,7 +35,7 @@ public class UnknownCommandFactory implements CommandFactory { } @Override - public String getName() { + public String toString() { return FACTORY_NAME; } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/d1c4f608/sshd-core/src/test/java/org/apache/sshd/client/channel/ChannelExecTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/client/channel/ChannelExecTest.java b/sshd-core/src/test/java/org/apache/sshd/client/channel/ChannelExecTest.java index 8a48daf..038ce55 100644 --- a/sshd-core/src/test/java/org/apache/sshd/client/channel/ChannelExecTest.java +++ b/sshd-core/src/test/java/org/apache/sshd/client/channel/ChannelExecTest.java @@ -26,8 +26,6 @@ import java.util.concurrent.TimeUnit; import org.apache.sshd.client.SshClient; import org.apache.sshd.client.session.ClientSession; import org.apache.sshd.server.SshServer; -import org.apache.sshd.server.command.Command; -import org.apache.sshd.server.command.CommandFactory; import org.apache.sshd.util.test.BaseTestSupport; import org.apache.sshd.util.test.CommandExecutionHelper; import org.apache.sshd.util.test.Utils; @@ -53,23 +51,13 @@ public class ChannelExecTest extends BaseTestSupport { @BeforeClass public static void setupClientAndServer() throws Exception { sshd = Utils.setupTestServer(ChannelExecTest.class); - sshd.setCommandFactory(new CommandFactory() { + sshd.setCommandFactory(command -> new CommandExecutionHelper(command) { @Override - public String getName() { - return ChannelExecTest.class.getSimpleName(); - } - - @Override - public Command createCommand(String command) { - return new CommandExecutionHelper(command) { - @Override - protected boolean handleCommandLine(String command) throws Exception { - OutputStream stdout = getOutputStream(); - stdout.write(command.getBytes(StandardCharsets.US_ASCII)); - stdout.flush(); - return false; - } - }; + protected boolean handleCommandLine(String command) throws Exception { + OutputStream stdout = getOutputStream(); + stdout.write(command.getBytes(StandardCharsets.US_ASCII)); + stdout.flush(); + return false; } }); sshd.start(); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/d1c4f608/sshd-core/src/test/java/org/apache/sshd/client/session/ClientSessionTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/client/session/ClientSessionTest.java b/sshd-core/src/test/java/org/apache/sshd/client/session/ClientSessionTest.java index 517b07c..03acaa4 100644 --- a/sshd-core/src/test/java/org/apache/sshd/client/session/ClientSessionTest.java +++ b/sshd-core/src/test/java/org/apache/sshd/client/session/ClientSessionTest.java @@ -27,8 +27,6 @@ import java.util.concurrent.TimeUnit; import org.apache.sshd.client.SshClient; import org.apache.sshd.server.SshServer; -import org.apache.sshd.server.command.Command; -import org.apache.sshd.server.command.CommandFactory; import org.apache.sshd.util.test.BaseTestSupport; import org.apache.sshd.util.test.CommandExecutionHelper; import org.apache.sshd.util.test.Utils; @@ -84,28 +82,18 @@ public class ClientSessionTest extends BaseTestSupport { public void testDefaultExecuteCommandMethod() throws Exception { final String expectedCommand = getCurrentTestName() + "-CMD"; final String expectedResponse = getCurrentTestName() + "-RSP"; - sshd.setCommandFactory(new CommandFactory() { - @Override - public String getName() { - return getCurrentTestName(); - } + sshd.setCommandFactory(command -> new CommandExecutionHelper(command) { + private boolean cmdProcessed; @Override - public Command createCommand(String command) { - return new CommandExecutionHelper(command) { - private boolean cmdProcessed; - - @Override - protected boolean handleCommandLine(String command) throws Exception { - assertEquals("Mismatched incoming command", expectedCommand, command); - assertFalse("Duplicated command call", cmdProcessed); - OutputStream stdout = getOutputStream(); - stdout.write(expectedResponse.getBytes(StandardCharsets.US_ASCII)); - stdout.flush(); - cmdProcessed = true; - return false; - } - }; + protected boolean handleCommandLine(String command) throws Exception { + assertEquals("Mismatched incoming command", expectedCommand, command); + assertFalse("Duplicated command call", cmdProcessed); + OutputStream stdout = getOutputStream(); + stdout.write(expectedResponse.getBytes(StandardCharsets.US_ASCII)); + stdout.flush(); + cmdProcessed = true; + return false; } }); @@ -123,28 +111,18 @@ public class ClientSessionTest extends BaseTestSupport { public void testExceptionThrownIfRemoteStderrWrittenTo() throws Exception { final String expectedCommand = getCurrentTestName() + "-CMD"; final String expectedErrorMessage = getCurrentTestName() + "-ERR"; - sshd.setCommandFactory(new CommandFactory() { - @Override - public String getName() { - return getCurrentTestName(); - } + sshd.setCommandFactory(command -> new CommandExecutionHelper(command) { + private boolean cmdProcessed; @Override - public Command createCommand(String command) { - return new CommandExecutionHelper(command) { - private boolean cmdProcessed; - - @Override - protected boolean handleCommandLine(String command) throws Exception { - assertEquals("Mismatched incoming command", expectedCommand, command); - assertFalse("Duplicated command call", cmdProcessed); - OutputStream stderr = getErrorStream(); - stderr.write(expectedErrorMessage.getBytes(StandardCharsets.US_ASCII)); - stderr.flush(); - cmdProcessed = true; - return false; - } - }; + protected boolean handleCommandLine(String command) throws Exception { + assertEquals("Mismatched incoming command", expectedCommand, command); + assertFalse("Duplicated command call", cmdProcessed); + OutputStream stderr = getErrorStream(); + stderr.write(expectedErrorMessage.getBytes(StandardCharsets.US_ASCII)); + stderr.flush(); + cmdProcessed = true; + return false; } }); @@ -176,33 +154,23 @@ public class ClientSessionTest extends BaseTestSupport { public void testExceptionThrownIfNonZeroExitStatus() throws Exception { final String expectedCommand = getCurrentTestName() + "-CMD"; final int exepectedErrorCode = 7365; - sshd.setCommandFactory(new CommandFactory() { + sshd.setCommandFactory(command -> new CommandExecutionHelper() { + private boolean cmdProcessed; + @Override - public String getName() { - return getCurrentTestName(); + public void onExit(int exitValue, String exitMessage) { + super.onExit((exitValue == 0) ? exepectedErrorCode : exitValue, exitMessage); } @Override - public Command createCommand(String command) { - return new CommandExecutionHelper(command) { - private boolean cmdProcessed; - - @Override - public void onExit(int exitValue, String exitMessage) { - super.onExit((exitValue == 0) ? exepectedErrorCode : exitValue, exitMessage); - } - - @Override - protected boolean handleCommandLine(String command) throws Exception { - assertEquals("Mismatched incoming command", expectedCommand, command); - assertFalse("Duplicated command call", cmdProcessed); - OutputStream stdout = getOutputStream(); - stdout.write(command.getBytes(StandardCharsets.US_ASCII)); - stdout.flush(); - cmdProcessed = true; - return false; - } - }; + protected boolean handleCommandLine(String command) throws Exception { + assertEquals("Mismatched incoming command", expectedCommand, command); + assertFalse("Duplicated command call", cmdProcessed); + OutputStream stdout = getOutputStream(); + stdout.write(command.getBytes(StandardCharsets.US_ASCII)); + stdout.flush(); + cmdProcessed = true; + return false; } }); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/d1c4f608/sshd-core/src/test/java/org/apache/sshd/server/ServerTest.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/test/java/org/apache/sshd/server/ServerTest.java b/sshd-core/src/test/java/org/apache/sshd/server/ServerTest.java index d1955ef..6b4f0df 100644 --- a/sshd-core/src/test/java/org/apache/sshd/server/ServerTest.java +++ b/sshd-core/src/test/java/org/apache/sshd/server/ServerTest.java @@ -65,7 +65,6 @@ import org.apache.sshd.common.session.helpers.AbstractConnectionService; import org.apache.sshd.common.session.helpers.AbstractSession; import org.apache.sshd.common.util.GenericUtils; import org.apache.sshd.common.util.OsUtils; -import org.apache.sshd.common.util.ValidateUtils; import org.apache.sshd.deprecated.ClientUserAuthServiceOld; import org.apache.sshd.server.auth.keyboard.InteractiveChallenge; import org.apache.sshd.server.auth.keyboard.KeyboardInteractiveAuthenticator; @@ -73,7 +72,6 @@ import org.apache.sshd.server.auth.keyboard.PromptEntry; import org.apache.sshd.server.auth.password.RejectAllPasswordAuthenticator; import org.apache.sshd.server.auth.pubkey.RejectAllPublickeyAuthenticator; import org.apache.sshd.server.command.Command; -import org.apache.sshd.server.command.CommandFactory; import org.apache.sshd.server.session.ServerSession; import org.apache.sshd.server.session.ServerSessionImpl; import org.apache.sshd.util.test.BaseTestSupport; @@ -279,7 +277,7 @@ public class ServerTest extends BaseTestSupport { public void testServerIdleTimeoutWithForce() throws Exception { final CountDownLatch latch = new CountDownLatch(1); - sshd.setCommandFactory(new StreamCommand.Factory()); + sshd.setCommandFactory(StreamCommand::new); final long idleTimeoutValue = TimeUnit.SECONDS.toMillis(5L); PropertyResolverUtils.updateProperty(sshd, FactoryManager.IDLE_TIMEOUT, idleTimeoutValue); @@ -524,50 +522,38 @@ public class ServerTest extends BaseTestSupport { @Test // see SSHD-645 public void testChannelStateChangeNotifications() throws Exception { final Semaphore exitSignal = new Semaphore(0); - sshd.setCommandFactory(new CommandFactory() { + sshd.setCommandFactory(command -> new Command() { + private ExitCallback cb; + @Override - public String getName() { - return getCurrentTestName(); + public void setOutputStream(OutputStream out) { + // ignored } @Override - public Command createCommand(String command) { - ValidateUtils.checkTrue(String.CASE_INSENSITIVE_ORDER.compare(command, getCurrentTestName()) == 0, "Unexpected command: %s", command); - - return new Command() { - private ExitCallback cb; - - @Override - public void setOutputStream(OutputStream out) { - // ignored - } - - @Override - public void setInputStream(InputStream in) { - // ignored - } + public void setInputStream(InputStream in) { + // ignored + } - @Override - public void setExitCallback(ExitCallback callback) { - cb = callback; - } + @Override + public void setExitCallback(ExitCallback callback) { + cb = callback; + } - @Override - public void setErrorStream(OutputStream err) { - // ignored - } + @Override + public void setErrorStream(OutputStream err) { + // ignored + } - @Override - public void destroy() { - // ignored - } + @Override + public void destroy() { + // ignored + } - @Override - public void start(Environment env) throws IOException { - exitSignal.release(); - cb.onExit(0, command); - } - }; + @Override + public void start(Environment env) throws IOException { + exitSignal.release(); + cb.onExit(0, command); } }); sshd.start(); @@ -605,53 +591,41 @@ public class ServerTest extends BaseTestSupport { @Test public void testEnvironmentVariablesPropagationToServer() throws Exception { final AtomicReference<Environment> envHolder = new AtomicReference<>(null); - sshd.setCommandFactory(new CommandFactory() { + sshd.setCommandFactory(command -> new Command() { + private ExitCallback cb; + @Override - public String getName() { - return getCurrentTestName(); + public void setOutputStream(OutputStream out) { + // ignored } @Override - public Command createCommand(String command) { - ValidateUtils.checkTrue(String.CASE_INSENSITIVE_ORDER.compare(command, getCurrentTestName()) == 0, "Unexpected command: %s", command); - - return new Command() { - private ExitCallback cb; - - @Override - public void setOutputStream(OutputStream out) { - // ignored - } - - @Override - public void setInputStream(InputStream in) { - // ignored - } + public void setInputStream(InputStream in) { + // ignored + } - @Override - public void setExitCallback(ExitCallback callback) { - cb = callback; - } + @Override + public void setExitCallback(ExitCallback callback) { + cb = callback; + } - @Override - public void setErrorStream(OutputStream err) { - // ignored - } + @Override + public void setErrorStream(OutputStream err) { + // ignored + } - @Override - public void destroy() { - // ignored - } + @Override + public void destroy() { + // ignored + } - @Override - public void start(Environment env) throws IOException { - if (envHolder.getAndSet(env) != null) { - throw new StreamCorruptedException("Multiple starts for command=" + command); - } + @Override + public void start(Environment env) throws IOException { + if (envHolder.getAndSet(env) != null) { + throw new StreamCorruptedException("Multiple starts for command=" + command); + } - cb.onExit(0, command); - } - }; + cb.onExit(0, command); } }); @@ -951,22 +925,6 @@ public class ServerTest extends BaseTestSupport { public static CountDownLatch latch; // CHECKSTYLE:ON - public static class Factory implements CommandFactory { - public Factory() { - super(); - } - - @Override - public String getName() { - return getClass().getSimpleName(); - } - - @Override - public Command createCommand(String name) { - return new StreamCommand(name); - } - } - private final String name; private OutputStream out;