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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to