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 rd...@apache.org on 2009/01/24 14:26:20 UTC

svn commit: r737357 - in /james/protocols/imap/trunk/store/src: main/java/org/apache/james/imap/store/ test/java/org/apache/james/imap/store/

Author: rdonkin
Date: Sat Jan 24 13:26:20 2009
New Revision: 737357

URL: http://svn.apache.org/viewvc?rev=737357&view=rev
Log:
Normalising on the way out means a lot more work. Mail should be normalised on entry.

Added:
    james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StreamUtils.java
      - copied, changed from r737034, james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ContentUtils.java
Removed:
    james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ContentUtils.java
    james/protocols/imap/trunk/store/src/test/java/org/apache/james/imap/store/MessageUtilsCountUnnormalLinesTest.java
    james/protocols/imap/trunk/store/src/test/java/org/apache/james/imap/store/MessageUtilsNormalisedWriteToTest.java
Modified:
    james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ByteContent.java
    james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/FullContent.java
    james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/PartContentBuilder.java
    james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java

Modified: james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ByteContent.java
URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ByteContent.java?rev=737357&r1=737356&r2=737357&view=diff
==============================================================================
--- james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ByteContent.java (original)
+++ james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ByteContent.java Sat Jan 24 13:26:20 2009
@@ -36,7 +36,7 @@
 
     public ByteContent(final byte[] contents) {
         this.contents = contents;
-        size = contents.length + ContentUtils.countUnnormalLines(contents);
+        size = contents.length;
     }
 
     public long size() {

Modified: james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/FullContent.java
URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/FullContent.java?rev=737357&r1=737356&r2=737357&view=diff
==============================================================================
--- james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/FullContent.java (original)
+++ james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/FullContent.java Sat Jan 24 13:26:20 2009
@@ -45,8 +45,7 @@
     }
 
     private long caculateSize() {
-        long result = contents.length
-                + ContentUtils.countUnnormalLines(contents);
+        long result = contents.length;
         result += 2;
         for (final Iterator it = headers.iterator(); it.hasNext();) {
             final MessageResult.Header header = (MessageResult.Header) it

Modified: james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/PartContentBuilder.java
URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/PartContentBuilder.java?rev=737357&r1=737356&r2=737357&view=diff
==============================================================================
--- james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/PartContentBuilder.java (original)
+++ james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/PartContentBuilder.java Sat Jan 24 13:26:20 2009
@@ -150,7 +150,7 @@
                     }
                 }
                 if (valid) {
-                    content = ContentUtils.toByteArray(parser.getInputStream());
+                    content = StreamUtils.toByteArray(parser.getInputStream());
                 } else {
                     content = EMPTY;
                 }
@@ -182,7 +182,7 @@
                 }
             }
             if (valid) {
-                content = ContentUtils.toByteArray(parser.getInputStream());
+                content = StreamUtils.toByteArray(parser.getInputStream());
             } else {
                 content = EMPTY;
             }

Modified: james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java
URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java?rev=737357&r1=737356&r2=737357&view=diff
==============================================================================
--- james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java (original)
+++ james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java Sat Jan 24 13:26:20 2009
@@ -141,11 +141,11 @@
                     next = parser.next();
                 }
                 final InputStream bodyStream = parser.getInputStream();
-                final ByteArrayOutputStream out = ContentUtils.out(bodyStream);
+                final ByteArrayOutputStream out = StreamUtils.out(bodyStream);
                 next = parser.next();
                 if (next == MimeTokenStream.T_EPILOGUE)  {
                     final InputStream epilogueStream = parser.getInputStream();
-                    ContentUtils.out(epilogueStream, out);
+                    StreamUtils.out(epilogueStream, out);
                 }   
                 final byte[] body = out.toByteArray();
                 

Copied: james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StreamUtils.java (from r737034, james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ContentUtils.java)
URL: http://svn.apache.org/viewvc/james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StreamUtils.java?p2=james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StreamUtils.java&p1=james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ContentUtils.java&r1=737034&r2=737357&rev=737357&view=diff
==============================================================================
--- james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/ContentUtils.java (original)
+++ james/protocols/imap/trunk/store/src/main/java/org/apache/james/imap/store/StreamUtils.java Sat Jan 24 13:26:20 2009
@@ -27,88 +27,12 @@
  * Utility methods for messages.
  * 
  */
-public class ContentUtils {
+public class StreamUtils {
 
     private static final int BYTE_STREAM_CAPACITY = 8182;
 
     private static final int BYTE_BUFFER_SIZE = 4096;
 
-    public static final byte CR = 0x0D;
-
-    public static final byte LF = 0x0A;
-
-    /**
-     * Counts the number of <code>CR</code>'s and <code>LF</code>'s which
-     * do are part of <code>CRLF</code>s.
-     * 
-     * @param contents
-     *            bytes, not null
-     * @return the number of lines which are not normal <code>CRLF</code>
-     */
-    public static long countUnnormalLines(final byte[] contents) {
-        int count = 0;
-        if (contents != null) {
-            final int length = contents.length;
-            for (int i = 0; i < length; i++) {
-                byte current = contents[i];
-                if (current == CR) {
-                    final int next = i + 1;
-                    if (next < length) {
-                        if (contents[next] != LF) {
-                            count++;
-                        }
-                    } else {
-                        count++;
-                    }
-                } else if (current == LF) {
-                    final int last = i - 1;
-                    if (last >= 0) {
-                        if (contents[last] != CR) {
-                            count++;
-                        }
-                    } else {
-                        count++;
-                    }
-                }
-            }
-        }
-        return count;
-    }
-
-    /**
-     * Writes bytes into the buffer using naive encoding and converts isolated
-     * LF and CR to CRLF.
-     * 
-     * @param contents
-     *            bytes to write, not null
-     * @param buffer
-     *            <code>StringBuffer</code> sink, not null
-     */
-    public static void normalisedWriteTo(final byte[] contents,
-            final StringBuffer buffer) {
-        char last = 0;
-        for (int i = 0; i < contents.length; i++) {
-            final char current = (char) contents[i];
-            if (current == '\n') {
-                if (last == '\r') {
-                    buffer.append('\n');
-                } else {
-                    buffer.append('\r');
-                    buffer.append('\n');
-                }
-            } else {
-                if (last == '\r') {
-                    buffer.append('\n');
-                }
-                buffer.append(current);
-            }
-            last = current;
-        }
-        if (last == '\r') {
-            buffer.append('\n');
-        }
-    }
-
     public static byte[] toByteArray(InputStream is) throws IOException {
         ByteArrayOutputStream baos = out(is);
 



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