public class DesktopRecycle extends java.lang.Object implements DesktopRecycle
Available in ZK EE
If you want to recycle only particular paths, you could override
shallCache(org.zkoss.zk.ui.Desktop, java.lang.String, int)
and shallReuse(org.zkoss.zk.ui.Desktop, java.lang.String, int)
.
Constructor and Description |
---|
DesktopRecycle() |
Modifier and Type | Method and Description |
---|---|
void |
afterRemove(Session sess,
Desktop desktop)
Called after a desktop is removed.
|
void |
afterService(Desktop desktop)
Called after the request is served.
|
boolean |
beforeRemove(Execution exec,
Desktop desktop,
int cause)
Called when the client asks the server to remove a desktop
because of the user's navigating to other URL or refreshing the page.
|
Desktop |
beforeService(Execution exec,
java.lang.String uri)
Called when an user requests the content of a page.
|
protected static java.lang.String |
getURI(Desktop desktop)
Returns the request URI of the desktop.
|
protected java.util.Map |
newCache(Session sess)
Instantiates the cache to hold the recycled desktop for the given session.
|
protected boolean |
shallCache(Desktop desktop,
java.lang.String uri,
int cause)
Returns whether to cache the desktop of the specified URI, such
that we can reuse it later.
|
protected boolean |
shallExpunge(Desktop desktop,
java.lang.String uri,
int secElapsed)
Returns whether to remove it from the cache.
|
protected boolean |
shallReuse(Desktop desktop,
java.lang.String uri,
int secElapsed)
Returns whether to re-use the cached desktop.
|
public boolean beforeRemove(Execution exec, Desktop desktop, int cause)
DesktopRecycle
The implementation can retrieve the request path by calling
Desktop.getRequestPath()
.
Notice that, when the user refreshes a page, this method might be
called after DesktopRecycle.beforeService(org.zkoss.zk.ui.Execution, java.lang.String)
is called (depending on the browser
and networking). In other words, there is no way it is a brand-new request
from a new window, or it is caused by user's refreshing.
beforeRemove
in interface DesktopRecycle
exec
- the current execution.cause
- the cause. It is reserved for the future extension.protected static java.lang.String getURI(Desktop desktop)
Desktop.getRequestPath()
and Desktop.getQueryString()
.
For example, if Desktop.getRequestPath()
and Desktop.getQueryString()
are "/foo.zul" and "abc=1", then this parameter is "/foo.zul?abc=1".public void afterRemove(Session sess, Desktop desktop)
DesktopRecycle
DesktopRecycle.afterRemove(org.zkoss.zk.ui.Session, org.zkoss.zk.ui.Desktop)
is called.
The implementation has to remove the cached desktop, if any.
When this method is called, there might be no execution available
(Executions.getCurrent()
might return null).
afterRemove
in interface DesktopRecycle
sess
- the session that the desktop belongs to.
Notice that Desktop.getSession()
might be null when this method
is called since it is destroyed.desktop
- the desktop to removepublic Desktop beforeService(Execution exec, java.lang.String uri)
DesktopRecycle
beforeService
in interface DesktopRecycle
exec
- the execution. It doesn't not associated with
a desktop, and used only for accessing the request and response.uri
- the request URI. It is
a combination of Desktop.getRequestPath()
and Desktop.getQueryString()
.
For example, if Desktop.getRequestPath()
and Desktop.getQueryString()
are "/foo.zul" and "abc=1", then this parameter is "/foo.zul?abc=1".public void afterService(Desktop desktop)
DesktopRecycle
The implementation usually does nothing in this method, unless it wants to re-use it no matter if the same user might open two or more windows to visit the same URL.
When this method is called, there might be no execution available
(Executions.getCurrent()
might return null).
afterService
in interface DesktopRecycle
protected java.util.Map newCache(Session sess)
Default: instantiate a hash map.
protected boolean shallCache(Desktop desktop, java.lang.String uri, int cause)
The default implementation always return true. It means it tries to cache all paths.
If you want to cache only for, say, "/long-op/*", you can return true if path.startsWith("/long-op/").
uri
- the request URI. It is
a combination of Desktop.getRequestPath()
and Desktop.getQueryString()
.
For example, if Desktop.getRequestPath()
and Desktop.getQueryString()
are "/foo.zul" and "abc=1", then this parameter is "/foo.zul?abc=1".protected boolean shallReuse(Desktop desktop, java.lang.String uri, int secElapsed)
The default implementation return true if the page was served in 10 minutes (600 seconds).
secElapsed
- the number of seconds elapsed since the page
was served.protected boolean shallExpunge(Desktop desktop, java.lang.String uri, int secElapsed)
shallReuse(org.zkoss.zk.ui.Desktop, java.lang.String, int)
returns false.
Default: return true if the page was served more than 10 minutes ago (i.e., too old and we have to expunge it).
Copyright © 2005-2018 Potix Corporation. All Rights Reserved.