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]