Author: norman
Date: Tue Aug 18 17:59:33 2009
New Revision: 805516

URL: http://svn.apache.org/viewvc?rev=805516&view=rev
Log:
Add Handler for renaming folder

Added:
    
labs/hupa/src/main/java/org/apache/hupa/server/handler/RenameFolderHandler.java
    labs/hupa/src/main/java/org/apache/hupa/shared/rpc/RenameFolder.java
Modified:
    labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java

Modified: labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java?rev=805516&r1=805515&r2=805516&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java Tue 
Aug 18 17:59:33 2009
@@ -37,6 +37,7 @@
 import org.apache.hupa.server.handler.LogoutUserHandler;
 import org.apache.hupa.server.handler.MoveMessageHandler;
 import org.apache.hupa.server.handler.NoopHandler;
+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.servlet.DownloadAttachmentServlet;
@@ -68,6 +69,7 @@
                bindHandler(NoopHandler.class);
                bindHandler(LoginSessionHandler.class);
                bindHandler(MoveMessageHandler.class);
+               bindHandler(RenameFolderHandler.class);
                bind(FileItemRegistry.class).in(Singleton.class);
                bind(IMAPStoreCache.class).in(Singleton.class);
                
bind(Log.class).toProvider(LogProvider.class).in(Singleton.class);

Added: 
labs/hupa/src/main/java/org/apache/hupa/server/handler/RenameFolderHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/RenameFolderHandler.java?rev=805516&view=auto
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/server/handler/RenameFolderHandler.java 
(added)
+++ 
labs/hupa/src/main/java/org/apache/hupa/server/handler/RenameFolderHandler.java 
Tue Aug 18 17:59:33 2009
@@ -0,0 +1,83 @@
+/****************************************************************
+ * 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.Folder;
+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.User;
+import org.apache.hupa.shared.rpc.EmptyResult;
+import org.apache.hupa.shared.rpc.RenameFolder;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import com.sun.mail.imap.IMAPStore;
+
+public class RenameFolderHandler extends AbstractSessionHandler<RenameFolder, 
EmptyResult>{
+
+       @Inject
+       public RenameFolderHandler(IMAPStoreCache cache, Log logger,
+                       Provider<HttpSession> sessionProvider) {
+               super(cache, logger, sessionProvider);
+       }
+
+       @Override
+       protected EmptyResult executeInternal(RenameFolder action,
+                       ExecutionContext context) throws ActionException {
+               User user = getUser(action.getSessionId());
+               IMAPFolder folder = action.getFolder();
+               String newName = action.getNewName();
+               try {
+                       IMAPStore store = cache.get(user);
+                       com.sun.mail.imap.IMAPFolder iFolder = 
(com.sun.mail.imap.IMAPFolder) store.getFolder(folder.getFullName());
+                       Folder newFolder = store.getFolder(newName);
+                       
+                       if (iFolder.isOpen()) {
+                               iFolder.close(false);
+                       }
+                       if (iFolder.renameTo(newFolder)) {
+                               return new EmptyResult();
+                       }
+                       throw new ActionException("Unable to rename Folder " + 
folder.getFullName() + " to " + newName + " for user " + user);
+
+               } catch (Exception e) {
+                       logger.error("Error while renaming Folder " + 
folder.getFullName() + " to " + newName + " for user " + user,e);
+                       throw new ActionException("Error while renaming Folder 
" + folder.getFullName() + " to " + newName + " for user " + user,e);
+               }
+
+       }
+
+       public Class<RenameFolder> getActionType() {
+               return RenameFolder.class;
+       }
+
+       public void rollback(RenameFolder arg0, EmptyResult arg1,
+                       ExecutionContext arg2) throws ActionException {
+               // TODO Auto-generated method stub
+               
+       }
+
+}

Added: labs/hupa/src/main/java/org/apache/hupa/shared/rpc/RenameFolder.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/shared/rpc/RenameFolder.java?rev=805516&view=auto
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/shared/rpc/RenameFolder.java (added)
+++ labs/hupa/src/main/java/org/apache/hupa/shared/rpc/RenameFolder.java Tue 
Aug 18 17:59:33 2009
@@ -0,0 +1,31 @@
+package org.apache.hupa.shared.rpc;
+
+import org.apache.hupa.shared.data.IMAPFolder;
+
+public class RenameFolder extends Session<EmptyResult>{
+
+       /**
+        * 
+        */
+       private static final long serialVersionUID = 1924419911921600320L;
+       private IMAPFolder folder;
+       private String newName;
+
+       public RenameFolder(String sessionUid,IMAPFolder folder, String 
newName) {
+               super(sessionUid);
+               this.folder = folder;
+               this.newName = newName;
+       }
+       
+       protected RenameFolder() {
+               
+       }
+       
+       public IMAPFolder getFolder() {
+               return folder;
+       }
+       
+       public String getNewName() {
+               return newName;
+       }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to