Author: rdonkin
Date: Tue Jun 17 11:52:48 2008
New Revision: 668792

URL: http://svn.apache.org/viewvc?rev=668792&view=rev
Log:
Parse and store Content-Description Content-ID

Modified:
    
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/MaximalBodyDescriptor.java
    james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/MimeUtil.java
    james/mime4j/trunk/src/test/java/org/apache/james/mime4j/ExampleMail.java
    
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MaximalBodyDescriptorTest.java
    
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenStreamReaderTest.java

Modified: 
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/MaximalBodyDescriptor.java
URL: 
http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/MaximalBodyDescriptor.java?rev=668792&r1=668791&r2=668792&view=diff
==============================================================================
--- 
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/MaximalBodyDescriptor.java
 (original)
+++ 
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/MaximalBodyDescriptor.java
 Tue Jun 17 11:52:48 2008
@@ -32,10 +32,14 @@
 
     private static final int DEFAULT_MINOR_VERSION = 0;
     private static final int DEFAULT_MAJOR_VERSION = 1;
-    private boolean mimeVersionSet;
+    private boolean isMimeVersionSet;
     private int mimeMinorVersion;
     private int mimeMajorVersion;
     private MimeException mimeVersionException;
+    private String contentId;
+    private boolean isContentIdSet;
+    private String contentDescription;
+    private boolean isContentDescriptionSet;
     
     protected MaximalBodyDescriptor() {
         this(null);
@@ -43,22 +47,46 @@
 
     protected MaximalBodyDescriptor(BodyDescriptor parent) {
         super(parent);
-        mimeVersionSet = false;
+        isMimeVersionSet = false;
         mimeMajorVersion = DEFAULT_MAJOR_VERSION;
         mimeMinorVersion = DEFAULT_MINOR_VERSION;
+        this.contentId = null;
+        this.isContentIdSet = false;
+        this.contentDescription = null;
+        this.isContentDescriptionSet = false;
     }
     
-    
-    
     public void addField(String name, String value) {
         name = name.trim().toLowerCase();
-        if (MimeUtil.MIME_HEADER_MIME_VERSION.equals(name) && !mimeVersionSet) 
{
+        if (MimeUtil.MIME_HEADER_MIME_VERSION.equals(name) && 
!isMimeVersionSet) {
             parseMimeVersion(value);
+        } else if (MimeUtil.MIME_HEADER_CONTENT_ID.equals(name) && 
!isContentIdSet) {
+            parseContentId(value);
+        } else if (MimeUtil.MIME_HEADER_CONTENT_DESCRIPTION.equals(name) && 
!isContentDescriptionSet) {
+            parseContentDescription(value);
         } else {
             super.addField(name, value);
         }
     }
 
+    private void parseContentDescription(String value) {
+        if (value == null) {
+            contentDescription = "";
+        } else {
+            contentDescription = value.trim();
+        }
+        isContentDescriptionSet = true;
+    }
+
+    private void parseContentId(final String value) {
+        if (value == null) {
+            contentId = "";
+        } else {
+            contentId = value.trim();
+        }
+        isContentIdSet = true;
+    }
+
     private void parseMimeVersion(String value) {
         final StringReader reader = new StringReader(value);
         final MimeVersionParser parser = new MimeVersionParser(reader);
@@ -75,7 +103,7 @@
         } catch (MimeException e) {
             this.mimeVersionException = e;
         }
-        mimeVersionSet = true;
+        isMimeVersionSet = true;
     }
     
     /**
@@ -103,4 +131,24 @@
     public MimeException getMimeVersionParseException() {
         return mimeVersionException;
     }
+    
+    /**
+     * Gets the value of the <a 
href='http://www.faqs.org/rfcs/rfc2045'>RFC</a> 
+     * <code>Content-Description</code> header.
+     * @return value of the <code>Content-Description</code> when present,
+     * null otherwise
+     */
+    public String getContentDescription() {
+        return contentDescription;
+    }
+    
+    /**
+     * Gets the value of the <a 
href='http://www.faqs.org/rfcs/rfc2045'>RFC</a> 
+     * <code>Content-ID</code> header.
+     * @return value of the <code>Content-ID</code> when present,
+     * null otherwise
+     */
+    public String getContentId() {
+        return contentId;
+    }
 } 

Modified: 
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/MimeUtil.java
URL: 
http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/MimeUtil.java?rev=668792&r1=668791&r2=668792&view=diff
==============================================================================
--- james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/MimeUtil.java 
(original)
+++ james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/MimeUtil.java 
Tue Jun 17 11:52:48 2008
@@ -56,6 +56,10 @@
 
     /** <code>MIME-Version</code> header name (lowercase) */
     public static final String MIME_HEADER_MIME_VERSION = "mime-version";
+    /** <code>Content-ID</code> header name (lowercase) */
+    public static final String MIME_HEADER_CONTENT_ID = "content-id";
+    /** <code>Content-Description</code> header name (lowercase) */
+    public static final String MIME_HEADER_CONTENT_DESCRIPTION = 
"content-description";
     
     private MimeUtil() {
         // this is an utility class to be used statically.

Modified: 
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/ExampleMail.java
URL: 
http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/java/org/apache/james/mime4j/ExampleMail.java?rev=668792&r1=668791&r2=668792&view=diff
==============================================================================
--- james/mime4j/trunk/src/test/java/org/apache/james/mime4j/ExampleMail.java 
(original)
+++ james/mime4j/trunk/src/test/java/org/apache/james/mime4j/ExampleMail.java 
Tue Jun 17 11:52:48 2008
@@ -22,6 +22,8 @@
 
 public class ExampleMail {
     
+    public static final String CONTENT_DESCRIPTION = "Blah blah blah";
+    public static final String CONTENT_ID = "<[EMAIL PROTECTED]>";
     public static final Charset US_ASCII = Charset.forName("US-ASCII");
     public static final Charset LATIN1 = Charset.forName("ISO-8859-1");
     
@@ -258,6 +260,8 @@
     "Content-Type: text/plain; charset=ISO-8859-1\r\n" +
     "Content-Transfer-Encoding: 8bit\r\n" +
     "Content-Disposition: inline\r\n" +
+    "Content-ID: " + CONTENT_ID + "\r\n" +
+    "Content-Description: " + CONTENT_DESCRIPTION + "\r\n" +
     "Delivered-To: [EMAIL PROTECTED]" +
     "\r\n" +
     ONE_PART_MIME_8859_BODY;

Modified: 
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MaximalBodyDescriptorTest.java
URL: 
http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MaximalBodyDescriptorTest.java?rev=668792&r1=668791&r2=668792&view=diff
==============================================================================
--- 
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MaximalBodyDescriptorTest.java
 (original)
+++ 
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MaximalBodyDescriptorTest.java
 Tue Jun 17 11:52:48 2008
@@ -49,6 +49,21 @@
         assertNull(descriptor.getMimeVersionParseException());
     }
     
+    public void testContentId() throws Exception {
+        MaximalBodyDescriptor descriptor = 
describe(ExampleMail.ONE_PART_MIME_8859_BYTES);
+        assertEquals(1, descriptor.getMimeMajorVersion());
+        assertEquals(0, descriptor.getMimeMinorVersion());
+        assertNull(descriptor.getMimeVersionParseException());
+        assertEquals(ExampleMail.CONTENT_ID, descriptor.getContentId());
+    }
+
+    public void testContentDescription() throws Exception {
+        MaximalBodyDescriptor descriptor = 
describe(ExampleMail.ONE_PART_MIME_8859_BYTES);
+        assertEquals(1, descriptor.getMimeMajorVersion());
+        assertEquals(0, descriptor.getMimeMinorVersion());
+        assertNull(descriptor.getMimeVersionParseException());
+        assertEquals(ExampleMail.CONTENT_DESCRIPTION, 
descriptor.getContentDescription());
+    }
     
     public void testMimeVersionHeaderBreak() throws Exception {
         MaximalBodyDescriptor descriptor = 
describe(ExampleMail.ONE_PART_MIME_ASCII_MIME_VERSION_SPANS_TWO_LINES_BYTES);

Modified: 
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenStreamReaderTest.java
URL: 
http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenStreamReaderTest.java?rev=668792&r1=668791&r2=668792&view=diff
==============================================================================
--- 
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenStreamReaderTest.java
 (original)
+++ 
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenStreamReaderTest.java
 Tue Jun 17 11:52:48 2008
@@ -55,7 +55,7 @@
     public void testShouldReadOnePartMime8859Body() throws Exception {
         byte[] bytes = ExampleMail.ONE_PART_MIME_8859_BYTES;
         String body = ExampleMail.ONE_PART_MIME_8859_BODY;
-        checkSimpleMail(bytes, body, 11);
+        checkSimpleMail(bytes, body, 13);
     }
     
     public void testShouldReadOnePartMimeBase64ASCIIBody() throws Exception {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to