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]

Reply via email to