Updated Branches:
  refs/heads/camel-2.12.x a971b79da -> 6a5fbc126
  refs/heads/master 302133ed3 -> 4737cc841


CAMEL-6750: Fixed readLock=fileLock&delete=true for file consumer not being 
able to delete file on Windows.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/4737cc84
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4737cc84
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4737cc84

Branch: refs/heads/master
Commit: 4737cc84150397a841210ac5b511c09b33835adc
Parents: 302133e
Author: Claus Ibsen <davscl...@apache.org>
Authored: Mon Sep 16 17:00:35 2013 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Mon Sep 16 17:01:20 2013 +0200

----------------------------------------------------------------------
 .../file/strategy/GenericFileDeleteProcessStrategy.java   | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/4737cc84/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileDeleteProcessStrategy.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileDeleteProcessStrategy.java
 
b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileDeleteProcessStrategy.java
index b2ccb8e..524363f 100644
--- 
a/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileDeleteProcessStrategy.java
+++ 
b/camel-core/src/main/java/org/apache/camel/component/file/strategy/GenericFileDeleteProcessStrategy.java
@@ -50,6 +50,14 @@ public class GenericFileDeleteProcessStrategy<T> extends 
GenericFileProcessStrat
 
     @Override
     public void commit(GenericFileOperations<T> operations, 
GenericFileEndpoint<T> endpoint, Exchange exchange, GenericFile<T> file) throws 
Exception {
+
+        // special for file lock strategy as we must release that lock first 
before we can delete the file
+        boolean releaseEager = exclusiveReadLockStrategy instanceof 
FileLockExclusiveReadLockStrategy;
+
+        if (releaseEager) {
+            exclusiveReadLockStrategy.releaseExclusiveReadLock(operations, 
file, exchange);
+        }
+
         try {
             deleteLocalWorkFile(exchange);
             operations.releaseRetreivedFileResources(exchange);
@@ -82,7 +90,7 @@ public class GenericFileDeleteProcessStrategy<T> extends 
GenericFileProcessStrat
             }
         } finally {
             // must release lock last
-            if (exclusiveReadLockStrategy != null) {
+            if (!releaseEager && exclusiveReadLockStrategy != null) {
                 exclusiveReadLockStrategy.releaseExclusiveReadLock(operations, 
file, exchange);
             }
         }

Reply via email to