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/09/04 16:39:19 UTC
svn commit: r811427 - in /labs/hupa/trunk:
client/src/main/java/org/apache/hupa/client/mvp/
server/src/main/java/org/apache/hupa/server/guice/
server/src/main/java/org/apache/hupa/server/handler/
shared/src/main/java/org/apache/hupa/shared/rpc/
Author: norman
Date: Fri Sep 4 14:39:19 2009
New Revision: 811427
URL: http://svn.apache.org/viewvc?rev=811427&view=rev
Log:
Rename ExposeMessage* to GetMessageDetails* to better match the usage
Start to add Handler to only fetch recent messages. This will improve the overall performance
Added:
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java
labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchRecentMessages.java
labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/GetMessageDetails.java
- copied, changed from r811312, labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessage.java
labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/GetMessageDetailsResult.java
- copied, changed from r811312, labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessageResult.java
Removed:
labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessage.java
labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessageResult.java
Modified:
labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java
labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessages.java
Modified: labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java
URL: http://svn.apache.org/viewvc/labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java?rev=811427&r1=811426&r2=811427&view=diff
==============================================================================
--- labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java (original)
+++ labs/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java Fri Sep 4 14:39:19 2009
@@ -54,8 +54,8 @@
import org.apache.hupa.shared.events.ReplyMessageEventHandler;
import org.apache.hupa.shared.events.SentMessageEvent;
import org.apache.hupa.shared.events.SentMessageEventHandler;
-import org.apache.hupa.shared.rpc.ExposeMessage;
-import org.apache.hupa.shared.rpc.ExposeMessageResult;
+import org.apache.hupa.shared.rpc.GetMessageDetails;
+import org.apache.hupa.shared.rpc.GetMessageDetailsResult;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
@@ -206,7 +206,7 @@
} else {
decreaseUnseen = false;
}
- cachingDispatcher.executeWithCache(new ExposeMessage(event.getUser().getSessionId(),event.getFolder(),message.getUid()), new DisplayCallback<ExposeMessageResult>(display) {
+ cachingDispatcher.executeWithCache(new GetMessageDetails(event.getUser().getSessionId(),event.getFolder(),message.getUid()), new DisplayCallback<GetMessageDetailsResult>(display) {
@Override
protected void handleFailure(Throwable e) {
@@ -214,7 +214,7 @@
}
@Override
- protected void handleSuccess(ExposeMessageResult result) {
+ protected void handleSuccess(GetMessageDetailsResult result) {
// decrease the unseen count if we were able to expose the message
if (decreaseUnseen) {
eventBus.fireEvent(new DecreaseUnseenEvent(user,folder));
Modified: labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java
URL: http://svn.apache.org/viewvc/labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java?rev=811427&r1=811426&r2=811427&view=diff
==============================================================================
--- labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java (original)
+++ labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java Fri Sep 4 14:39:19 2009
@@ -36,6 +36,7 @@
import org.apache.hupa.server.handler.GetMessageDetailsHandler;
import org.apache.hupa.server.handler.FetchFoldersHandler;
import org.apache.hupa.server.handler.FetchMessagesHandler;
+import org.apache.hupa.server.handler.FetchRecentMessagesHandler;
import org.apache.hupa.server.handler.ForwardMessageHandler;
import org.apache.hupa.server.handler.LoginSessionHandler;
import org.apache.hupa.server.handler.LoginUserHandler;
@@ -67,6 +68,7 @@
bindHandler(LoginUserHandler.class);
bindHandler(FetchFoldersHandler.class);
bindHandler(FetchMessagesHandler.class);
+ bindHandler(FetchRecentMessagesHandler.class);
bindHandler(LogoutUserHandler.class);
bindHandler(GetMessageDetailsHandler.class);
bindHandler(DeleteMessageHandler.class);
Added: labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java?rev=811427&view=auto
==============================================================================
--- labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java (added)
+++ labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/AbstractFetchMessagesHandler.java Fri Sep 4 14:39:19 2009
@@ -0,0 +1,204 @@
+package org.apache.hupa.server.handler;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+
+import javax.mail.Address;
+import javax.mail.FetchProfile;
+import javax.mail.Flags;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Multipart;
+import javax.mail.Part;
+import javax.mail.Flags.Flag;
+import javax.mail.internet.MimeUtility;
+import javax.mail.internet.MimeMessage.RecipientType;
+import javax.servlet.http.HttpSession;
+
+import net.customware.gwt.dispatch.server.ExecutionContext;
+import net.customware.gwt.dispatch.shared.ActionException;
+
+import org.apache.commons.logging.Log;
+import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.shared.data.IMAPFolder;
+import org.apache.hupa.shared.data.Tag;
+import org.apache.hupa.shared.data.User;
+import org.apache.hupa.shared.data.Message.IMAPFlag;
+import org.apache.hupa.shared.rpc.FetchMessagesResult;
+import org.apache.hupa.shared.rpc.FetchMessages;
+
+import com.google.inject.Provider;
+import com.sun.mail.imap.IMAPStore;
+
+public abstract class AbstractFetchMessagesHandler <A extends FetchMessages> extends AbstractSessionHandler<A, FetchMessagesResult>{
+
+ public AbstractFetchMessagesHandler(IMAPStoreCache cache, Log logger,
+ Provider<HttpSession> sessionProvider) {
+ super(cache, logger, sessionProvider);
+ }
+
+ @Override
+ protected FetchMessagesResult executeInternal(A action,
+ ExecutionContext context) throws ActionException {
+ User user = getUser(action.getSessionId());
+ IMAPFolder folder = action.getFolder();
+ try {
+ IMAPStore store = cache.get(user);
+ int start = action.getStart();
+ int offset = action.getOffset();
+
+ 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(new ArrayList<org.apache.hupa.shared.data.Message>(),start,offset,exists);
+ }
+
+ Message[] messages = getMessagesToConvert(f,action);
+
+ return new FetchMessagesResult(convert(action, f, messages),start,offset,exists);
+
+ } 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() + " in folder " + folder);
+
+ }
+ }
+
+ protected abstract Message[] getMessagesToConvert(com.sun.mail.imap.IMAPFolder f, A action) throws MessagingException;
+
+ protected ArrayList<org.apache.hupa.shared.data.Message> convert(FetchMessages action, com.sun.mail.imap.IMAPFolder f, Message[] messages) throws MessagingException {
+ ArrayList<org.apache.hupa.shared.data.Message> mList = new ArrayList<org.apache.hupa.shared.data.Message>();
+ // Setup fetchprofile to limit the stuff which is fetched
+ FetchProfile fp = new FetchProfile();
+ fp.add(FetchProfile.Item.ENVELOPE);
+ fp.add(FetchProfile.Item.FLAGS);
+ fp.add(FetchProfile.Item.CONTENT_INFO);
+ f.fetch(messages, fp);
+
+ // loop over the fetched messages
+ for (int i = 0; i < messages.length; i++) {
+ org.apache.hupa.shared.data.Message msg = new org.apache.hupa.shared.data.Message();
+ Message m = messages[i];
+ String from = null;
+ if (m.getFrom() != null && m.getFrom().length >0 ) {
+ try {
+ from = MimeUtility.decodeText(m.getFrom()[0].toString().trim());
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ }
+ msg.setFrom(from);
+
+ 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++) {
+ to.add(toArray[b].toString());
+ }
+ }
+ msg.setTo(to);
+
+ // Check if a subject exist and if so decode it
+ String subject = m.getSubject();
+ if (subject != null) {
+ try {
+ subject = MimeUtility.decodeText(subject);
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ }
+ msg.setSubject(subject);
+
+ // Add cc addresses
+ Address[] ccArray = m.getRecipients(RecipientType.CC);
+ ArrayList<String> cc = new ArrayList<String>();
+
+ if (ccArray != null) {
+ for (int b =0; b < ccArray.length;b++) {
+ cc.add(ccArray[b].toString());
+ }
+ }
+ msg.setCc(cc);
+
+ msg.setReceivedDate(m.getReceivedDate());
+
+ // Add flags
+ ArrayList<IMAPFlag> iFlags = new ArrayList<IMAPFlag>();
+ Flags flags = m.getFlags();
+ Flag[] systemFlags = flags.getSystemFlags();
+ for (int a = 0; a < systemFlags.length;a++) {
+ Flag flag = systemFlags[a];
+ if (flag == Flag.DELETED) {
+ iFlags.add(IMAPFlag.DELETED);
+ }
+ if (flag == Flag.SEEN) {
+ iFlags.add(IMAPFlag.SEEN);
+ }
+ if (flag == Flag.RECENT) {
+ iFlags.add(IMAPFlag.RECENT);
+
+ }
+ }
+
+ ArrayList<Tag> tags = new ArrayList<Tag>();
+ String[] userFlags = flags.getUserFlags();
+ for (int a = 0; a < userFlags.length;a++) {
+ String flag = userFlags[a];
+ if (flag.startsWith(Tag.PREFIX)) {
+ tags.add(new Tag(flag.substring(Tag.PREFIX.length())));
+ }
+ }
+
+ msg.setUid(f.getUID(m));
+ msg.setFlags(iFlags);
+ msg.setTags(tags);
+ msg.setHasAttachments(hasAttachment(m));
+
+ mList.add(0, msg);
+ if (i > action.getOffset()) {
+ break;
+ }
+ }
+ f.close(false);
+ return mList;
+ }
+
+ private boolean hasAttachment(Message message) throws MessagingException {
+ if (message.getContentType().startsWith("multipart/")) {
+ try {
+ Object content;
+
+ content = message.getContent();
+
+ if (content instanceof Multipart) {
+ Multipart mp = (Multipart) content;
+ if (mp.getCount() > 1) {
+ for (int i = 0; i < mp.getCount(); i++) {
+ String disp = mp.getBodyPart(i).getDisposition();
+ if (disp != null
+ && disp.equalsIgnoreCase(Part.ATTACHMENT)) {
+ return true;
+ }
+ }
+ }
+
+ }
+ } catch (IOException e) {
+ logger.error("Error while get content of message " + message.getMessageNumber());
+ }
+
+ }
+ return false;
+ }
+}
Modified: labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java?rev=811427&r1=811426&r2=811427&view=diff
==============================================================================
--- labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java (original)
+++ labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java Fri Sep 4 14:39:19 2009
@@ -19,19 +19,8 @@
package org.apache.hupa.server.handler;
-import java.io.IOException;
-import java.util.ArrayList;
-
-import javax.mail.Address;
-import javax.mail.FetchProfile;
-import javax.mail.Flags;
import javax.mail.Message;
import javax.mail.MessagingException;
-import javax.mail.Multipart;
-import javax.mail.Part;
-import javax.mail.Flags.Flag;
-import javax.mail.internet.MimeUtility;
-import javax.mail.internet.MimeMessage.RecipientType;
import javax.mail.search.BodyTerm;
import javax.mail.search.FromStringTerm;
import javax.mail.search.OrTerm;
@@ -39,217 +28,72 @@
import javax.mail.search.SubjectTerm;
import javax.servlet.http.HttpSession;
-import net.customware.gwt.dispatch.server.ExecutionContext;
-import net.customware.gwt.dispatch.shared.ActionException;
-
import org.apache.commons.logging.Log;
import org.apache.hupa.server.IMAPStoreCache;
-import org.apache.hupa.shared.data.IMAPFolder;
-
-import org.apache.hupa.shared.data.Tag;
-import org.apache.hupa.shared.data.User;
-import org.apache.hupa.shared.data.Message.IMAPFlag;
import org.apache.hupa.shared.rpc.FetchMessages;
-import org.apache.hupa.shared.rpc.FetchMessagesResult;
import com.google.inject.Inject;
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
+ * 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>{
+public class FetchMessagesHandler extends
+ AbstractFetchMessagesHandler<FetchMessages> {
@Inject
- public FetchMessagesHandler(IMAPStoreCache cache, Log logger,Provider<HttpSession> provider) {
- super(cache,logger,provider);
+ public FetchMessagesHandler(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)
+ *
+ * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
*/
- public FetchMessagesResult executeInternal(FetchMessages action, ExecutionContext arg1)
- throws ActionException {
- User user = getUser(action.getSessionId());
- IMAPFolder folder = action.getFolder();
+ public Class<FetchMessages> getActionType() {
+ return FetchMessages.class;
+ }
+
+ @Override
+ protected Message[] getMessagesToConvert(com.sun.mail.imap.IMAPFolder f,
+ FetchMessages action) throws MessagingException {
String searchString = action.getSearchString();
- ArrayList<org.apache.hupa.shared.data.Message> mList = new ArrayList<org.apache.hupa.shared.data.Message>();
int start = action.getStart();
int offset = action.getOffset();
int end = start + offset;
- 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 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);
- }
- if (end > exists) {
- end = exists;
- }
-
- int firstIndex = exists - end;
- if (firstIndex < 1) {
- firstIndex = 1;
- }
- int lastIndex = exists - start;
- Message[] messages;
-
- // check if a searchString was given, and if so use it
- if (searchString == null) {
- messages = f.getMessages(firstIndex,lastIndex);
- } else {
- SearchTerm subjectTerm = new SubjectTerm(searchString);
- SearchTerm fromTerm = new FromStringTerm(searchString);
- SearchTerm bodyTerm = new BodyTerm(searchString);
- SearchTerm orTerm = new OrTerm(new SearchTerm[]{subjectTerm,fromTerm,bodyTerm});
- messages = f.search(orTerm);
- if (end > messages.length) {
- end = messages.length;
- }
- exists = messages.length;
- }
-
- // Setup fetchprofile to limit the stuff which is fetched
- FetchProfile fp = new FetchProfile();
- fp.add(FetchProfile.Item.ENVELOPE);
- fp.add(FetchProfile.Item.FLAGS);
- fp.add(FetchProfile.Item.CONTENT_INFO);
- f.fetch(messages, fp);
-
- // loop over the fetched messages
- for (int i = 0; i < messages.length; i++) {
- org.apache.hupa.shared.data.Message msg = new org.apache.hupa.shared.data.Message();
- Message m = messages[i];
- String from = null;
- if (m.getFrom() != null && m.getFrom().length >0 ) {
- from = MimeUtility.decodeText(m.getFrom()[0].toString().trim());
- }
- msg.setFrom(from);
-
- 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++) {
- to.add(toArray[b].toString());
- }
- }
- msg.setTo(to);
-
- // Check if a subject exist and if so decode it
- String subject = m.getSubject();
- if (subject != null) {
- subject = MimeUtility.decodeText(subject);
- }
- msg.setSubject(subject);
-
- // Add cc addresses
- Address[] ccArray = m.getRecipients(RecipientType.CC);
- ArrayList<String> cc = new ArrayList<String>();
-
- if (ccArray != null) {
- for (int b =0; b < ccArray.length;b++) {
- cc.add(ccArray[b].toString());
- }
- }
- msg.setCc(cc);
-
- msg.setReceivedDate(m.getReceivedDate());
-
- // Add flags
- ArrayList<IMAPFlag> iFlags = new ArrayList<IMAPFlag>();
- Flags flags = m.getFlags();
- Flag[] systemFlags = flags.getSystemFlags();
- for (int a = 0; a < systemFlags.length;a++) {
- Flag flag = systemFlags[a];
- if (flag == Flag.DELETED) {
- iFlags.add(IMAPFlag.DELETED);
- }
- if (flag == Flag.SEEN) {
- iFlags.add(IMAPFlag.SEEN);
- }
- if (flag == Flag.RECENT) {
- iFlags.add(IMAPFlag.RECENT);
-
- }
- }
-
- ArrayList<Tag> tags = new ArrayList<Tag>();
- String[] userFlags = flags.getUserFlags();
- for (int a = 0; a < userFlags.length;a++) {
- String flag = userFlags[a];
- if (flag.startsWith(Tag.PREFIX)) {
- tags.add(new Tag(flag.substring(Tag.PREFIX.length())));
- }
- }
-
- msg.setUid(f.getUID(m));
- msg.setFlags(iFlags);
- msg.setTags(tags);
- msg.setHasAttachments(hasAttachment(m));
-
- mList.add(0, msg);
- if (i > action.getOffset()) {
- break;
- }
- }
- f.close(false);
+ int exists = f.getMessageCount();
- // 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);
- throw new ActionException(
- "Error while fetching headers for user " + user.getName() + " in folder " + folder);
+ if (end > exists) {
+ end = exists;
}
- }
-
- private boolean hasAttachment(Message message) throws MessagingException {
- if (message.getContentType().startsWith("multipart/")) {
- try {
- Object content;
-
- content = message.getContent();
-
- if (content instanceof Multipart) {
- Multipart mp = (Multipart) content;
- if (mp.getCount() > 1) {
- for (int i = 0; i < mp.getCount(); i++) {
- String disp = mp.getBodyPart(i).getDisposition();
- if (disp != null
- && disp.equalsIgnoreCase(Part.ATTACHMENT)) {
- return true;
- }
- }
- }
-
- }
- } catch (IOException e) {
- logger.error("Error while get content of message " + message.getMessageNumber());
- }
-
+
+ int firstIndex = exists - end;
+ if (firstIndex < 1) {
+ firstIndex = 1;
}
- return false;
- }
+ int lastIndex = exists - start;
+ Message[] messages;
- /*
- * (non-Javadoc)
- * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
- */
- public Class<FetchMessages> getActionType() {
- return FetchMessages.class;
+ // check if a searchString was given, and if so use it
+ if (searchString == null) {
+ messages = f.getMessages(firstIndex, lastIndex);
+ } else {
+ SearchTerm subjectTerm = new SubjectTerm(searchString);
+ SearchTerm fromTerm = new FromStringTerm(searchString);
+ SearchTerm bodyTerm = new BodyTerm(searchString);
+ SearchTerm orTerm = new OrTerm(new SearchTerm[] { subjectTerm,
+ fromTerm, bodyTerm });
+ messages = f.search(orTerm);
+ if (end > messages.length) {
+ end = messages.length;
+ }
+ exists = messages.length;
+ }
+ return messages;
}
}
Added: labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java?rev=811427&view=auto
==============================================================================
--- labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java (added)
+++ labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/FetchRecentMessagesHandler.java Fri Sep 4 14:39:19 2009
@@ -0,0 +1,61 @@
+/****************************************************************
+ * 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.handler;
+
+import javax.mail.Flags;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Flags.Flag;
+import javax.mail.search.FlagTerm;
+import javax.servlet.http.HttpSession;
+
+import org.apache.commons.logging.Log;
+import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.shared.rpc.FetchRecentMessages;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class FetchRecentMessagesHandler extends AbstractFetchMessagesHandler<FetchRecentMessages> {
+
+ @Inject
+ public FetchRecentMessagesHandler(IMAPStoreCache cache, Log logger,
+ Provider<HttpSession> provider) {
+ super(cache, logger, provider);
+ }
+
+
+ @Override
+ protected Message[] getMessagesToConvert(com.sun.mail.imap.IMAPFolder f,
+ FetchRecentMessages action) throws MessagingException {
+ Message[] messages = f.search(new FlagTerm(new Flags(Flag.RECENT), true));
+ return messages;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
+ */
+ public Class<FetchRecentMessages> getActionType() {
+ return FetchRecentMessages.class;
+ }
+
+}
Modified: labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java?rev=811427&r1=811426&r2=811427&view=diff
==============================================================================
--- labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java (original)
+++ labs/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java Fri Sep 4 14:39:19 2009
@@ -39,14 +39,14 @@
import org.apache.hupa.shared.data.MessageAttachment;
import org.apache.hupa.shared.data.MessageDetails;
import org.apache.hupa.shared.data.User;
-import org.apache.hupa.shared.rpc.ExposeMessage;
-import org.apache.hupa.shared.rpc.ExposeMessageResult;
+import org.apache.hupa.shared.rpc.GetMessageDetails;
+import org.apache.hupa.shared.rpc.GetMessageDetailsResult;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.sun.mail.imap.IMAPStore;
-public class GetMessageDetailsHandler extends AbstractSessionHandler<ExposeMessage, ExposeMessageResult>{
+public class GetMessageDetailsHandler extends AbstractSessionHandler<GetMessageDetails, GetMessageDetailsResult>{
@Inject
public GetMessageDetailsHandler(IMAPStoreCache cache, Log logger,Provider<HttpSession> sProvider) {
@@ -57,17 +57,17 @@
* (non-Javadoc)
* @see org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session, net.customware.gwt.dispatch.server.ExecutionContext)
*/
- public ExposeMessageResult executeInternal(ExposeMessage action, ExecutionContext arg1)
+ public GetMessageDetailsResult executeInternal(GetMessageDetails action, ExecutionContext arg1)
throws ActionException {
- return new ExposeMessageResult(exposeMessage(getUser(action.getSessionId()), action.getFolder(), action.getUid()));
+ return new GetMessageDetailsResult(exposeMessage(getUser(action.getSessionId()), action.getFolder(), action.getUid()));
}
/*
* (non-Javadoc)
* @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
*/
- public Class<ExposeMessage> getActionType() {
- return ExposeMessage.class;
+ public Class<GetMessageDetails> getActionType() {
+ return GetMessageDetails.class;
}
protected MessageDetails exposeMessage(User user, IMAPFolder folder, long uid) throws ActionException {
Modified: labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessages.java
URL: http://svn.apache.org/viewvc/labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessages.java?rev=811427&r1=811426&r2=811427&view=diff
==============================================================================
--- labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessages.java (original)
+++ labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessages.java Fri Sep 4 14:39:19 2009
@@ -32,9 +32,7 @@
private int offset;
private String searchString;
- @SuppressWarnings("unused")
- private FetchMessages() {
-
+ protected FetchMessages() {
}
public FetchMessages(String sessionId, IMAPFolder folder,int start, int offset,String searchString) {
Added: labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchRecentMessages.java
URL: http://svn.apache.org/viewvc/labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchRecentMessages.java?rev=811427&view=auto
==============================================================================
--- labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchRecentMessages.java (added)
+++ labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchRecentMessages.java Fri Sep 4 14:39:19 2009
@@ -0,0 +1,40 @@
+/****************************************************************
+ * 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.shared.rpc;
+
+import org.apache.hupa.shared.data.IMAPFolder;
+
+public class FetchRecentMessages extends FetchMessages{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 4380357285905033821L;
+
+ protected FetchRecentMessages() {
+
+ }
+
+ public FetchRecentMessages(String sessionId, IMAPFolder folder, int start,
+ int offset, String searchString) {
+ super(sessionId, folder, start, offset, searchString);
+ }
+
+}
Copied: labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/GetMessageDetails.java (from r811312, labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessage.java)
URL: http://svn.apache.org/viewvc/labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/GetMessageDetails.java?p2=labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/GetMessageDetails.java&p1=labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessage.java&r1=811312&r2=811427&rev=811427&view=diff
==============================================================================
--- labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessage.java (original)
+++ labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/GetMessageDetails.java Fri Sep 4 14:39:19 2009
@@ -22,7 +22,7 @@
import org.apache.hupa.shared.data.IMAPFolder;
-public class ExposeMessage extends Session<ExposeMessageResult>{
+public class GetMessageDetails extends Session<GetMessageDetailsResult>{
/**
*
@@ -31,14 +31,14 @@
private IMAPFolder folder;
private long uid;
- public ExposeMessage(String sessionId, IMAPFolder folder, long uid) {
+ public GetMessageDetails(String sessionId, IMAPFolder folder, long uid) {
super(sessionId);
this.folder = folder;
this.uid = uid;
}
@SuppressWarnings("unused")
- private ExposeMessage() {
+ private GetMessageDetails() {
}
public IMAPFolder getFolder() {
@@ -50,8 +50,8 @@
}
public boolean equals(Object obj) {
- if (obj instanceof ExposeMessage) {
- ExposeMessage action = (ExposeMessage) obj;
+ if (obj instanceof GetMessageDetails) {
+ GetMessageDetails action = (GetMessageDetails) obj;
if (action.getSessionId().equals(getSessionId()) && action.getFolder().equals(getFolder()) && action.getUid() == getUid()) {
return true;
}
Copied: labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/GetMessageDetailsResult.java (from r811312, labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessageResult.java)
URL: http://svn.apache.org/viewvc/labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/GetMessageDetailsResult.java?p2=labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/GetMessageDetailsResult.java&p1=labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessageResult.java&r1=811312&r2=811427&rev=811427&view=diff
==============================================================================
--- labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessageResult.java (original)
+++ labs/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/GetMessageDetailsResult.java Fri Sep 4 14:39:19 2009
@@ -23,7 +23,7 @@
import net.customware.gwt.dispatch.shared.Result;
-public class ExposeMessageResult implements Result{
+public class GetMessageDetailsResult implements Result{
/**
*
@@ -32,11 +32,11 @@
private MessageDetails message;
@SuppressWarnings("unused")
- private ExposeMessageResult() {
+ private GetMessageDetailsResult() {
}
- public ExposeMessageResult(MessageDetails message) {
+ public GetMessageDetailsResult(MessageDetails message) {
this.message = message;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org