You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2010/11/01 17:53:55 UTC

svn commit: r1029742 - in /james/server/trunk: core-library/src/main/java/org/apache/james/core/ mail-file/src/main/java/org/apache/james/mailrepository/file/ mail-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/

Author: norman
Date: Mon Nov  1 16:53:55 2010
New Revision: 1029742

URL: http://svn.apache.org/viewvc?rev=1029742&view=rev
Log:
Remove loading optimization which I introduced for JAMES-1095. After more debugging and reading the code this will just make things harder to understand with no real gain. IT also leaked temporary files

Modified:
    james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java
    james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageSource.java
    james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageWrapper.java
    james/server/trunk/mail-file/src/main/java/org/apache/james/mailrepository/file/MimeMessageStreamRepositorySource.java
    james/server/trunk/mail-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MimeMessageJDBCSource.java

Modified: james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java
URL: http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java?rev=1029742&r1=1029741&r2=1029742&view=diff
==============================================================================
--- james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java (original)
+++ james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageInputStreamSource.java Mon Nov  1 16:53:55 2010
@@ -26,6 +26,7 @@ import javax.mail.util.SharedFileInputSt
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
+import org.apache.james.lifecycle.Disposable;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
@@ -48,7 +49,7 @@ import java.util.List;
  *
  */
 public class MimeMessageInputStreamSource
-    extends MimeMessageSource {
+    extends MimeMessageSource implements Disposable{
 
     private final List<InputStream> streams = new ArrayList<InputStream>();
 
@@ -85,12 +86,7 @@ public class MimeMessageInputStreamSourc
         try {
             file = File.createTempFile(key, ".m64");
             fout = new BufferedOutputStream(new FileOutputStream(file));
-            int b = -1;
-            while ((b = in.read()) != -1) {
-                fout.write(b);
-            }
-            fout.flush();
-
+            IOUtils.copy(in, fout);
             sourceId = file.getCanonicalPath();
         } catch (IOException ioe) {
             throw new MessagingException("Unable to retrieve the data: " + ioe.getMessage(), ioe);
@@ -181,7 +177,7 @@ public class MimeMessageInputStreamSourc
      * (non-Javadoc)
      * @see org.apache.james.core.MimeMessageSource#disposeSource()
      */
-    public void disposeSource() {
+    public void dispose() {
      // explicit close all streams
         for (int i = 0; i < streams.size(); i++) {
             IOUtils.closeQuietly(streams.get(i));

Modified: james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageSource.java
URL: http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageSource.java?rev=1029742&r1=1029741&r2=1029742&view=diff
==============================================================================
--- james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageSource.java (original)
+++ james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageSource.java Mon Nov  1 16:53:55 2010
@@ -23,10 +23,7 @@ package org.apache.james.core;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
 
-import org.apache.james.lifecycle.Disposable;
 
 /**
  * This defines a reusable datasource that can supply an input stream with
@@ -35,13 +32,8 @@ import org.apache.james.lifecycle.Dispos
  *
  * @see MimeMessageWrapper
  */
-public abstract class MimeMessageSource implements Disposable{
-    private final List<MimeMessageSource> shares = new ArrayList<MimeMessageSource>();
-    
-    
-    public MimeMessageSource() {
-        shares.add(this);
-    }
+public abstract class MimeMessageSource {
+
     
     /**
      * Returns a unique String ID that represents the location from where 
@@ -91,80 +83,6 @@ public abstract class MimeMessageSource 
         }
         return size;
     }
-    
-    /**
-     * Share this instance and increase the share count
-     * 
-     * @return instance
-     */
-    public final SharedMimeMessageSource share() {
-        synchronized (shares) {
-            SharedMimeMessageSource share = new SharedMimeMessageSource(this);
-            return share;
-        }
-       
-    }
 
-    /**
-     * Dispose this instance if its not shared anymore
-     */
-    public final void dispose() {
-        synchronized (shares) {
-            if (shares.size() == 0) {
-                disposeSource();
-            }
-        }
-    }
-    
-    /**
-     * Get called by {@link #dispose()} if this instance is not shared anymore
-     */
-    protected abstract void disposeSource();
 
-    
-    /**
-     * Allow to share a {@link MimeMessageSource} and take care of tracking 
-     * the instances. This is needed to make sure the {@link #dispose()} is not called 
-     * to early
-     *
-     */
-    public final class SharedMimeMessageSource extends MimeMessageSource {
-
-        private MimeMessageSource source;
-
-        public SharedMimeMessageSource(MimeMessageSource source) {
-            super();
-            this.source = source;
-        }
-        
-        @Override
-        protected void disposeSource() {
-            synchronized (shares) {
-                if (shares.remove(SharedMimeMessageSource.this)) {
-                    source.dispose();
-                }
-            }
-           
-        }
-
-        @Override
-        public InputStream getInputStream() throws IOException {
-            return source.getInputStream();
-        }
-
-        @Override
-        public String getSourceId() {
-            return source.getSourceId();
-        }
-        
-        /**
-         * Return the wrapped original {@link MimeMessageSource}
-         * 
-         * @return original
-         */
-        public MimeMessageSource getOriginal() {
-            return source;
-        }
-        
-    }
 }

Modified: james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageWrapper.java
URL: http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageWrapper.java?rev=1029742&r1=1029741&r2=1029742&view=diff
==============================================================================
--- james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageWrapper.java (original)
+++ james/server/trunk/core-library/src/main/java/org/apache/james/core/MimeMessageWrapper.java Mon Nov  1 16:53:55 2010
@@ -115,22 +115,7 @@ public class MimeMessageWrapper
     public MimeMessageWrapper(MimeMessage original) throws MessagingException {
         this(Session.getDefaultInstance(System.getProperties()));
         flags = original.getFlags();
-        
-        // if the original is an unmodified MimeMessageWrapped we clone the headers and
-        // take its source.
-        if (original instanceof MimeMessageWrapper && !((MimeMessageWrapper) original).bodyModified) {
-            // call share so we are sure it will not dispose the message to early
-            source = ((MimeMessageWrapper) original).source.share();
-            // this probably speed up things
-            if (((MimeMessageWrapper) original).headers != null) {
-                
-                InternetHeaders ih = ((MimeMessageWrapper) original).headers;
-                headers = createInternetHeaders(new InternetHeadersInputStream(ih));
-                headersModified = ((MimeMessageWrapper) original).headersModified;
-            }
-        }
-     
-        
+
         if (source == null) {
             ByteArrayOutputStream bos;
             int size = original.getSize();

Modified: james/server/trunk/mail-file/src/main/java/org/apache/james/mailrepository/file/MimeMessageStreamRepositorySource.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mail-file/src/main/java/org/apache/james/mailrepository/file/MimeMessageStreamRepositorySource.java?rev=1029742&r1=1029741&r2=1029742&view=diff
==============================================================================
--- james/server/trunk/mail-file/src/main/java/org/apache/james/mailrepository/file/MimeMessageStreamRepositorySource.java (original)
+++ james/server/trunk/mail-file/src/main/java/org/apache/james/mailrepository/file/MimeMessageStreamRepositorySource.java Mon Nov  1 16:53:55 2010
@@ -100,12 +100,4 @@ public class MimeMessageStreamRepository
         }
         return size;
     }
-
-    /*
-     * (non-Javadoc)
-     * @see org.apache.james.core.MimeMessageSource#disposeSource()
-     */
-    protected void disposeSource() {
-        // nothing todo here
-    }
 }

Modified: james/server/trunk/mail-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MimeMessageJDBCSource.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mail-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MimeMessageJDBCSource.java?rev=1029742&r1=1029741&r2=1029742&view=diff
==============================================================================
--- james/server/trunk/mail-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MimeMessageJDBCSource.java (original)
+++ james/server/trunk/mail-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MimeMessageJDBCSource.java Mon Nov  1 16:53:55 2010
@@ -278,11 +278,4 @@ public class MimeMessageJDBCSource exten
         return result;
      }
 
-     /*
-      * (non-Javadoc)
-      * @see org.apache.james.core.MimeMessageSource#disposeSource()
-      */
-    protected void disposeSource() {
-        // nothing todo here
-    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org