Author: norman
Date: Thu Feb  3 12:09:04 2011
New Revision: 1066791

URL: http://svn.apache.org/viewvc?rev=1066791&view=rev
Log:
Just set the address to null of it can not get parsed from the header. See 
IMAP-253

Modified:
    
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/EnvelopeBuilder.java
    
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java

Modified: 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/EnvelopeBuilder.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/EnvelopeBuilder.java?rev=1066791&r1=1066790&r2=1066791&view=diff
==============================================================================
--- 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/EnvelopeBuilder.java
 (original)
+++ 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/EnvelopeBuilder.java
 Thu Feb  3 12:09:04 2011
@@ -48,7 +48,7 @@ final class EnvelopeBuilder {
     }
 
     public FetchResponse.Envelope buildEnvelope(final Headers headers)
-            throws MailboxException, ParseException {
+            throws MailboxException {
         final String date = headerValue(headers, ImapConstants.RFC822_DATE);
         final String subject = headerValue(headers,
                 ImapConstants.RFC822_SUBJECT);
@@ -95,7 +95,7 @@ final class EnvelopeBuilder {
     private FetchResponse.Envelope.Address[] buildAddresses(
             final Headers message, final String headerName,
             final FetchResponse.Envelope.Address[] defaults)
-            throws ParseException, MailboxException {
+            throws MailboxException {
         final FetchResponse.Envelope.Address[] results;
         final FetchResponse.Envelope.Address[] addresses = buildAddresses(
                 message, headerName);
@@ -107,12 +107,20 @@ final class EnvelopeBuilder {
         return results;
     }
 
+    /**
+     * Try to parse the addresses out of the header. If its not possible 
because of a {@link ParseException} a null value is returned
+     * 
+     * @param message
+     * @param headerName
+     * @return addresses
+     * @throws MailboxException
+     */
     private FetchResponse.Envelope.Address[] buildAddresses(
             final Headers message, final String headerName)
-            throws ParseException, MailboxException {
+            throws MailboxException {
         final MessageResult.Header header = MessageResultUtils.getMatching(
                 headerName, message.headers());
-        final FetchResponse.Envelope.Address[] results;
+        FetchResponse.Envelope.Address[] results;
         if (header == null) {
             results = null;
         } else {
@@ -126,27 +134,33 @@ final class EnvelopeBuilder {
                 results = null;
             } else {
                
-                final AddressList addressList = AddressList.parse(value);
-                final int size = addressList.size();
-                final List<FetchResponse.Envelope.Address> addresses = new 
ArrayList<FetchResponse.Envelope.Address>(size);
-                for (int i = 0; i < size; i++) {
-                    final Address address = addressList.get(i);
-                    if (address instanceof Group) {
-                        final Group group = (Group) address;
-                        addAddresses(group, addresses);
-
-                    } else if (address instanceof 
org.apache.james.mime4j.field.address.Mailbox) {
-                        final org.apache.james.mime4j.field.address.Mailbox 
mailbox = (org.apache.james.mime4j.field.address.Mailbox) address;
-                        final FetchResponse.Envelope.Address mailboxAddress = 
buildMailboxAddress(mailbox);
-                        addresses.add(mailboxAddress);
-
-                    } else {
-                        logger.warn("Unknown address type");
+                try {
+                    AddressList addressList = AddressList.parse(value);
+                    final int size = addressList.size();
+                    final List<FetchResponse.Envelope.Address> addresses = new 
ArrayList<FetchResponse.Envelope.Address>(size);
+                    for (int i = 0; i < size; i++) {
+                        final Address address = addressList.get(i);
+                        if (address instanceof Group) {
+                            final Group group = (Group) address;
+                            addAddresses(group, addresses);
+
+                        } else if (address instanceof 
org.apache.james.mime4j.field.address.Mailbox) {
+                            final 
org.apache.james.mime4j.field.address.Mailbox mailbox = 
(org.apache.james.mime4j.field.address.Mailbox) address;
+                            final FetchResponse.Envelope.Address 
mailboxAddress = buildMailboxAddress(mailbox);
+                            addresses.add(mailboxAddress);
+
+                        } else {
+                            logger.warn("Unknown address type");
+                        }
                     }
-                }
 
-                results = (FetchResponse.Envelope.Address[]) addresses
-                        .toArray(FetchResponse.Envelope.Address.EMPTY);
+                    results = (FetchResponse.Envelope.Address[]) addresses
+                            .toArray(FetchResponse.Envelope.Address.EMPTY);
+                } catch (ParseException e) {
+                    logger.debug("Unable to parse out address", e);
+                }
+                results = null;
+                
             }
         }
         return results;

Modified: 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java?rev=1066791&r1=1066790&r2=1066791&view=diff
==============================================================================
--- 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
 (original)
+++ 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
 Thu Feb  3 12:09:04 2011
@@ -107,7 +107,8 @@ final class FetchResponseBuilder {
         
         if (resultMsn == SelectedMailbox.NO_SUCH_MESSAGE) throw new 
MessageRangeException("No such message found with uid " + resultUid);
         
-        setMsn(resultMsn);
+        reset(resultMsn);
+        //setMsn(resultMsn);
 
         // Check if this fetch will cause the "SEEN" flag to be set on this
         // message



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to