blob: b8e37e47695d6517ee249de5a4ba8f91aee787e5 [file] [log] [blame]
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.LinkedList" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="org.apache.jcs.admin.*" %>
<jsp:useBean id="jcsBean" scope="request" class="org.apache.jcs.admin.JCSAdminBean" />
<html>
<head><title> JCS Admin Servlet </title></head>
<body>
<%
String CACHE_NAME_PARAM = "cacheName";
String ACTION_PARAM = "action";
String CLEAR_ALL_REGIONS_ACTION = "clearAllRegions";
String CLEAR_REGION_ACTION = "clearRegion";
String REMOVE_ACTION = "remove";
String DETAIL_ACTION = "detail";
String KEY_PARAM = "key";
String SILENT_PARAM = "silent";
String DEFAULT_TEMPLATE_NAME = "DEFAULT";
String REGION_DETAIL_TEMPLATE_NAME = "DETAIL";
String templateName = DEFAULT_TEMPLATE_NAME;
HashMap context = new HashMap();
// Get cacheName for actions from request (might be null)
String cacheName = request.getParameter( CACHE_NAME_PARAM );
// If an action was provided, handle it
String action = request.getParameter( ACTION_PARAM );
if ( action != null )
{
if ( action.equals( CLEAR_ALL_REGIONS_ACTION ) )
{
jcsBean.clearAllRegions();
}
else if ( action.equals( CLEAR_REGION_ACTION ) )
{
if ( cacheName == null )
{
// Not Allowed
}
else
{
jcsBean.clearRegion( cacheName );
}
}
else if ( action.equals( REMOVE_ACTION ) )
{
String[] keys = request.getParameterValues( KEY_PARAM );
for ( int i = 0; i < keys.length; i++ )
{
jcsBean.removeItem( cacheName, keys[ i ] );
}
templateName = REGION_DETAIL_TEMPLATE_NAME;
}
else if ( action.equals( DETAIL_ACTION ) )
{
templateName = REGION_DETAIL_TEMPLATE_NAME;
}
}
if ( request.getParameter( SILENT_PARAM ) != null )
{
// If silent parameter was passed, no output should be produced.
//return null;
}
else
{
// Populate the context based on the template
if ( templateName == REGION_DETAIL_TEMPLATE_NAME )
{
//context.put( "cacheName", cacheName );
context.put( "elementInfoRecords", jcsBean.buildElementInfo( cacheName ) );
}
else if ( templateName == DEFAULT_TEMPLATE_NAME )
{
context.put( "cacheInfoRecords", jcsBean.buildCacheInfo() );
}
}
//handle display
if ( templateName == REGION_DETAIL_TEMPLATE_NAME ) {
%>
<h1> Keys for region: $cacheName </h1>
<table border="1" cellpadding="5" >
<tr>
<th> Key </th>
<th> Eternal? </th>
<th> Create time </th>
<th> Max Life (s) </th>
<th> Till Expiration (s) </th>
</tr>
<%
List list = (List)context.get( "elementInfoRecords" );
Iterator it = list.iterator();
while ( it.hasNext() ) {
CacheElementInfo element = (CacheElementInfo)it.next();
%>
<tr>
<td> <%=element.getKey()%> </td>
<td> <%=element.isEternal()%> </td>
<td> <%=element.getCreateTime()%> </td>
<td> <%=element.getMaxLifeSeconds()%> </td>
<td> <%=element.getExpiresInSeconds()%> </td>
<td> <a href="?action=remove&cacheName=<%=cacheName%>&key=<%=element.getKey()%>"> Remove </a> </td>
</tr>
<%
}
} else {
%>
<h1> Cache Regions </h1>
<p>These are the regions which are currently defined in the cache. 'Items' and
'Bytes' refer to the elements currently in memory (not spooled). You can clear
all items for a region by selecting 'Remove all' next to the desired region
below. You can also <a href="?action=clearAllRegions">Clear all regions</a>
which empties the entire cache.</p>
<table border="1" cellpadding="5" >
<tr>
<th> Cache Name </th>
<th> Items </th>
<th> Bytes </th>
<th> Status </th>
<th> Memory Hits </th>
<th> Aux Hits </th>
<th> Not Found Misses </th>
<th> Expired Misses </th>
</tr>
<%
List list = (List)context.get( "cacheInfoRecords" );
Iterator it = list.iterator();
while (it.hasNext() ) {
CacheRegionInfo record = (CacheRegionInfo)it.next();
%>
<tr>
<td> <%=record.getCache().getCacheName()%> </td>
<td> <%=record.getCache().getSize()%> </td>
<td> <%=record.getByteCount()%> </td>
<td> <%=record.getStatus()%> </td>
<td> <%=record.getCache().getHitCountRam()%> </td>
<td> <%=record.getCache().getHitCountAux()%> </td>
<td> <%=record.getCache().getMissCountNotFound()%> </td>
<td> <%=record.getCache().getMissCountExpired()%> </td>
<td>
<a href="?action=detail&cacheName=<%=record.getCache().getCacheName()%>"> Detail </a>
| <a href="?action=clearRegion&cacheName=<%=record.getCache().getCacheName()%>"> Remove all </a>
</td>
</tr>
<%
}
}
%>
</table>
</body>
</html>