Author: norman
Date: Fri Aug 21 14:03:09 2009
New Revision: 806563

URL: http://svn.apache.org/viewvc?rev=806563&view=rev
Log:
Inject Session via Provider

Added:
    labs/hupa/src/main/java/org/apache/hupa/server/InMemoryIMAPStoreCache.java
      - copied, changed from r806247, 
labs/hupa/src/main/java/org/apache/hupa/server/IMAPStoreCache.java
    labs/hupa/src/main/java/org/apache/hupa/server/guice/SessionProvider.java
Modified:
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
    labs/hupa/src/main/java/org/apache/hupa/server/IMAPStoreCache.java
    labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java
    
labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchFoldersHandler.java
    
labs/hupa/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java?rev=806563&r1=806562&r2=806563&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java 
Fri Aug 21 14:03:09 2009
@@ -534,7 +534,6 @@
         * (non-Javadoc)
         * @see 
org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#addTableListner(com.google.gwt.user.client.ui.TableListener)
         */
-       @SuppressWarnings("deprecation")
        public void addTableListner(TableListener listener) {
                dataTable.addTableListener(listener);
        }

Modified: labs/hupa/src/main/java/org/apache/hupa/server/IMAPStoreCache.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/IMAPStoreCache.java?rev=806563&r1=806562&r2=806563&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/IMAPStoreCache.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/IMAPStoreCache.java Fri Aug 
21 14:03:09 2009
@@ -19,72 +19,15 @@
 
 package org.apache.hupa.server;
 
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
 import javax.mail.MessagingException;
-import javax.mail.Session;
 
-import org.apache.commons.logging.Log;
-import com.google.inject.name.Named;
 import org.apache.hupa.shared.data.User;
 
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
 import com.sun.mail.imap.IMAPStore;
 
-...@singleton
-public class IMAPStoreCache {
-
-       private Properties props = new Properties();
-       private Session session;
-       protected Log logger;
-       private final Map<String,IMAPStore> pool = new HashMap<String 
,IMAPStore>();
-       private String address;
-       private int port;
-       
-       @Inject
-       public IMAPStoreCache(Log logger,@Named("IMAPServerAddress") String 
address, @Named("IMAPServerPort") int port) {
-               this.logger = logger;
-               this.address = address;
-               this.port = port;
-               
-        props.setProperty("mail.mime.decodetext.strict", "false");
-        session = Session.getDefaultInstance(props, null);
-        System.setProperty("mail.mime.decodetext.strict", "false");
-       }
-       
-       public synchronized IMAPStore get(User user) throws MessagingException {
-               return get(user.getName(),user.getPassword());
-       }
-       
-       public synchronized IMAPStore get(String username,String password) 
throws MessagingException {
-               IMAPStore store = pool.get(username);
-               if (store == null) {
-                       logger.debug("No cached store found for user " 
+username);
-                       store = (IMAPStore) session.getStore("imap"); 
-               }
-               if (store.isConnected() == false) {
-                       store.connect(address, port, username,password);
-               }
-               pool.put(username,store);
-               return store;
-       }
-       
-       public synchronized void delete(User user) {
-               delete(user.getName());
-       }
-       
-       public synchronized void delete(String username) {
-               IMAPStore store = pool.get(username);
-               if (store.isConnected()) {
-                       try {
-                               store.close();
-                       } catch (MessagingException e) {
-                               // Ignore on close
-                       }
-               }
-               pool.remove(username);
-       }
+public interface IMAPStoreCache {
+       public IMAPStore get(User user) throws MessagingException;
+       public IMAPStore get(String username,String password) throws 
MessagingException;
+       public void delete(User user);
+       public void delete(String username);
 }

Copied: 
labs/hupa/src/main/java/org/apache/hupa/server/InMemoryIMAPStoreCache.java 
(from r806247, 
labs/hupa/src/main/java/org/apache/hupa/server/IMAPStoreCache.java)
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/InMemoryIMAPStoreCache.java?p2=labs/hupa/src/main/java/org/apache/hupa/server/InMemoryIMAPStoreCache.java&p1=labs/hupa/src/main/java/org/apache/hupa/server/IMAPStoreCache.java&r1=806247&r2=806563&rev=806563&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/IMAPStoreCache.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/InMemoryIMAPStoreCache.java 
Fri Aug 21 14:03:09 2009
@@ -31,11 +31,12 @@
 import org.apache.hupa.shared.data.User;
 
 import com.google.inject.Inject;
+import com.google.inject.Provider;
 import com.google.inject.Singleton;
 import com.sun.mail.imap.IMAPStore;
 
 @Singleton
-public class IMAPStoreCache {
+public class InMemoryIMAPStoreCache implements IMAPStoreCache{
 
        private Properties props = new Properties();
        private Session session;
@@ -45,20 +46,28 @@
        private int port;
        
        @Inject
-       public IMAPStoreCache(Log logger,@Named("IMAPServerAddress") String 
address, @Named("IMAPServerPort") int port) {
+       public InMemoryIMAPStoreCache(Log logger,@Named("IMAPServerAddress") 
String address, @Named("IMAPServerPort") int port, Provider<Session> 
sessionProvider) {
                this.logger = logger;
                this.address = address;
                this.port = port;
                
         props.setProperty("mail.mime.decodetext.strict", "false");
-        session = Session.getDefaultInstance(props, null);
+        session = sessionProvider.get();
         System.setProperty("mail.mime.decodetext.strict", "false");
        }
        
+       /*
+        * (non-Javadoc)
+        * @see 
org.apache.hupa.server.IMAPStoreCache#get(org.apache.hupa.shared.data.User)
+        */
        public synchronized IMAPStore get(User user) throws MessagingException {
                return get(user.getName(),user.getPassword());
        }
        
+       /*
+        * (non-Javadoc)
+        * @see org.apache.hupa.server.IMAPStoreCache#get(java.lang.String, 
java.lang.String)
+        */
        public synchronized IMAPStore get(String username,String password) 
throws MessagingException {
                IMAPStore store = pool.get(username);
                if (store == null) {
@@ -72,10 +81,18 @@
                return store;
        }
        
+       /*
+        * (non-Javadoc)
+        * @see 
org.apache.hupa.server.IMAPStoreCache#delete(org.apache.hupa.shared.data.User)
+        */
        public synchronized void delete(User user) {
                delete(user.getName());
        }
        
+       /*
+        * (non-Javadoc)
+        * @see org.apache.hupa.server.IMAPStoreCache#delete(java.lang.String)
+        */
        public synchronized void delete(String username) {
                IMAPStore store = pool.get(username);
                if (store.isConnected()) {

Modified: labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java?rev=806563&r1=806562&r2=806563&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java Fri 
Aug 21 14:03:09 2009
@@ -22,11 +22,14 @@
 import java.net.URL;
 import java.util.Properties;
 
+import javax.mail.Session;
+
 import net.customware.gwt.dispatch.server.guice.ActionHandlerModule;
 
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.FileItemRegistry;
 import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.server.InMemoryIMAPStoreCache;
 import org.apache.hupa.server.handler.CreateFolderHandler;
 import org.apache.hupa.server.handler.DeleteFolderHandler;
 import org.apache.hupa.server.handler.DeleteMessageHandler;
@@ -75,11 +78,11 @@
                bindHandler(DeleteFolderHandler.class);
                bindHandler(CreateFolderHandler.class);
                bind(FileItemRegistry.class).in(Singleton.class);
-               bind(IMAPStoreCache.class).in(Singleton.class);
+               
bind(IMAPStoreCache.class).to(InMemoryIMAPStoreCache.class).in(Singleton.class);
                
bind(Log.class).toProvider(LogProvider.class).in(Singleton.class);
                bind(DownloadAttachmentServlet.class).in(Singleton.class);
                bind(UploadAttachmentServlet.class).in(Singleton.class);        
-               
+               bind(Session.class).toProvider(SessionProvider.class);
                // bind addresses and ports for imap and smtp
                Properties properties;
                try {

Added: labs/hupa/src/main/java/org/apache/hupa/server/guice/SessionProvider.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/guice/SessionProvider.java?rev=806563&view=auto
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/guice/SessionProvider.java 
(added)
+++ labs/hupa/src/main/java/org/apache/hupa/server/guice/SessionProvider.java 
Fri Aug 21 14:03:09 2009
@@ -0,0 +1,34 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.hupa.server.guice;
+
+import java.util.Properties;
+
+import javax.mail.Session;
+
+import com.google.inject.Provider;
+
+public class SessionProvider implements Provider<Session>{
+
+       public Session get() {
+               Session session = Session.getDefaultInstance(new Properties(), 
null);
+               return session;
+       }
+}

Modified: 
labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchFoldersHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchFoldersHandler.java?rev=806563&r1=806562&r2=806563&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchFoldersHandler.java 
(original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchFoldersHandler.java 
Fri Aug 21 14:03:09 2009
@@ -72,8 +72,10 @@
                                createIMAPFolderTree(fList, createFolder(f), 
f.list());
                                
                        }
+                       
                        return new FetchFoldersResult(fList);
                } catch (Exception e) {
+                       e.printStackTrace();
                        logger.error("Unable to get folders for User " + 
user,e);
                        throw new ActionException("Unable to get folders for 
User "
                                        + user);

Modified: 
labs/hupa/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java?rev=806563&r1=806562&r2=806563&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java
 (original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java
 Fri Aug 21 14:03:09 2009
@@ -28,6 +28,7 @@
 import javax.mail.MessagingException;
 import javax.mail.Multipart;
 import javax.mail.Part;
+import javax.mail.Store;
 import javax.mail.internet.MimeUtility;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
@@ -36,7 +37,7 @@
 import javax.servlet.http.HttpSession;
 
 import org.apache.commons.logging.Log;
-import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.server.InMemoryIMAPStoreCache;
 import org.apache.hupa.shared.data.User;
 
 import com.google.inject.Inject;
@@ -49,11 +50,11 @@
         * 
         */
        private static final long serialVersionUID = 1245563204035792963L;
-       private IMAPStoreCache cache;
+       private InMemoryIMAPStoreCache cache;
        private Log logger;
 
        @Inject
-       public DownloadAttachmentServlet(IMAPStoreCache cache, Log logger) {
+       public DownloadAttachmentServlet(InMemoryIMAPStoreCache cache, Log 
logger) {
                this.cache = cache;
                this.logger = logger;
        }
@@ -80,7 +81,7 @@
 
                        IMAPFolder folder = null;
                        try {
-                               IMAPStore store = cache.get((User) 
request.getSession().getAttribute(
+                               Store store = cache.get((User) 
request.getSession().getAttribute(
                                "user"));
                                folder = (IMAPFolder) 
store.getFolder(folderName);
                                if (folder.isOpen() == false) {



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

Reply via email to