Author: norman
Date: Fri Nov 5 12:35:20 2010
New Revision: 1031540
URL: http://svn.apache.org/viewvc?rev=1031540&view=rev
Log:
Make sure we close the InputStream of the BlobMessage on dispose() if that is
not done we get problems when try to delete the file on windows
Modified:
james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/FileSystemBlobStrategy.java
james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/MimeMessageBlobMessageSource.java
Modified:
james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/FileSystemBlobStrategy.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/FileSystemBlobStrategy.java?rev=1031540&r1=1031539&r2=1031540&view=diff
==============================================================================
---
james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/FileSystemBlobStrategy.java
(original)
+++
james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/FileSystemBlobStrategy.java
Fri Nov 5 12:35:20 2010
@@ -34,6 +34,7 @@ import org.apache.activemq.blob.BlobDown
import org.apache.activemq.blob.BlobTransferPolicy;
import org.apache.activemq.blob.BlobUploadStrategy;
import org.apache.activemq.command.ActiveMQBlobMessage;
+import org.apache.commons.io.FileUtils;
import org.apache.james.core.NonClosingSharedInputStream;
import org.apache.james.services.FileSystem;
@@ -85,7 +86,9 @@ public class FileSystemBlobStrategy impl
public void deleteFile(ActiveMQBlobMessage message) throws IOException,
JMSException {
File f = getFile(message);
if (f.exists()) {
- f.delete();
+ if (f.delete() == false) {
+ throw new IOException("Unable to delete file " + f);
+ }
}
}
@@ -93,8 +96,7 @@ public class FileSystemBlobStrategy impl
* Returns a {...@link SharedFileInputStream} for the give {...@link
BlobMessage}
*/
public InputStream getInputStream(ActiveMQBlobMessage message) throws
IOException, JMSException {
- // return a NonClosingSharedInputStream to make sure the stream will
only get closed on dispose call later
- return new NonClosingSharedInputStream<SharedFileInputStream>(new
SharedFileInputStream(getFile(message)));
+ return new SharedFileInputStream(getFile(message));
}
Modified:
james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/MimeMessageBlobMessageSource.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/MimeMessageBlobMessageSource.java?rev=1031540&r1=1031539&r2=1031540&view=diff
==============================================================================
---
james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/MimeMessageBlobMessageSource.java
(original)
+++
james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/MimeMessageBlobMessageSource.java
Fri Nov 5 12:35:20 2010
@@ -22,29 +22,27 @@ import java.io.IOException;
import java.io.InputStream;
import javax.jms.JMSException;
+import javax.mail.util.SharedFileInputStream;
import org.apache.activemq.BlobMessage;
import org.apache.activemq.Disposable;
import org.apache.james.core.MimeMessageSource;
-import org.apache.james.core.NonClosingSharedInputStream;
-import org.apache.james.lifecycle.LifecycleUtil;
/**
* {...@link MimeMessageSource} which use a {...@link BlobMessage} as input.
Be aware that {...@link BlobMessage} must contain
- * a {...@link NonClosingSharedInputStream} for this implementation!
+ * a {...@link SharedFileInputStream} for this implementation!
*
*/
-...@suppresswarnings("unchecked")
public class MimeMessageBlobMessageSource extends MimeMessageSource implements
ActiveMQSupport, Disposable{
- private NonClosingSharedInputStream in;
+ private SharedFileInputStream in;
private String sourceId;
private long size;
public MimeMessageBlobMessageSource(BlobMessage message) throws
JMSException, IOException {
this.sourceId = message.getJMSMessageID();
this.size = message.getLongProperty(JAMES_MAIL_MESSAGE_SIZE);
- this.in = (NonClosingSharedInputStream)message.getInputStream();
+ this.in = (SharedFileInputStream) message.getInputStream();
}
@@ -77,6 +75,10 @@ public class MimeMessageBlobMessageSourc
* Call dispose on the {...@link InputStream}
*/
public void dispose() {
- LifecycleUtil.dispose(in);
+ try {
+ in.close();
+ } catch (IOException e) {
+ // ingore on dispose
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]