You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ge...@apache.org on 2007/07/16 13:53:30 UTC
svn commit: r556595 -
/incubator/servicemix/branches/servicemix-3.1/deployables/bindingcomponents/servicemix-file/src/main/java/org/apache/servicemix/file/FilePollerEndpoint.java
Author: gertv
Date: Mon Jul 16 04:53:29 2007
New Revision: 556595
URL: http://svn.apache.org/viewvc?view=rev&rev=556595
Log:
Fix for SM-1004: File poller deletes files, even if errors occur while processing
Modified:
incubator/servicemix/branches/servicemix-3.1/deployables/bindingcomponents/servicemix-file/src/main/java/org/apache/servicemix/file/FilePollerEndpoint.java
Modified: incubator/servicemix/branches/servicemix-3.1/deployables/bindingcomponents/servicemix-file/src/main/java/org/apache/servicemix/file/FilePollerEndpoint.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.1/deployables/bindingcomponents/servicemix-file/src/main/java/org/apache/servicemix/file/FilePollerEndpoint.java?view=diff&rev=556595&r1=556594&r2=556595
==============================================================================
--- incubator/servicemix/branches/servicemix-3.1/deployables/bindingcomponents/servicemix-file/src/main/java/org/apache/servicemix/file/FilePollerEndpoint.java (original)
+++ incubator/servicemix/branches/servicemix-3.1/deployables/bindingcomponents/servicemix-file/src/main/java/org/apache/servicemix/file/FilePollerEndpoint.java Mon Jul 16 04:53:29 2007
@@ -23,7 +23,9 @@
import java.io.IOException;
import java.io.InputStream;
+import javax.jbi.JBIException;
import javax.jbi.management.DeploymentException;
+import javax.jbi.messaging.ExchangeStatus;
import javax.jbi.messaging.InOnly;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.NormalizedMessage;
@@ -200,11 +202,14 @@
String uri = file.toURI().relativize(aFile.toURI()).toString();
Lock lock = lockManager.getLock(uri);
if (lock.tryLock()) {
+ boolean unlock = true;
try {
- processFileAndDelete(aFile);
+ unlock = processFileAndDelete(aFile);
}
finally {
- lock.unlock();
+ if (unlock) {
+ lock.unlock();
+ }
}
} else {
if (logger.isDebugEnabled()) {
@@ -215,23 +220,27 @@
});
}
- protected void processFileAndDelete(File aFile) {
+ protected boolean processFileAndDelete(File aFile) {
+ boolean unlock = true;
try {
if (logger.isDebugEnabled()) {
logger.debug("Processing file " + aFile);
}
if (aFile.exists()) {
processFile(aFile);
+ unlock = false;
if (isDeleteFile()) {
if (!aFile.delete()) {
throw new IOException("Could not delete file " + aFile);
}
+ unlock = true;
}
}
}
catch (Exception e) {
logger.error("Failed to process file: " + aFile + ". Reason: " + e, e);
}
+ return unlock;
}
protected void processFile(File aFile) throws Exception {
@@ -244,6 +253,13 @@
marshaler.readMessage(exchange, message, in, name);
sendSync(exchange);
in.close();
+ if (exchange.getStatus() == ExchangeStatus.ERROR) {
+ Exception e = exchange.getError();
+ if (e == null) {
+ e = new JBIException("Unkown error");
+ }
+ throw e;
+ }
}
public String getLocationURI() {