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]

Reply via email to