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