You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2008/05/08 18:01:02 UTC
svn commit: r654567 - in /activemq/camel/trunk/camel-core/src:
main/java/org/apache/camel/component/file/FileConsumer.java
test/java/org/apache/camel/component/file/MoveFilesToDirectoryTest.java
Author: jstrachan
Date: Thu May 8 09:01:02 2008
New Revision: 654567
URL: http://svn.apache.org/viewvc?rev=654567&view=rev
Log:
further fix for http://issues.apache.org/activemq/browse/CAMEL-498 to avoid repeatedly processing the same file with noop=true
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileConsumer.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/MoveFilesToDirectoryTest.java
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=654567&r1=654566&r2=654567&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 Thu May 8 09:01:02 2008
@@ -106,24 +106,7 @@
}
// we only care about file modified times if we are not deleting/moving
// files
- if (endpoint.isNoop()) {
- // do nothing now as isValidFile() filters unmodified files
-/*
- long fileModified = file.lastModified();
- Long previousModified = noopMap.get(file);
- noopMap.put(file, fileModified);
- if (previousModified == null || fileModified > previousModified) {
- return 1;
- }
- else {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Ignoring file: " + file + " as modified time: " + fileModified
- + " less than the previous modified time: " + previousModified);
- }
- return 0;
- }
-*/
- } else {
+ if (!endpoint.isNoop()) {
if (filesBeingProcessed.contains(file)) {
return 1;
}
@@ -172,7 +155,7 @@
boolean result = false;
if (file != null && file.exists()) {
// TODO: maybe use a configurable strategy instead of the hardcoded one based on last file change
- if (isMatched(file) && isUnchanged(file)) {
+ if (isMatched(file) && isChanged(file)) {
result = true;
}
}
@@ -180,7 +163,7 @@
}
- protected boolean isUnchanged(File file) {
+ protected boolean isChanged(File file) {
if (file == null) {
// Sanity check
return false;
@@ -188,7 +171,7 @@
// Allow recursive polling to descend into this directory
return true;
} else {
- boolean lastModifiedCheck = true;
+ boolean lastModifiedCheck = false;
long modifiedDuration = 0;
if (getUnchangedDelay() > 0) {
modifiedDuration = System.currentTimeMillis() - file.lastModified();
@@ -198,31 +181,35 @@
long fileModified = file.lastModified();
Long previousModified = noopMap.get(file);
noopMap.put(file, fileModified);
- boolean modifiedChanged = previousModified == null || fileModified > previousModified;
-
-
+ if (previousModified == null || fileModified > previousModified) {
+ lastModifiedCheck = true;
+ }
- boolean sizeCheck = true;
+ boolean sizeCheck = false;
long sizeDifference = 0;
if (isUnchangedSize()) {
- long prevFileSize = (fileSizes.get(file) == null) ? 0 : fileSizes.get(file).longValue();
- sizeDifference = file.length() - prevFileSize;
- sizeCheck = sizeDifference == 0;
+ Long value = fileSizes.get(file);
+ if (value == null) {
+ sizeCheck = true;
+ }
+ else {
+ sizeCheck = file.length() != value;
+ }
}
- boolean answer = lastModifiedCheck && sizeCheck && !modifiedChanged;
+ boolean answer = lastModifiedCheck || sizeCheck;
if (LOG.isDebugEnabled()) {
- LOG.debug("file:" + file + " isUnchanged:" + answer + " " + "sizeCheck:" + sizeCheck + "("
+ LOG.debug("file:" + file + " isChanged:" + answer + " " + "sizeCheck:" + sizeCheck + "("
+ sizeDifference + ") " + "lastModifiedCheck:" + lastModifiedCheck + "("
+ modifiedDuration + ")");
}
if (isUnchangedSize()) {
if (answer) {
- fileSizes.remove(file);
- } else {
fileSizes.put(file, file.length());
+ } else {
+ fileSizes.remove(file);
}
}
Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/MoveFilesToDirectoryTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/MoveFilesToDirectoryTest.java?rev=654567&r1=654566&r2=654567&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/MoveFilesToDirectoryTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/MoveFilesToDirectoryTest.java Thu May 8 09:01:02 2008
@@ -65,6 +65,9 @@
assertFileNotExists(file);
assertFileExists(newFile);
+ // now lets wait for multiple polls to check we only process it once
+ Thread.sleep(5000);
+
assertMockEndpointsSatisifed();
}