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");