2013-09-30 100 views
1

我们使用骆驼(2.6)将某个文件从路由复制到另一个文件。由于我们没有单元测试,我试图写一个新的,但我发现所有的时间这个错误:骆驼测试sftp复制文件

org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: sftp://[email protected]/?connectTimeout=1800000&delay=1800000&disconnect=true&filter=%23myFileFilter&initialDelay=120000&passiveMode=true&password=admin&reconnectDelay=180000&recursive=true&useFixedDelay=true due to: Could not find a suitable setter for property: filter as there isn't a setter method with same type: java.lang.String nor type conversion possible: No type converter available to convert from type: java.lang.String to the required type: org.apache.camel.component.file.GenericFileFilter with value #myFileFilter 
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:449) 
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:463) 

我贴我的代码:

<bean id="myFileFilter" class="com.my.test.RouteFileFilter"> 
    <constructor-arg type="java.lang.String" 
     value="Regex_filter"/> 
</bean> 

RouteFilter是该genericFileFilter的实现

然后,在单元测试中我这样做:

CamelContext ctx = new DefaultCamelContext(); 
Exchange ex = new DefaultExchange(ctx); 
Endpoint endpoint = new SftpEndpoint(sourceURI, new SftpComponent(), new SftpConfiguration()); 
ctx.addEndpoint(sourceURI, endpoint); 

ctx.addRoutes(myBuilder); 
ctx.start(); 

这是行,我GE t的错误:

getContext().getEndpoint(getSourceURIWithFilter(), GenericFileEndpoint.class).setProcessStrategy(new DefaultRouteFileProcessStrategy(this)); 

回答

1

好吧,我发现很多这些错误在网络上,没有人可以回答这个。 此处解决方案:

mMyBuilder mybuilder = new MyBuilder(); 
SimpleRegistry registry = new SimpleRegistry(); 
registry.put("myFileFilter", myfileFilter); // myFileFilter is an instance of your filter 
CamelContext context = new DefaultCamelContext(registry); 

myBuilder.setMyFilter("#myFilter"); 
// your code 
context.addRoutes(myBuilder); 
context.start();