blob: ef5884db9ae3367d3068d906e17f137de50248ab [file] [log] [blame]
/****************************************************************
* 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;
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
import org.apache.hupa.shared.data.User;
<<<<<<< HEAD
<<<<<<< HEAD
import org.apache.hupa.shared.proxy.IMAPFolderProxy;
=======
import org.apache.hupa.shared.data.IMAPFolder;
import org.apache.hupa.shared.data.User;
>>>>>>> first commit
=======
import org.apache.hupa.shared.data.User;
import org.apache.hupa.shared.proxy.IMAPFolderProxy;
>>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
=======
import org.apache.hupa.shared.proxy.ImapFolder;
>>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
=======
import org.apache.hupa.shared.domain.ImapFolder;
>>>>>>> Allow client can use the domain entity interface.
=======
import org.apache.hupa.shared.domain.ImapFolder;
import org.apache.hupa.shared.domain.User;
>>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
import org.apache.hupa.shared.rpc.DeleteFolder;
import org.apache.hupa.shared.rpc.GenericResult;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.sun.mail.imap.IMAPStore;
/**
* Handle delete requests for a folder
*
*
*/
public class DeleteFolderHandler extends AbstractSessionHandler<DeleteFolder, GenericResult>{
@Inject
public DeleteFolderHandler(IMAPStoreCache cache, Log logger,
Provider<HttpSession> sessionProvider) {
super(cache, logger, sessionProvider);
}
@Override
protected GenericResult executeInternal(DeleteFolder action,
ExecutionContext context) throws ActionException {
User user = getUser();
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
IMAPFolderProxy folder = action.getFolder();
=======
IMAPFolder folder = action.getFolder();
>>>>>>> first commit
=======
IMAPFolderProxy folder = action.getFolder();
>>>>>>> Aim to make the front end view work after the server side's IMAPFolder services RF being working, but there are issues on RF's find* method, I think.
=======
ImapFolder folder = action.getFolder();
>>>>>>> Make the ValueProxy(ImapFolder) work with Manolo's patch. Hupa can display folders in west view with RequestFactory now.
try {
IMAPStore store = cache.get(user);
Folder f = store.getFolder(folder.getFullName());
// close the folder if its open
if (f.isOpen()) {
f.close(false);
}
// recursive delete the folder
if (f.delete(true)) {
logger.info("Successfully delete folder " + folder + " for user " + user);
return new GenericResult();
} else {
throw new ActionException("Unable to delete folder " + folder + " for user " + user);
}
} catch (Exception e) {
logger.error("Error while deleting folder " + folder + " for user " + user,e);
throw new ActionException("Error while deleting folder " + folder + " for user " + user,e);
}
}
/*
* (non-Javadoc)
* @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
*/
public Class<DeleteFolder> getActionType() {
return DeleteFolder.class;
}
}