org.zkoss.zk.ui.impl.DesktopRecycles Maven / Gradle / Ivy
/* DesktopRecycles.java
Purpose:
Description:
History:
Thu May 5 09:25:05 TST 2011, Created by tomyeh
Copyright (C) 2011 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.zk.ui.impl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.zkoss.zk.ui.Execution;
import org.zkoss.zk.ui.Desktop;
import org.zkoss.zk.ui.WebApp;
import org.zkoss.zk.ui.sys.DesktopCtrl;
import org.zkoss.zk.ui.sys.WebAppCtrl;
import org.zkoss.zk.ui.util.DesktopRecycle;
/**
* Utilities to handle {@link DesktopRecycle}.
* @author tomyeh
* @since 5.0.7
*/
public class DesktopRecycles {
private static final Logger log = LoggerFactory.getLogger(DesktopRecycles.class);
/** Called to remove the desktop.
* If {@link DesktopRecycle} is configured, {@link DesktopRecycle#beforeRemove}
* will be called first to see if it shall be recycled.
* @return whether the desktop is removed. Returns false if the desktop
* is recycled.
*/
public static boolean removeDesktop(Execution exec) {
final Desktop dt = exec.getDesktop();
final WebApp wapp = dt.getWebApp();
final DesktopRecycle dtrc = wapp.getConfiguration().getDesktopRecycle();
if (dtrc != null) {
try {
if (dtrc.beforeRemove(exec, dt, 0)) {
((DesktopCtrl)dt).recycle();
return false; //recycled
}
} catch (Throwable ex) {
log.error("", ex);
}
}
((WebAppCtrl)wapp).getDesktopCache(dt.getSession()).removeDesktop(dt);
return true;
}
}