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/30 15:07:10 UTC

svn commit: r799254 - /labs/hupa/src/main/java/org/apache/hupa/server/handler/

Author: norman
Date: Thu Jul 30 13:07:09 2009
New Revision: 799254

URL: http://svn.apache.org/viewvc?rev=799254&view=rev
Log:
javadocs and comments are prolly not the worst thing to add

Modified:
    labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSessionHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/handler/DeleteMessageHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchFoldersHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/handler/LoginSessionHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/handler/LoginUserHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/handler/LogoutUserHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/handler/NoopHandler.java
    labs/hupa/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java

Modified: labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSessionHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSessionHandler.java?rev=799254&r1=799253&r2=799254&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSessionHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSessionHandler.java Thu Jul 30 13:07:09 2009
@@ -34,12 +34,16 @@
 import net.customware.gwt.dispatch.server.ExecutionContext;
 import net.customware.gwt.dispatch.shared.ActionException;
 import net.customware.gwt.dispatch.shared.Result;
-
+/**
+ * Abstract class which take care of checking if the session is still valid before
+ * executing the handler
+ * 
+ */
 public abstract class AbstractSessionHandler<A extends Session<R>,R extends Result> implements ActionHandler<A, R> {
 
-	protected Provider<HttpSession> sessionProvider;
-	protected IMAPStoreCache cache;
-	protected Log logger;
+	protected final Provider<HttpSession> sessionProvider;
+	protected final IMAPStoreCache cache;
+	protected final Log logger;
 
 	@Inject
 	public AbstractSessionHandler(IMAPStoreCache cache, Log logger, Provider<HttpSession> sessionProvider) {
@@ -48,6 +52,9 @@
 		this.logger = logger;
 	}
 
+	/**
+	 * Check if the session is valid, if that is true execute executeInternal method
+	 */
 	public R execute(A action, ExecutionContext context) throws ActionException {
 		if (isValidSession(action.getSessionId())) {
 			return executeInternal(action, context);
@@ -57,8 +64,18 @@
 	}
 	
 	
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#execute(net.customware.gwt.dispatch.shared.Action, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
 	protected abstract R executeInternal(A action, ExecutionContext context) throws ActionException;
 	
+	/**
+	 * Return if the given session id is still valid
+	 * 
+	 * @param sessionId
+	 * @return isValid
+	 */
 	protected boolean isValidSession(String sessionId) {
 		if (sessionProvider.get().getId().equals(sessionId)) {
 			return true;
@@ -66,6 +83,13 @@
 		return false;
 	}
 	
+	/**
+	 * Return the User stored in session with the given id
+	 * 
+	 * @param sessionId 
+	 * @return user
+	 * @throws ActionException
+	 */
 	protected User getUser(String sessionId) throws ActionException{
 		User user = (User) sessionProvider.get().getAttribute("user");
 		if (user == null) {

Modified: labs/hupa/src/main/java/org/apache/hupa/server/handler/DeleteMessageHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/DeleteMessageHandler.java?rev=799254&r1=799253&r2=799254&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/handler/DeleteMessageHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/handler/DeleteMessageHandler.java Thu Jul 30 13:07:09 2009
@@ -40,6 +40,10 @@
 import com.google.inject.Provider;
 import com.sun.mail.imap.IMAPStore;
 
+/**
+ * Handler which take care of deleting messages
+ * 
+ */
 public class DeleteMessageHandler extends AbstractSessionHandler<DeleteMessage, DeleteMessageResult>{
 
 	@Inject
@@ -48,6 +52,10 @@
 	}
 
 
+	/*
+	 * (non-Javadoc)
+	 * @see org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
 	public DeleteMessageResult executeInternal(DeleteMessage action, ExecutionContext context)
 			throws ActionException {
 		IMAPFolder folder = action.getFolder();
@@ -59,21 +67,30 @@
 		try {
 			IMAPStore store = cache.get(user);
 			com.sun.mail.imap.IMAPFolder f = (com.sun.mail.imap.IMAPFolder)store.getFolder(folder.getFullName());
+			// check if the folder is open, if not open it "rw"
 			if (f.isOpen() == false) {
 				f.open(com.sun.mail.imap.IMAPFolder.READ_WRITE);
 			}
+			
+			// build up the list of messages to delete
 			List<Message> messages = new ArrayList<Message>();
 			for (int i = 0; i < uids.size();i++) {
 				messages.add(f.getMessageByUID(uids.get(i)));
 			}
 			Message[] mArray = messages.toArray(new Message[messages.size()]);
+			
+			// check if the delete was triggered not in the trash folder
 			if (folder.getFullName().equalsIgnoreCase(IMAPFolder.DEFAULT_TRASH) == false) {
 				com.sun.mail.imap.IMAPFolder trashFolder = (com.sun.mail.imap.IMAPFolder) store.getFolder(IMAPFolder.DEFAULT_TRASH);
+				
+				// if the trash folder does not exist we create it
 				if (trashFolder.exists() == false) {
 					trashFolder.create(com.sun.mail.imap.IMAPFolder.READ_WRITE);
 				}
+				// copy the messages to the trashfolder
 				f.copyMessages(mArray,trashFolder);
 			} 
+			// delete the messages from the folder
 			f.setFlags(mArray, new Flags(Flags.Flag.DELETED), true);
 			f.expunge(mArray);
 			f.close(false);
@@ -92,10 +109,13 @@
 		return DeleteMessage.class;
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#rollback(net.customware.gwt.dispatch.shared.Action, net.customware.gwt.dispatch.shared.Result, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
 	public void rollback(DeleteMessage arg0, DeleteMessageResult arg1,
 			ExecutionContext arg2) throws ActionException {
-		// TODO Auto-generated method stub
-		
+		// no rollback implemented
 	}
 	
 }

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=799254&r1=799253&r2=799254&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 Thu Jul 30 13:07:09 2009
@@ -39,6 +39,10 @@
 import com.google.inject.Provider;
 import com.sun.mail.imap.IMAPStore;
 
+/**
+ * Handler which fetch all Folders for an user
+ * 
+ */
 public class FetchFoldersHandler extends AbstractSessionHandler<FetchFolders, FetchFoldersResult>{
 
 	@Inject
@@ -46,31 +50,21 @@
 		super(cache,logger,provider);
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
 	public FetchFoldersResult executeInternal(FetchFolders action, ExecutionContext arg1)
 	throws ActionException {
-		return new FetchFoldersResult(getFolders(getUser(action.getSessionId())));
-		
-	}
-
-	public void rollback(FetchFolders arg0, FetchFoldersResult arg1,
-			ExecutionContext arg2) throws ActionException {
-		// nothing todo
-
-	}
-
-	public Class<FetchFolders> getActionType() {
-		return FetchFolders.class;
-	}
-
-	protected ArrayList<IMAPFolder> getFolders(User user)
-	throws ActionException {
+		User user = getUser(action.getSessionId());
 		ArrayList<IMAPFolder> fList = new ArrayList<IMAPFolder>();
-		IMAPStore store = null;
 		try {
-			store = cache.get(user);
+			// get the store for the user
+			IMAPStore store = cache.get(user);
 			com.sun.mail.imap.IMAPFolder folder = (com.sun.mail.imap.IMAPFolder) store.getDefaultFolder();
 			
 			Folder[] folders = folder.list();
+			// loop over all folders
 			for (int i = 0; i < folders.length; i++) {
 				Folder f = folders[i];
 
@@ -91,13 +85,31 @@
 					fList.add(iFolder);
 				}
 			}
-			return fList;
+			return new FetchFoldersResult(fList);
 		} catch (Exception e) {
 			logger.error("Unable to get folders for User " + user,e);
 			throw new ActionException("Unable to get folders for User "
 					+ user);
 		}
 	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#rollback(net.customware.gwt.dispatch.shared.Action, net.customware.gwt.dispatch.shared.Result, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
+	public void rollback(FetchFolders arg0, FetchFoldersResult arg1,
+			ExecutionContext arg2) throws ActionException {
+		// not implemented
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
+	 */
+	public Class<FetchFolders> getActionType() {
+		return FetchFolders.class;
+	}
+
 	
 	private void handleIMAPFolderTree(List<IMAPFolder> fList,
 			IMAPFolder iFolder, String parentFullName) {

Modified: labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java?rev=799254&r1=799253&r2=799254&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java Thu Jul 30 13:07:09 2009
@@ -50,6 +50,10 @@
 import com.google.inject.Provider;
 import com.sun.mail.imap.IMAPStore;
 
+/**
+ * Fetch Messages for a user. The Messages don't contain any body, just some fields of the headers are fetched for perfomance reasons
+ * 
+ */
 public class FetchMessagesHandler extends AbstractSessionHandler<FetchMessages, FetchMessagesResult>{
 
 	@Inject
@@ -57,37 +61,31 @@
 		super(cache,logger,provider);
 	}
 	
+	/*
+	 * (non-Javadoc)
+	 * @see org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
 	public FetchMessagesResult executeInternal(FetchMessages action, ExecutionContext arg1)
 			throws ActionException {
-		return getMessages(getUser(action.getSessionId()), action.getFolder(), action.getStart(), action.getOffset(), action.getSearchString());
-		
-	}
-
-	public Class<FetchMessages> getActionType() {
-		return FetchMessages.class;
-	}
-
-	public void rollback(FetchMessages arg0, FetchMessagesResult arg1,
-			ExecutionContext arg2) throws ActionException {
-		// TODO Auto-generated method stub
-		
-	}
-	
-	protected FetchMessagesResult getMessages(User user,IMAPFolder folder, int start, int offset,String searchString) throws ActionException {
+		User user = getUser(action.getSessionId());
+		IMAPFolder folder = action.getFolder();
+		String searchString = action.getSearchString();
 		ArrayList<IMAPMessage> mList = new ArrayList<IMAPMessage>();
+		int start = action.getStart();
+		int offset = action.getOffset();
 		int end = start + offset;
-		IMAPStore store = null;
 		try {
-			store = cache.get(user);
+			IMAPStore store = cache.get(user);
 			com.sun.mail.imap.IMAPFolder f =  (com.sun.mail.imap.IMAPFolder)store.getFolder(folder.getFullName());
 
+			// check if the folder is open, if not open it read only
 			 if (f.isOpen() == false) {
                  f.open(com.sun.mail.imap.IMAPFolder.READ_ONLY);
              }
 
 			int exists = f.getMessageCount();
 
-			
+			// if the folder is empty we have no need to process 
 			if (exists == 0) {
 				return new FetchMessagesResult(mList,start,offset,exists);
 			}
@@ -98,6 +96,7 @@
 	
 			Message[] messages;
 			
+			// check if a searchString was given, and if so use it
 			if (searchString == null) {
 				messages = f.getMessages(exists - end, exists - start);
 			} else {
@@ -105,11 +104,13 @@
 				messages = f.search(term);
 			}
 			
+			// Setup fetchprofile to limit the stuff which is fetched 
   		    FetchProfile fp = new FetchProfile();
             fp.add(FetchProfile.Item.ENVELOPE);
             fp.add(FetchProfile.Item.FLAGS);
             f.fetch(messages, fp);
 
+            // loop over the fetched messages
 			for (int i = 0; i < messages.length; i++) {
 				Message m = messages[i];
 
@@ -118,6 +119,7 @@
 				newHeader.setFrom(m.getFrom()[0].toString().trim());
 				
 				ArrayList<String> to = new ArrayList<String>();
+				// Add to addresses
 				Address[] toArray = m.getRecipients(RecipientType.TO);
 				if (toArray != null) {
 					for (int b =0; b < toArray.length;b++) {
@@ -126,12 +128,14 @@
 				}
 				newHeader.setTo(to);
 				
+				// Check if a subject exist and if so decode it
 				String subject = m.getSubject();
 				if (subject != null) {
 					subject = MimeUtility.decodeText(subject);
 				}
 				newHeader.setSubject(subject);
 				
+				// Add cc addresses
 				Address[] ccArray = m.getRecipients(RecipientType.CC);
 				ArrayList<String> cc = new ArrayList<String>();
 
@@ -145,6 +149,7 @@
 				newHeader.setReceivedDate(m.getReceivedDate());
 				
 
+				// Add flags
 				List<IMAPFlag> iFlags = new ArrayList<IMAPFlag>();
 				Flags flags = m.getFlags();
 				Flag[] systemFlags = flags.getSystemFlags();
@@ -170,6 +175,7 @@
 			}
 			f.close(false);
 
+			// return result
 			return new FetchMessagesResult(mList,start,offset,exists);
 		} catch (Exception e) {
 			logger.error("Error while fetching headers for user " + user.getName() + " in folder " + folder,e);
@@ -177,4 +183,18 @@
 					"Error while fetching headers for user " + user.getName() + " in folder " + folder);
 		}
 	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
+	 */
+	public Class<FetchMessages> getActionType() {
+		return FetchMessages.class;
+	}
+
+	public void rollback(FetchMessages arg0, FetchMessagesResult arg1,
+			ExecutionContext arg2) throws ActionException {
+		// not implemented
+		
+	}
 }

Modified: labs/hupa/src/main/java/org/apache/hupa/server/handler/LoginSessionHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/LoginSessionHandler.java?rev=799254&r1=799253&r2=799254&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/handler/LoginSessionHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/handler/LoginSessionHandler.java Thu Jul 30 13:07:09 2009
@@ -33,10 +33,13 @@
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 
+/**
+ * Login via a stored session
+ */
 public class LoginSessionHandler implements ActionHandler<LoginSession, LoginUserResult>{
 
-	private Log logger;
-	private Provider<HttpSession> sessionProvider;
+	private final Log logger;
+	private final Provider<HttpSession> sessionProvider;
 
 	@Inject
 	public LoginSessionHandler(Log logger,
@@ -45,24 +48,40 @@
 		this.sessionProvider = sessionProvider;
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#execute(net.customware.gwt.dispatch.shared.Action, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
 	public LoginUserResult execute(LoginSession action,
 			ExecutionContext context) throws ActionException {
 		HttpSession session = sessionProvider.get();
+		
+		// check if the session is still valid
 		if (action.getSessionId().equals(session.getId())) {
+			// get the stored user and return it
 			User user = (User)sessionProvider.get().getAttribute("user");
 			return new LoginUserResult(user);
+		} else {
+			logger.error("Sessin id " + action.getSessionId() + " is not valid anymore");
+			throw new ActionException("No user stored with the session " + action.getSessionId());
 		}
-		throw new ActionException("No user stored with the session " + action.getSessionId());
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
+	 */
 	public Class<LoginSession> getActionType() {
 		return LoginSession.class;
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#rollback(net.customware.gwt.dispatch.shared.Action, net.customware.gwt.dispatch.shared.Result, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
 	public void rollback(LoginSession arg0, LoginUserResult arg1,
 			ExecutionContext arg2) throws ActionException {
-		// TODO Auto-generated method stub
-		
+		// not implemented
 	}
 
 }

Modified: labs/hupa/src/main/java/org/apache/hupa/server/handler/LoginUserHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/LoginUserHandler.java?rev=799254&r1=799253&r2=799254&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/handler/LoginUserHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/handler/LoginUserHandler.java Thu Jul 30 13:07:09 2009
@@ -34,12 +34,16 @@
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 
+/**
+ * Handler for login a user via username and password
+ * 
+ */
 public class LoginUserHandler implements
 		ActionHandler<LoginUser, LoginUserResult> {
 
-	private IMAPStoreCache cache;
-	private Log logger;
-	private Provider<HttpSession> sessionProvider;
+	private final IMAPStoreCache cache;
+	private final Log logger;
+	private final Provider<HttpSession> sessionProvider;
 
 	@Inject
 	public LoginUserHandler(IMAPStoreCache cache, Log logger,Provider<HttpSession> sessionProvider) {
@@ -48,41 +52,52 @@
 		this.sessionProvider = sessionProvider;
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#execute(net.customware.gwt.dispatch.shared.Action, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
 	public LoginUserResult execute(LoginUser action, ExecutionContext context)
 			throws ActionException {
-		return new LoginUserResult(login(action.getUserName(), action
-					.getPassword()));
-		
-	}
-
-	public void rollback(LoginUser user, LoginUserResult result,
-			ExecutionContext context) throws ActionException {
-		// Nothing todo here
-	}
-
-	public Class<LoginUser> getActionType() {
-		return LoginUser.class;
-	}
-
-	protected User login(String username, String password)
-			throws ActionException {
-
+		String username = action.getUserName();
+		String password = action.getPassword();
 		try {
+			
+			// construct a new user
 			User user = new User();
 			user.setName(username);
 			user.setPassword(password);
+			
+			// login
 			cache.get(user);
 			
 			user.setAuthenticated(true);
 			
+			// store the session id for later usage
 			HttpSession session = sessionProvider.get();
 			user.setSessionId(session.getId());
 			session.setAttribute("user", user);
-			return user;
+			return new LoginUserResult(user);
 
 		} catch (Exception e) {
 			logger.error("Unable to authenticate user " + username,e);
 			throw new ActionException(e);
 		}
 	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#rollback(net.customware.gwt.dispatch.shared.Action, net.customware.gwt.dispatch.shared.Result, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
+	public void rollback(LoginUser user, LoginUserResult result,
+			ExecutionContext context) throws ActionException {
+		// Nothing todo here
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
+	 */
+	public Class<LoginUser> getActionType() {
+		return LoginUser.class;
+	}
 }

Modified: labs/hupa/src/main/java/org/apache/hupa/server/handler/LogoutUserHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/LogoutUserHandler.java?rev=799254&r1=799253&r2=799254&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/handler/LogoutUserHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/handler/LogoutUserHandler.java Thu Jul 30 13:07:09 2009
@@ -34,6 +34,10 @@
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 
+/**
+ * Handler for handle logout requests
+ * 
+ */
 public class LogoutUserHandler extends AbstractSessionHandler<LogoutUser, LogoutUserResult> {
 	
 	
@@ -43,21 +47,34 @@
 	}
 
 
+	/*
+	 * (non-Javadoc)
+	 * @see org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
 	public LogoutUserResult executeInternal(LogoutUser action, ExecutionContext arg1)
 			throws ActionException {
 		User user = getUser(action.getSessionId());
 		user.setAuthenticated(false);
 		
+		// delete cached store
 		cache.delete(user);
 		return new LogoutUserResult(user);
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
+	 */
 	public Class<LogoutUser> getActionType() {
 		return LogoutUser.class;
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#rollback(net.customware.gwt.dispatch.shared.Action, net.customware.gwt.dispatch.shared.Result, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
 	public void rollback(LogoutUser arg0, LogoutUserResult arg1,
 			ExecutionContext arg2) throws ActionException {
-		
+		// not implemented
 	}
 }

Modified: labs/hupa/src/main/java/org/apache/hupa/server/handler/NoopHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/NoopHandler.java?rev=799254&r1=799253&r2=799254&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/handler/NoopHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/handler/NoopHandler.java Thu Jul 30 13:07:09 2009
@@ -32,6 +32,11 @@
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 
+/**
+ * Handle Noops
+ * 
+ *
+ */
 public class NoopHandler extends AbstractSessionHandler<Noop, NoopResult>{
 
 
@@ -39,9 +44,15 @@
 	public NoopHandler(IMAPStoreCache cache, Log logger,Provider<HttpSession> provider) {
 		super(cache,logger,provider);
 	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
 	public NoopResult executeInternal(Noop action, ExecutionContext context)
 			throws ActionException {
 		try {
+			// just send a noop to keep the connection alive
 			cache.get(getUser(action.getSessionId())).idle();
 			return new NoopResult();
 		} catch (Exception e) {
@@ -51,10 +62,18 @@
 		
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
+	 */
 	public Class<Noop> getActionType() {
 		return Noop.class;
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#rollback(net.customware.gwt.dispatch.shared.Action, net.customware.gwt.dispatch.shared.Result, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
 	public void rollback(Noop arg0, NoopResult arg1, ExecutionContext arg2)
 			throws ActionException {
 		// TODO Auto-generated method stub

Modified: labs/hupa/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java?rev=799254&r1=799253&r2=799254&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java Thu Jul 30 13:07:09 2009
@@ -62,13 +62,17 @@
 import com.sun.mail.imap.IMAPFolder;
 import com.sun.mail.imap.IMAPStore;
 
+/**
+ * Handle sending of email messages
+ * 
+ */
 public class SendMessageHandler extends AbstractSessionHandler<SendMessage, EmptyResult> {
 
-	private FileItemRegistry registry;
-	private Properties props = new Properties();
-	private boolean auth;
-	private String address;
-	private int port;
+	private final FileItemRegistry registry;
+	private final Properties props = new Properties();
+	private final boolean auth;
+	private final String address;
+	private final int port;
 
 	@Inject
 	public SendMessageHandler(Log logger, FileItemRegistry registry,IMAPStoreCache store, Provider<HttpSession> provider,@SMTPServerAddress String address, @SMTPServerPort int port, @SMTPAuth boolean auth) {
@@ -80,6 +84,10 @@
 		props.put("mail.smtp.auth", auth);
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
 	public EmptyResult executeInternal(SendMessage action, ExecutionContext context)
 			throws ActionException {
 		try {
@@ -105,6 +113,7 @@
 
 			ArrayList<MessageAttachment> attachments = m.getMessageContent()
 					.getMessageAttachments();
+			// check if there are any attachments to include
 			if (attachments == null || attachments.isEmpty()) {
 				message.setText(m.getMessageContent().getText());
 			} else {
@@ -117,7 +126,9 @@
 				Multipart multipart = new MimeMultipart();
 				multipart.addBodyPart(messageBodyPart);
 
+				// lopp over the attachments
 				for (int i = 0; i < attachments.size(); i++) {
+					// get the attachment from the registry
 					FileItem fItem = registry.get(attachments.get(i).getName());
 					// Part two is attachment
 					messageBodyPart = new MimeBodyPart();
@@ -130,9 +141,12 @@
 				message.setContent(multipart);
 
 			}
+			// save message 
 			message.saveChanges();
+			
 			User user = getUser(action.getSessionId());
 			Transport transport = session.getTransport("smtp");
+			// check if smtp auth is needed
 			if (auth) {
 				logger.debug("Use auth for smtp connection");
 
@@ -158,8 +172,6 @@
 		} catch (MessagingException e) {
 			logger.error("Error while sending message", e);
 			throw new ActionException("Error while sending message");
-		} catch (NullPointerException e) {
-			e.printStackTrace();
 		}
 		return new EmptyResult();
 	}
@@ -172,11 +184,19 @@
 		return SendMessage.class;
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * @see net.customware.gwt.dispatch.server.ActionHandler#rollback(net.customware.gwt.dispatch.shared.Action, net.customware.gwt.dispatch.shared.Result, net.customware.gwt.dispatch.server.ExecutionContext)
+	 */
 	public void rollback(SendMessage arg0, EmptyResult arg1,
 			ExecutionContext arg2) throws ActionException {
-
+		// not implemented
 	}
 
+	/**
+	 * DataStore which wrap a FileItem
+	 * 
+	 */
 	private class FileItemDataStore implements DataSource {
 
 		private FileItem item;



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