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 2014/03/15 11:36:26 UTC

svn commit: r1577826 - in /james/hupa/trunk: server/src/main/java/org/apache/hupa/server/ioc/ server/src/main/java/org/apache/hupa/server/preferences/ server/src/main/java/org/apache/hupa/server/servlet/ server/src/main/java/org/apache/hupa/server/util...

Author: manolo
Date: Sat Mar 15 10:36:25 2014
New Revision: 1577826

URL: http://svn.apache.org/r1577826
Log:
Do not remove non-hupa session attributes, so as hupa server can be included in other backends, and some re-factoring to avoid repeated code

Modified:
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/ioc/GuiceServerModule.java
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/InImapUserPreferencesStorage.java
    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/servlet/DownloadAttachmentServlet.java
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/MessageSourceServlet.java
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/UploadAttachmentServlet.java
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/MessageUtils.java
    james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/SessionUtils.java
    james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/SConsts.java

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/ioc/GuiceServerModule.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/ioc/GuiceServerModule.java?rev=1577826&r1=1577825&r2=1577826&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/ioc/GuiceServerModule.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/ioc/GuiceServerModule.java Sat Mar 15 10:36:25 2014
@@ -127,87 +127,86 @@ import com.google.web.bindery.requestfac
  */
 public class GuiceServerModule extends AbstractModule {
 
-	Properties properties;
+    Properties properties;
 
-	public GuiceServerModule(Properties properties) {
-		this.properties = properties;
-	}
-
-	@Override
-	protected void configure() {
-	    System.err.println("GuiceServerModule configuring beans.");
-	    
-		try {
-			// Bind addresses and ports for imap and smtp
-			Names.bindProperties(binder(), properties);
-		} catch (Exception e) {
-			throw new RuntimeException("Unable to to configure hupa server,"
-			        + "\nmake sure that you have a valid /etc/default/hupa file"
-			        + "\nor the web container has been started with the appropriate parameter:"
-			        + " -Dhupa.config.file=your_hupa_properties_file", e);
-		}
-		bind(ExceptionHandler.class).to(DefaultExceptionHandler.class);
-		bind(ServiceLayerDecorator.class).to(IocRfServiceDecorator.class);
-		bind(IocRfServiceLocator.class);
-		
-		bind(MailHeader.class).to(MailHeaderImpl.class);
-		
-		bind(User.class).to(UserImpl.class);
-		bind(Settings.class).toProvider(DefaultUserSettingsProvider.class);
-		bind(ImapFolder.class).to(ImapFolderImpl.class);
-		bind(Tag.class).to(TagImpl.class);
-		bind(MessageDetails.class).to(MessageDetailsImpl.class);
-		bind(MessageAttachment.class).to(MessageAttachmentImpl.class);
-		bind(SmtpMessage.class).to(SmtpMessageImpl.class);
-		
-		bind(GenericResult.class).to(GenericResultImpl.class);
-		bind(FetchMessagesAction.class).to(FetchMessagesActionImpl.class);
-		bind(FetchMessagesResult.class).to(FetchMessagesResultImpl.class);
-		bind(CreateFolderAction.class).to(CreateFolderActionImpl.class);
-		bind(DeleteFolderAction.class).to(DeleteFolderActionImpl.class);
-		bind(RenameFolderAction.class).to(RenameFolderActionImpl.class);
-		bind(DeleteMessageAllAction.class).to(DeleteMessageAllActionImpl.class);
-		bind(DeleteMessageByUidAction.class).to(DeleteMessageByUidActionImpl.class);
-		bind(GetMessageDetailsAction.class).to(GetMessageDetailsActionImpl.class);
-		bind(GetMessageDetailsResult.class).to(GetMessageDetailsResultImpl.class);
-		bind(SendMessageAction.class).to(SendMessageActionImpl.class);
-		bind(SendForwardMessageAction.class).to(SendForwardMessageActionImpl.class);
-		bind(SendReplyMessageAction.class).to(SendReplyMessageActionImpl.class);
-		bind(GetMessageRawAction.class).to(GetMessageRawActionImpl.class);
-		bind(GetMessageRawResult.class).to(GetMessageRawResultImpl.class);
-		bind(LogoutUserAction.class).to(LogoutUserActionImpl.class);
-		bind(MoveMessageAction.class).to(MoveMessageActionImpl.class);
-		bind(SetFlagAction.class).to(SetFlagActionImpl.class);
-		
+    public GuiceServerModule(Properties properties) {
+        this.properties = properties;
+    }
+
+    @Override
+    protected void configure() {
+        
+        try {
+            // Bind addresses and ports for imap and smtp
+            Names.bindProperties(binder(), properties);
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to to configure hupa server,"
+                    + "\nmake sure that you have a valid /etc/default/hupa file"
+                    + "\nor the web container has been started with the appropriate parameter:"
+                    + " -Dhupa.config.file=your_hupa_properties_file", e);
+        }
+        bind(ExceptionHandler.class).to(DefaultExceptionHandler.class);
+        bind(ServiceLayerDecorator.class).to(IocRfServiceDecorator.class);
+        bind(IocRfServiceLocator.class);
+        
+        bind(MailHeader.class).to(MailHeaderImpl.class);
+        
+        bind(User.class).to(UserImpl.class);
+        bind(Settings.class).toProvider(DefaultUserSettingsProvider.class);
+        bind(ImapFolder.class).to(ImapFolderImpl.class);
+        bind(Tag.class).to(TagImpl.class);
+        bind(MessageDetails.class).to(MessageDetailsImpl.class);
+        bind(MessageAttachment.class).to(MessageAttachmentImpl.class);
+        bind(SmtpMessage.class).to(SmtpMessageImpl.class);
+        
+        bind(GenericResult.class).to(GenericResultImpl.class);
+        bind(FetchMessagesAction.class).to(FetchMessagesActionImpl.class);
+        bind(FetchMessagesResult.class).to(FetchMessagesResultImpl.class);
+        bind(CreateFolderAction.class).to(CreateFolderActionImpl.class);
+        bind(DeleteFolderAction.class).to(DeleteFolderActionImpl.class);
+        bind(RenameFolderAction.class).to(RenameFolderActionImpl.class);
+        bind(DeleteMessageAllAction.class).to(DeleteMessageAllActionImpl.class);
+        bind(DeleteMessageByUidAction.class).to(DeleteMessageByUidActionImpl.class);
+        bind(GetMessageDetailsAction.class).to(GetMessageDetailsActionImpl.class);
+        bind(GetMessageDetailsResult.class).to(GetMessageDetailsResultImpl.class);
+        bind(SendMessageAction.class).to(SendMessageActionImpl.class);
+        bind(SendForwardMessageAction.class).to(SendForwardMessageActionImpl.class);
+        bind(SendReplyMessageAction.class).to(SendReplyMessageActionImpl.class);
+        bind(GetMessageRawAction.class).to(GetMessageRawActionImpl.class);
+        bind(GetMessageRawResult.class).to(GetMessageRawResultImpl.class);
+        bind(LogoutUserAction.class).to(LogoutUserActionImpl.class);
+        bind(MoveMessageAction.class).to(MoveMessageActionImpl.class);
+        bind(SetFlagAction.class).to(SetFlagActionImpl.class);
+        
         bind(FetchMessagesService.class).to(FetchMessagesServiceImpl.class);
-		bind(SendMessageService.class).to(SendMessageBaseServiceImpl.class);
-		bind(SendForwardMessageService.class).to(SendForwardMessageServiceImpl.class);
-		bind(SendReplyMessageService.class).to(SendReplyMessageServiceImpl.class);
+        bind(SendMessageService.class).to(SendMessageBaseServiceImpl.class);
+        bind(SendForwardMessageService.class).to(SendForwardMessageServiceImpl.class);
+        bind(SendReplyMessageService.class).to(SendReplyMessageServiceImpl.class);
         bind(GetMessageDetailsService.class).to(GetMessageDetailsServiceImpl.class);
 
-		
-		bind(CheckSessionService.class).to(CheckSessionServiceImpl.class);
-		bind(LoginUserService.class).to(LoginUserServiceImpl.class);
-		bind(ImapFolderService.class).to(ImapFolderServiceImpl.class);
-		bind(FetchFoldersService.class).to(FetchFoldersServiceImpl.class);
-		bind(CreateFolderService.class).to(CreateFolderServiceImpl.class);
-		bind(DeleteFolderService.class).to(DeleteFolderServiceImpl.class);
-		bind(RenameFolderService.class).to(RenameFolderServiceImpl.class);
-		bind(DeleteMessageAllService.class).to(DeleteMessageAllServiceImpl.class);
-		bind(DeleteMessageByUidService.class).to(DeleteMessageByUidServiceImpl.class);
-		bind(GetMessageRawService.class).to(GetMessageRawServiceImpl.class);
-		bind(LogoutUserService.class).to(LogoutUserServiceImpl.class);
-		bind(MoveMessageService.class).to(MoveMessageServiceImpl.class);
-		bind(SetFlagService.class).to(SetFlagServiceImpl.class);
-		
-		bind(IMAPStoreCache.class).to(getIMAPStoreCacheClass()).in(Singleton.class);
+        
+        bind(CheckSessionService.class).to(CheckSessionServiceImpl.class);
+        bind(LoginUserService.class).to(LoginUserServiceImpl.class);
+        bind(ImapFolderService.class).to(ImapFolderServiceImpl.class);
+        bind(FetchFoldersService.class).to(FetchFoldersServiceImpl.class);
+        bind(CreateFolderService.class).to(CreateFolderServiceImpl.class);
+        bind(DeleteFolderService.class).to(DeleteFolderServiceImpl.class);
+        bind(RenameFolderService.class).to(RenameFolderServiceImpl.class);
+        bind(DeleteMessageAllService.class).to(DeleteMessageAllServiceImpl.class);
+        bind(DeleteMessageByUidService.class).to(DeleteMessageByUidServiceImpl.class);
+        bind(GetMessageRawService.class).to(GetMessageRawServiceImpl.class);
+        bind(LogoutUserService.class).to(LogoutUserServiceImpl.class);
+        bind(MoveMessageService.class).to(MoveMessageServiceImpl.class);
+        bind(SetFlagService.class).to(SetFlagServiceImpl.class);
+        
+        bind(IMAPStoreCache.class).to(getIMAPStoreCacheClass()).in(Singleton.class);
 
-		bind(Log.class).toProvider(LogProvider.class).in(Singleton.class);
+        bind(Log.class).toProvider(LogProvider.class).in(Singleton.class);
         bind(UserPreferencesStorage.class).to(InSessionUserPreferencesStorage.class);
-		bind(Properties.class).toInstance(properties);
-	}
+        bind(Properties.class).toInstance(properties);
+    }
 
-	protected Class<? extends IMAPStoreCache> getIMAPStoreCacheClass() {
-		return InMemoryIMAPStoreCache.class;
-	}
+    protected Class<? extends IMAPStoreCache> getIMAPStoreCacheClass() {
+        return InMemoryIMAPStoreCache.class;
+    }
 }

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/InImapUserPreferencesStorage.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/InImapUserPreferencesStorage.java?rev=1577826&r1=1577825&r2=1577826&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/InImapUserPreferencesStorage.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/InImapUserPreferencesStorage.java Sat Mar 15 10:36:25 2014
@@ -48,6 +48,7 @@ import org.apache.commons.io.output.Byte
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.IMAPStoreCache;
 import org.apache.hupa.server.utils.MessageUtils;
+import org.apache.hupa.shared.SConsts;
 import org.apache.hupa.shared.domain.User;
 import org.apache.hupa.shared.rpc.ContactsResult.Contact;
 
@@ -62,7 +63,7 @@ import com.sun.mail.imap.IMAPStore;
  * @author manolo
  */
 public class InImapUserPreferencesStorage extends UserPreferencesStorage {
-	
+    
 
     // User preferences are saved in IMAP but there is a delay between a new
     // contact is added an the save action. It saves number of operations in
@@ -74,8 +75,6 @@ public class InImapUserPreferencesStorag
     
     private static final String HUPA_DATA_MIME_TYPE = "application/hupa-data";
 
-    // TODO: centralize this constant
-    protected static final String USER_ATTR = "user";
     
     private static Hashtable<User, Thread> threads = new Hashtable<User, Thread>();
     
@@ -207,7 +206,7 @@ public class InImapUserPreferencesStorag
         for (Contact contact : contacts) {
             if (!contactsHash.containsKey(contact.toKey())) {
                 contactsHash.put(contact.toKey(), contact);
-                saveContactsAsync((User) sessionProvider.get().getAttribute(USER_ATTR));
+                saveContactsAsync((User) sessionProvider.get().getAttribute(SConsts.USER_SESS_ATTR));
             }
         }
     }
@@ -228,14 +227,14 @@ public class InImapUserPreferencesStorag
     @SuppressWarnings("unchecked")
     private HashMap<String, Contact> getContactsHash() {
         HttpSession session = sessionProvider.get();
-        HashMap<String, Contact> contactHash = (HashMap<String, Contact>) session.getAttribute(CONTACTS_ATTR);
+        HashMap<String, Contact> contactHash = (HashMap<String, Contact>) session.getAttribute(SConsts.CONTACTS_SESS_ATTR);
         if (contactHash == null) {
             try {
-                User user = (User) sessionProvider.get().getAttribute("user");
+                User user = (User) sessionProvider.get().getAttribute(SConsts.USER_SESS_ATTR);
                 IMAPStore iStore = cache.get(user);
                 Object o = readUserPreferencesFromIMAP(logger, user, iStore, user.getSettings().getDraftsFolderName(), MAGIC_SUBJECT_CONTACTS);
                 contactHash = o != null ? (HashMap<String, Contact>) o : new HashMap<String, Contact>();
-                session.setAttribute(CONTACTS_ATTR, contactHash);
+                session.setAttribute(SConsts.CONTACTS_SESS_ATTR, contactHash);
             } catch (Exception e) {
                 e.printStackTrace();
             }

Modified: 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=1577826&r1=1577825&r2=1577826&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/InSessionUserPreferencesStorage.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/preferences/InSessionUserPreferencesStorage.java Sat Mar 15 10:36:25 2014
@@ -24,6 +24,7 @@ import com.google.inject.Provider;
 
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.shared.SConsts;
 import org.apache.hupa.shared.rpc.ContactsResult.Contact;
 
 import java.util.HashMap;
@@ -46,10 +47,10 @@ public class InSessionUserPreferencesSto
         HttpSession session = sessionProvider.get();
 
         @SuppressWarnings("unchecked")
-        HashMap<String, Contact> sessionContacts = (HashMap<String, Contact>)session.getAttribute(CONTACTS_ATTR);
+        HashMap<String, Contact> sessionContacts = (HashMap<String, Contact>)session.getAttribute(SConsts.CONTACTS_SESS_ATTR);
         if (sessionContacts==null) {
             sessionContacts=new HashMap<String, Contact>();
-            session.setAttribute(CONTACTS_ATTR, sessionContacts);
+            session.setAttribute(SConsts.CONTACTS_SESS_ATTR, sessionContacts);
         }
         
         for(Contact contact: contacts) {
@@ -63,7 +64,7 @@ public class InSessionUserPreferencesSto
         HttpSession session = sessionProvider.get();
         
         @SuppressWarnings("unchecked")
-        HashMap<String, Contact> sessionContacts = (HashMap<String, Contact>)session.getAttribute(CONTACTS_ATTR);
+        HashMap<String, Contact> sessionContacts = (HashMap<String, Contact>)session.getAttribute(SConsts.CONTACTS_SESS_ATTR);
 
         return sessionContacts == null ? new Contact[]{} : sessionContacts.values().toArray(new Contact[sessionContacts.size()]);
     }

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java?rev=1577826&r1=1577825&r2=1577826&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java Sat Mar 15 10:36:25 2014
@@ -72,7 +72,7 @@ public class DownloadAttachmentServlet e
     protected void doGet(HttpServletRequest request,
             HttpServletResponse response) throws ServletException, IOException {
 
-        User user = (User) request.getSession().getAttribute("user");
+        User user = (User) request.getSession().getAttribute(SConsts.USER_SESS_ATTR);
         if (user == null)
             throw new ServletException("Invalid session");
 
@@ -82,8 +82,8 @@ public class DownloadAttachmentServlet e
         String mode = request.getParameter(SConsts.PARAM_MODE);
         boolean inline = "inline".equals(mode);
         if (!inline) {
-	    response.setHeader("Content-disposition", "attachment; filename="
-	        + attachmentName + "");
+        response.setHeader("Content-disposition", "attachment; filename="
+            + attachmentName + "");
         }
         InputStream in = null;
         OutputStream out = response.getOutputStream();

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/MessageSourceServlet.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/MessageSourceServlet.java?rev=1577826&r1=1577825&r2=1577826&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/MessageSourceServlet.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/MessageSourceServlet.java Sat Mar 15 10:36:25 2014
@@ -60,7 +60,7 @@ public class MessageSourceServlet extend
     @Override
     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
-        User user = (User) request.getSession().getAttribute("user");
+        User user = (User) request.getSession().getAttribute(SConsts.USER_SESS_ATTR);
 
         String message_uuid = request.getParameter(SConsts.PARAM_UID);
         String folderName = request.getParameter(SConsts.PARAM_FOLDER);

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/UploadAttachmentServlet.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/UploadAttachmentServlet.java?rev=1577826&r1=1577825&r2=1577826&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/UploadAttachmentServlet.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/servlet/UploadAttachmentServlet.java Sat Mar 15 10:36:25 2014
@@ -28,7 +28,7 @@ import javax.servlet.http.HttpServletReq
 
 import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.logging.Log;
-import org.apache.hupa.server.FileItemRegistry;
+import org.apache.hupa.server.utils.SessionUtils;
 
 import com.google.inject.Inject;
 
@@ -51,22 +51,13 @@ public class UploadAttachmentServlet ext
         this.logger = logger;
     }
     
-    private FileItemRegistry getSessionRegistry(HttpServletRequest request) {
-        FileItemRegistry registry = (FileItemRegistry)request.getSession().getAttribute("registry");
-        if (registry == null) {
-            registry = new FileItemRegistry(logger);
-            request.getSession().setAttribute("registry", registry);
-        }
-        return registry;
-    }
-    
     @Override
     public String executeAction(HttpServletRequest request, List<FileItem> sessionFiles) throws UploadActionException {
 
-        logger.info("Executing Action, files in session: " + sessionFiles.size() + " previous files in registry: " + getSessionRegistry(request).size());
+        logger.info("Executing Action, files in session: " + sessionFiles.size() + " previous files in registry: " + SessionUtils.getSessionRegistry(logger, request.getSession()).size());
         // save file items in the user session's registry
         for(FileItem item: sessionFiles) 
-            getSessionRegistry(request).add(item);
+            SessionUtils.getSessionRegistry(logger, request.getSession()).add(item);
 
         
         // remove items from session but not remove the data from disk or memory
@@ -76,6 +67,6 @@ public class UploadAttachmentServlet ext
     
     @Override
     public void removeItem(HttpServletRequest request, FileItem item)  throws UploadActionException {
-       getSessionRegistry(request).remove(item);
+        SessionUtils.getSessionRegistry(logger, request.getSession()).remove(item);
     }
 }

Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/MessageUtils.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/MessageUtils.java?rev=1577826&r1=1577825&r2=1577826&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/MessageUtils.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/utils/MessageUtils.java Sat Mar 15 10:36:25 2014
@@ -252,12 +252,13 @@ public class MessageUtils {
                     if (contentId != null) {
                         for (String id: contentId) {
                             id = id.replaceAll("^.*<(.+)>.*$", "$1");
+                            System.out.println(attachmentName + " " + id);
                             if (attachmentName.equals(id))
                                 return bodyPart;
                         }
                     }
-                    if (fileName != null){
-                        if (attachmentName.equalsIgnoreCase(MimeUtility.decodeText(fileName)))
+                    if (fileName != null) {
+                        if (cleanName(attachmentName).equalsIgnoreCase(cleanName(MimeUtility.decodeText(fileName))))
                             return bodyPart;
                     }
                 }
@@ -267,6 +268,10 @@ public class MessageUtils {
         }
         return null;
     }
+    
+    private static String cleanName(String s) {
+        return s.replaceAll("[^\\w .+-]", "");
+    }
 
     /**
      * Convert a FileItem to a BodyPart

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=1577826&r1=1577825&r2=1577826&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 Sat Mar 15 10:36:25 2014
@@ -20,41 +20,47 @@
 package org.apache.hupa.server.utils;
 
 
-import org.apache.commons.logging.Log;
-import org.apache.hupa.server.FileItemRegistry;
-
 import java.util.ArrayList;
 import java.util.Enumeration;
 
 import javax.servlet.http.HttpSession;
 
+import org.apache.commons.logging.Log;
+import org.apache.hupa.server.FileItemRegistry;
+import org.apache.hupa.shared.SConsts;
+
 /**
  * Utility methods for manage user's session objects
  */
 public class SessionUtils {
 
     public static FileItemRegistry getSessionRegistry(Log logger, HttpSession session) {
-        FileItemRegistry registry = (FileItemRegistry)session.getAttribute("registry");
+        FileItemRegistry registry = (FileItemRegistry)session.getAttribute(SConsts.REG_SESS_ATTR);
         if (registry == null) {
             registry = new FileItemRegistry(logger);
-            session.setAttribute("registry", registry);
+            session.setAttribute(SConsts.REG_SESS_ATTR, registry);
         }
         return registry;
     }
-
+    
     /**
      * Remove session attributes, it has to be done in the login and logout actions
      * @param session
      */
     public static void cleanSessionAttributes(HttpSession session) {
-        @SuppressWarnings("rawtypes")
-        Enumeration en = session.getAttributeNames();
-        ArrayList<String> toRemove = new ArrayList<String>();
-        while (en.hasMoreElements()) {
-            toRemove.add(en.nextElement().toString());
-        }
-        for (String attr: toRemove) {
-            session.removeAttribute(attr);
+        if (session != null) {
+            @SuppressWarnings("rawtypes")
+            Enumeration en = session.getAttributeNames();
+            ArrayList<String> toRemove = new ArrayList<String>();
+            while (en.hasMoreElements()) {
+                String s = en.nextElement().toString();
+                if (s.startsWith("hupa")) {
+                    toRemove.add(s);
+                }
+            }
+            for (String attr: toRemove) {
+                session.removeAttribute(attr);
+            }
         }
     }
     

Modified: james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/SConsts.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/SConsts.java?rev=1577826&r1=1577825&r2=1577826&view=diff
==============================================================================
--- james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/SConsts.java (original)
+++ james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/SConsts.java Sat Mar 15 10:36:25 2014
@@ -31,8 +31,9 @@ public class SConsts {
     public static final String PARAM_UID = "uid";
     public static final String PARAM_MODE = "mode";
     
-    public static final String USER_SESS_ATTR = "user";
-    public static final String CONTACTS_SESS_ATTR = "contacts";
+    public static final String USER_SESS_ATTR = "hupa.user";
+    public static final String CONTACTS_SESS_ATTR = "hupa.contacts";
+    public static final String REG_SESS_ATTR = "hupa.registry";
     
     public static final String HEADER_IN_REPLY_TO = "In-Reply-To";
     public static final String HEADER_REFERENCES = "References";



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