Author: dongxu
Date: Thu Sep 12 02:00:24 2013
New Revision: 1522102

URL: http://svn.apache.org/r1522102
Log:
constant changed by manolo

Modified:
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MainView.java
    
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
    
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/UserPreferencesStorage.java
    
james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/ContactsHandlerTest.java
    
james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java
    
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ContactsResult.java

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MainView.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MainView.java?rev=1522102&r1=1522101&r2=1522102&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MainView.java 
(original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MainView.java 
Thu Sep 12 02:00:24 2013
@@ -114,13 +114,15 @@ public class MainView extends Composite 
         dockPanel.setSpacing(10);
         dockPanel.setWidth("100%");
 
-        createNorth();
+        // Not used so far
+        // createNorth();
+        // dockPanel.add(north, DockPanel.NORTH);
+        
         createWest();
-        createCenter();
-
-        dockPanel.add(north, DockPanel.NORTH);
         dockPanel.add(west, DockPanel.WEST);
         dockPanel.setCellWidth(west, "160px");
+
+        createCenter();
         dockPanel.add(center, DockPanel.CENTER);
         dockPanel.setCellHorizontalAlignment(north, DockPanel.ALIGN_RIGHT);
         dockPanel.setCellHorizontalAlignment(center, DockPanel.ALIGN_LEFT);
@@ -161,6 +163,7 @@ public class MainView extends Composite 
         west.add(panel);
     }
 
+    @SuppressWarnings("unused")
     private void createNorth() {
         north = new VerticalPanel();
         north.setWidth("100%");

Modified: 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java?rev=1522102&r1=1522101&r2=1522102&view=diff
==============================================================================
--- 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
 (original)
+++ 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
 Thu Sep 12 02:00:24 2013
@@ -126,25 +126,13 @@ public abstract class AbstractFetchMessa
             Message m = messages[i];                
             String from = null;
             if (m.getFrom() != null && m.getFrom().length >0 ) {
-                from = m.getFrom()[0].toString().trim();
-                try {
-                    from = MimeUtility.decodeText(from);
-                    userPreferences.addContact(from);
-                } catch (UnsupportedEncodingException e) {
-                    logger.debug("Unable to decode from " + from + " " + 
e.getMessage());
-                }
+                from = decodeText(m.getFrom()[0].toString());
             }
             msg.setFrom(from);
 
             String replyto = null;
             if (m.getReplyTo() != null && m.getReplyTo().length >0 ) {
-                replyto = m.getReplyTo()[0].toString().trim();
-                try {
-                    replyto = MimeUtility.decodeText(replyto);
-                    userPreferences.addContact(replyto);
-                } catch (UnsupportedEncodingException e) {
-                    logger.debug("Unable to decode replyto " + replyto + " " + 
e.getMessage());
-                }
+                replyto = decodeText(m.getReplyTo()[0].toString());
             }
             msg.setReplyto(replyto);
             
@@ -153,27 +141,17 @@ public abstract class AbstractFetchMessa
             Address[] toArray = m.getRecipients(RecipientType.TO);
             if (toArray != null) {
                 for (Address addr : toArray) {
-                    String mailTo = null;
-                    try {
-                        mailTo = MimeUtility.decodeText(addr.toString());
-                        userPreferences.addContact(mailTo);
-                    } catch (UnsupportedEncodingException e) {
-                        logger.debug("Unable to decode mailTo " + mailTo + " " 
+ e.getMessage());
-                    }
-                    if (mailTo != null)
-                        to.add(mailTo);
+                    String mailTo = decodeText(addr.toString());
+                    to.add(mailTo);
                 }
             }
             msg.setTo(to);
+
             
             // Check if a subject exist and if so decode it
             String subject = m.getSubject();
             if (subject != null) {
-                try {
-                    subject = MimeUtility.decodeText(subject);
-                } catch (UnsupportedEncodingException e) {
-                    logger.debug("Unable to decode subject " + subject + " " + 
e.getMessage());
-                }
+                subject = decodeText(subject);
             }
             msg.setSubject(subject);
             
@@ -182,19 +160,17 @@ public abstract class AbstractFetchMessa
             ArrayList<String> cc = new ArrayList<String>();
             if (ccArray != null) {
                 for (Address addr : ccArray) {
-                    String mailCc = null;
-                    try {
-                       mailCc = MimeUtility.decodeText(addr.toString());
-                        userPreferences.addContact(mailCc);
-                    } catch (UnsupportedEncodingException e) {
-                        logger.debug("Unable to decode mailTo " + mailCc + " " 
+ e.getMessage());
-                    }
-                    if (mailCc != null)
-                        cc.add(mailCc);
+                    String mailCc = decodeText(addr.toString());
+                    cc.add(mailCc);
                 }              
             }
             msg.setCc(cc);
 
+            userPreferences.addContact(from);
+            userPreferences.addContact(to);
+            userPreferences.addContact(replyto);
+            userPreferences.addContact(cc);
+
             // Using sentDate since received date is not useful in the view 
when using fetchmail
             msg.setReceivedDate(m.getSentDate());
 
@@ -269,4 +245,21 @@ public abstract class AbstractFetchMessa
             return messages;
         }
     }
+
+    /**
+     * Decode iso-xxxx strings present in subjects and emails like:
+     * 
+     * =?ISO-8859-1?Q?No=20hay=20ma=F1ana?= <he...@hupa.org> 
+     */
+    private String decodeText(String s) {
+       String ret = s;
+       try {
+               ret = MimeUtility.decodeText(s);
+        } catch (UnsupportedEncodingException e) {
+            logger.debug("Unable to decode text " + s + " " + e.getMessage());
+        }
+        // Remove quotes around names in email addresses
+        ret =  ret.replaceFirst("^[\"' ]+(.*?)[\"' ]+<", "$1 <");
+        return ret;
+    }
 }

Modified: 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/UserPreferencesStorage.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/UserPreferencesStorage.java?rev=1522102&r1=1522101&r2=1522102&view=diff
==============================================================================
--- 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/UserPreferencesStorage.java
 (original)
+++ 
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/UserPreferencesStorage.java
 Thu Sep 12 02:00:24 2013
@@ -24,9 +24,12 @@ import org.apache.hupa.shared.rpc.Contac
 import java.util.Arrays;
 import java.util.List;
 <<<<<<< HEAD
+<<<<<<< HEAD
 =======
 import java.util.regex.Pattern;
 >>>>>>> first commit
+=======
+>>>>>>> constant changed by manolo
 
 /**
  *
@@ -63,7 +66,7 @@ public abstract class UserPreferencesSto
     final public void addContact(List<String> mails) {
         if (mails != null) {
             for (String mail: mails) {
-               if (!mail.matches(REGEX_OMITTED_EMAILS)) {
+               if (mail != null && !mail.matches(REGEX_OMITTED_EMAILS)) {
                     Contact contact = new Contact(mail);
                     addContact(contact);
                }

Modified: 
james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/ContactsHandlerTest.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/ContactsHandlerTest.java?rev=1522102&r1=1522101&r2=1522102&view=diff
==============================================================================
--- 
james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/ContactsHandlerTest.java
 (original)
+++ 
james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/ContactsHandlerTest.java
 Thu Sep 12 02:00:24 2013
@@ -23,14 +23,24 @@ import junit.framework.Assert;
 
 import org.apache.hupa.server.HupaGuiceTestCase;
 import org.apache.hupa.shared.rpc.Contacts;
+import org.apache.hupa.shared.rpc.ContactsResult.Contact;
 
 public class ContactsHandlerTest extends HupaGuiceTestCase {
+       
+       private Contact[] getContacts() throws Exception {
+               return contactsHandler.execute(new Contacts(), 
null).getContacts();
+       }
     
     public void testContactsHandler() throws Exception {
-        Assert.assertEquals(0, contactsHandler.execute(new Contacts(), 
null).getContacts().length);
+        Assert.assertEquals(0, getContacts().length);
         userPreferences.addContact("Somebody <someb...@foo.com>");
         userPreferences.addContact(" Some.body   <someb...@foo.com>  ");
-        Assert.assertEquals(1, contactsHandler.execute(new Contacts(), 
null).getContacts().length);
+        userPreferences.addContact("\"somebody\" <someb...@foo.com>");
+        Assert.assertEquals(1, getContacts().length);
+        userPreferences.addContact("<someb...@foo.com>");
+        userPreferences.addContact("someb...@foo.com");
+        userPreferences.addContact("\"someb...@foo.com\" <someb...@foo.com>");
+        Assert.assertEquals(2, getContacts().length);
     }
     
 }

Modified: 
james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java?rev=1522102&r1=1522101&r2=1522102&view=diff
==============================================================================
--- 
james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java
 (original)
+++ 
james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java
 Thu Sep 12 02:00:24 2013
@@ -40,9 +40,9 @@ public class FetchMessagesHandlerTest ex
         MockIMAPFolder f = (MockIMAPFolder)store.getFolder("WHATEVER"); 
         f.create(Folder.HOLDS_MESSAGES);
         
-        ByteArrayInputStream is = new ByteArrayInputStream("From: 
a...@foo.com\nTo: b...@foo.com\nSubject: something\n\ndata".getBytes());
+        ByteArrayInputStream is = new ByteArrayInputStream("From: 
\"a...@foo.com\" <a...@foo.com>\nTo: b...@foo.com\nSubject: 
something\n\ndata".getBytes());
         MimeMessage m1 = new MimeMessage(session, is);
-        is = new ByteArrayInputStream("From: =?ISO-8859-1?Q?Manolo_Pe=F1a?= 
<pe...@foo.com>\nTo: b...@foo.com\nSubject: something\n\ndata".getBytes());
+        is = new ByteArrayInputStream("From: 
\"=?ISO-8859-1?Q?Manolo_Pe=F1a?=\" <pe...@foo.com>\nTo: b...@foo.com\nSubject: 
something\n\ndata".getBytes());
         MimeMessage m2 = new MimeMessage(session, is);
         is = new ByteArrayInputStream("From: a...@foo.com\nTo: 
b...@foo.com\nSubject: =?ISO-8859-1?Q?Monta=F1a?=\n\ndata".getBytes());
         MimeMessage m3 = new MimeMessage(session, is);
@@ -52,6 +52,9 @@ public class FetchMessagesHandlerTest ex
         
         msgs = fetchMessagesHandler.convert(10, f, new Message[]{m1, m2, m3});
         assertEquals(3, msgs.size());
+        
+        msgs = fetchMessagesHandler.convert(10, f, new Message[]{m1});
+        assertEquals("a...@foo.com <a...@foo.com>",  msgs.get(0).getFrom());
 
         msgs = fetchMessagesHandler.convert(10, f, new Message[]{m2});
         assertEquals("Manolo Pe\u00F1a <pe...@foo.com>",  
msgs.get(0).getFrom());

Modified: 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ContactsResult.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ContactsResult.java?rev=1522102&r1=1522101&r2=1522102&view=diff
==============================================================================
--- 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ContactsResult.java
 (original)
+++ 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ContactsResult.java
 Thu Sep 12 02:00:24 2013
@@ -88,6 +88,7 @@ import net.customware.gwt.dispatch.share
 
 public class ContactsResult implements Result, Serializable {
 
+<<<<<<< HEAD
     public static class Contact implements Result, Serializable {
         private static final long serialVersionUID = -8632580327693416473L;
         public String mail;
@@ -137,5 +138,59 @@ public class ContactsResult implements R
         this.contacts = contacts;
     }
 >>>>>>> first commit
+=======
+       public static class Contact implements Result, Serializable {
+               private static final long serialVersionUID = 
-8632580327693416473L;
+               public String mail;
+               public String realname;
+
+               public Contact() {
+               }
+
+               public Contact(String address) {
+                       mail = address.replaceAll("^.*<([^>]+)>", "$1");
+
+                       realname = mail.equals(address) ? mail : address
+                               .replaceAll("<.+$", "")
+                               .replaceAll("^[\\s\"']+", "")
+                               .replaceAll("[\\s\"']+$", "");
+
+                       if (realname.isEmpty())
+                               realname = mail;
+               }
+
+               public Contact(String realname, String mail) {
+                       this.realname = realname;
+                       this.mail = mail;
+               }
+
+               public String toString() {
+                       return (realname != null ? realname : "") + "<" + mail 
+ ">";
+               }
+
+               public String toKey() {
+                       return toString().replaceAll("[^\\w\\d<@>]+", 
"").toLowerCase();
+               }
+
+       }
+
+       private static final long serialVersionUID = -8740775403377441876L;
+       private Contact[] contacts;
+
+       public ContactsResult() {
+       }
+
+       public ContactsResult(Contact... contacts) {
+               this.contacts = contacts;
+       }
+
+       public Contact[] getContacts() {
+               return contacts;
+       }
+
+       public void setContacts(Contact[] contacts) {
+               this.contacts = contacts;
+       }
+>>>>>>> constant changed by manolo
 
 }



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

Reply via email to