Author: norman
Date: Sun Aug 30 16:05:16 2009
New Revision: 809364
URL: http://svn.apache.org/viewvc?rev=809364&view=rev
Log:
Start adding support for tagging
Replace use of List with ArrayList on RPC to improve gwt speed
Added:
labs/hupa/.settings/com.google.appengine.eclipse.core.prefs
labs/hupa/.settings/com.google.gdt.eclipse.core.prefs
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/TagMessagesHandler.java
labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/Tag.java
labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/TagMessage.java
Modified:
labs/hupa/.classpath
labs/hupa/.settings/com.google.gwt.eclipse.core.prefs
labs/hupa/.settings/org.eclipse.jdt.core.prefs
labs/hupa/.settings/org.maven.ide.eclipse.prefs
labs/hupa/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/IMAPMessage.java
labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/Session.java
Modified: labs/hupa/.classpath
URL:
http://svn.apache.org/viewvc/labs/hupa/.classpath?rev=809364&r1=809363&r2=809364&view=diff
==============================================================================
--- labs/hupa/.classpath (original)
+++ labs/hupa/.classpath Sun Aug 30 16:05:16 2009
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="shared/src/main/java"/>
- <classpathentry kind="src" path="server/src/main/resources"/>
- <classpathentry kind="src" path="client/src/main/java"/>
- <classpathentry kind="src" path="server/src/test/java"/>
- <classpathentry kind="src" path="client/src/main/webapp"/>
- <classpathentry kind="src" path="server/src/main/java"/>
- <classpathentry kind="src" path="widgets/src/main/java"/>
+ <classpathentry kind="src" output="shared/target/classes"
path="shared/src/main/java"/>
+ <classpathentry kind="src" output="server/war/WEB-INF/classes"
path="server/src/main/java"/>
+ <classpathentry excluding="**" kind="src"
output="server/war/WEB-INF/classes" path="server/src/main/resources"/>
+ <classpathentry kind="src" output="server/target/test-classes"
path="server/src/test/java"/>
+ <classpathentry kind="src" output="widgets/target/classes"
path="widgets/src/main/java"/>
+ <classpathentry kind="src" output="client/war/WEB-INF/classes"
path="client/src/main/java"/>
<classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con"
path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
<classpathentry kind="con"
path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
- <classpathentry kind="output" path="target/classes"/>
+ <classpathentry kind="output" path="war/WEB-INF/classes"/>
</classpath>
Added: labs/hupa/.settings/com.google.appengine.eclipse.core.prefs
URL:
http://svn.apache.org/viewvc/labs/hupa/.settings/com.google.appengine.eclipse.core.prefs?rev=809364&view=auto
==============================================================================
--- labs/hupa/.settings/com.google.appengine.eclipse.core.prefs (added)
+++ labs/hupa/.settings/com.google.appengine.eclipse.core.prefs Sun Aug 30
16:05:16 2009
@@ -0,0 +1,5 @@
+#Sun Aug 30 16:49:18 CEST 2009
+eclipse.preferences.version=1
+filesCopiedToWebInfLib=
+ormEnhancementInclusions=
+validationExclusions=
Added: labs/hupa/.settings/com.google.gdt.eclipse.core.prefs
URL:
http://svn.apache.org/viewvc/labs/hupa/.settings/com.google.gdt.eclipse.core.prefs?rev=809364&view=auto
==============================================================================
--- labs/hupa/.settings/com.google.gdt.eclipse.core.prefs (added)
+++ labs/hupa/.settings/com.google.gdt.eclipse.core.prefs Sun Aug 30 16:05:16
2009
@@ -0,0 +1,3 @@
+#Sun Aug 30 16:49:20 CEST 2009
+eclipse.preferences.version=1
+jarsExcludedFromWebInfLib=
Modified: labs/hupa/.settings/com.google.gwt.eclipse.core.prefs
URL:
http://svn.apache.org/viewvc/labs/hupa/.settings/com.google.gwt.eclipse.core.prefs?rev=809364&r1=809363&r2=809364&view=diff
==============================================================================
--- labs/hupa/.settings/com.google.gwt.eclipse.core.prefs (original)
+++ labs/hupa/.settings/com.google.gwt.eclipse.core.prefs Sun Aug 30 16:05:16
2009
@@ -1,3 +1,4 @@
-#Fri Jul 17 09:21:22 CEST 2009
-eclipse.preferences.version=1
-filesCopiedToWebInfLib=gwt-servlet.jar
+#Sun Aug 30 16:49:18 CEST 2009
+eclipse.preferences.version=1
+entryPointModules=
+filesCopiedToWebInfLib=gwt-servlet.jar
Modified: labs/hupa/.settings/org.eclipse.jdt.core.prefs
URL:
http://svn.apache.org/viewvc/labs/hupa/.settings/org.eclipse.jdt.core.prefs?rev=809364&r1=809363&r2=809364&view=diff
==============================================================================
--- labs/hupa/.settings/org.eclipse.jdt.core.prefs (original)
+++ labs/hupa/.settings/org.eclipse.jdt.core.prefs Sun Aug 30 16:05:16 2009
@@ -1,12 +1,12 @@
-#Mon Jul 06 15:13:27 CEST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+#Sun Aug 30 16:49:20 CEST 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
Modified: labs/hupa/.settings/org.maven.ide.eclipse.prefs
URL:
http://svn.apache.org/viewvc/labs/hupa/.settings/org.maven.ide.eclipse.prefs?rev=809364&r1=809363&r2=809364&view=diff
==============================================================================
--- labs/hupa/.settings/org.maven.ide.eclipse.prefs (original)
+++ labs/hupa/.settings/org.maven.ide.eclipse.prefs Sun Aug 30 16:05:16 2009
@@ -1,4 +1,4 @@
-#Sun Aug 30 10:13:49 CEST 2009
+#Sun Aug 30 16:46:41 CEST 2009
activeProfiles=
eclipse.preferences.version=1
fullBuildGoals=process-test-resources
Modified:
labs/hupa/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java
URL:
http://svn.apache.org/viewvc/labs/hupa/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java?rev=809364&r1=809363&r2=809364&view=diff
==============================================================================
---
labs/hupa/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java
(original)
+++
labs/hupa/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java
Sun Aug 30 16:05:16 2009
@@ -45,6 +45,7 @@
import org.apache.hupa.server.handler.RenameFolderHandler;
import org.apache.hupa.server.handler.ReplyMessageHandler;
import org.apache.hupa.server.handler.SendMessageHandler;
+import org.apache.hupa.server.handler.TagMessagesHandler;
import org.apache.hupa.server.servlet.DownloadAttachmentServlet;
import org.apache.hupa.server.servlet.UploadAttachmentServlet;
@@ -77,6 +78,7 @@
bindHandler(RenameFolderHandler.class);
bindHandler(DeleteFolderHandler.class);
bindHandler(CreateFolderHandler.class);
+ bindHandler(TagMessagesHandler.class);
bind(FileItemRegistry.class).in(Singleton.class);
bind(IMAPStoreCache.class).to(InMemoryIMAPStoreCache.class).in(Singleton.class);
bind(Log.class).toProvider(LogProvider.class).in(Singleton.class);
Modified:
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
URL:
http://svn.apache.org/viewvc/labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java?rev=809364&r1=809363&r2=809364&view=diff
==============================================================================
---
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
(original)
+++
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
Sun Aug 30 16:05:16 2009
@@ -20,7 +20,6 @@
package org.apache.hupa.server.handler;
import java.util.ArrayList;
-import java.util.List;
import javax.mail.Address;
import javax.mail.FetchProfile;
@@ -48,6 +47,7 @@
import org.apache.hupa.shared.data.IMAPMessage;
import org.apache.hupa.shared.data.MessageContent;
import org.apache.hupa.shared.data.MessageHeader;
+import org.apache.hupa.shared.data.Tag;
import org.apache.hupa.shared.data.User;
import org.apache.hupa.shared.data.IMAPMessage.IMAPFlag;
import org.apache.hupa.shared.rpc.FetchMessages;
@@ -170,7 +170,7 @@
// Add flags
- List<IMAPFlag> iFlags = new
ArrayList<IMAPFlag>();
+ ArrayList<IMAPFlag> iFlags = new
ArrayList<IMAPFlag>();
Flags flags = m.getFlags();
Flag[] systemFlags = flags.getSystemFlags();
for (int a = 0; a < systemFlags.length;a++) {
@@ -187,10 +187,20 @@
}
}
+ 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())));
+ }
+ }
+
IMAPMessage msg = new IMAPMessage();
msg.setHeader(newHeader);
msg.setUid(f.getUID(m));
msg.setFlags(iFlags);
+ msg.setTags(tags);
MessageContent content = new MessageContent();
content.setAttachments(hasAttachment(m.getContent()));
Added:
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/TagMessagesHandler.java
URL:
http://svn.apache.org/viewvc/labs/hupa/server/src/main/java/org/apache/hupa/server/handler/TagMessagesHandler.java?rev=809364&view=auto
==============================================================================
---
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/TagMessagesHandler.java
(added)
+++
labs/hupa/server/src/main/java/org/apache/hupa/server/handler/TagMessagesHandler.java
Sun Aug 30 16:05:16 2009
@@ -0,0 +1,98 @@
+/****************************************************************
+ * 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 java.util.ArrayList;
+
+import javax.mail.Folder;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+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.Tag;
+import org.apache.hupa.shared.data.User;
+import org.apache.hupa.shared.rpc.EmptyResult;
+import org.apache.hupa.shared.rpc.TagMessage;
+
+import com.google.inject.Provider;
+import com.sun.mail.imap.IMAPFolder;
+import com.sun.mail.imap.IMAPStore;
+
+/**
+ * Handler which use user flags for supporting tagging of messages
+ *
+ */
+public class TagMessagesHandler extends AbstractSessionHandler<TagMessage,
EmptyResult>{
+
+ public TagMessagesHandler(IMAPStoreCache cache, Log logger,
+ Provider<HttpSession> sessionProvider) {
+ super(cache, logger, sessionProvider);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session,
net.customware.gwt.dispatch.server.ExecutionContext)
+ */
+ protected EmptyResult executeInternal(TagMessage action,
+ ExecutionContext context) throws ActionException {
+ User user = getUser(action.getSessionId());
+ ArrayList<Long> uids = action.getMessageUids();
+ Tag tag = action.getTag();
+ try {
+ IMAPStore store = cache.get(user);
+ IMAPFolder folder = (IMAPFolder)
store.getFolder(action.getFolder().getFullName());
+ if (folder.isOpen() == false) {
+ folder.open(Folder.READ_WRITE);
+ }
+ Message[] messages =
folder.getMessagesByUID(copyUids(uids));
+ for (int i = 0; i < messages.length; i++) {
+ Message m = messages[i];
+ m.getFlags().add(tag.toString());
+ }
+ folder.close(false);
+ return new EmptyResult();
+ } catch (MessagingException e) {
+ logger.error("Error while tag messages " +
uids.toString() + " for user " + user + " of folder" + action.getFolder(), e);
+ throw new ActionException(e);
+ }
+ }
+
+ private long[] copyUids(ArrayList<Long> uids) {
+ long[] lArray = new long[uids.size()];
+ for (int i = 0; i < uids.size(); i++) {
+ lArray[i] = uids.get(i);
+ }
+ return lArray;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
+ */
+ public Class<TagMessage> getActionType() {
+ return TagMessage.class;
+ }
+
+}
Modified:
labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/IMAPMessage.java
URL:
http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/IMAPMessage.java?rev=809364&r1=809363&r2=809364&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/IMAPMessage.java
(original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/IMAPMessage.java
Sun Aug 30 16:05:16 2009
@@ -19,7 +19,7 @@
package org.apache.hupa.shared.data;
-import java.util.List;
+import java.util.ArrayList;
public class IMAPMessage extends Message {
/**
@@ -27,19 +27,28 @@
*/
private static final long serialVersionUID = 7331361994526216161L;
private long uid;
- private List<IMAPFlag> flags;
+ private ArrayList<IMAPFlag> flags;
+ private ArrayList<Tag> tags;
public enum IMAPFlag {
SEEN, DELETED, RECENT, ANSWERED, JUNK, DRAFT
}
- public void setFlags(List<IMAPFlag> flags) {
+ public void setFlags(ArrayList<IMAPFlag> flags) {
this.flags = flags;
}
- public List<IMAPFlag> getFlags() {
+ public ArrayList<IMAPFlag> getFlags() {
return flags;
}
+
+ public void setTags(ArrayList<Tag> tags) {
+ this.tags = tags;
+ }
+
+ public ArrayList<Tag> getTags() {
+ return tags;
+ }
public long getUid() {
Added: labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/Tag.java
URL:
http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/Tag.java?rev=809364&view=auto
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/Tag.java (added)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/Tag.java Sun Aug
30 16:05:16 2009
@@ -0,0 +1,48 @@
+/****************************************************************
+ * 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.data;
+
+public class Tag {
+
+ public static String PREFIX = "TAG.";
+ private String tagName;
+
+ @SuppressWarnings("unused")
+ private Tag() {
+
+ }
+
+ public Tag(String tagName) {
+ this.tagName = tagName;
+ }
+
+ public String getName() {
+ return tagName;
+ }
+
+ public String getPrefix() {
+ return PREFIX;
+ }
+
+ public String toString() {
+ return PREFIX + tagName;
+ }
+
+}
Modified: labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/Session.java
URL:
http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/Session.java?rev=809364&r1=809363&r2=809364&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/Session.java
(original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/Session.java Sun
Aug 30 16:05:16 2009
@@ -42,6 +42,7 @@
return sessionId;
}
+ @SuppressWarnings("unchecked")
public boolean equals(Object obj) {
if (obj instanceof Session) {
if(((Session)obj).getSessionId().equals(getSessionId())) {
Added: labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/TagMessage.java
URL:
http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/TagMessage.java?rev=809364&view=auto
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/TagMessage.java
(added)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/TagMessage.java
Sun Aug 30 16:05:16 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.shared.rpc;
+
+import java.util.ArrayList;
+
+import org.apache.hupa.shared.data.IMAPFolder;
+import org.apache.hupa.shared.data.Tag;
+
+public class TagMessage extends Session<EmptyResult>{
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 4323236257115412763L;
+ private IMAPFolder folder;
+ private ArrayList<Long> messageUids;
+ private Tag tag;
+
+ protected TagMessage() {
+
+ }
+
+ public TagMessage(String sessionId, Tag tag, IMAPFolder folder,
ArrayList<Long> messageUids) {
+ super(sessionId);
+ this.tag = tag;
+ this.folder = folder;
+ this.messageUids = messageUids;
+ }
+
+ public Tag getTag() {
+ return tag;
+ }
+
+ public IMAPFolder getFolder() {
+ return folder;
+ }
+
+ public ArrayList<Long> getMessageUids() {
+ return messageUids;
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]