This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch sandbox/camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit d3bf30be514fec749943b47414cf3b1de578b776
Author: Andrea Cosentino <[email protected]>
AuthorDate: Fri Nov 16 13:47:02 2018 +0100

    CAMEL-12631 - Fixed CS
---
 .../component/file/remote/SftpOperations.java      | 114 ++++++++++++---------
 1 file changed, 65 insertions(+), 49 deletions(-)

diff --git 
a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java
 
b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java
index a7fbaaf..1ecce01 100644
--- 
a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java
+++ 
b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java
@@ -47,6 +47,7 @@ import com.jcraft.jsch.SftpException;
 import com.jcraft.jsch.SocketFactory;
 import com.jcraft.jsch.UIKeyboardInteractive;
 import com.jcraft.jsch.UserInfo;
+
 import org.apache.camel.Exchange;
 import org.apache.camel.InvalidPayloadException;
 import org.apache.camel.LoggingLevel;
@@ -70,7 +71,8 @@ import static org.apache.camel.util.ObjectHelper.isNotEmpty;
 /**
  * SFTP remote file operations
  * <p/>
- * The JSCH session and channel are not thread-safe so we need to synchronize 
access to using this operation.
+ * The JSCH session and channel are not thread-safe so we need to synchronize
+ * access to using this operation.
  */
 public class SftpOperations implements RemoteFileOperations<SftpRemoteFile> {
     private static final Logger LOG = 
LoggerFactory.getLogger(SftpOperations.class);
@@ -88,13 +90,14 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
     }
 
     /**
-     * Extended user info which supports interactive keyboard mode, by 
entering the password.
+     * Extended user info which supports interactive keyboard mode, by entering
+     * the password.
      */
     public interface ExtendedUserInfo extends UserInfo, UIKeyboardInteractive {
     }
 
     public void setEndpoint(GenericFileEndpoint<SftpRemoteFile> endpoint) {
-        this.endpoint = (SftpEndpoint) endpoint;
+        this.endpoint = (SftpEndpoint)endpoint;
     }
 
     public synchronized boolean connect(RemoteFileConfiguration configuration) 
throws GenericFileOperationFailedException {
@@ -126,7 +129,7 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
                     }
 
                     LOG.trace("Channel isn't connected, trying to recreate and 
connect.");
-                    channel = (ChannelSftp) session.openChannel("sftp");
+                    channel = (ChannelSftp)session.openChannel("sftp");
 
                     if (endpoint.getConfiguration().getConnectTimeout() > 0) {
                         LOG.trace("Connecting use connectTimeout: {} ...", 
endpoint.getConfiguration().getConnectTimeout());
@@ -191,7 +194,7 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
         final JSch jsch = new JSch();
         JSch.setLogger(new 
JSchLogger(endpoint.getConfiguration().getJschLoggingLevel()));
 
-        SftpConfiguration sftpConfig = (SftpConfiguration) configuration;
+        SftpConfiguration sftpConfig = (SftpConfiguration)configuration;
 
         if (isNotEmpty(sftpConfig.getCiphers())) {
             LOG.debug("Using ciphers: {}", sftpConfig.getCiphers());
@@ -333,7 +336,8 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
 
             public boolean promptYesNo(String s) {
                 LOG.warn("Server asks for confirmation (yes|no): {}. Camel 
will answer no.", s);
-                // Return 'false' indicating modification of the hosts file is 
disabled.
+                // Return 'false' indicating modification of the hosts file is
+                // disabled.
                 return false;
             }
 
@@ -341,13 +345,12 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
                 LOG.trace("Message received from Server: {}", s);
             }
 
-            public String[] promptKeyboardInteractive(String destination, 
String name,
-                                                      String instruction, 
String[] prompt, boolean[] echo) {
+            public String[] promptKeyboardInteractive(String destination, 
String name, String instruction, String[] prompt, boolean[] echo) {
                 // must return an empty array if password is null
                 if (configuration.getPassword() == null) {
                     return new String[0];
                 } else {
-                    return new String[]{configuration.getPassword()};
+                    return new String[] {configuration.getPassword()};
                 }
             }
 
@@ -356,10 +359,10 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
         // set the SO_TIMEOUT for the time after the connect phase
         if (sftpConfig.getServerAliveInterval() == 0) {
             if (configuration.getSoTimeout() > 0) {
-               session.setTimeout(configuration.getSoTimeout());
+                session.setTimeout(configuration.getSoTimeout());
             }
         } else {
-               LOG.debug("The Server Alive Internal is already set, the socket 
timeout won't be considered to avoid overidding the provided Server alive 
interval value");
+            LOG.debug("The Server Alive Internal is already set, the socket 
timeout won't be considered to avoid overidding the provided Server alive 
interval value");
         }
 
         // set proxy if configured
@@ -486,7 +489,7 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
         LOG.debug("Renaming file: {} to: {}", from, to);
         try {
             reconnectIfNecessary();
-            //make use of the '/' separator because JSch expects this 
+            // make use of the '/' separator because JSch expects this
             // as the file separator even on Windows
             to = FileUtil.compactPath(to, '/');
             channel.rename(from, to);
@@ -511,7 +514,8 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
                 channel.ls(directory);
                 success = true;
             } catch (SftpException e) {
-                // ignore, we could not change directory so try to create it 
instead
+                // ignore, we could not change directory so try to create it
+                // instead
             }
 
             if (!success) {
@@ -521,7 +525,8 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
                     channel.mkdir(directory);
                     success = true;
                 } catch (SftpException e) {
-                    // we are here if the server side doesn't create 
intermediate folders
+                    // we are here if the server side doesn't create
+                    // intermediate folders
                     // so create the folder one by one
                     success = buildDirectoryChunks(directory);
                 }
@@ -582,8 +587,10 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
             return;
         }
 
-        // must compact path so SFTP server can traverse correctly, make use 
of the '/'
-        // separator because JSch expects this as the file separator even on 
Windows
+        // must compact path so SFTP server can traverse correctly, make use of
+        // the '/'
+        // separator because JSch expects this as the file separator even on
+        // Windows
         String before = path;
         char separatorChar = '/';
         path = FileUtil.compactPath(path, separatorChar);
@@ -597,8 +604,9 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
             return;
         }
         if (getCurrentDirectory().startsWith(path)) {
-            // extract the path segment relative to the target path and make 
sure it keeps the preceding '/' for the regex op
-            String p = getCurrentDirectory().substring(path.length() - 
(path.endsWith("/") ?  1 : 0));
+            // extract the path segment relative to the target path and make
+            // sure it keeps the preceding '/' for the regex op
+            String p = getCurrentDirectory().substring(path.length() - 
(path.endsWith("/") ? 1 : 0));
             if (p.length() == 0) {
                 return;
             }
@@ -606,7 +614,8 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
             path = UP_DIR_PATTERN.matcher(p).replaceAll("/..").substring(1);
         }
 
-        // if it starts with the root path then a little special handling for 
that
+        // if it starts with the root path then a little special handling for
+        // that
         if (FileUtil.hasLeadingSeparator(path)) {
             // change to root path
             if (!FileUtil.isWindows()) {
@@ -677,7 +686,7 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
             // can return either null or an empty list depending on FTP servers
             if (files != null) {
                 for (Object file : files) {
-                    list.add(new SftpRemoteFileJCraft((ChannelSftp.LsEntry) 
file));
+                    list.add(new 
SftpRemoteFileJCraft((ChannelSftp.LsEntry)file));
                 }
             }
             return list;
@@ -689,7 +698,8 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
     public synchronized boolean retrieveFile(String name, Exchange exchange, 
long size) throws GenericFileOperationFailedException {
         LOG.trace("retrieveFile({})", name);
         if (ObjectHelper.isNotEmpty(endpoint.getLocalWorkDirectory())) {
-            // local work directory is configured so we should store file 
content as files in this local directory
+            // local work directory is configured so we should store file
+            // content as files in this local directory
             return retrieveFileToFileInLocalWorkDirectory(name, exchange);
         } else {
             // store file content directory as stream on the body
@@ -713,8 +723,7 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
     private boolean retrieveFileToStreamInBody(String name, Exchange exchange) 
throws GenericFileOperationFailedException {
         String currentDir = null;
         try {
-            GenericFile<ChannelSftp.LsEntry> target =
-                    (GenericFile<ChannelSftp.LsEntry>) 
exchange.getProperty(FileComponent.FILE_EXCHANGE_FILE);
+            GenericFile<ChannelSftp.LsEntry> target = 
(GenericFile<ChannelSftp.LsEntry>)exchange.getProperty(FileComponent.FILE_EXCHANGE_FILE);
             ObjectHelper.notNull(target, "Exchange should have the " + 
FileComponent.FILE_EXCHANGE_FILE + " set");
 
             String remoteName = name;
@@ -723,12 +732,14 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
                 currentDir = getCurrentDirectory();
 
                 // change directory to path where the file is to be retrieved
-                // (must do this as some FTP servers cannot retrieve using 
absolute path)
+                // (must do this as some FTP servers cannot retrieve using
+                // absolute path)
                 String path = FileUtil.onlyPath(name);
                 if (path != null) {
                     changeCurrentDirectory(path);
                 }
-                // remote name is now only the file name as we just changed 
directory
+                // remote name is now only the file name as we just changed
+                // directory
                 remoteName = FileUtil.stripPath(name);
             }
 
@@ -764,8 +775,7 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
         File temp;
         File local = new File(endpoint.getLocalWorkDirectory());
         OutputStream os;
-        GenericFile<ChannelSftp.LsEntry> file =
-                (GenericFile<ChannelSftp.LsEntry>) 
exchange.getProperty(FileComponent.FILE_EXCHANGE_FILE);
+        GenericFile<ChannelSftp.LsEntry> file = 
(GenericFile<ChannelSftp.LsEntry>)exchange.getProperty(FileComponent.FILE_EXCHANGE_FILE);
         ObjectHelper.notNull(file, "Exchange should have the " + 
FileComponent.FILE_EXCHANGE_FILE + " set");
         try {
             // use relative filename in local work directory
@@ -794,7 +804,8 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
                 throw new GenericFileOperationFailedException("Cannot create 
new local work file: " + temp);
             }
 
-            // store content as a file in the local work directory in the temp 
handle
+            // store content as a file in the local work directory in the temp
+            // handle
             os = new FileOutputStream(temp);
 
             // set header with the path to the local work file
@@ -813,12 +824,14 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
                 currentDir = getCurrentDirectory();
 
                 // change directory to path where the file is to be retrieved
-                // (must do this as some FTP servers cannot retrieve using 
absolute path)
+                // (must do this as some FTP servers cannot retrieve using
+                // absolute path)
                 String path = FileUtil.onlyPath(name);
                 if (path != null) {
                     changeCurrentDirectory(path);
                 }
-                // remote name is now only the file name as we just changed 
directory
+                // remote name is now only the file name as we just changed
+                // directory
                 remoteName = FileUtil.stripPath(name);
             }
 
@@ -826,7 +839,8 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
 
         } catch (SftpException e) {
             LOG.trace("Error occurred during retrieving file: {} to local 
directory. Deleting local work file: {}", name, temp);
-            // failed to retrieve the file so we need to close streams and 
delete in progress file
+            // failed to retrieve the file so we need to close streams and
+            // delete in progress file
             // must close stream before deleting file
             IOHelper.close(os, "retrieve: " + name, LOG);
             boolean deleted = FileUtil.deleteFile(temp);
@@ -845,7 +859,8 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
 
         LOG.debug("Retrieve file to local work file result: true");
 
-        // operation went okay so rename temp to local after we have retrieved 
the data
+        // operation went okay so rename temp to local after we have retrieved
+        // the data
         LOG.trace("Renaming local in progress file from: {} to: {}", temp, 
local);
         try {
             if (!FileUtil.renameFile(temp, local, false)) {
@@ -871,13 +886,15 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
 
         try {
             if (path != null && endpoint.getConfiguration().isStepwise()) {
-                // must remember current dir so we stay in that directory 
after the write
+                // must remember current dir so we stay in that directory after
+                // the write
                 currentDir = getCurrentDirectory();
 
                 // change to path of name
                 changeCurrentDirectory(path);
 
-                // the target name should be without path, as we have changed 
directory
+                // the target name should be without path, as we have changed
+                // directory
                 targetName = FileUtil.stripPath(name);
             }
 
@@ -897,9 +914,7 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
         LOG.trace("doStoreFile({})", targetName);
 
         // if an existing file already exists what should we do?
-        if (endpoint.getFileExist() == GenericFileExist.Ignore
-                || endpoint.getFileExist() == GenericFileExist.Fail
-                || endpoint.getFileExist() == GenericFileExist.Move) {
+        if (endpoint.getFileExist() == GenericFileExist.Ignore || 
endpoint.getFileExist() == GenericFileExist.Fail || endpoint.getFileExist() == 
GenericFileExist.Move) {
             boolean existFile = existsFile(targetName);
             if (existFile && endpoint.getFileExist() == 
GenericFileExist.Ignore) {
                 // ignore but indicate that the file was written
@@ -918,7 +933,7 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
             // Do an explicit test for a null body and decide what to do
             if (endpoint.isAllowNullBody()) {
                 LOG.trace("Writing empty file.");
-                is = new ByteArrayInputStream(new byte[]{});
+                is = new ByteArrayInputStream(new byte[] {});
             } else {
                 throw new GenericFileOperationFailedException("Cannot write 
null body to file: " + name);
             }
@@ -949,8 +964,7 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
             }
             if (LOG.isDebugEnabled()) {
                 long time = watch.taken();
-                LOG.debug("Took {} ({} millis) to store file: {} and FTP 
client returned: true",
-                        new Object[]{TimeUtils.printDuration(time), time, 
targetName});
+                LOG.debug("Took {} ({} millis) to store file: {} and FTP 
client returned: true", new Object[] {TimeUtils.printDuration(time), time, 
targetName});
             }
 
             // after storing file, we may set chmod on the file
@@ -974,7 +988,7 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
             IOHelper.close(is, "store: " + name, LOG);
         }
     }
-    
+
     public synchronized boolean existsFile(String name) throws 
GenericFileOperationFailedException {
         LOG.trace("existsFile({})", name);
         if (endpoint.isFastExistsCheck()) {
@@ -996,7 +1010,7 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
                 return false;
             }
             for (Object file : files) {
-                ChannelSftp.LsEntry entry = (ChannelSftp.LsEntry) file;
+                ChannelSftp.LsEntry entry = (ChannelSftp.LsEntry)file;
                 String existing = entry.getFilename();
                 LOG.trace("Existing file: {}, target file: {}", existing, 
name);
                 existing = FileUtil.stripPath(existing);
@@ -1006,7 +1020,8 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
             }
             return false;
         } catch (SftpException e) {
-            // or an exception can be thrown with id 2 which means file does 
not exists
+            // or an exception can be thrown with id 2 which means file does 
not
+            // exists
             if (ChannelSftp.SSH_FX_NO_SUCH_FILE == e.id) {
                 return false;
             }
@@ -1025,7 +1040,8 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
             }
             return files.size() >= 1;
         } catch (SftpException e) {
-            // or an exception can be thrown with id 2 which means file does 
not exists
+            // or an exception can be thrown with id 2 which means file does 
not
+            // exists
             if (ChannelSftp.SSH_FX_NO_SUCH_FILE == e.id) {
                 return false;
             }
@@ -1054,10 +1070,9 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
     }
 
     /*
-     * adapted from com.jcraft.jsch.Util.createSocket(String, int, int)
-     *
-     * added possibility to specify the address of the local network 
interface, against the
-     * connection should bind
+     * adapted from com.jcraft.jsch.Util.createSocket(String, int, int) added
+     * possibility to specify the address of the local network interface,
+     * against the connection should bind
      */
     static Socket createSocketUtil(final String host, final int port, final 
String bindAddress, final int timeout) {
         Socket socket = null;
@@ -1086,7 +1101,8 @@ public class SftpOperations implements 
RemoteFileOperations<SftpRemoteFile> {
                     if (sockp[0] != null && sockp[0].isConnected()) {
                         try {
                             sockp[0].close();
-                        } catch (Exception eee) { }
+                        } catch (Exception eee) {
+                        }
                     }
                     sockp[0] = null;
                 }

Reply via email to