You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2008/11/29 22:46:08 UTC
svn commit: r721730 - in /activemq/camel/trunk/camel-core/src:
main/java/org/apache/camel/component/file/
test/java/org/apache/camel/component/file/
Author: davsclaus
Date: Sat Nov 29 13:46:08 2008
New Revision: 721730
URL: http://svn.apache.org/viewvc?rev=721730&view=rev
Log:
CAMEL-1112: Added sorter option for file consumer, to resort files before processing. Sorter is using a Comparator<File> for sorting.
Added:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileSorterRefTest.java
- copied, changed from r721719, activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileFilterTest.java
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileConsumer.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileEndpoint.java
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java?rev=721730&r1=721729&r2=721730&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java Sat Nov 29 13:46:08 2008
@@ -18,6 +18,7 @@
import java.io.File;
import java.io.FileFilter;
+import java.util.Comparator;
import java.util.Map;
import org.apache.camel.CamelContext;
@@ -79,8 +80,13 @@
result.setFilter(filter);
}
- // TODO: CAMEL-1112 sorter and having out-of-box sorters for by name, by filestamp, etc.
- // TODO: maybe even a reverse order
+ ref = getAndRemoveParameter(parameters, "sorterRef", String.class);
+ if (ref != null) {
+ Comparator<File> sorter = mandatoryLookup(ref, Comparator.class);
+ result.setSorter(sorter);
+ }
+
+ // TODO: CAMEL-1112 having out-of-box sorters for by name, by filestamp, etc., maybe even a reverse order
setProperties(result, parameters);
return result;
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileConsumer.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileConsumer.java?rev=721730&r1=721729&r2=721730&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileConsumer.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileConsumer.java Sat Nov 29 13:46:08 2008
@@ -22,8 +22,8 @@
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.util.ArrayList;
-import java.util.List;
import java.util.Collections;
+import java.util.List;
import org.apache.camel.AsyncCallback;
import org.apache.camel.Processor;
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileEndpoint.java?rev=721730&r1=721729&r2=721730&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileEndpoint.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileEndpoint.java Sat Nov 29 13:46:08 2008
@@ -17,12 +17,12 @@
package org.apache.camel.component.file;
import java.io.File;
-import java.io.IOException;
import java.io.FileFilter;
+import java.io.IOException;
import java.lang.reflect.Method;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
-import java.util.Comparator;
import org.apache.camel.Consumer;
import org.apache.camel.Exchange;
Copied: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileSorterRefTest.java (from r721719, activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileFilterTest.java)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileSorterRefTest.java?p2=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileSorterRefTest.java&p1=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileFilterTest.java&r1=721719&r2=721730&rev=721730&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFileFilterTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileSorterRefTest.java Sat Nov 29 13:46:08 2008
@@ -17,7 +17,7 @@
package org.apache.camel.component.file;
import java.io.File;
-import java.io.FileFilter;
+import java.util.Comparator;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
@@ -25,48 +25,38 @@
import org.apache.camel.impl.JndiRegistry;
/**
- * Unit test for the file filter option
+ * Unit test for the file sorter ref option
*/
-public class FileConsumerFileFilterTest extends ContextTestSupport {
+public class FileSorterRefTest extends ContextTestSupport {
- private String fileUrl = "file://target/filefilter/?fileFilterRef=myFilter";
+ private String fileUrl = "file://target/filesorter/?sorterRef=mySorter";
@Override
protected JndiRegistry createRegistry() throws Exception {
JndiRegistry jndi = super.createRegistry();
- jndi.bind("myFilter", new MyFileFilter());
+ jndi.bind("mySorter", new MyFileSorter());
return jndi;
}
@Override
protected void setUp() throws Exception {
super.setUp();
- deleteDirectory("target/filefilter");
- }
+ deleteDirectory("target/filesorter");
- public void testFilterFiles() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(0);
+ template.sendBodyAndHeader("file:target/filesorter/", "Hello Paris",
+ FileComponent.HEADER_FILE_NAME, "paris.txt");
- template.sendBodyAndHeader("file:target/filefilter/", "This is a file to be filtered",
- FileComponent.HEADER_FILE_NAME, "skipme.txt");
+ template.sendBodyAndHeader("file:target/filesorter/", "Hello London",
+ FileComponent.HEADER_FILE_NAME, "london.txt");
- mock.setResultWaitTime(2000);
- mock.assertIsSatisfied();
+ template.sendBodyAndHeader("file:target/filesorter/", "Hello Copenhagen",
+ FileComponent.HEADER_FILE_NAME, "copenhagen.txt");
}
- public void testFilterFilesWithARegularFile() throws Exception {
+ public void testSortFiles() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(1);
- mock.expectedBodiesReceived("Hello World");
-
- template.sendBodyAndHeader("file:target/filefilter/", "This is a file to be filtered",
- FileComponent.HEADER_FILE_NAME, "skipme.txt");
-
- template.sendBodyAndHeader("file:target/filefilter/", "Hello World",
- FileComponent.HEADER_FILE_NAME, "hello.txt");
-
- mock.assertIsSatisfied();
+ mock.expectedBodiesReceived("Hello Copenhagen", "Hello London", "Hello Paris");
+ assertMockEndpointsSatisfied();
}
protected RouteBuilder createRouteBuilder() throws Exception {
@@ -77,9 +67,10 @@
};
}
- public class MyFileFilter implements FileFilter {
- public boolean accept(File pathname) {
- return !pathname.getName().startsWith("skip");
+ public class MyFileSorter implements Comparator<File> {
+ public int compare(File o1, File o2) {
+ return o1.getName().compareTo(o2.getName());
}
}
+
}
\ No newline at end of file