You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by no...@apache.org on 2009/07/20 09:50:47 UTC

svn commit: r795712 - in /labs/hupa: ./ .settings/ src/main/java/org/apache/hupa/server/ src/main/java/org/apache/hupa/server/gin/ src/main/java/org/apache/hupa/server/guice/ war/ war/WEB-INF/classes/

Author: norman
Date: Mon Jul 20 07:50:46 2009
New Revision: 795712

URL: http://svn.apache.org/viewvc?rev=795712&view=rev
Log:
Add Logging (log4j/commons-logging)
Some refactoring for using protocol caching

Added:
    labs/hupa/src/main/java/org/apache/hupa/server/IMAPProtocolCache.java
    labs/hupa/src/main/java/org/apache/hupa/server/guice/LogProvider.java
    labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java
      - copied, changed from r795426, labs/hupa/src/main/java/org/apache/hupa/server/gin/ServerModul.java
    labs/hupa/war/WEB-INF/classes/log4j.properties
Removed:
    labs/hupa/src/main/java/org/apache/hupa/server/AbstractIMAPActionHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/gin/
Modified:
    labs/hupa/.settings/com.google.gwt.eclipse.core.prefs
    labs/hupa/pom.xml
    labs/hupa/src/main/java/org/apache/hupa/server/DeleteMessageHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/ExposeMessageHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/FetchFoldersHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/FetchMessagesHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/LoginUserHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/LogoutUserHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/NoopHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/guice/MyGuiceServletConfig.java
    labs/hupa/war/Hupa.css

Modified: labs/hupa/.settings/com.google.gwt.eclipse.core.prefs
URL: http://svn.apache.org/viewvc/labs/hupa/.settings/com.google.gwt.eclipse.core.prefs?rev=795712&r1=795711&r2=795712&view=diff
==============================================================================
--- labs/hupa/.settings/com.google.gwt.eclipse.core.prefs (original)
+++ labs/hupa/.settings/com.google.gwt.eclipse.core.prefs Mon Jul 20 07:50:46 2009
@@ -1,3 +1,3 @@
-#Sat Jun 06 15:54:29 CEST 2009
-eclipse.preferences.version=1
-filesCopiedToWebInfLib=gwt-servlet.jar
+#Fri Jul 17 09:21:22 CEST 2009
+eclipse.preferences.version=1
+filesCopiedToWebInfLib=gwt-servlet.jar

Modified: labs/hupa/pom.xml
URL: http://svn.apache.org/viewvc/labs/hupa/pom.xml?rev=795712&r1=795711&r2=795712&view=diff
==============================================================================
--- labs/hupa/pom.xml (original)
+++ labs/hupa/pom.xml Mon Jul 20 07:50:46 2009
@@ -238,6 +238,30 @@
 	</profiles>
 
 	<dependencies>
+	    <dependency>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+          <version>1.1.1</version>
+          <exclusions>
+            <exclusion>
+              <groupId>logkit</groupId>
+              <artifactId>logkit</artifactId>
+            </exclusion>
+            <exclusion>
+              <groupId>avalon-framework</groupId>
+              <artifactId>avalon-framework</artifactId>
+            </exclusion>
+            <exclusion>
+              <groupId>javax.servlet</groupId>
+              <artifactId>servlet-api</artifactId>
+            </exclusion>
+          </exclusions>
+        </dependency>
+        <dependency>
+          <groupId>log4j</groupId>
+          <artifactId>log4j</artifactId>
+          <version>1.2.13</version>
+        </dependency>
 		<dependency>
 			<groupId>commons-lang</groupId>
 			<artifactId>commons-lang</artifactId>

Modified: labs/hupa/src/main/java/org/apache/hupa/server/DeleteMessageHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/DeleteMessageHandler.java?rev=795712&r1=795711&r2=795712&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/DeleteMessageHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/DeleteMessageHandler.java Mon Jul 20 07:50:46 2009
@@ -19,9 +19,11 @@
 
 package org.apache.hupa.server;
 
+import net.customware.gwt.dispatch.server.ActionHandler;
 import net.customware.gwt.dispatch.server.ExecutionContext;
 import net.customware.gwt.dispatch.shared.ActionException;
 
+import org.apache.commons.logging.Log;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.rpc.DeleteMessage;
 import org.apache.hupa.shared.rpc.DeleteMessageResult;
@@ -29,12 +31,23 @@
 import org.columba.ristretto.imap.IMAPProtocol;
 import org.columba.ristretto.imap.SequenceSet;
 
-public class DeleteMessageHandler extends AbstractIMAPActionHandler<DeleteMessage, DeleteMessageResult>{
+import com.google.inject.Inject;
+
+public class DeleteMessageHandler implements ActionHandler<DeleteMessage, DeleteMessageResult>{
+
+	private IMAPProtocolCache cache;
+	private Log logger;
+
+	@Inject
+	public DeleteMessageHandler(IMAPProtocolCache cache, Log logger) {
+		this.cache = cache;
+		this.logger = logger;
+	}
 
 	public DeleteMessageResult execute(DeleteMessage action, ExecutionContext context)
 			throws ActionException {
 		try {
-			IMAPProtocol protocol = getProtocol(action.getUser());
+			IMAPProtocol protocol = cache.getProtocol(action.getUser());
 			IMAPFolder folder = action.getFolder();
 			protocol.select(folder.getFullName());
 			
@@ -44,6 +57,7 @@
 			protocol.store(new SequenceSet(action.getMessageUids()), true, new IMAPFlags(IMAPFlags.DELETED));
 			protocol.expunge();
 		} catch (Exception e) {
+			logger.error("Error while deleting messages with uids + "+ action.getMessageUids() + " for user " + action.getUser() + " in" + action.getFolder());
 			throw new ActionException("Error while deleting messages",e);
 		}
 		return new DeleteMessageResult();

Modified: labs/hupa/src/main/java/org/apache/hupa/server/ExposeMessageHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/ExposeMessageHandler.java?rev=795712&r1=795711&r2=795712&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/ExposeMessageHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/ExposeMessageHandler.java Mon Jul 20 07:50:46 2009
@@ -19,15 +19,16 @@
 
 package org.apache.hupa.server;
 
-import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.Charset;
 import java.util.List;
 
+import net.customware.gwt.dispatch.server.ActionHandler;
 import net.customware.gwt.dispatch.server.ExecutionContext;
 import net.customware.gwt.dispatch.shared.ActionException;
 
 import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.logging.Log;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.IMAPMessage;
 import org.apache.hupa.shared.data.IMAPMessageContent;
@@ -38,7 +39,6 @@
 import org.columba.ristretto.coder.Base64DecoderInputStream;
 import org.columba.ristretto.coder.CharsetDecoderInputStream;
 import org.columba.ristretto.coder.QuotedPrintableDecoderInputStream;
-import org.columba.ristretto.imap.IMAPException;
 import org.columba.ristretto.imap.IMAPFlags;
 import org.columba.ristretto.imap.IMAPProtocol;
 import org.columba.ristretto.imap.SequenceSet;
@@ -47,8 +47,18 @@
 import org.columba.ristretto.message.MimePart;
 import org.columba.ristretto.message.MimeTree;
 
-public class ExposeMessageHandler extends AbstractIMAPActionHandler<ExposeMessage, ExposeMessageResult>{
+import com.google.inject.Inject;
 
+public class ExposeMessageHandler implements ActionHandler<ExposeMessage, ExposeMessageResult>{
+
+	private IMAPProtocolCache cache;
+	private Log logger;
+
+	@Inject
+	public ExposeMessageHandler(IMAPProtocolCache cache, Log logger) {
+		this.cache = cache;
+		this.logger = logger;
+	}
 	public ExposeMessageResult execute(ExposeMessage action, ExecutionContext arg1)
 			throws ActionException {
 			return new ExposeMessageResult(exposeMessage(action.getUser(), action.getFolder(), action.getMessage()));
@@ -71,15 +81,13 @@
 		}
 		IMAPProtocol proto = null;
 		try {
-			proto = getProtocol(user);
+			proto = cache.getProtocol(user);
 
 
 			proto.select(folder.getName());
 
 			IMAPMessageContent content = new IMAPMessageContent();
 
-			
-
 			MimeTree mTree = proto.uidFetchBodystructure(msg.getUid());
 
 			MimePart textPart = mTree.getFirstTextPart("plain");
@@ -142,13 +150,9 @@
 			}
 
 			return msg;
-		} catch (IOException e) {
-			e.printStackTrace();
-			throw new ActionException("Unable to expose msg for uid "
-					+ msg.getUid());
-		} catch (IMAPException e) {
-			e.printStackTrace();
-			throw new ActionException("Unable to expose msg for uid "
+		} catch (Exception e) {
+			logger.error("Unable to expose msg for user " + user + " in folder "+ folder + " with uid "+ msg.getUid(),e);
+			throw new ActionException("Unable to expose msg for user " + user + " in folder "+ folder + " with uid "
 					+ msg.getUid());
 
 		} 

Modified: labs/hupa/src/main/java/org/apache/hupa/server/FetchFoldersHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/FetchFoldersHandler.java?rev=795712&r1=795711&r2=795712&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/FetchFoldersHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/FetchFoldersHandler.java Mon Jul 20 07:50:46 2009
@@ -19,24 +19,35 @@
 
 package org.apache.hupa.server;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
+import net.customware.gwt.dispatch.server.ActionHandler;
+import net.customware.gwt.dispatch.server.ExecutionContext;
+import net.customware.gwt.dispatch.shared.ActionException;
+
+import org.apache.commons.logging.Log;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.IMAPUser;
 import org.apache.hupa.shared.rpc.FetchFolders;
 import org.apache.hupa.shared.rpc.FetchFoldersResult;
-import org.columba.ristretto.imap.IMAPException;
 import org.columba.ristretto.imap.IMAPProtocol;
 import org.columba.ristretto.imap.ListInfo;
 import org.columba.ristretto.imap.SearchKey;
 import org.columba.ristretto.message.MailboxInfo;
 
-import net.customware.gwt.dispatch.server.ExecutionContext;
-import net.customware.gwt.dispatch.shared.ActionException;
+import com.google.inject.Inject;
 
-public class FetchFoldersHandler extends AbstractIMAPActionHandler<FetchFolders, FetchFoldersResult>{
+public class FetchFoldersHandler implements  ActionHandler<FetchFolders, FetchFoldersResult>{
+	
+	private IMAPProtocolCache cache;
+	private Log logger;
+
+	@Inject
+	public FetchFoldersHandler(IMAPProtocolCache cache, Log logger) {
+		this.cache = cache;
+		this.logger = logger;
+	}
 
 	public FetchFoldersResult execute(FetchFolders action, ExecutionContext arg1)
 	throws ActionException {
@@ -59,7 +70,7 @@
 		ArrayList<IMAPFolder> fList = new ArrayList<IMAPFolder>();
 		IMAPProtocol protocol = null;
 		try {
-			protocol = getProtocol(user);
+			protocol = cache.getProtocol(user);
 			ListInfo[] infos = protocol.list("", "*");
 
 			for (int i = 0; i < infos.length; i++) {
@@ -87,15 +98,11 @@
 				}
 			}
 			return fList;
-		} catch (IOException e) {
-			e.printStackTrace();
+		} catch (Exception e) {
+			logger.error("Unable to get folders for User " + user,e);
 			throw new ActionException("Unable to get folders for User "
 					+ user);
-		} catch (IMAPException e) {
-			e.printStackTrace();
-			throw new ActionException("Unable to get folders for User "
-					+ user);
-		} 
+		}
 	}
 	
 	private void handleIMAPFolderTree(List<IMAPFolder> fList,

Modified: labs/hupa/src/main/java/org/apache/hupa/server/FetchMessagesHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/FetchMessagesHandler.java?rev=795712&r1=795711&r2=795712&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/FetchMessagesHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/FetchMessagesHandler.java Mon Jul 20 07:50:46 2009
@@ -19,15 +19,16 @@
 
 package org.apache.hupa.server;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
+import net.customware.gwt.dispatch.server.ActionHandler;
 import net.customware.gwt.dispatch.server.ExecutionContext;
 import net.customware.gwt.dispatch.shared.ActionException;
 
+import org.apache.commons.logging.Log;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.IMAPHeader;
 import org.apache.hupa.shared.data.IMAPMessage;
@@ -35,7 +36,6 @@
 import org.apache.hupa.shared.data.IMAPMessage.IMAPFlag;
 import org.apache.hupa.shared.rpc.FetchMessages;
 import org.apache.hupa.shared.rpc.FetchMessagesResult;
-import org.columba.ristretto.imap.IMAPException;
 import org.columba.ristretto.imap.IMAPFlags;
 import org.columba.ristretto.imap.IMAPProtocol;
 import org.columba.ristretto.imap.SearchKey;
@@ -44,8 +44,19 @@
 import org.columba.ristretto.message.BasicHeader;
 import org.columba.ristretto.message.MailboxInfo;
 
-public class FetchMessagesHandler extends AbstractIMAPActionHandler<FetchMessages, FetchMessagesResult>{
+import com.google.inject.Inject;
 
+public class FetchMessagesHandler implements ActionHandler<FetchMessages, FetchMessagesResult>{
+
+	
+	private IMAPProtocolCache cache;
+	private Log logger;
+
+	@Inject
+	public FetchMessagesHandler(IMAPProtocolCache cache, Log logger) {
+		this.cache = cache;
+		this.logger = logger;
+	}
 	public FetchMessagesResult execute(FetchMessages action, ExecutionContext arg1)
 			throws ActionException {
 		return getMessages(action.getUser(), action.getFolder(), action.getStart(), action.getOffset(), action.getSearchString());
@@ -67,7 +78,7 @@
 		int end = start + offset;
 		IMAPProtocol proto = null;
 		try {
-			proto = getProtocol(user);
+			proto = cache.getProtocol(user);
 			MailboxInfo mInfo = proto.select(folder.getFullName());
 
 			int exists = mInfo.getExists();
@@ -150,14 +161,10 @@
 				mList.add(0, msg);
 			}
 			return new FetchMessagesResult(mList,start,offset,exists);
-		} catch (IOException e) {
-			throw new ActionException(
-					"Error while fetching headers for user " + user.getName()
-							+ ": " + e.getMessage());
-		} catch (IMAPException e) {
+		} catch (Exception e) {
+			logger.error("Error while fetching headers for user " + user.getName() + " in folder " + folder,e);
 			throw new ActionException(
-					"Error while fetching headers for user " + user.getName()
-							+ ": " + e.getMessage());
+					"Error while fetching headers for user " + user.getName() + " in folder " + folder);
 		}
 	}
 }

Added: labs/hupa/src/main/java/org/apache/hupa/server/IMAPProtocolCache.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/IMAPProtocolCache.java?rev=795712&view=auto
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/IMAPProtocolCache.java (added)
+++ labs/hupa/src/main/java/org/apache/hupa/server/IMAPProtocolCache.java Mon Jul 20 07:50:46 2009
@@ -0,0 +1,76 @@
+/****************************************************************
+ * 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;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.hupa.shared.data.IMAPUser;
+import org.columba.ristretto.imap.IMAPException;
+import org.columba.ristretto.imap.IMAPProtocol;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class IMAPProtocolCache {
+
+	protected Log logger;
+	private final Map<String,IMAPProtocol> pool = new HashMap<String ,IMAPProtocol>();
+	
+	@Inject
+	public IMAPProtocolCache(Log logger) {
+		this.logger = logger;
+	}
+	
+	public synchronized IMAPProtocol getProtocol(IMAPUser user) throws IOException,
+			IMAPException {
+		IMAPProtocol protocol = pool.get(user.getName());
+		if (protocol == null) {
+			logger.debug("No cached protocol found for user " +user);
+			protocol = new IMAPProtocol("myblog.kicks-ass.org",
+					IMAPProtocol.DEFAULT_PORT);
+		} 
+		if (protocol.getState() == IMAPProtocol.NOT_CONNECTED) {
+			logger.debug("Protocol is not connected for user " +user);
+			protocol.openPort();	
+		}
+		if (protocol.getState() == IMAPProtocol.NON_AUTHENTICATED) {
+			logger.debug("Authenticate user " +user);
+			protocol.login(user.getName(), user.getPassword().toCharArray());
+		}
+		pool.put(user.getName(),protocol);
+		return protocol;
+	}
+	
+	public synchronized void deleteProcotol(IMAPUser user) {
+		IMAPProtocol protocol = pool.get(user.getName());
+		if (protocol.getState() == IMAPProtocol.AUTHENTICATED) {
+			try {
+				protocol.logout();
+			} catch (Exception e) {
+				logger.error("Error while logout user "+ user);
+			} 
+		}
+		pool.remove(user.getName());
+	}
+}

Modified: labs/hupa/src/main/java/org/apache/hupa/server/LoginUserHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/LoginUserHandler.java?rev=795712&r1=795711&r2=795712&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/LoginUserHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/LoginUserHandler.java Mon Jul 20 07:50:46 2009
@@ -19,19 +19,30 @@
 
 package org.apache.hupa.server;
 
-import java.io.IOException;
 import java.util.Date;
 
+import net.customware.gwt.dispatch.server.ActionHandler;
 import net.customware.gwt.dispatch.server.ExecutionContext;
 import net.customware.gwt.dispatch.shared.ActionException;
 
+import org.apache.commons.logging.Log;
 import org.apache.hupa.shared.data.IMAPUser;
 import org.apache.hupa.shared.rpc.LoginUser;
 import org.apache.hupa.shared.rpc.LoginUserResult;
-import org.columba.ristretto.imap.IMAPException;
 
-public class LoginUserHandler extends
-		AbstractIMAPActionHandler<LoginUser, LoginUserResult> {
+import com.google.inject.Inject;
+
+public class LoginUserHandler implements
+		ActionHandler<LoginUser, LoginUserResult> {
+
+	private IMAPProtocolCache cache;
+	private Log logger;
+
+	@Inject
+	public LoginUserHandler(IMAPProtocolCache cache, Log logger) {
+		this.cache = cache;
+		this.logger = logger;
+	}
 
 	public LoginUserResult execute(LoginUser action, ExecutionContext context)
 			throws ActionException {
@@ -56,15 +67,14 @@
 			IMAPUser user = new IMAPUser();
 			user.setName(username);
 			user.setPassword(password);
-			getProtocol(user);
+			cache.getProtocol(user);
 			
 			user.setLoginDate(new Date());
 			user.setAuthenticated(true);
 			return user;
 
-		} catch (IOException e) {
-			throw new ActionException(e);
-		} catch (IMAPException e) {
+		} catch (Exception e) {
+			logger.error("Unable to authenticate user " + username,e);
 			throw new ActionException(e);
 		}
 	}

Modified: labs/hupa/src/main/java/org/apache/hupa/server/LogoutUserHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/LogoutUserHandler.java?rev=795712&r1=795711&r2=795712&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/LogoutUserHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/LogoutUserHandler.java Mon Jul 20 07:50:46 2009
@@ -20,18 +20,28 @@
 
 package org.apache.hupa.server;
 
-import java.io.IOException;
-
+import net.customware.gwt.dispatch.server.ActionHandler;
 import net.customware.gwt.dispatch.server.ExecutionContext;
 import net.customware.gwt.dispatch.shared.ActionException;
 
+import org.apache.commons.logging.Log;
 import org.apache.hupa.shared.data.IMAPUser;
 import org.apache.hupa.shared.rpc.LogoutUser;
 import org.apache.hupa.shared.rpc.LogoutUserResult;
-import org.columba.ristretto.imap.IMAPException;
-import org.columba.ristretto.imap.IMAPProtocol;
 
-public class LogoutUserHandler extends AbstractIMAPActionHandler<LogoutUser, LogoutUserResult> {
+import com.google.inject.Inject;
+
+public class LogoutUserHandler implements ActionHandler<LogoutUser, LogoutUserResult> {
+	
+	private IMAPProtocolCache cache;
+	private Log logger;
+
+	@Inject
+	public LogoutUserHandler(IMAPProtocolCache cache, Log logger) {
+		this.cache = cache;
+		this.logger = logger;
+	}
+
 
 	public LogoutUserResult execute(LogoutUser action, ExecutionContext arg1)
 			throws ActionException {
@@ -53,21 +63,7 @@
 	}
 	
 	protected void disconnect(IMAPUser user) {
-		try {
-			IMAPProtocol proto = getProtocol(user);
-			if (proto.getState() != IMAPProtocol.NOT_CONNECTED) {
-				proto.logout();
-			}
-		} catch (IOException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		} catch (IMAPException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		synchronized (pool) {
-			pool.remove(user);
-		}
+		cache.deleteProcotol(user);
 	}
 
 }

Modified: labs/hupa/src/main/java/org/apache/hupa/server/NoopHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/NoopHandler.java?rev=795712&r1=795711&r2=795712&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/NoopHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/NoopHandler.java Mon Jul 20 07:50:46 2009
@@ -19,21 +19,35 @@
 
 package org.apache.hupa.server;
 
+import net.customware.gwt.dispatch.server.ActionHandler;
 import net.customware.gwt.dispatch.server.ExecutionContext;
 import net.customware.gwt.dispatch.shared.ActionException;
 
+import org.apache.commons.logging.Log;
 import org.apache.hupa.shared.rpc.Noop;
 import org.apache.hupa.shared.rpc.NoopResult;
 
-public class NoopHandler extends AbstractIMAPActionHandler<Noop, NoopResult>{
+import com.google.inject.Inject;
 
+public class NoopHandler implements ActionHandler<Noop, NoopResult>{
+
+	
+	private IMAPProtocolCache cache;
+	private Log logger;
+
+	@Inject
+	public NoopHandler(IMAPProtocolCache cache, Log logger) {
+		this.cache = cache;
+		this.logger = logger;
+	}
 	public NoopResult execute(Noop action, ExecutionContext context)
 			throws ActionException {
 		try {
-			getProtocol(action.getUser()).noop();
+			cache.getProtocol(action.getUser()).noop();
 			return new NoopResult();
 		} catch (Exception e) {
-			throw new ActionException("Unable to send NOOP",e);
+			logger.error("Error while sending NOOP for user " + action.getUser(),e);
+			throw new ActionException("Unable to send NOOP");
 		}
 		
 	}

Added: labs/hupa/src/main/java/org/apache/hupa/server/guice/LogProvider.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/guice/LogProvider.java?rev=795712&view=auto
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/guice/LogProvider.java (added)
+++ labs/hupa/src/main/java/org/apache/hupa/server/guice/LogProvider.java Mon Jul 20 07:50:46 2009
@@ -0,0 +1,36 @@
+/****************************************************************
+ * 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 org.apache.commons.logging.Log;
+import org.apache.commons.logging.impl.Log4JLogger;
+
+import com.google.inject.Provider;
+import com.google.inject.Singleton;
+
+@Singleton
+public class LogProvider implements Provider<Log>{
+
+	public Log get() {
+		return new Log4JLogger("HupaLogger");
+	}
+
+}

Modified: labs/hupa/src/main/java/org/apache/hupa/server/guice/MyGuiceServletConfig.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/guice/MyGuiceServletConfig.java?rev=795712&r1=795711&r2=795712&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/guice/MyGuiceServletConfig.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/guice/MyGuiceServletConfig.java Mon Jul 20 07:50:46 2009
@@ -19,7 +19,6 @@
 
 package org.apache.hupa.server.guice;
 
-import org.apache.hupa.server.gin.ServerModul;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;

Copied: labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java (from r795426, labs/hupa/src/main/java/org/apache/hupa/server/gin/ServerModul.java)
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java?p2=labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java&p1=labs/hupa/src/main/java/org/apache/hupa/server/gin/ServerModul.java&r1=795426&r2=795712&rev=795712&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/gin/ServerModul.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java Mon Jul 20 07:50:46 2009
@@ -17,17 +17,21 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.hupa.server.gin;
+package org.apache.hupa.server.guice;
 
 import net.customware.gwt.dispatch.server.guice.ActionHandlerModule;
 
+import org.apache.commons.logging.Log;
 import org.apache.hupa.server.ExposeMessageHandler;
 import org.apache.hupa.server.FetchFoldersHandler;
 import org.apache.hupa.server.FetchMessagesHandler;
+import org.apache.hupa.server.IMAPProtocolCache;
 import org.apache.hupa.server.LoginUserHandler;
 import org.apache.hupa.server.LogoutUserHandler;
 import org.apache.hupa.server.NoopHandler;
 
+import com.google.inject.Singleton;
+
 /**
  * Module which binds the handlers
  * 
@@ -45,5 +49,8 @@
 		bindHandler(LogoutUserHandler.class);
 		bindHandler(ExposeMessageHandler.class);
 		bindHandler(NoopHandler.class);
+		
+		bind(IMAPProtocolCache.class).in(Singleton.class);
+		bind(Log.class).toProvider(LogProvider.class).in(Singleton.class);
 	}
 }

Modified: labs/hupa/war/Hupa.css
URL: http://svn.apache.org/viewvc/labs/hupa/war/Hupa.css?rev=795712&r1=795711&r2=795712&view=diff
==============================================================================
--- labs/hupa/war/Hupa.css (original)
+++ labs/hupa/war/Hupa.css Mon Jul 20 07:50:46 2009
@@ -7,7 +7,7 @@
     border-color:	#E0ECFF;
 }
 
-.cbg-Button, .gwt-HTML, .gwt-Tree .gwt-TreeItem, .gwt-SuggestBoxPopup .item, hupa-LoginForm, .hupa-IMAPMessageWidget-Header-Content, .hupa-ToolTip, .hupa-IMAPFolder {
+.cbg-Button, .gwt-HTML, .gwt-Tree .gwt-TreeItem, .gwt-SuggestBoxPopup .item, hupa-LoginForm, .hupa-IMAPMessageWidget-Header-Content, .hupa-ToolTip, .hupa-IMAPFolder, .gwt-ListBox {
     font-size:			12px;
 	font-family: 		Arial, Helvetica, sans-serif;
 }

Added: labs/hupa/war/WEB-INF/classes/log4j.properties
URL: http://svn.apache.org/viewvc/labs/hupa/war/WEB-INF/classes/log4j.properties?rev=795712&view=auto
==============================================================================
--- labs/hupa/war/WEB-INF/classes/log4j.properties (added)
+++ labs/hupa/war/WEB-INF/classes/log4j.properties Mon Jul 20 07:50:46 2009
@@ -0,0 +1,9 @@
+# Set root logger level to DEBUG and its only appender to A1.
+log4j.rootLogger=DEBUG, A1
+
+# A1 is set to be a ConsoleAppender.
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+
+# A1 uses PatternLayout.
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org