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/05/26 07:09:51 UTC

svn commit: r660102 - in /activemq/camel/trunk/camel-core/src: main/java/org/apache/camel/component/file/strategy/ test/java/org/apache/camel/component/file/

Author: davsclaus
Date: Sun May 25 22:09:50 2008
New Revision: 660102

URL: http://svn.apache.org/viewvc?rev=660102&view=rev
Log:
CAMEL-551: File component noop=true fixed to also use file locking by default

Added:
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileNoOpLockFileTest.java   (with props)
Modified:
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategyFactory.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NoOpFileProcessStrategy.java
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFailureHandledTest.java
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProducerRenameStrategyTest.java

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategyFactory.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategyFactory.java?rev=660102&r1=660101&r2=660102&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategyFactory.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/FileProcessStrategyFactory.java Sun May 25 22:09:50 2008
@@ -26,7 +26,7 @@
 public final class FileProcessStrategyFactory {
 
     private FileProcessStrategyFactory() {
-        // Utility class
+        // Factory class
     }
 
     /**
@@ -41,7 +41,7 @@
         String moveNamePostfix = params.getProperty("moveNamePostfix");
 
         if (params.getProperty("noop") != null) {
-            return new NoOpFileProcessStrategy();
+            return new NoOpFileProcessStrategy(isLock);
         } else if (moveNamePostfix != null || moveNamePrefix != null) {
             if (isDelete) {
                 throw new IllegalArgumentException("You cannot set the deleteFiles property "

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NoOpFileProcessStrategy.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NoOpFileProcessStrategy.java?rev=660102&r1=660101&r2=660102&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NoOpFileProcessStrategy.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/strategy/NoOpFileProcessStrategy.java Sun May 25 22:09:50 2008
@@ -17,14 +17,18 @@
 package org.apache.camel.component.file.strategy;
 
 /**
- * A simple strategy which just locks the file but does not modify it
+ * A simple strategy which does not move or delete the processed files in any way.
  *
  * @version $Revision$
  */
 public class NoOpFileProcessStrategy extends FileProcessStrategySupport {
+
     public NoOpFileProcessStrategy() {
-        super(false);
+        super(true);
     }
 
-}
+    public NoOpFileProcessStrategy(boolean isLock) {
+        super(isLock);
+    }
 
+}

Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFailureHandledTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFailureHandledTest.java?rev=660102&r1=660101&r2=660102&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFailureHandledTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerFailureHandledTest.java Sun May 25 22:09:50 2008
@@ -33,6 +33,12 @@
  */
 public class FileConsumerFailureHandledTest extends ContextTestSupport {
 
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        deleteDirectory("target/messages");
+    }
+
     public void testParis() throws Exception {
         deleteDirectory("target/messages");
 

Added: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileNoOpLockFileTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileNoOpLockFileTest.java?rev=660102&view=auto
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileNoOpLockFileTest.java (added)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileNoOpLockFileTest.java Sun May 25 22:09:50 2008
@@ -0,0 +1,90 @@
+package org.apache.camel.component.file;
+
+import java.io.File;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.file.strategy.FileProcessStrategySupport;
+import org.apache.camel.component.mock.MockEndpoint;
+
+/**
+ * Unit test to verify that the noop file strategy usage of lock files.
+ */
+public class FileNoOpLockFileTest extends ContextTestSupport {
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        deleteDirectory("target/reports");
+    }
+
+    public void testLocked() throws Exception {
+        deleteDirectory("target/reports");
+
+        MockEndpoint mock = getMockEndpoint("mock:report");
+        mock.expectedBodiesReceived("Hello Locked");
+
+        template.sendBodyAndHeader("file:target/reports/locked", "Hello Locked",
+            FileComponent.HEADER_FILE_NAME, "report.txt");
+
+        mock.assertIsSatisfied();
+
+        // sleep to let file consumer do its unlocking
+        Thread.sleep(200);
+
+        // should be deleted after processing
+        checkLockFile(false);
+    }
+
+    public void testNotLocked() throws Exception {
+        deleteDirectory("target/reports");
+
+        MockEndpoint mock = getMockEndpoint("mock:report");
+        mock.expectedBodiesReceived("Hello Not Locked");
+
+        template.sendBodyAndHeader("file:target/reports/notlocked", "Hello Not Locked",
+            FileComponent.HEADER_FILE_NAME, "report.txt");
+
+        mock.assertIsSatisfied();
+
+        // sleep to let file consumer do its unlocking
+        Thread.sleep(200);
+
+        // no lock files should exists after processing
+        checkLockFile(false);
+    }
+
+    private static void checkLockFile(boolean expected) {
+        String filename = "target/reports/";
+        filename += expected ? "locked/" : "notlocked/";
+        filename += "report.txt" + FileProcessStrategySupport.DEFAULT_LOCK_FILE_POSTFIX;
+
+        File file = new File(filename);
+        assertEquals("Lock file should " + (expected ? "exists" : "not exists"), expected, file.exists());
+    }
+
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+                // for locks
+                from("file://target/reports/locked/?noop=true").process(new MyNoopProcessor()).
+                    to("mock:report");
+
+                // for no locks
+                from("file://target/reports/notlocked/?noop=true&lock=false").process(new MyNoopProcessor()).
+                    to("mock:report");
+            }
+        };
+    }
+
+    private class MyNoopProcessor implements Processor {
+        public void process(Exchange exchange) throws Exception {
+            String body = exchange.getIn().getBody(String.class);
+            boolean locked = "Hello Locked".equals(body);
+            checkLockFile(locked);
+        }
+    }
+
+}

Propchange: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileNoOpLockFileTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileNoOpLockFileTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProducerRenameStrategyTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProducerRenameStrategyTest.java?rev=660102&r1=660101&r2=660102&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProducerRenameStrategyTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProducerRenameStrategyTest.java Sun May 25 22:09:50 2008
@@ -29,6 +29,13 @@
  */
 public class FileProducerRenameStrategyTest extends ContextTestSupport {
 
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        deleteDirectory("target/done");
+        deleteDirectory("target/reports");
+    }
+
     public void testRenameSuccess() throws Exception {
         deleteDirectory("target/done");
         deleteDirectory("target/reports");