Author: davsclaus Date: Mon Jun 7 05:14:20 2010 New Revision: 952103 URL: http://svn.apache.org/viewvc?rev=952103&view=rev Log: CAMEL-2774: Setting ftpClient.soTimeout now supported.
Added: camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpClientSoTimeoutTest.java - copied, changed from r952085, camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpClientDataTimeoutTest.java Modified: camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpEndpoint.java camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsEndpoint.java Modified: camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpEndpoint.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpEndpoint.java?rev=952103&r1=952102&r2=952103&view=diff ============================================================================== --- camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpEndpoint.java (original) +++ camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpEndpoint.java Mon Jun 7 05:14:20 2010 @@ -36,6 +36,7 @@ public class FtpEndpoint<T extends FTPFi protected FTPClientConfig ftpClientConfig; protected Map<String, Object> ftpClientParameters; protected Map<String, Object> ftpClientConfigParameters; + protected int soTimeout; public FtpEndpoint() { } @@ -76,6 +77,11 @@ public class FtpEndpoint<T extends FTPFi } if (ftpClientParameters != null) { + // setting soTimeout has to be done later on FTPClient (after it has connected) + Object timeout = ftpClientParameters.remove("soTimeout"); + if (timeout != null) { + soTimeout = getCamelContext().getTypeConverter().convertTo(int.class, timeout); + } IntrospectionSupport.setProperties(client, ftpClientParameters); } @@ -125,4 +131,15 @@ public class FtpEndpoint<T extends FTPFi void setFtpClientConfigParameters(Map<String, Object> ftpClientConfigParameters) { this.ftpClientConfigParameters = ftpClientConfigParameters; } + + public int getSoTimeout() { + return soTimeout; + } + + /** + * Sets the soTimeout option to be used by FTPClient. + */ + public void setSoTimeout(int soTimeout) { + this.soTimeout = soTimeout; + } } Modified: camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java?rev=952103&r1=952102&r2=952103&view=diff ============================================================================== --- camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java (original) +++ camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java Mon Jun 7 05:14:20 2010 @@ -130,6 +130,19 @@ public class FtpOperations implements Re client.enterLocalPassiveMode(); } + // must set soTimeout after connect + if (endpoint instanceof FtpEndpoint) { + FtpEndpoint ftpEndpoint = (FtpEndpoint) endpoint; + if (ftpEndpoint.getSoTimeout() > 0) { + log.trace("Using SoTimeout=" + ftpEndpoint.getSoTimeout()); + try { + client.setSoTimeout(ftpEndpoint.getSoTimeout()); + } catch (IOException e) { + throw new GenericFileOperationFailedException(client.getReplyCode(), client.getReplyString(), e.getMessage(), e); + } + } + } + try { boolean login; if (username != null) { Modified: camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsEndpoint.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsEndpoint.java?rev=952103&r1=952102&r2=952103&view=diff ============================================================================== --- camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsEndpoint.java (original) +++ camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsEndpoint.java Mon Jun 7 05:14:20 2010 @@ -121,6 +121,11 @@ public class FtpsEndpoint extends FtpEnd } if (ftpClientParameters != null) { + // setting soTimeout has to be done later on FTPClient (after it has connected) + Object timeout = ftpClientParameters.remove("soTimeout"); + if (timeout != null) { + soTimeout = getCamelContext().getTypeConverter().convertTo(int.class, timeout); + } IntrospectionSupport.setProperties(client, ftpClientParameters); } Copied: camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpClientSoTimeoutTest.java (from r952085, camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpClientDataTimeoutTest.java) URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpClientSoTimeoutTest.java?p2=camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpClientSoTimeoutTest.java&p1=camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpClientDataTimeoutTest.java&r1=952085&r2=952103&rev=952103&view=diff ============================================================================== --- camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpClientDataTimeoutTest.java (original) +++ camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpClientSoTimeoutTest.java Mon Jun 7 05:14:20 2010 @@ -27,10 +27,10 @@ import org.junit.Test; /** * @version $Revision$ */ -public class FromFtpClientDataTimeoutTest extends FtpServerTestSupport { +public class FromFtpClientSoTimeoutTest extends FtpServerTestSupport { private String getFtpUrl() { - return "ftp://ad...@localhost:" + getPort() + "/timeout/?password=admin&ftpClient.dataTimeout=5000"; + return "ftp://ad...@localhost:" + getPort() + "/timeout/?password=admin&ftpClient.soTimeout=5000"; } @Override @@ -39,12 +39,12 @@ public class FromFtpClientDataTimeoutTes super.setUp(); prepareFtpServer(); } - + @Test public void testTimeout() throws Exception { MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedBodiesReceived("Hello World"); - + mock.assertIsSatisfied(); }