package com.bao.lc.site.s2.commands; import org.apache.commons.chain.Context; import org.apache.commons.collections.MapUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpUriRequest; import com.bao.lc.bean.IDValuePair; import com.bao.lc.bean.ResultCode; import com.bao.lc.client.utils.HttpClientUtils; import com.bao.lc.httpcommand.BasicHttpCommand; import com.bao.lc.httpcommand.params.HttpCommandPNames; import com.bao.lc.httpcommand.params.HttpCommandParams; import com.bao.lc.site.s2.ZyConstants; import com.bao.lc.util.AppUtils; public class DoLogout extends BasicHttpCommand { private static Log log = LogFactory.getLog(DoLogout.class); public DoLogout() { super(); } @Override protected IDValuePair preExecute(Context context) throws Exception { //Check if the user login? if(!MapUtils.getBooleanValue(context, ZyConstants.LOGIN_STATE_KEY, false)) { return ResultCode.RC_USER_NOT_LOGIN; } //Logout request HttpUriRequest logoutRequest = (HttpUriRequest)context.get(ZyConstants.LOGOUT_URI_REQUEST); if(logoutRequest == null) { throw new IllegalStateException("Can't find logout URI request"); } //User page URI as referrer String userPageURI = MapUtils.getString(context, ZyConstants.USER_PAGE_URI); context.put(HttpCommandPNames.TARGET_REQUEST, logoutRequest); context.put(HttpCommandPNames.TARGET_REFERER, userPageURI); return ResultCode.RC_OK; } @Override protected IDValuePair postExecute(Context context) throws Exception { HttpResponse rsp = HttpCommandParams.getResponse(context); //Set login state context.put(ZyConstants.LOGIN_STATE_KEY, Boolean.FALSE); //Save result HttpClientUtils.saveToFile(rsp.getEntity(), AppUtils.getTempFilePath("logout.html")); //No next hop context.remove(HttpCommandPNames.TARGET_REQUEST); context.remove(HttpCommandPNames.TARGET_REFERER); String user = MapUtils.getString(context, ZyConstants.PARAM_USER); log.info("User [" + user + "] logout successfully."); return ResultCode.RC_OK; } }