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 ma...@apache.org on 2010/01/21 20:25:13 UTC

svn commit: r901833 - in /james/hupa/trunk: server/src/main/java/org/apache/hupa/server/guice/ server/src/main/java/org/apache/hupa/server/handler/ server/src/main/java/org/apache/hupa/server/preferences/ server/src/main/java/org/apache/hupa/server/uti...

Author: manolo
Date: Thu Jan 21 19:25:13 2010
New Revision: 901833

URL: http://svn.apache.org/viewvc?rev=901833&view=rev
Log:
Created UserPreferencesStorage as an interface for storage implementations.
Created first implementation of a preferences storage using session.

Added:
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/InSessionUserPreferencesStorage.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/preferences/
    james/hupa/trunk/server/src/test/java/org/apache/hupa/server/preferences/UserPreferencesStorageTest.java
Modified:
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/GuiceServerModule.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/handler/ContactsHandler.java
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/SessionUtils.java
    james/hupa/trunk/server/src/test/java/org/apache/hupa/server/DemoModeTest.java
    james/hupa/trunk/server/src/test/java/org/apache/hupa/server/HupaTestCase.java
    james/hupa/trunk/server/src/test/java/org/apache/hupa/server/guice/GuiceTestModule.java
    james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/AbstractHandlerTest.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/server/src/main/java/org/apache/hupa/server/guice/GuiceServerModule.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/GuiceServerModule.java?rev=901833&r1=901832&r2=901833&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/GuiceServerModule.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/GuiceServerModule.java Thu Jan 21 19:25:13 2010
@@ -50,6 +50,8 @@
 import org.apache.hupa.server.handler.SendMessageHandler;
 import org.apache.hupa.server.handler.SetFlagsHandler;
 import org.apache.hupa.server.handler.TagMessagesHandler;
+import org.apache.hupa.server.preferences.InSessionUserPreferencesStorage;
+import org.apache.hupa.server.preferences.UserPreferencesStorage;
 import org.apache.hupa.server.servlet.DownloadAttachmentServlet;
 import org.apache.hupa.server.servlet.MessageSourceServlet;
 import org.apache.hupa.server.servlet.UploadAttachmentServlet;
@@ -111,6 +113,7 @@
         bind(UploadAttachmentServlet.class).in(Singleton.class);
         bind(MessageSourceServlet.class).in(Singleton.class);
         bind(Session.class).toProvider(SessionProvider.class);
+        bind(UserPreferencesStorage.class).to(InSessionUserPreferencesStorage.class);
 
         Properties properties;
         try {

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=901833&r1=901832&r2=901833&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 Jan 21 19:25:13 2010
@@ -19,26 +19,16 @@
 
 package org.apache.hupa.server.handler;
 
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
+import com.google.inject.Provider;
 
-import javax.mail.Address;
-import javax.mail.FetchProfile;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.Multipart;
-import javax.mail.Part;
-import javax.mail.internet.MimeUtility;
-import javax.mail.internet.MimeMessage.RecipientType;
-import javax.servlet.http.HttpSession;
+import com.sun.mail.imap.IMAPStore;
 
 import net.customware.gwt.dispatch.server.ExecutionContext;
 import net.customware.gwt.dispatch.shared.ActionException;
 
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.IMAPStoreCache;
-import org.apache.hupa.server.utils.SessionUtils;
+import org.apache.hupa.server.preferences.UserPreferencesStorage;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.Tag;
 import org.apache.hupa.shared.data.User;
@@ -46,14 +36,27 @@
 import org.apache.hupa.shared.rpc.FetchMessages;
 import org.apache.hupa.shared.rpc.FetchMessagesResult;
 
-import com.google.inject.Provider;
-import com.sun.mail.imap.IMAPStore;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+
+import javax.mail.Address;
+import javax.mail.FetchProfile;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Multipart;
+import javax.mail.Part;
+import javax.mail.internet.MimeUtility;
+import javax.mail.internet.MimeMessage.RecipientType;
+import javax.servlet.http.HttpSession;
 
 public abstract class AbstractFetchMessagesHandler <A extends FetchMessages> extends AbstractSessionHandler<A, FetchMessagesResult>{
 
-    public AbstractFetchMessagesHandler(IMAPStoreCache cache, Log logger,
-            Provider<HttpSession> sessionProvider) {
+    UserPreferencesStorage userPreferences;
+    
+    public AbstractFetchMessagesHandler(IMAPStoreCache cache, Log logger, Provider<HttpSession> sessionProvider, UserPreferencesStorage preferences) {
         super(cache, logger, sessionProvider);
+        this.userPreferences = preferences;
     }
 
     @Override
@@ -125,7 +128,7 @@
                 from = m.getFrom()[0].toString().trim();
                 try {
                     from = MimeUtility.decodeText(from);
-                    SessionUtils.addContact(sessionProvider.get(), from);
+                    userPreferences.addContact(from);
                 } catch (UnsupportedEncodingException e) {
                     logger.debug("Unable to decode from " + from + " " + e.getMessage());
                 }
@@ -137,7 +140,7 @@
                 replyto = m.getReplyTo()[0].toString().trim();
                 try {
                     replyto = MimeUtility.decodeText(replyto);
-                    SessionUtils.addContact(sessionProvider.get(), replyto);
+                    userPreferences.addContact(replyto);
                 } catch (UnsupportedEncodingException e) {
                     logger.debug("Unable to decode replyto " + replyto + " " + e.getMessage());
                 }
@@ -152,7 +155,7 @@
                     String mailTo = null;
                     try {
                         mailTo = MimeUtility.decodeText(toArray[b].toString());
-                        SessionUtils.addContact(sessionProvider.get(), mailTo);
+                        userPreferences.addContact(mailTo);
                     } catch (UnsupportedEncodingException e) {
                         logger.debug("Unable to decode mailTo " + mailTo + " " + e.getMessage());
                     }

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/ContactsHandler.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/ContactsHandler.java?rev=901833&r1=901832&r2=901833&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/ContactsHandler.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/ContactsHandler.java Thu Jan 21 19:25:13 2010
@@ -28,8 +28,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.IMAPStoreCache;
-import org.apache.hupa.server.utils.SessionUtils;
-import org.apache.hupa.shared.data.Settings;
+import org.apache.hupa.server.preferences.UserPreferencesStorage;
 import org.apache.hupa.shared.rpc.Contacts;
 import org.apache.hupa.shared.rpc.ContactsResult;
 
@@ -38,18 +37,17 @@
 /**
  * Handler for getting the list of contacts
  */
-public class ContactsHandler implements
-        ActionHandler<Contacts, ContactsResult> {
+public class ContactsHandler implements ActionHandler<Contacts, ContactsResult> {
 
-    private final Provider<HttpSession> sessionProvider;
+    UserPreferencesStorage userPreferences;
 
     @Inject
-    public ContactsHandler(IMAPStoreCache cache, Log logger, Provider<HttpSession> sessionProvider, Provider<Settings> settingsProvider) {
-        this.sessionProvider = sessionProvider;
+    public ContactsHandler(IMAPStoreCache cache, Log logger, Provider<HttpSession> sessionProvider, UserPreferencesStorage preferences) {
+        this.userPreferences = preferences;
     }
 
     public ContactsResult execute(Contacts action, ExecutionContext context) throws ActionException {
-        return new ContactsResult(SessionUtils.getContacts(sessionProvider.get()));
+        return new ContactsResult(userPreferences.getContacts());
     }
 
     public Class<Contacts> getActionType() {

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java?rev=901833&r1=901832&r2=901833&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java Thu Jan 21 19:25:13 2010
@@ -33,6 +33,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.server.preferences.UserPreferencesStorage;
 import org.apache.hupa.shared.rpc.FetchMessages;
 
 import com.google.inject.Inject;
@@ -48,8 +49,8 @@
 
     @Inject
     public FetchMessagesHandler(IMAPStoreCache cache, Log logger,
-            Provider<HttpSession> provider) {
-        super(cache, logger, provider);
+            Provider<HttpSession> provider, UserPreferencesStorage preferences) {
+        super(cache, logger, provider, preferences);
     }
 
     /*

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java?rev=901833&r1=901832&r2=901833&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java Thu Jan 21 19:25:13 2010
@@ -29,6 +29,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.server.preferences.UserPreferencesStorage;
 import org.apache.hupa.shared.rpc.FetchRecentMessages;
 
 import com.google.inject.Inject;
@@ -38,8 +39,8 @@
 
     @Inject
     public FetchRecentMessagesHandler(IMAPStoreCache cache, Log logger,
-            Provider<HttpSession> provider) {
-        super(cache, logger, provider);
+            Provider<HttpSession> provider, UserPreferencesStorage preferences) {
+        super(cache, logger, provider, preferences);
     }
 
     

Added: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/InSessionUserPreferencesStorage.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/InSessionUserPreferencesStorage.java?rev=901833&view=auto
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/InSessionUserPreferencesStorage.java (added)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/InSessionUserPreferencesStorage.java Thu Jan 21 19:25:13 2010
@@ -0,0 +1,56 @@
+package org.apache.hupa.server.preferences;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+import org.apache.commons.logging.Log;
+import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.shared.rpc.ContactsResult.Contact;
+
+import java.util.HashMap;
+
+import javax.servlet.http.HttpSession;
+
+/**
+ * A preferences storage which uses session as repository data
+ */
+public class InSessionUserPreferencesStorage implements UserPreferencesStorage {
+
+    private final Provider<HttpSession> sessionProvider;
+    
+    @Inject
+    public InSessionUserPreferencesStorage(IMAPStoreCache cache, Log logger, Provider<HttpSession> sessionProvider) {
+        this.sessionProvider = sessionProvider;
+    }
+
+    public void addContact(Contact contact) {
+        
+        HttpSession session = sessionProvider.get();
+        
+        @SuppressWarnings("unchecked")
+        HashMap<String, Contact> sessionContacts = (HashMap<String, Contact>)session.getAttribute("contacts");
+        if (sessionContacts==null)
+            sessionContacts=new HashMap<String, Contact>();
+        
+        if (!sessionContacts.containsKey(contact.toKey())) {
+            sessionContacts.put(contact.toKey(), contact);
+            session.setAttribute("contacts", sessionContacts);
+        }
+    }
+
+    public void addContact(String mail) {
+        Contact contact = new Contact(mail);
+        addContact(contact);
+    }
+
+    public Contact[] getContacts() {
+        
+        HttpSession session = sessionProvider.get();
+        
+        @SuppressWarnings("unchecked")
+        HashMap<String, Contact> sessionContacts = (HashMap<String, Contact>)session.getAttribute("contacts");
+
+        return sessionContacts == null ? new Contact[]{} : sessionContacts.values().toArray(new Contact[sessionContacts.size()]);
+    }
+    
+}

Added: 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=901833&view=auto
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/UserPreferencesStorage.java (added)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/UserPreferencesStorage.java Thu Jan 21 19:25:13 2010
@@ -0,0 +1,30 @@
+package org.apache.hupa.server.preferences;
+
+import org.apache.hupa.shared.rpc.ContactsResult.Contact;
+
+/**
+ *
+ * Interface which defines storage operations related 
+ * with user preferences
+ *
+ */
+public interface UserPreferencesStorage {
+    
+    /**
+     * Add a new contact to the list.
+     * The implementation has to check for duplicates 
+     */
+    public void addContact(Contact c);
+    
+    /**
+     * Add a new contact to the list.
+     * The implementation has to check for duplicates 
+     */
+    public void addContact(String s);
+    
+    /**
+     * Get the list of contacts 
+     */
+    public Contact[] getContacts();
+
+}

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/SessionUtils.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/SessionUtils.java?rev=901833&r1=901832&r2=901833&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/SessionUtils.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/SessionUtils.java Thu Jan 21 19:25:13 2010
@@ -22,9 +22,6 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.FileItemRegistry;
-import org.apache.hupa.shared.rpc.ContactsResult.Contact;
-
-import java.util.HashMap;
 
 import javax.servlet.http.HttpSession;
 
@@ -41,29 +38,5 @@
         }
         return registry;
     }
-   
-    public static void addContact(HttpSession session, String mail) {
-        String name = !mail.contains("<") ? "" : mail.replaceAll("<.+$", "")
-                                                 .replaceAll("^[\\s\"']+","")
-                                                 .replaceAll("[\\s\"']+$", "");
-        String email = mail.replaceAll("^.*<([^>]+)>","$1");
-        Contact contact = new Contact(name, email);
-        
-        @SuppressWarnings("unchecked")
-        HashMap<String, Contact> sessionContacts = (HashMap<String, Contact>)session.getAttribute("contacts");
-        if (sessionContacts==null)
-            sessionContacts=new HashMap<String, Contact>();
-        
-        if (!sessionContacts.containsKey(contact.toString())) {
-            sessionContacts.put(contact.toString(), contact);
-            session.setAttribute("contacts", sessionContacts);
-        }
-    }
-
-    public static Contact[] getContacts(HttpSession session) {
-        @SuppressWarnings("unchecked")
-        HashMap<String, Contact> sessionContacts = (HashMap<String, Contact>)session.getAttribute("contacts");
-        return sessionContacts == null ? new Contact[]{} : sessionContacts.values().toArray(new Contact[sessionContacts.size()]);
-    }
     
 }
\ No newline at end of file

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/DemoModeTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/DemoModeTest.java?rev=901833&r1=901832&r2=901833&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/DemoModeTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/DemoModeTest.java Thu Jan 21 19:25:13 2010
@@ -33,7 +33,7 @@
     
     private FetchFoldersHandler fetchFoldersHandler = new FetchFoldersHandler(memoryStore, logger, httpSessionProvider);
     
-    private FetchMessagesHandler fetchMessagesHandler = new FetchMessagesHandler(memoryStore, logger, httpSessionProvider);
+    private FetchMessagesHandler fetchMessagesHandler = new FetchMessagesHandler(memoryStore, logger, httpSessionProvider, preferences);
 
     public void testDemoLoginUser() {
         LoginUser badUser = new LoginUser("baduser", "whatever");

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/HupaTestCase.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/HupaTestCase.java?rev=901833&r1=901832&r2=901833&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/HupaTestCase.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/HupaTestCase.java Thu Jan 21 19:25:13 2010
@@ -27,9 +27,11 @@
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.guice.GuiceTestModule;
 import org.apache.hupa.server.handler.AbstractSendMessageHandler;
+import org.apache.hupa.server.handler.ContactsHandler;
 import org.apache.hupa.server.handler.ForwardMessageHandler;
 import org.apache.hupa.server.handler.GetMessageDetailsHandler;
 import org.apache.hupa.server.handler.ReplyMessageHandler;
+import org.apache.hupa.server.preferences.UserPreferencesStorage;
 import org.apache.hupa.shared.rpc.SendMessage;
 
 import com.google.inject.Injector;
@@ -51,4 +53,8 @@
     
     protected GetMessageDetailsHandler getDetailsMsgHndl = injector.getInstance(GetMessageDetailsHandler.class);
     
+    protected ContactsHandler contactsHandler = injector.getInstance(ContactsHandler.class);
+    
+    protected UserPreferencesStorage userPreferences = injector.getInstance(UserPreferencesStorage.class);
+    
 }

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/guice/GuiceTestModule.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/guice/GuiceTestModule.java?rev=901833&r1=901832&r2=901833&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/guice/GuiceTestModule.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/guice/GuiceTestModule.java Thu Jan 21 19:25:13 2010
@@ -41,6 +41,8 @@
 import org.apache.hupa.server.mock.MockIMAPStore;
 import org.apache.hupa.server.mock.MockIMAPStoreCache;
 import org.apache.hupa.server.mock.MockLogProvider;
+import org.apache.hupa.server.preferences.InSessionUserPreferencesStorage;
+import org.apache.hupa.server.preferences.UserPreferencesStorage;
 
 import javax.mail.Session;
 import javax.servlet.http.HttpSession;
@@ -69,6 +71,8 @@
         bind(FetchFoldersHandler.class);
         bind(FetchMessagesHandler.class);
         bind(ContactsHandler.class);
+        
+        bind(UserPreferencesStorage.class).to(InSessionUserPreferencesStorage.class);
 
     }
 

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/AbstractHandlerTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/AbstractHandlerTest.java?rev=901833&r1=901832&r2=901833&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/AbstractHandlerTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/AbstractHandlerTest.java Thu Jan 21 19:25:13 2010
@@ -20,10 +20,7 @@
 
 package org.apache.hupa.server.handler;
 
-import java.util.Properties;
-
-import javax.mail.Session;
-import javax.servlet.http.HttpSession;
+import com.google.inject.Provider;
 
 import junit.framework.TestCase;
 
@@ -33,10 +30,15 @@
 import org.apache.hupa.server.mock.MockIMAPStore;
 import org.apache.hupa.server.mock.MockIMAPStoreCache;
 import org.apache.hupa.server.mock.MockLog;
+import org.apache.hupa.server.preferences.UserPreferencesStorage;
 import org.apache.hupa.shared.data.Settings;
 import org.apache.hupa.shared.data.User;
+import org.apache.hupa.shared.rpc.ContactsResult.Contact;
 
-import com.google.inject.Provider;
+import java.util.Properties;
+
+import javax.mail.Session;
+import javax.servlet.http.HttpSession;
 
 public abstract class AbstractHandlerTest extends TestCase{
     
@@ -75,6 +77,18 @@
         }
     });
     
+    protected UserPreferencesStorage preferences = new UserPreferencesStorage(){
+        public void addContact(Contact c) {
+        }
+
+        public void addContact(String s) {
+        }
+
+        public Contact[] getContacts() {
+            return null;
+        }
+    };
+    
     public void setUp() {
         storeCache.addValidUser(user.getName(), user.getPassword());
     }

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=901833&r1=901832&r2=901833&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 Jan 21 19:25:13 2010
@@ -1,54 +1,18 @@
 package org.apache.hupa.server.handler;
 
-import com.sun.mail.imap.IMAPStore;
+import junit.framework.Assert;
 
 import org.apache.hupa.server.HupaTestCase;
-import org.apache.hupa.server.IMAPStoreCache;
-import org.apache.hupa.server.guice.DemoModeConstants;
-import org.apache.hupa.server.mock.MockIMAPStoreCache;
-import org.apache.hupa.server.utils.SessionUtils;
-import org.apache.hupa.shared.data.IMAPFolder;
-import org.apache.hupa.shared.data.User;
-import org.apache.hupa.shared.rpc.FetchFolders;
-import org.apache.hupa.shared.rpc.FetchMessages;
-import org.apache.hupa.shared.rpc.FetchMessagesResult;
-
-import javax.servlet.http.HttpSession;
+import org.apache.hupa.shared.rpc.Contacts;
 
 
 public class ContactsHandlerTest extends HupaTestCase {
-
-    public void testPutContactsInSession() throws Exception {
-        
-        HttpSession httpSession = injector.getInstance(HttpSession.class);
-        
-        SessionUtils.addContact(httpSession, " ' \"Somebody\" <me...@domain.com>");
-        assertEquals("Somebody",SessionUtils.getContacts(httpSession)[0].realname);
-        assertEquals("me@domain.com",SessionUtils.getContacts(httpSession)[0].mail);
-        
-    }
-
-    public void testFetchMessagesFillsContactsList() throws Exception {
-        
-        User demouser = DemoModeConstants.demoUser;
-
-        HttpSession httpSession = injector.getInstance(HttpSession.class);
-        httpSession.setAttribute("user", demouser);
-
-        IMAPStoreCache storeCache = injector.getInstance(IMAPStoreCache.class);
-        IMAPStore store = injector.getInstance(IMAPStore.class);
-        ((MockIMAPStoreCache)storeCache).addValidUser(demouser, store);
-
-        FetchFoldersHandler fetchFoldersHandler = injector.getInstance(FetchFoldersHandler.class); 
-        fetchFoldersHandler.execute(new FetchFolders(), null);
-        
-        IMAPFolder folder = new IMAPFolder(demouser.getSettings().getInboxFolderName());
-        FetchMessagesHandler fetchMessagesHandler = injector.getInstance(FetchMessagesHandler.class); 
-        FetchMessagesResult result = fetchMessagesHandler.execute(new FetchMessages(folder, 0, 10, null), null);
-        
-        assertTrue(result.getRealCount()>1);
-        assertTrue(SessionUtils.getContacts(httpSession).length>1);
-        
+    
+    public void testContactsHandler() throws Exception {
+        Assert.assertEquals(0, contactsHandler.execute(new Contacts(), null).getContacts().length);
+        userPreferences.addContact("Somebody <so...@foo.com>");
+        userPreferences.addContact(" Some.body   <so...@foo.com>  ");
+        Assert.assertEquals(1, contactsHandler.execute(new Contacts(), null).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=901833&r1=901832&r2=901833&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 Jan 21 19:25:13 2010
@@ -36,7 +36,7 @@
 
 public class FetchMessagesHandlerTest extends AbstractHandlerTest{
 
-    FetchMessagesHandler handler = new FetchMessagesHandler(storeCache, logger, httpSessionProvider);
+    FetchMessagesHandler handler = new FetchMessagesHandler(storeCache, logger, httpSessionProvider, preferences);
     
     public void setUp() {
         super.setUp();

Added: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/preferences/UserPreferencesStorageTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/preferences/UserPreferencesStorageTest.java?rev=901833&view=auto
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/preferences/UserPreferencesStorageTest.java (added)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/preferences/UserPreferencesStorageTest.java Thu Jan 21 19:25:13 2010
@@ -0,0 +1,57 @@
+package org.apache.hupa.server.preferences;
+
+import com.sun.mail.imap.IMAPStore;
+
+import org.apache.hupa.server.HupaTestCase;
+import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.server.guice.DemoModeConstants;
+import org.apache.hupa.server.handler.FetchFoldersHandler;
+import org.apache.hupa.server.handler.FetchMessagesHandler;
+import org.apache.hupa.server.mock.MockIMAPStoreCache;
+import org.apache.hupa.shared.data.IMAPFolder;
+import org.apache.hupa.shared.data.User;
+import org.apache.hupa.shared.rpc.FetchFolders;
+import org.apache.hupa.shared.rpc.FetchMessages;
+import org.apache.hupa.shared.rpc.FetchMessagesResult;
+
+import javax.servlet.http.HttpSession;
+
+
+public class UserPreferencesStorageTest extends HupaTestCase {
+
+    public void testPutContactsInSession() throws Exception {
+        UserPreferencesStorage userPreferences = injector.getInstance(UserPreferencesStorage.class);
+        
+        userPreferences.addContact(" ' \"Somebody\" <me...@domain.com>");
+        assertEquals("Somebody", userPreferences.getContacts()[0].realname);
+        assertEquals("me@domain.com", userPreferences.getContacts()[0].mail);
+        
+    }
+
+    public void testFetchMessagesFillsContactsList() throws Exception {
+
+        assertEquals(0, userPreferences.getContacts().length);
+        
+        User demouser = DemoModeConstants.demoUser;
+
+        HttpSession httpSession = injector.getInstance(HttpSession.class);
+        httpSession.setAttribute("user", demouser);
+
+        IMAPStoreCache storeCache = injector.getInstance(IMAPStoreCache.class);
+        IMAPStore store = injector.getInstance(IMAPStore.class);
+        ((MockIMAPStoreCache)storeCache).addValidUser(demouser, store);
+
+        FetchFoldersHandler fetchFoldersHandler = injector.getInstance(FetchFoldersHandler.class); 
+        fetchFoldersHandler.execute(new FetchFolders(), null);
+        
+        IMAPFolder folder = new IMAPFolder(demouser.getSettings().getInboxFolderName());
+        FetchMessagesHandler fetchMessagesHandler = injector.getInstance(FetchMessagesHandler.class); 
+        FetchMessagesResult result = fetchMessagesHandler.execute(new FetchMessages(folder, 0, 10, null), null);
+        
+        assertTrue(result.getRealCount()>1);
+        
+        assertTrue(userPreferences.getContacts().length>1);
+        
+    }
+    
+}

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=901833&r1=901832&r2=901833&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 Jan 21 19:25:13 2010
@@ -30,6 +30,14 @@
 
         public Contact() {
         }
+        
+        public Contact(String mail){
+            this.realname = !mail.contains("<") ? "" : 
+                             mail.replaceAll("<.+$", "")
+                             .replaceAll("^[\\s\"']+","")
+                             .replaceAll("[\\s\"']+$", "");
+            this.mail = mail.replaceAll("^.*<([^>]+)>","$1");
+        }
 
         public Contact(String realname, String mail) {
             this.realname = realname;
@@ -39,6 +47,11 @@
         public String toString() {
             return (realname != null ? realname : "") + "<" + mail + ">";
         }
+        
+        public String toKey() {
+            return toString().replaceAll("[^\\w\\d<@>]+", "").toLowerCase();
+        }
+        
     }
 
     private static final long serialVersionUID = -8740775403377441876L;



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