com.bea.content.manager.servlets
Class NodeCache

java.lang.Object
  extended by com.bea.content.manager.servlets.NodeCache
All Implemented Interfaces
Serializable, EventListener, javax.servlet.http.HttpSessionBindingListener

public class NodeCache
extends Object
implements javax.servlet.http.HttpSessionBindingListener, Serializable

An object to help with caching a Node or a array of Nodes.

This object can placed anywhere for use as a cache. For convience, the getNodeCache method can be used with a JSP PageContext to create and utilize ContentCaches.

Additionally, this is what the <cm:search> and <cm:getNode> tags use when useCache="true".

See Also
Serialized Form

Field Summary
static String DEF_CACHE_NAME
          The default name of the NodeCache.
protected  Map nodeCache
          The cache to NodeHolder.
 
Constructor Summary
NodeCache()
          Constructor.
 
Method Summary
static void bindToSession(NodeCache cache, javax.servlet.http.HttpSession session)
          Bind a NodeCache to an HttpSession.
 void clear()
          Clear the entire cache.
static Object getAttribute(javax.servlet.jsp.PageContext ctx, String name, int scope)
          Get a scoped attribute correctly from the JSP page context.
 long getCachedTime(String id)
          Get the UTC time (in ms.) of when the nodes at id were cached.
 List getCacheIds()
          Get an unordered list of all the cache ids.
 long getCacheSize()
          Get the total number of nodes objects cached (across all ids).
static NodeCache getFromSession(javax.servlet.http.HttpSession session, boolean create)
          Get a NodeCache from an HttpSession.
 Node getNode(String id, long timeout)
          Check the cache for the node.
static NodeCache getNodeCache(javax.servlet.jsp.PageContext ctx, int scope, boolean create)
          Get a NodeCache from the specified JSP context.
static NodeCache getNodeCache(javax.servlet.jsp.PageContext ctx, String scopeStr, boolean create)
          Get a NodeCache from the specified JSP context.
 Node[] getNodes(String id, long timeout)
          Check the cache for the nodes.
 int getNumCacheIds()
          Get the number of cache ids in the cache.
static String getScopeName(int scope)
          Get the scope name based upon the scope id.
 Node[] remove(String id)
          Clear a particular entry from the cache.
static void removeAttribute(javax.servlet.jsp.PageContext ctx, String name, int scope)
          Remove a scoped attribute correctly from the JSP page context.
static void setAttribute(javax.servlet.jsp.PageContext ctx, String name, Object val, int scope)
          Set a scoped attribute correctly in the JSP page context.
 void update(String id, Node node)
          Update the cache with the Node.
 void update(String id, Node[] nodes)
          Update the cache with the nodes.
 void valueBound(javax.servlet.http.HttpSessionBindingEvent evt)
          Called when we're bound into an HttpSession.
 void valueUnbound(javax.servlet.http.HttpSessionBindingEvent evt)
          Called when we're unbound from an HttpSession, and clears the cache.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEF_CACHE_NAME

public static final String DEF_CACHE_NAME
The default name of the NodeCache.

When the getNodeCache(javax.servlet.jsp.PageContext, int, boolean) method is used, this is the name which will used.

See Also
Constants Summary

nodeCache

protected transient Map nodeCache
The cache to NodeHolder.

Constructor Detail

NodeCache

public NodeCache()
Constructor.

Method Detail

getNodes

public Node[] getNodes(String id,
                       long timeout)
Check the cache for the nodes.

Getting nodes from the cache does not update its time in terms of a timeout. Only using the update(java.lang.String, com.bea.content.Node[]) method to update the cache will do that.

Parameters
id - the cache id of the nodes.
timeout - the timeout in ms. for the nodes (less than 0 for no timeout).
Returns
the array of nodes, or null if not found or has timed out.

getNode

public Node getNode(String id,
                    long timeout)
Check the cache for the node.

Getting a node from the cache does not update its time in terms of a timeout. Only using the update(java.lang.String, com.bea.content.Node[]) method to update the cache will do that.

Parameters
id - the cache id of the node.
timeout - the timeout in ms. for the nodes (less than 0 for no timeout).
Returns
the Node, or null if not found or has timed out.

getCachedTime

public long getCachedTime(String id)
Get the UTC time (in ms.) of when the nodes at id were cached.

Parameters
id - the cache id of the nodes.
Returns
the time, or -1 if id is not a valid cache id.

getNumCacheIds

public int getNumCacheIds()
Get the number of cache ids in the cache.


getCacheIds

public List getCacheIds()
Get an unordered list of all the cache ids.

Since the keys will all be Strings, this can be sorted with Collections.sort(java.util.List).


getCacheSize

public long getCacheSize()
Get the total number of nodes objects cached (across all ids).


update

public void update(String id,
                   Node[] nodes)
Update the cache with the nodes.

This can be used for new or existing nodes in the cache.

Parameters
id - cache id of the nodes.
nodes - the nodes (null to remove).

update

public void update(String id,
                   Node node)
Update the cache with the Node.

This can be used for new or existing Nodes in the cache.

Parameters
id - cache id of the Node.
node - the Node (null to remove).

remove

public Node[] remove(String id)
Clear a particular entry from the cache.

Parameters
id - the cache id of the nodes.
Returns
the cached nodes at the id, or null if none.

clear

public void clear()
Clear the entire cache.


valueBound

public void valueBound(javax.servlet.http.HttpSessionBindingEvent evt)
Called when we're bound into an HttpSession.

Specified by:
valueBound in interface javax.servlet.http.HttpSessionBindingListener

valueUnbound

public void valueUnbound(javax.servlet.http.HttpSessionBindingEvent evt)
Called when we're unbound from an HttpSession, and clears the cache.

Specified by:
valueUnbound in interface javax.servlet.http.HttpSessionBindingListener
See Also
clear()

bindToSession

public static void bindToSession(NodeCache cache,
                                 javax.servlet.http.HttpSession session)
Bind a NodeCache to an HttpSession.

This will use DEF_CACHE_NAME as the session attribute name for the cache.

Parameters
cache - the nodes cache object.
session - the http session.

getFromSession

public static NodeCache getFromSession(javax.servlet.http.HttpSession session,
                                       boolean create)
Get a NodeCache from an HttpSession.

This will retrieve the cache from the session attribute named DEF_CACHE_NAME. If that is set and is not a NodeCache will be removed.

Parameters
session - the http session.
create - true to create a NodeCache, if it's not there, false to not and return null.
Returns
the cache if it exists or create was true, null if it didn't exist and create was false.

getNodeCache

public static NodeCache getNodeCache(javax.servlet.jsp.PageContext ctx,
                                     int scope,
                                     boolean create)
Get a NodeCache from the specified JSP context.

This will retrieve the NodeCache from the JSP context based upon the specified scope at the attribute named DEF_CACHE_NAME. If that is set and is not a NodeCache will be removed.

Parameters
ctx - the JSP page context.
scope - the cache scope (one of PageContext.APPLICATION_SCOPE, PageContext.PAGE_SCOPE, PageContext.REQUEST_SCOPE, or PageContext.SESSION_SCOPE).
create - true to create a NodeCache it's not there, false to not and return null.
Returns
the cache if it exists or create was true, null if it didn't exist and create was false.

getNodeCache

public static NodeCache getNodeCache(javax.servlet.jsp.PageContext ctx,
                                     String scopeStr,
                                     boolean create)
Get a NodeCache from the specified JSP context.

If scopeStr is "application", then PageContext.APPLICATION_SCOPE is used; if scopeStr is "page", then PageContext.PAGE_SCOPE is used; if scopeStr is "request", then PageContext.REQUEST_SCOPE is used; if scopeStr is "session", then PageContext.SESSION_SCOPE is used; otherwise, scopeStr is passed to ctx.getAttributesScope() which will determine the scope to use.

Parameters
ctx - the JSP page context.
scopeStr - the scope name.
create - true to create a NodeCache it's not there, false to not and return null.
Returns
the cache if it exists or create was true, null if it didn't exist and create was false.

getAttribute

public static Object getAttribute(javax.servlet.jsp.PageContext ctx,
                                  String name,
                                  int scope)
Get a scoped attribute correctly from the JSP page context.

Parameters
ctx - the JSP page context.
name - the attribute name.
scope - the attribute scope (PageContext.APPLICATION_SCOPE, PageContext.PAGE_SCOPE, PageContext.REQUEST_SCOPE, PageContext.SESSION_SCOPE).

setAttribute

public static void setAttribute(javax.servlet.jsp.PageContext ctx,
                                String name,
                                Object val,
                                int scope)
Set a scoped attribute correctly in the JSP page context.

Parameters
ctx - the JSP page context.
name - the attribute name.
val - the attribute value.
scope - the attribute scope (PageContext.APPLICATION_SCOPE, PageContext.PAGE_SCOPE, PageContext.REQUEST_SCOPE, PageContext.SESSION_SCOPE).

removeAttribute

public static void removeAttribute(javax.servlet.jsp.PageContext ctx,
                                   String name,
                                   int scope)
Remove a scoped attribute correctly from the JSP page context.

Parameters
ctx - the JSP page context.
name - the attribute name.
scope - the attribute scope (PageContext.APPLICATION_SCOPE, PageContext.PAGE_SCOPE, PageContext.REQUEST_SCOPE, PageContext.SESSION_SCOPE).

getScopeName

public static String getScopeName(int scope)
Get the scope name based upon the scope id.



Copyright © 2000, 2008, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.