svn commit: r952059 - in /camel/trunk/tests: camel-itest-karaf/pom.xml camel-itest-osgi/pom.xml

2010-06-06 Thread ningjiang
Author: ningjiang
Date: Mon Jun  7 01:36:50 2010
New Revision: 952059

URL: http://svn.apache.org/viewvc?rev=952059view=rev
Log:
Removed the dependency of camel-osgi

Modified:
camel/trunk/tests/camel-itest-karaf/pom.xml
camel/trunk/tests/camel-itest-osgi/pom.xml

Modified: camel/trunk/tests/camel-itest-karaf/pom.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-karaf/pom.xml?rev=952059r1=952058r2=952059view=diff
==
--- camel/trunk/tests/camel-itest-karaf/pom.xml (original)
+++ camel/trunk/tests/camel-itest-karaf/pom.xml Mon Jun  7 01:36:50 2010
@@ -90,12 +90,6 @@
   version4.5/version
   scopetest/scope
 /dependency
-  dependency
-  groupIdorg.apache.camel/groupId
-  artifactIdcamel-osgi/artifactId
-  scopetest/scope
-  /dependency
-
   /dependencies
 
   build

Modified: camel/trunk/tests/camel-itest-osgi/pom.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/pom.xml?rev=952059r1=952058r2=952059view=diff
==
--- camel/trunk/tests/camel-itest-osgi/pom.xml (original)
+++ camel/trunk/tests/camel-itest-osgi/pom.xml Mon Jun  7 01:36:50 2010
@@ -86,11 +86,6 @@
 /dependency
 dependency
   groupIdorg.apache.camel/groupId
-  artifactIdcamel-osgi/artifactId
-  scopetest/scope
-/dependency
-dependency
-  groupIdorg.apache.camel/groupId
   artifactIdcamel-servlet/artifactId
   scopetest/scope
 /dependency




svn commit: r952060 - in /camel/trunk/apache-camel: pom.xml src/main/descriptors/common-bin.xml

2010-06-06 Thread ningjiang
Author: ningjiang
Date: Mon Jun  7 01:37:47 2010
New Revision: 952060

URL: http://svn.apache.org/viewvc?rev=952060view=rev
Log:
Added camel-blueprint module into assembly

Modified:
camel/trunk/apache-camel/pom.xml
camel/trunk/apache-camel/src/main/descriptors/common-bin.xml

Modified: camel/trunk/apache-camel/pom.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/apache-camel/pom.xml?rev=952060r1=952059r2=952060view=diff
==
--- camel/trunk/apache-camel/pom.xml (original)
+++ camel/trunk/apache-camel/pom.xml Mon Jun  7 01:37:47 2010
@@ -62,12 +62,10 @@
   groupIdorg.apache.camel/groupId
   artifactIdcamel-bindy/artifactId
 /dependency
-!-- blueprint is under active development
 dependency
   groupIdorg.apache.camel/groupId
   artifactIdcamel-blueprint/artifactId
 /dependency
---
 dependency
   groupIdorg.apache.camel/groupId
   artifactIdcamel-cache/artifactId

Modified: camel/trunk/apache-camel/src/main/descriptors/common-bin.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/apache-camel/src/main/descriptors/common-bin.xml?rev=952060r1=952059r2=952060view=diff
==
--- camel/trunk/apache-camel/src/main/descriptors/common-bin.xml (original)
+++ camel/trunk/apache-camel/src/main/descriptors/common-bin.xml Mon Jun  7 
01:37:47 2010
@@ -38,9 +38,7 @@
 includeorg.apache.camel:camel-bam/include
 includeorg.apache.camel:camel-bean-validator/include
 includeorg.apache.camel:camel-bindy/include
-!-- blueprint is under active development
 includeorg.apache.camel:camel-blueprint/include
---
 includeorg.apache.camel:camel-cache/include
 includeorg.apache.camel:camel-castor/include
 includeorg.apache.camel:camel-core/include




[CONF] Apache Camel Spring Security

2010-06-06 Thread confluence







Spring Security
Page edited by willem jiang


Comment:
CAMEL-2793 update the wiki doc of camel-spring-security


 Changes (5)
 



...
 h3. Using SpringSecurityAuthorizationPolicy 
camel-spring-security component can take the authentication token which is set by Spring Security or other security framework, and check authentication token with the access information which is configured by SpringSecurityAuthorizationPolicy. If the authentication token is authorized, the camel exchange will be passed to the next processor, otherwise CamelAuthorizationException will be thrown with the exchange. 
SpringSecurityAuthorizationPolicy will check the message header with CamelAuthentication and turned the security subject into the spring authentication token, you can specify your customer authenticationAdapter by configure this policy. If there is no security subject in the message header, and the policys attribute useThreadSecurityContext is true, the policy will use SecurityContextHolder.getContext().getAuthentication() to get the authentication token. If the authentication token is authorized, the camel exchange will be passed to the next processor, otherwise CamelAuthorizationException will be thrown with the exchange. 
 You can configure the SpringSecurityAuthorizationPolicy with normal Spring beans configuration, and you can also configure it with the customer authorizationPolicy element.   
...
| {{authenticationManager}} | String | The id of the authentication manager which is used for reauthentication within the SpringSecurityAuthorizationPolicy. If you dont specify it, SpringSecurityAuthorizationPolicy will set it value with authenticationManager | | {{accessDecisionManager}} | String | The id of the access decision manager which is used for checking the access attribute with authentication token. If you dont specify it, SpringSecurityAuthorizationPolicy will set it value with accessDecisionManager | 
| {{authenticationAdapter}} | String | New to Camel 2.4, The id of AuthenticationAdapter that SpringSecurityAuthorizationPolicy uses to turn a security subject into Spring authentication token | 
| {{useThreadSecurityContext}} | String boolean | SpringSecurityAuthorizationPolicy will try to get the authentication token from exchange, message header with the key CamelAuthentication, if it cant get it and the this attribute is true, it will try to get authentication from SecurityContextHolder (the thread local context).  The default value of this attribute is true. | 
| {{alwaysReauthenticate}} | String boolean | If this attribute is true, SpringSecurityAuthorizationPolicy will aways reauthenticate the authentication token. The default value of this attribute is false. | 
 h4. Using SpringSecurityAuthorizationPolicy in Spring XML 
...

Full Content

Spring Security
Available as of Camel 2.3

Spring Security is a poplar security framework to provides the authentication and authorization for the Spring application. It allows together with Camel to provide authorization support for the camel process by configuring the authorizationPolicy. 

Using SpringSecurityAuthorizationPolicy
camel-spring-security component can take the authentication token which is set by Spring Security or other security framework, and check authentication token with the access information which is configured by SpringSecurityAuthorizationPolicy.
SpringSecurityAuthorizationPolicy will check the message header with "CamelAuthentication" and turned the security subject into the spring authentication token, you can specify your customer authenticationAdapter by configure this policy. If there is no security subject in the message header, and the policy's attribute "useThreadSecurityContext" is true, the policy will use SecurityContextHolder.getContext().getAuthentication() to get the authentication token.
If the authentication token is authorized, the camel exchange will be passed to the next processor, otherwise CamelAuthorizationException will be thrown with the exchange.

You can configure the SpringSecurityAuthorizationPolicy with normal Spring bean's configuration, and you can also configure it with the customer authorizationPolicy element.  

authorizationPolicy element has below attributes:



 Attribut 
 Type 
  Description 


 id 
 String 
 The bean id which is common used for the bean which is managed by Spring


 access 
 String 
 The access policy that you want to use authorization 


 authenticationManager 
 String 
 The id of the authentication manager which is used for reauthentication within the SpringSecurityAuthorizationPolicy. If you don't specify it, SpringSecurityAuthorizationPolicy 

svn commit: r952085 - /camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java

2010-06-06 Thread davsclaus
Author: davsclaus
Date: Mon Jun  7 04:25:50 2010
New Revision: 952085

URL: http://svn.apache.org/viewvc?rev=952085view=rev
Log:
CAMEL-2537: Added JMS example of using resequencer to reorder messages based on 
JMSPriority

Added:

camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java
  - copied, changed from r952077, 
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsFilterTest.java

Copied: 
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java
 (from r952077, 
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsFilterTest.java)
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java?p2=camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.javap1=camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsFilterTest.javar1=952077r2=952085rev=952085view=diff
==
--- 
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsFilterTest.java
 (original)
+++ 
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java
 Mon Jun  7 04:25:50 2010
@@ -14,70 +14,66 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.component.jms; 
+package org.apache.camel.component.jms;
 
 import javax.jms.ConnectionFactory;
 
 import org.apache.activemq.ActiveMQConnectionFactory;
 import org.apache.camel.CamelContext;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.CamelTestSupport;
 
+import static 
org.apache.camel.component.jms.JmsComponent.jmsComponentClientAcknowledge;
+
 /**
- * Tests filtering using Camel Test
+ * JMSPriority being ordered using the resequencer in batch mode.
+ * 
  * @version $Revision: 724291 $
  */
-// START SNIPPET: example
-public class JmsFilterTest extends CamelTestSupport {
-
-@EndpointInject(uri = mock:result)
-protected MockEndpoint resultEndpoint;
-
-@Produce(uri = direct:start)
-protected ProducerTemplate template;
-
-public void testSendMatchingMessage() throws Exception {
-String expectedBody = matched/;
-
-resultEndpoint.expectedBodiesReceived(expectedBody);
-
-template.sendBodyAndHeader(expectedBody, foo, bar);
-
-resultEndpoint.assertIsSatisfied();
-}
-
-public void testSendNotMatchingMessage() throws Exception {
-resultEndpoint.expectedMessageCount(0);
-
-template.sendBodyAndHeader(notMatched/, foo, 
notMatchedHeaderValue);
+public class JmsBatchResequencerJMSPriorityTest extends CamelTestSupport {
+
+public void testBatchResequencerJMSPriority() throws Exception {
+MockEndpoint mock = getMockEndpoint(mock:result);
+mock.expectedBodiesReceived(G, A, B, E, H, C, D, F);
+
+// must use preserveMessageQos=true to be able to specify the 
JMSPriority to be used
+template.sendBodyAndHeader(jms:queue:foo?preserveMessageQos=true, 
A, JMSPriority, 6);
+template.sendBodyAndHeader(jms:queue:foo?preserveMessageQos=true, 
B, JMSPriority, 6);
+template.sendBodyAndHeader(jms:queue:foo?preserveMessageQos=true, 
C, JMSPriority, 4);
+template.sendBodyAndHeader(jms:queue:foo?preserveMessageQos=true, 
D, JMSPriority, 4);
+template.sendBodyAndHeader(jms:queue:foo?preserveMessageQos=true, 
E, JMSPriority, 6);
+template.sendBodyAndHeader(jms:queue:foo?preserveMessageQos=true, 
F, JMSPriority, 4);
+template.sendBodyAndHeader(jms:queue:foo?preserveMessageQos=true, 
G, JMSPriority, 8);
+template.sendBodyAndHeader(jms:queue:foo?preserveMessageQos=true, 
H, JMSPriority, 6);
 
-resultEndpoint.assertIsSatisfied();
+assertMockEndpointsSatisfied();
 }
 
 protected CamelContext createCamelContext() throws Exception {
 CamelContext camelContext = super.createCamelContext();
-
-// connect to embedded ActiveMQ JMS broker
-ConnectionFactory connectionFactory = 
-new ActiveMQConnectionFactory(vm://localhost);
-camelContext.addComponent(jms,
-JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
+
+ConnectionFactory connectionFactory = new 
ActiveMQConnectionFactory(vm://localhost?broker.persistent=false);
+camelContext.addComponent(jms, 
jmsComponentClientAcknowledge(connectionFactory));
 
 return camelContext;
 }
-
+
 

[CONF] Apache Camel Resequencer

2010-06-06 Thread confluence







Resequencer
Page edited by Claus Ibsen


 Changes (2)
 



...
* *Stream resequencing* re-orders (continuous) message streams based on the detection of gaps between messages.  
By default the [Resequencer] does not support duplicate messages and will only keep the last message, in case a message arrives with the same message _expression_. However in the batch mode you can enable it to allow duplicates.  
h3. Batch Resequencing  
...
{code}  
h4. Allow Duplicates *Available as of Camel 2.4*  In the {{batch}} mode, you can now allow duplicates. In Java DSL there is a {{allowDuplicates()}} method and in Spring XML there is an {{allowDuplicates=true}} attribute on the {{batch-config/}} you can use to enable it.  h4. Reverse *Available as of Camel 2.4*  In the {{batch}} mode, you can now reverse the _expression_ ordering. By default the order is based on 0..9,A..Z, which would let messages with low numbers be ordered first, and thus also also outgoing first. In some cases you want to reverse order, which is now possible.  In Java DSL there is a {{reverse()}} method and in Spring XML there is an {{reverse=true}} attribute on the {{batch-config/}} you can use to enable it.  h4. Resequence JMS messages based on JMSPriority *Available as of Camel 2.4*  Its now much easier to use the [Resequencer] to resequence messages from [JMS] queues based on {{JMSPriority}}. For that to work you need to use the two new options {{allowDuplicates}} and {{reverse}}.   {snippet:id=e1|lang=java|url=""  Notice this is *only* possible in the {{batch}} mode of the [Resequencer].  
h3. Stream Resequencing  
...

Full Content

Resequencer

The Resequencer from the EIP patterns allows you to reorganise messages based on some comparator. By default in Camel we use an _expression_ to create the comparator; so that you can compare by a message header or the body or a piece of a message etc.



Camel supports two resequencing algorithms:


	Batch resequencing collects messages into a batch, sorts the messages and sends them to their output.
	Stream resequencing re-orders (continuous) message streams based on the detection of gaps between messages.



By default the Resequencer does not support duplicate messages and will only keep the last message, in case a message arrives with the same message _expression_. However in the batch mode you can enable it to allow duplicates.

Batch Resequencing

The following example shows how to use the batch-processing resequencer so that messages are sorted in order of the body() _expression_. That is messages are collected into a batch (either by a maximum number of messages per batch or using a timeout) then they are sorted in order and then sent out to their output.

Using the Fluent Builders


from("direct:start").resequence(body()).to("mock:result");



This is equvalent to 



from("direct:start").resequence(body()).batch().to("mock:result");



The batch-processing resequencer can be further configured via the size() and timeout() methods.



from("direct:start").resequence(body()).batch().size(300).timeout(4000L).to("mock:result")



This sets the batch size to 300 and the batch timeout to 4000 ms (by default, the batch size is 100 and the timeout is 1000 ms). Alternatively, you can provide a configuration object.



from("direct:start").resequence(body()).batch(new BatchResequencerConfig(300, 4000L)).to("mock:result")




So the above example will reorder messages from endpoint direct:a in order of their bodies, to the endpoint mock:result. 
Typically you'd use a header rather than the body to order things; or maybe a part of the body. So you could replace this _expression_ with



resequencer(header("mySeqNo"))



for example to reorder messages using a custom sequence number in the header mySeqNo.

You can of course use many different _expression_ languages such as XPath, XQuery, SQL or various Scripting Languages.

You can also use multiple expressions; so you could for example sort by priority first then some other custom header



resequence(header("mySeqNo"), header("MyCustomerRating"))



Using the Spring XML Extensions



camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"
  route
from uri="direct:start" /
resequence
  simplebody/simple
  to uri="mock:result" /
  !-- 
batch-config can be ommitted for default (batch) resequencer settings
  --
  batch-config batchSize="300" batchTimeout="4000" /
/resequence
  /route
/camelContext



Allow Duplicates
Available as of Camel 2.4

In the batch mode, you can now allow duplicates. In Java DSL there is a allowDuplicates() method and in Spring XML there is an allowDuplicates=true attribute on the batch-config/ you 

[CONF] Apache Camel Camel 2.4.0 Release

2010-06-06 Thread confluence







Camel 2.4.0 Release
Page edited by Claus Ibsen


 Changes (1)
 



...
* Fixed problem with using [Quartz] in OSGi and having Camel applications being hot-deployed which potentially could cause [Quartz] to stop scheduling in applications which havent been stopped. * The {{package}} scan when using Spring XML can now discover and use {{RouteBuilder}} classes which has been annotated with Springs {...@component}} 
* [Resequencer] in batch mode has two new options {{allowDuplicates}} and {{reverse}} which allows you to use it for re-ordering messages from [JMS] queues based on {{JMSPriority}} 
 h3. New [Enterprise Integration Patterns] 
...

Full Content

Camel 2.4.0 release (currently in progress)




New and Noteworthy

Welcome to the 2.4.0 release which approx XXX issues resolved (new features, improvements and bug fixes such as...)


	Added option useOriginalBody to OnCompletion
	Fixed issue when using mockito for testing when it uses CGLib proxies
	Fixed issue with @Consume not running in an unit of work to ensure callbacks is invoked when its done
	Routing Slip takes the _expression_ parameter as Recipient List does, and you can also
	The security context can be passed the camel-cxf to other camel components.
	ManagementAgent settings can now be set using setters from Java, instead of having to use JVM system properties. See tip in Camel JMX wiki page.
	Fixed problem with using Quartz in OSGi and having Camel applications being hot-deployed which potentially could cause Quartz to stop scheduling in applications which haven't been stopped.
	The package scan when using Spring XML can now discover and use RouteBuilder classes which has been annotated with Spring's @Component
	Resequencer in batch mode has two new options allowDuplicates and reverse which allows you to use it for re-ordering messages from JMS queues based on JMSPriority



New Enterprise Integration Patterns

New Components


	EJB to access EJB beans in a similar way as with the Bean component



New DSL

New Annotations


	@RoutingSlip



New Data Formats

New Languages

New Examples

New Tutorials

API breaking

Routing Slip now requires using _expression_ to specify the routing slip header, the XML DSL of Routing Slip is broken.


route
   from uri="direct:a"/
   !--NOTE from Camel 2.4.0, you need to specify the _expression_ element inside of the routingSlip element --
   routingSlip ignoreInvalidEndpoints="true"
   headermyHeader/header
   /routingSlip
/route



Known Issues

The Tracer may not output all details for some situations such as when using onCompletion or intercept etc.

Not all Examples have ANT build.xml files to run the example using ANT.

Important changes to consider when upgrading

Getting the Distributions

Binary Distributions




 Description 
 Download Link 
 PGP Signature file of download 


 Windows Distribution 
 apache-camel-2.4.0.zip 
 apache-camel-2.4.0.zip.asc 


 Unix/Linux/Cygwin Distribution 
 apache-camel-2.4.0.tar.gz 
 apache-camel-2.4.0.tar.gz.asc 




The above URLs use redirectionThe above URLs use the Apache Mirror system to redirect you to a suitable mirror for your download. Some users have experienced issues with some versions of browsers (e.g. some Safari browsers). If the download doesn't seem to work for you from the above URL then try using FireFox

Source Distributions




 Description 
 Download Link 
 PGP Signature file of download 


 Source for Windows 
 apache-camel-2.4.0-src.zip 
 apache-camel-2.4.0-src.zip.asc 








 Source for Unix/Linux/Cygwin 
 apache-camel-2.4.0-src.tar.gz 
 apache-camel-2.4.0-src.tar.gz.asc 





Getting the Binaries using Maven 2

To use this release in your maven project, the proper dependency configuration that you should use in your Maven POM is:


dependency
  groupIdorg.apache.camel/groupId
  artifactIdcamel-core/artifactId
  version2.4.0/version
/dependency



SVN Tag Checkout



svn co http://svn.apache.org/repos/asf/camel/tags/camel-2.4.0



Changelog

For a more detailed view of new features and bug fixes, see the:
TODO: Fix for 2.4.0

	release notes for 2.4.0





Change Notification Preferences

View Online
|
View Changes
|
Add Comment









svn commit: r952103 - in /camel/trunk/components/camel-ftp/src: main/java/org/apache/camel/component/file/remote/ test/java/org/apache/camel/component/file/remote/

2010-06-06 Thread davsclaus
Author: davsclaus
Date: Mon Jun  7 05:14:20 2010
New Revision: 952103

URL: http://svn.apache.org/viewvc?rev=952103view=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=952103r1=952102r2=952103view=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 FtpEndpointT extends FTPFi
 protected FTPClientConfig ftpClientConfig;
 protected MapString, Object ftpClientParameters;
 protected MapString, Object ftpClientConfigParameters;
+protected int soTimeout;
 
 public FtpEndpoint() {
 }
@@ -76,6 +77,11 @@ public class FtpEndpointT 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 FtpEndpointT extends FTPFi
 void setFtpClientConfigParameters(MapString, 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=952103r1=952102r2=952103view=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=952103r1=952102r2=952103view=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)
+