Author: gertv
Date: Tue Jul 17 23:38:53 2007
New Revision: 557174
URL: http://svn.apache.org/viewvc?view=rev&rev=557174
Log:
Fix for SM-1006: 0 byte files written when message contains invalid content
Modified:
incubator/servicemix/branches/servicemix-3.1/deployables/bindingcomponents/servicemix-file/src/main/java/org/apache/servicemix/file/FileSenderEndpoint.java
Modified:
incubator/servicemix/branches/servicemix-3.1/deployables/bindingcomponents/servicemix-file/src/main/java/org/apache/servicemix/file/FileSenderEndpoint.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.1/deployables/bindingcomponents/servicemix-file/src/main/java/org/apache/servicemix/file/FileSenderEndpoint.java?view=diff&rev=557174&r1=557173&r2=557174
==============================================================================
---
incubator/servicemix/branches/servicemix-3.1/deployables/bindingcomponents/servicemix-file/src/main/java/org/apache/servicemix/file/FileSenderEndpoint.java
(original)
+++
incubator/servicemix/branches/servicemix-3.1/deployables/bindingcomponents/servicemix-file/src/main/java/org/apache/servicemix/file/FileSenderEndpoint.java
Tue Jul 17 23:38:53 2007
@@ -64,9 +64,10 @@
protected void processInOnly(MessageExchange exchange, NormalizedMessage
in) throws Exception {
OutputStream out = null;
+ File newFile = null;
+ boolean success = false;
try {
String name = marshaler.getOutputName(exchange, in);
- File newFile = null;
if (name == null) {
newFile = File.createTempFile(tempFilePrefix, tempFileSuffix,
directory);
}
@@ -78,14 +79,20 @@
}
out = new BufferedOutputStream(new FileOutputStream(newFile));
marshaler.writeMessage(exchange, in, out, name);
- }
- finally {
+ success = true;
+ } finally {
if (out != null) {
try {
out.close();
- }
- catch (IOException e) {
+ } catch (IOException e) {
logger.error("Caught exception while closing stream on
error: " + e, e);
+ }
+ }
+ //cleaning up incomplete files after things went wrong
+ if (!success) {
+ logger.debug("An error occurred while writing file " +
newFile.getCanonicalPath() + ", deleting the invalid file");
+ if (!newFile.delete()) {
+ logger.warn("Unable to delete the file " +
newFile.getCanonicalPath() + " after an error had occurred");
}
}
}