You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by lg...@apache.org on 2017/12/21 07:34:14 UTC
mina-sshd git commit: [SSHD-787] Move all SCP stream resolution code
into the ScpFileOpener instead of separate interfaces
Repository: mina-sshd
Updated Branches:
refs/heads/master b1464ecc1 -> 539893ca6
[SSHD-787] Move all SCP stream resolution code into the ScpFileOpener instead of separate interfaces
Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/539893ca
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/539893ca
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/539893ca
Branch: refs/heads/master
Commit: 539893ca6bbcd2864f5c5f795ad10d7f0fbadc15
Parents: b1464ec
Author: Goldstein Lyor <ly...@c-b4.com>
Authored: Thu Dec 21 07:23:36 2017 +0200
Committer: Goldstein Lyor <ly...@c-b4.com>
Committed: Thu Dec 21 09:34:06 2017 +0200
----------------------------------------------------------------------
.../sshd/client/ClientFactoryManager.java | 2 -
.../java/org/apache/sshd/client/SshClient.java | 12 -----
.../sshd/client/scp/DefaultScpClient.java | 15 ++----
.../sshd/client/scp/ScpClientCreator.java | 43 ++++++-----------
.../client/session/AbstractClientSession.java | 16 +------
.../apache/sshd/common/scp/ScpFileOpener.java | 4 ++
.../org/apache/sshd/common/scp/ScpHelper.java | 10 ++--
.../common/scp/ScpStreamResolverFactory.java | 32 -------------
.../scp/ScpStreamResolverFactoryHolder.java | 29 ------------
.../scp/helpers/DefaultScpFileOpener.java | 12 +++++
.../DefaultScpStreamResolverFactory.java | 50 --------------------
.../org/apache/sshd/server/scp/ScpCommand.java | 9 +---
.../sshd/server/scp/ScpCommandFactory.java | 35 ++++----------
.../org/apache/sshd/client/scp/ScpTest.java | 8 +---
.../apache/sshd/spring/SpringConfigTest.java | 2 +-
15 files changed, 53 insertions(+), 226 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java b/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java
index e116651..31b2a22 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/ClientFactoryManager.java
@@ -24,7 +24,6 @@ import org.apache.sshd.client.session.ClientProxyConnectorHolder;
import org.apache.sshd.common.FactoryManager;
import org.apache.sshd.common.config.keys.FilePasswordProvider;
import org.apache.sshd.common.scp.ScpFileOpenerHolder;
-import org.apache.sshd.common.scp.ScpStreamResolverFactoryHolder;
/**
* The <code>ClientFactoryManager</code> enable the retrieval of additional
@@ -35,7 +34,6 @@ import org.apache.sshd.common.scp.ScpStreamResolverFactoryHolder;
public interface ClientFactoryManager
extends FactoryManager,
ScpFileOpenerHolder,
- ScpStreamResolverFactoryHolder,
ClientProxyConnectorHolder,
ClientAuthenticationManager {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java b/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
index a23d098..0e8979e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
@@ -115,7 +115,6 @@ import org.apache.sshd.common.keyprovider.KeyPairProvider;
import org.apache.sshd.common.mac.BuiltinMacs;
import org.apache.sshd.common.mac.Mac;
import org.apache.sshd.common.scp.ScpFileOpener;
-import org.apache.sshd.common.scp.ScpStreamResolverFactory;
import org.apache.sshd.common.session.helpers.AbstractSession;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.OsUtils;
@@ -212,7 +211,6 @@ public class SshClient extends AbstractFactoryManager implements ClientFactoryMa
private FilePasswordProvider filePasswordProvider;
private PasswordIdentityProvider passwordIdentityProvider;
private ScpFileOpener scpOpener;
- private ScpStreamResolverFactory scpStreamFactory;
private final List<Object> identities = new CopyOnWriteArrayList<>();
private final AuthenticationIdentitiesProvider identitiesProvider;
@@ -250,16 +248,6 @@ public class SshClient extends AbstractFactoryManager implements ClientFactoryMa
}
@Override
- public ScpStreamResolverFactory getScpStreamResolverFactory() {
- return scpStreamFactory;
- }
-
- @Override
- public void setScpStreamResolverFactory(ScpStreamResolverFactory factory) {
- scpStreamFactory = factory;
- }
-
- @Override
public ServerKeyVerifier getServerKeyVerifier() {
return serverKeyVerifier;
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/main/java/org/apache/sshd/client/scp/DefaultScpClient.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/scp/DefaultScpClient.java b/sshd-core/src/main/java/org/apache/sshd/client/scp/DefaultScpClient.java
index ead4c52..dfc7f7d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/scp/DefaultScpClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/scp/DefaultScpClient.java
@@ -47,11 +47,9 @@ import org.apache.sshd.common.file.util.MockPath;
import org.apache.sshd.common.scp.ScpFileOpener;
import org.apache.sshd.common.scp.ScpHelper;
import org.apache.sshd.common.scp.ScpLocation;
-import org.apache.sshd.common.scp.ScpStreamResolverFactory;
import org.apache.sshd.common.scp.ScpTimestamp;
import org.apache.sshd.common.scp.ScpTransferEventListener;
import org.apache.sshd.common.scp.helpers.DefaultScpFileOpener;
-import org.apache.sshd.common.scp.helpers.DefaultScpStreamResolverFactory;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.ValidateUtils;
import org.apache.sshd.common.util.io.NoCloseInputStream;
@@ -66,16 +64,13 @@ public class DefaultScpClient extends AbstractScpClient {
public static final String SCP_PORT_OPTION = "-P";
protected final ScpFileOpener opener;
- protected final ScpStreamResolverFactory streamFactory;
protected final ScpTransferEventListener listener;
private final ClientSession clientSession;
public DefaultScpClient(
- ClientSession clientSession, ScpFileOpener fileOpener,
- ScpStreamResolverFactory streamFactory, ScpTransferEventListener eventListener) {
+ ClientSession clientSession, ScpFileOpener fileOpener, ScpTransferEventListener eventListener) {
this.clientSession = Objects.requireNonNull(clientSession, "No client session");
this.opener = (fileOpener == null) ? DefaultScpFileOpener.INSTANCE : fileOpener;
- this.streamFactory = (streamFactory == null) ? DefaultScpStreamResolverFactory.INSTANCE : streamFactory;
this.listener = (eventListener == null) ? ScpTransferEventListener.EMPTY : eventListener;
}
@@ -92,7 +87,7 @@ public class DefaultScpClient extends AbstractScpClient {
try (InputStream invOut = channel.getInvertedOut();
OutputStream invIn = channel.getInvertedIn()) {
// NOTE: we use a mock file system since we expect no invocations for it
- ScpHelper helper = new ScpHelper(session, invOut, invIn, new MockFileSystem(remote), opener, streamFactory, listener);
+ ScpHelper helper = new ScpHelper(session, invOut, invIn, new MockFileSystem(remote), opener, listener);
helper.receiveFileStream(local, ScpHelper.DEFAULT_RECEIVE_BUFFER_SIZE);
handleCommandExitStatus(cmd, channel);
} finally {
@@ -107,7 +102,7 @@ public class DefaultScpClient extends AbstractScpClient {
ChannelExec channel = openCommandChannel(session, cmd);
try (InputStream invOut = channel.getInvertedOut();
OutputStream invIn = channel.getInvertedIn()) {
- ScpHelper helper = new ScpHelper(session, invOut, invIn, fs, opener, streamFactory, listener);
+ ScpHelper helper = new ScpHelper(session, invOut, invIn, fs, opener, listener);
helper.receive(local,
options.contains(Option.Recursive),
options.contains(Option.TargetIsDirectory),
@@ -132,7 +127,7 @@ public class DefaultScpClient extends AbstractScpClient {
try (InputStream invOut = channel.getInvertedOut();
OutputStream invIn = channel.getInvertedIn()) {
// NOTE: we use a mock file system since we expect no invocations for it
- ScpHelper helper = new ScpHelper(session, invOut, invIn, new MockFileSystem(remote), opener, streamFactory, listener);
+ ScpHelper helper = new ScpHelper(session, invOut, invIn, new MockFileSystem(remote), opener, listener);
Path mockPath = new MockPath(remote);
helper.sendStream(new DefaultScpStreamResolver(name, mockPath, perms, time, size, local, cmd),
options.contains(Option.PreserveAttributes), ScpHelper.DEFAULT_SEND_BUFFER_SIZE);
@@ -160,7 +155,7 @@ public class DefaultScpClient extends AbstractScpClient {
try (InputStream invOut = channel.getInvertedOut();
OutputStream invIn = channel.getInvertedIn()) {
- ScpHelper helper = new ScpHelper(session, invOut, invIn, fs, opener, streamFactory, listener);
+ ScpHelper helper = new ScpHelper(session, invOut, invIn, fs, opener, listener);
executor.execute(helper, local, options);
} finally {
try {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/main/java/org/apache/sshd/client/scp/ScpClientCreator.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/scp/ScpClientCreator.java b/sshd-core/src/main/java/org/apache/sshd/client/scp/ScpClientCreator.java
index 502e5aa..8f8ab63 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/scp/ScpClientCreator.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/scp/ScpClientCreator.java
@@ -21,63 +21,49 @@ package org.apache.sshd.client.scp;
import org.apache.sshd.common.scp.ScpFileOpener;
import org.apache.sshd.common.scp.ScpFileOpenerHolder;
-import org.apache.sshd.common.scp.ScpStreamResolverFactory;
-import org.apache.sshd.common.scp.ScpStreamResolverFactoryHolder;
import org.apache.sshd.common.scp.ScpTransferEventListener;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
-public interface ScpClientCreator extends ScpFileOpenerHolder, ScpStreamResolverFactoryHolder {
+public interface ScpClientCreator extends ScpFileOpenerHolder {
/**
* Create an SCP client from this session.
*
* @return An {@link ScpClient} instance. <B>Note:</B> uses the currently
* registered {@link ScpTransferEventListener}, {@link ScpStreamResolverFactoryHolder}
- * and {@link ScpFileOpener} if any
+ * and {@link ScpFileOpener} if any
* @see #setScpFileOpener(ScpFileOpener)
- * @see #setScpStreamResolverFactory(ScpStreamResolverFactory)
* @see #setScpTransferEventListener(ScpTransferEventListener)
*/
default ScpClient createScpClient() {
- return createScpClient(getScpFileOpener(), getScpStreamResolverFactory(), getScpTransferEventListener());
+ return createScpClient(getScpFileOpener(), getScpTransferEventListener());
}
/**
* Create an SCP client from this session.
*
* @param listener A {@link ScpTransferEventListener} that can be used
- * to receive information about the SCP operations - may be {@code null}
- * to indicate no more events are required. <B>Note:</B> this listener
- * is used <U>instead</U> of any listener set via {@link #setScpTransferEventListener(ScpTransferEventListener)}
+ * to receive information about the SCP operations - may be {@code null}
+ * to indicate no more events are required. <B>Note:</B> this listener
+ * is used <U>instead</U> of any listener set via {@link #setScpTransferEventListener(ScpTransferEventListener)}
* @return An {@link ScpClient} instance
*/
default ScpClient createScpClient(ScpTransferEventListener listener) {
- return createScpClient(getScpFileOpener(), getScpStreamResolverFactory(), listener);
+ return createScpClient(getScpFileOpener(), listener);
}
/**
* Create an SCP client from this session.
*
* @param opener The {@link ScpFileOpener} to use to control how local files
- * are read/written. If {@code null} then a default opener is used.
- * <B>Note:</B> this opener is used <U>instead</U> of any instance
- * set via {@link #setScpFileOpener(ScpFileOpener)}
+ * are read/written. If {@code null} then a default opener is used.
+ * <B>Note:</B> this opener is used <U>instead</U> of any instance
+ * set via {@link #setScpFileOpener(ScpFileOpener)}
* @return An {@link ScpClient} instance
*/
default ScpClient createScpClient(ScpFileOpener opener) {
- return createScpClient(opener, getScpStreamResolverFactory(), getScpTransferEventListener());
- }
-
- /**
- * Create an SCP client from this session.
- *
- * @param factory The {@link ScpStreamResolverFactory} used to create input/output stream
- * for incoming/outgoing files
- * @return An {@link ScpClient} instance
- */
- default ScpClient createScpClient(ScpStreamResolverFactory factory) {
- return createScpClient(getScpFileOpener(), factory, getScpTransferEventListener());
+ return createScpClient(opener, getScpTransferEventListener());
}
/**
@@ -87,15 +73,14 @@ public interface ScpClientCreator extends ScpFileOpenerHolder, ScpStreamResolver
* are read/written. If {@code null} then a default opener is used.
* <B>Note:</B> this opener is used <U>instead</U> of any instance
* set via {@link #setScpFileOpener(ScpFileOpener)}
- * @param factory The {@link ScpStreamResolverFactory} to use in order to create
- * incoming/outgoing streams for received/sent files
* @param listener A {@link ScpTransferEventListener} that can be used
* to receive information about the SCP operations - may be {@code null}
* to indicate no more events are required. <B>Note:</B> this listener
- * is used <U>instead</U> of any listener set via {@link #setScpTransferEventListener(ScpTransferEventListener)}
+ * is used <U>instead</U> of any listener set via
+ * {@link #setScpTransferEventListener(ScpTransferEventListener)}
* @return An {@link ScpClient} instance
*/
- ScpClient createScpClient(ScpFileOpener opener, ScpStreamResolverFactory factory, ScpTransferEventListener listener);
+ ScpClient createScpClient(ScpFileOpener opener, ScpTransferEventListener listener);
/**
* @return The last {@link ScpTransferEventListener} set via
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/main/java/org/apache/sshd/client/session/AbstractClientSession.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/AbstractClientSession.java b/sshd-core/src/main/java/org/apache/sshd/client/session/AbstractClientSession.java
index ee8c550..b67310d 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/session/AbstractClientSession.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/session/AbstractClientSession.java
@@ -66,7 +66,6 @@ import org.apache.sshd.common.io.IoWriteFuture;
import org.apache.sshd.common.kex.KexProposalOption;
import org.apache.sshd.common.kex.KexState;
import org.apache.sshd.common.scp.ScpFileOpener;
-import org.apache.sshd.common.scp.ScpStreamResolverFactory;
import org.apache.sshd.common.scp.ScpTransferEventListener;
import org.apache.sshd.common.session.ConnectionService;
import org.apache.sshd.common.session.Session;
@@ -91,7 +90,6 @@ public abstract class AbstractClientSession extends AbstractSession implements C
private List<NamedFactory<UserAuth>> userAuthFactories;
private ScpTransferEventListener scpListener;
private ScpFileOpener scpOpener;
- private ScpStreamResolverFactory scpStreamFactory;
private SocketAddress connectAddress;
private ClientProxyConnector proxyConnector;
@@ -319,16 +317,6 @@ public abstract class AbstractClientSession extends AbstractSession implements C
}
@Override
- public ScpStreamResolverFactory getScpStreamResolverFactory() {
- return resolveEffectiveProvider(ScpStreamResolverFactory.class, scpStreamFactory, getFactoryManager().getScpStreamResolverFactory());
- }
-
- @Override
- public void setScpStreamResolverFactory(ScpStreamResolverFactory factory) {
- scpStreamFactory = factory;
- }
-
- @Override
public ScpTransferEventListener getScpTransferEventListener() {
return scpListener;
}
@@ -339,8 +327,8 @@ public abstract class AbstractClientSession extends AbstractSession implements C
}
@Override
- public ScpClient createScpClient(ScpFileOpener opener, ScpStreamResolverFactory factory, ScpTransferEventListener listener) {
- return new DefaultScpClient(this, opener, factory, listener);
+ public ScpClient createScpClient(ScpFileOpener opener, ScpTransferEventListener listener) {
+ return new DefaultScpClient(this, opener, listener);
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpFileOpener.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpFileOpener.java b/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpFileOpener.java
index 3ef8c28..5b78fda 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpFileOpener.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpFileOpener.java
@@ -166,6 +166,8 @@ public interface ScpFileOpener {
*/
InputStream openRead(Session session, Path file, OpenOption... options) throws IOException;
+ ScpSourceStreamResolver createScpSourceStreamResolver(Path path) throws IOException;
+
/**
* Create an output stream to write to a file
*
@@ -177,6 +179,8 @@ public interface ScpFileOpener {
*/
OutputStream openWrite(Session session, Path file, OpenOption... options) throws IOException;
+ ScpTargetStreamResolver createScpTargetStreamResolver(Path path) throws IOException;
+
static void updateFileProperties(Path file, Set<PosixFilePermission> perms, ScpTimestamp time) throws IOException {
IoUtils.setPermissions(file, perms);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpHelper.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpHelper.java b/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpHelper.java
index 6075234..e8183c8 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpHelper.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpHelper.java
@@ -46,7 +46,6 @@ import java.util.concurrent.TimeUnit;
import org.apache.sshd.common.file.util.MockPath;
import org.apache.sshd.common.scp.ScpTransferEventListener.FileOperation;
import org.apache.sshd.common.scp.helpers.DefaultScpFileOpener;
-import org.apache.sshd.common.scp.helpers.DefaultScpStreamResolverFactory;
import org.apache.sshd.common.session.Session;
import org.apache.sshd.common.session.SessionHolder;
import org.apache.sshd.common.util.GenericUtils;
@@ -101,20 +100,17 @@ public class ScpHelper extends AbstractLoggingBean implements SessionHolder<Sess
protected final OutputStream out;
protected final FileSystem fileSystem;
protected final ScpFileOpener opener;
- protected final ScpStreamResolverFactory streamFactory;
protected final ScpTransferEventListener listener;
private final Session sessionInstance;
public ScpHelper(Session session, InputStream in, OutputStream out,
- FileSystem fileSystem, ScpFileOpener opener,
- ScpStreamResolverFactory streamFactory, ScpTransferEventListener eventListener) {
+ FileSystem fileSystem, ScpFileOpener opener, ScpTransferEventListener eventListener) {
this.sessionInstance = Objects.requireNonNull(session, "No session");
this.in = Objects.requireNonNull(in, "No input stream");
this.out = Objects.requireNonNull(out, "No output stream");
this.fileSystem = fileSystem;
this.opener = (opener == null) ? DefaultScpFileOpener.INSTANCE : opener;
- this.streamFactory = (streamFactory == null) ? DefaultScpStreamResolverFactory.INSTANCE : streamFactory;
this.listener = (eventListener == null) ? ScpTransferEventListener.EMPTY : eventListener;
}
@@ -286,7 +282,7 @@ public class ScpHelper extends AbstractLoggingBean implements SessionHolder<Sess
this, header, path, preserve, time, bufferSize);
}
- receiveStream(header, streamFactory.createScpTargetStreamResolver(path, opener), time, preserve, bufferSize);
+ receiveStream(header, opener.createScpTargetStreamResolver(path), time, preserve, bufferSize);
}
public void receiveStream(String header, ScpTargetStreamResolver resolver, ScpTimestamp time, boolean preserve, int bufferSize) throws IOException {
@@ -482,7 +478,7 @@ public class ScpHelper extends AbstractLoggingBean implements SessionHolder<Sess
log.debug("sendFile({})[preserve={},buffer-size={}] Sending file {}", this, preserve, bufferSize, path);
}
- sendStream(streamFactory.createScpSourceStreamResolver(path, opener), preserve, bufferSize);
+ sendStream(opener.createScpSourceStreamResolver(path), preserve, bufferSize);
}
public void sendStream(ScpSourceStreamResolver resolver, boolean preserve, int bufferSize) throws IOException {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpStreamResolverFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpStreamResolverFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpStreamResolverFactory.java
deleted file mode 100644
index 0dce708..0000000
--- a/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpStreamResolverFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.sshd.common.scp;
-
-import java.io.IOException;
-import java.nio.file.Path;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-public interface ScpStreamResolverFactory {
- ScpSourceStreamResolver createScpSourceStreamResolver(Path path, ScpFileOpener opener) throws IOException;
-
- ScpTargetStreamResolver createScpTargetStreamResolver(Path path, ScpFileOpener opener) throws IOException;
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpStreamResolverFactoryHolder.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpStreamResolverFactoryHolder.java b/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpStreamResolverFactoryHolder.java
deleted file mode 100644
index 3483629..0000000
--- a/sshd-core/src/main/java/org/apache/sshd/common/scp/ScpStreamResolverFactoryHolder.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.sshd.common.scp;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-public interface ScpStreamResolverFactoryHolder {
- ScpStreamResolverFactory getScpStreamResolverFactory();
-
- void setScpStreamResolverFactory(ScpStreamResolverFactory factory);
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/main/java/org/apache/sshd/common/scp/helpers/DefaultScpFileOpener.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/scp/helpers/DefaultScpFileOpener.java b/sshd-core/src/main/java/org/apache/sshd/common/scp/helpers/DefaultScpFileOpener.java
index cdf39d4..bb6ae3b 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/scp/helpers/DefaultScpFileOpener.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/scp/helpers/DefaultScpFileOpener.java
@@ -28,6 +28,8 @@ import java.nio.file.Path;
import java.util.Arrays;
import org.apache.sshd.common.scp.ScpFileOpener;
+import org.apache.sshd.common.scp.ScpSourceStreamResolver;
+import org.apache.sshd.common.scp.ScpTargetStreamResolver;
import org.apache.sshd.common.session.Session;
import org.apache.sshd.common.util.logging.AbstractLoggingBean;
@@ -60,4 +62,14 @@ public class DefaultScpFileOpener extends AbstractLoggingBean implements ScpFile
return Files.newOutputStream(file, options);
}
+
+ @Override
+ public ScpSourceStreamResolver createScpSourceStreamResolver(Path path) throws IOException {
+ return new LocalFileScpSourceStreamResolver(path, this);
+ }
+
+ @Override
+ public ScpTargetStreamResolver createScpTargetStreamResolver(Path path) throws IOException {
+ return new LocalFileScpTargetStreamResolver(path, this);
+ }
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/main/java/org/apache/sshd/common/scp/helpers/DefaultScpStreamResolverFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/scp/helpers/DefaultScpStreamResolverFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/scp/helpers/DefaultScpStreamResolverFactory.java
deleted file mode 100644
index 60933e0..0000000
--- a/sshd-core/src/main/java/org/apache/sshd/common/scp/helpers/DefaultScpStreamResolverFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.sshd.common.scp.helpers;
-
-import java.io.IOException;
-import java.nio.file.Path;
-
-import org.apache.sshd.common.scp.ScpFileOpener;
-import org.apache.sshd.common.scp.ScpSourceStreamResolver;
-import org.apache.sshd.common.scp.ScpStreamResolverFactory;
-import org.apache.sshd.common.scp.ScpTargetStreamResolver;
-import org.apache.sshd.common.util.logging.AbstractLoggingBean;
-
-/**
- * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
- */
-public class DefaultScpStreamResolverFactory extends AbstractLoggingBean implements ScpStreamResolverFactory {
- public static final DefaultScpStreamResolverFactory INSTANCE = new DefaultScpStreamResolverFactory();
-
- public DefaultScpStreamResolverFactory() {
- super();
- }
-
- @Override
- public ScpSourceStreamResolver createScpSourceStreamResolver(Path path, ScpFileOpener opener) throws IOException {
- return new LocalFileScpSourceStreamResolver(path, opener);
- }
-
- @Override
- public ScpTargetStreamResolver createScpTargetStreamResolver(Path path, ScpFileOpener opener) throws IOException {
- return new LocalFileScpTargetStreamResolver(path, opener);
- }
-}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/main/java/org/apache/sshd/server/scp/ScpCommand.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/scp/ScpCommand.java b/sshd-core/src/main/java/org/apache/sshd/server/scp/ScpCommand.java
index 3667aa1..8ff52c1 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/scp/ScpCommand.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/scp/ScpCommand.java
@@ -31,10 +31,8 @@ import org.apache.sshd.common.file.FileSystemAware;
import org.apache.sshd.common.scp.ScpException;
import org.apache.sshd.common.scp.ScpFileOpener;
import org.apache.sshd.common.scp.ScpHelper;
-import org.apache.sshd.common.scp.ScpStreamResolverFactory;
import org.apache.sshd.common.scp.ScpTransferEventListener;
import org.apache.sshd.common.scp.helpers.DefaultScpFileOpener;
-import org.apache.sshd.common.scp.helpers.DefaultScpStreamResolverFactory;
import org.apache.sshd.common.session.Session;
import org.apache.sshd.common.session.SessionHolder;
import org.apache.sshd.common.util.GenericUtils;
@@ -63,7 +61,6 @@ public class ScpCommand
protected final int sendBufferSize;
protected final int receiveBufferSize;
protected final ScpFileOpener opener;
- protected final ScpStreamResolverFactory streamFactory;
protected boolean optR;
protected boolean optT;
protected boolean optF;
@@ -93,7 +90,6 @@ public class ScpCommand
* @param sendSize Size (in bytes) of buffer to use when sending files
* @param receiveSize Size (in bytes) of buffer to use when receiving files
* @param fileOpener The {@link ScpFileOpener} - if {@code null} then {@link DefaultScpFileOpener} is used
- * @param factory The {@link ScpStreamResolverFactory} - if {@code null} then {@link DefaultScpStreamResolverFactory} is used
* @param eventListener An {@link ScpTransferEventListener} - may be {@code null}
* @see ThreadUtils#newSingleThreadExecutor(String)
* @see ScpHelper#MIN_SEND_BUFFER_SIZE
@@ -102,7 +98,7 @@ public class ScpCommand
public ScpCommand(String command,
ExecutorService executorService, boolean shutdownOnExit,
int sendSize, int receiveSize,
- ScpFileOpener fileOpener, ScpStreamResolverFactory factory, ScpTransferEventListener eventListener) {
+ ScpFileOpener fileOpener, ScpTransferEventListener eventListener) {
name = command;
if (executorService == null) {
@@ -129,7 +125,6 @@ public class ScpCommand
receiveBufferSize = receiveSize;
opener = (fileOpener == null) ? DefaultScpFileOpener.INSTANCE : fileOpener;
- streamFactory = (factory == null) ? DefaultScpStreamResolverFactory.INSTANCE : factory;
listener = (eventListener == null) ? ScpTransferEventListener.EMPTY : eventListener;
if (log.isDebugEnabled()) {
@@ -273,7 +268,7 @@ public class ScpCommand
public void run() {
int exitValue = ScpHelper.OK;
String exitMessage = null;
- ScpHelper helper = new ScpHelper(getServerSession(), in, out, fileSystem, opener, streamFactory, listener);
+ ScpHelper helper = new ScpHelper(getServerSession(), in, out, fileSystem, opener, listener);
try {
if (optT) {
helper.receive(helper.resolveLocalPath(path), optR, optD, optP, receiveBufferSize);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/main/java/org/apache/sshd/server/scp/ScpCommandFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/server/scp/ScpCommandFactory.java b/sshd-core/src/main/java/org/apache/sshd/server/scp/ScpCommandFactory.java
index b3b2d89..99e3e34 100644
--- a/sshd-core/src/main/java/org/apache/sshd/server/scp/ScpCommandFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/server/scp/ScpCommandFactory.java
@@ -25,8 +25,6 @@ import java.util.concurrent.ExecutorService;
import org.apache.sshd.common.scp.ScpFileOpener;
import org.apache.sshd.common.scp.ScpFileOpenerHolder;
import org.apache.sshd.common.scp.ScpHelper;
-import org.apache.sshd.common.scp.ScpStreamResolverFactory;
-import org.apache.sshd.common.scp.ScpStreamResolverFactoryHolder;
import org.apache.sshd.common.scp.ScpTransferEventListener;
import org.apache.sshd.common.util.EventListenerUtils;
import org.apache.sshd.common.util.ObjectBuilder;
@@ -44,7 +42,6 @@ import org.apache.sshd.server.CommandFactory;
*/
public class ScpCommandFactory
implements ScpFileOpenerHolder,
- ScpStreamResolverFactoryHolder,
CommandFactory,
Cloneable,
ExecutorServiceConfigurer {
@@ -63,11 +60,6 @@ public class ScpCommandFactory
return this;
}
- public Builder withScpStreamResolverFactory(ScpStreamResolverFactory streamFactory) {
- factory.setScpStreamResolverFactory(streamFactory);
- return this;
- }
-
public Builder withDelegate(CommandFactory delegate) {
factory.setDelegateCommandFactory(delegate);
return this;
@@ -117,7 +109,6 @@ public class ScpCommandFactory
private ExecutorService executors;
private boolean shutdownExecutor;
private ScpFileOpener fileOpener;
- private ScpStreamResolverFactory streamFactory;
private int sendBufferSize = ScpHelper.MIN_SEND_BUFFER_SIZE;
private int receiveBufferSize = ScpHelper.MIN_RECEIVE_BUFFER_SIZE;
private Collection<ScpTransferEventListener> listeners = new CopyOnWriteArraySet<>();
@@ -137,25 +128,15 @@ public class ScpCommandFactory
this.fileOpener = fileOpener;
}
- @Override
- public ScpStreamResolverFactory getScpStreamResolverFactory() {
- return streamFactory;
- }
-
- @Override
- public void setScpStreamResolverFactory(ScpStreamResolverFactory streamFactory) {
- this.streamFactory = streamFactory;
- }
-
public CommandFactory getDelegateCommandFactory() {
return delegate;
}
/**
* @param factory A {@link CommandFactory} to be used if the
- * command is not an SCP one. If {@code null} then an {@link IllegalArgumentException}
- * will be thrown when attempting to invoke {@link #createCommand(String)}
- * with a non-SCP command
+ * command is not an SCP one. If {@code null} then an {@link IllegalArgumentException}
+ * will be thrown when attempting to invoke {@link #createCommand(String)}
+ * with a non-SCP command
*/
public void setDelegateCommandFactory(CommandFactory factory) {
delegate = factory;
@@ -168,10 +149,10 @@ public class ScpCommandFactory
/**
* @param service An {@link ExecutorService} to be used when
- * starting {@link ScpCommand} execution. If {@code null} then a single-threaded
- * ad-hoc service is used. <B>Note:</B> the service will <U>not</U> be shutdown
- * when the command is terminated - unless it is the ad-hoc service, which will be
- * shutdown regardless
+ * starting {@link ScpCommand} execution. If {@code null} then a single-threaded
+ * ad-hoc service is used. <B>Note:</B> the service will <U>not</U> be shutdown
+ * when the command is terminated - unless it is the ad-hoc service, which will be
+ * shutdown regardless
*/
@Override
public void setExecutorService(ExecutorService service) {
@@ -265,7 +246,7 @@ public class ScpCommandFactory
return new ScpCommand(command,
getExecutorService(), isShutdownOnExit(),
getSendBufferSize(), getReceiveBufferSize(),
- getScpFileOpener(), getScpStreamResolverFactory(), listenerProxy);
+ getScpFileOpener(), listenerProxy);
}
CommandFactory factory = getDelegateCommandFactory();
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/test/java/org/apache/sshd/client/scp/ScpTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/client/scp/ScpTest.java b/sshd-core/src/test/java/org/apache/sshd/client/scp/ScpTest.java
index 56ee962..643e238 100644
--- a/sshd-core/src/test/java/org/apache/sshd/client/scp/ScpTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/client/scp/ScpTest.java
@@ -53,10 +53,8 @@ import org.apache.sshd.common.random.Random;
import org.apache.sshd.common.scp.ScpException;
import org.apache.sshd.common.scp.ScpFileOpener;
import org.apache.sshd.common.scp.ScpHelper;
-import org.apache.sshd.common.scp.ScpStreamResolverFactory;
import org.apache.sshd.common.scp.ScpTransferEventListener;
import org.apache.sshd.common.scp.helpers.DefaultScpFileOpener;
-import org.apache.sshd.common.scp.helpers.DefaultScpStreamResolverFactory;
import org.apache.sshd.common.session.Session;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.OsUtils;
@@ -770,9 +768,8 @@ public class ScpTest extends BaseTestSupport {
private ExitCallback delegate;
InternalScpCommand(String command, ExecutorService executorService, boolean shutdownOnExit,
- int sendSize, int receiveSize, ScpFileOpener opener,
- ScpStreamResolverFactory factory, ScpTransferEventListener eventListener) {
- super(command, executorService, shutdownOnExit, sendSize, receiveSize, opener, factory, eventListener);
+ int sendSize, int receiveSize, ScpFileOpener opener, ScpTransferEventListener eventListener) {
+ super(command, executorService, shutdownOnExit, sendSize, receiveSize, opener, eventListener);
}
@Override
@@ -812,7 +809,6 @@ public class ScpTest extends BaseTestSupport {
getExecutorService(), isShutdownOnExit(),
getSendBufferSize(), getReceiveBufferSize(),
DefaultScpFileOpener.INSTANCE,
- DefaultScpStreamResolverFactory.INSTANCE,
ScpTransferEventListener.EMPTY);
}
});
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/539893ca/sshd-core/src/test/java/org/apache/sshd/spring/SpringConfigTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/spring/SpringConfigTest.java b/sshd-core/src/test/java/org/apache/sshd/spring/SpringConfigTest.java
index 3501208..162552a 100644
--- a/sshd-core/src/test/java/org/apache/sshd/spring/SpringConfigTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/spring/SpringConfigTest.java
@@ -67,7 +67,7 @@ public class SpringConfigTest extends BaseTestSupport {
@After
public void tearDown() throws Exception {
if (context != null) {
- context.destroy();
+ context.close();
}
}