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