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