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