SOLR-584: make stats.jsp and stats.xsl more robust to new info as they are added - spurred by core name not being displayed properly, fix also includes section for highlighting plugins and some general major refactoring of stats.xsl

git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/trunk@672961 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Chris M. Hostetter 2008-07-01 00:24:25 +00:00
parent 1fb3859f7c
commit ceebb01ec2
3 changed files with 66 additions and 288 deletions

View File

@ -446,6 +446,8 @@ Bug Fixes
37. SOLR-604: If the spellchecking path is relative, make it relative to the Solr Data Directory. (Shalin Shekhar Mangar via gsingers)
38. SOLR-584: Make stats.jsp and stats.xsl more robust.
(Yousef Ourabi and hossman)
Other Changes
1. SOLR-135: Moved common classes to org.apache.solr.common and altered the

View File

@ -25,7 +25,10 @@
<solr>
<core><%=core.getName()%></core>
<%
if (core.getName() != null) { %>
<core><%=core.getName()%></core>
<% } %>
<schema><%= collectionName %></schema>
<host><%= hostname %></host>
<now><%= new Date().toString() %></now>

View File

@ -33,19 +33,26 @@
<xsl:template match="/">
<xsl:variable name="title">
<!-- no whitespace before the colon -->
Solr Statistics<xsl:if test="solr/core">:
<xsl:value-of select="solr/core"/>
</xsl:if>
(<xsl:value-of select="solr/schema" />)
</xsl:variable>
<html>
<head>
<link rel="stylesheet" type="text/css" href="solr-admin.css"></link>
<link rel="icon" href="/favicon.ico" type="image/ico"></link>
<link rel="shortcut icon" href="/favicon.ico" type="image/ico"></link>
<title>SOLR Statistics</title>
<title><xsl:value-of select="$title"/></title>
</head>
<body>
<a href=".">
<img border="0" align="right" height="61" width="142" src="solr-head.gif" alt="SOLR">
</img>
</a>
<h1>SOLR Statistics (<xsl:value-of select="solr/schema" />)</h1>
<h1><xsl:value-of select="$title"/></h1>
<xsl:value-of select="solr/host" />
<br clear="all" />
<xsl:apply-templates/>
@ -66,6 +73,7 @@
[<a href="#cache">Cache</a>]
[<a href="#query">Query</a>]
[<a href="#update">Update</a>]
[<a href="#highlight">Highlighting</a>]
[<a href="#other">Other</a>]
</td>
</tr>
@ -83,314 +91,79 @@
Server Start Time: <xsl:value-of select="start" />
</td>
</tr>
<xsl:apply-templates select="*" mode="header" />
</table>
<xsl:apply-templates/>
<xsl:apply-templates select="solr-info" mode="main" />
</xsl:template>
<xsl:template match="solr/schema" />
<xsl:template match="solr/host" />
<xsl:template match="solr/now" />
<xsl:template match="solr/start" />
<xsl:template match="solr/solr-info">
<xsl:apply-templates/>
<!-- catch all in case new header info gets added to XML -->
<xsl:template match="solr/*" mode="header" priority="-10">
<tr>
<td>
</td>
<td>
<xsl:value-of select="local-name()" />: <xsl:value-of select="text()" />
</td>
</tr>
</xsl:template>
<xsl:template match="solr/solr-info/CORE">
<!-- things we've already explicitly taken care of -->
<xsl:template match="solr/schema" mode="header" />
<xsl:template match="solr/core" mode="header" />
<xsl:template match="solr/host" mode="header" />
<xsl:template match="solr/now" mode="header" />
<xsl:template match="solr/start" mode="header" />
<xsl:template match="solr/solr-info" mode="header" />
<xsl:template match="solr/solr-info" mode="main">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="solr/solr-info/*">
<br />
<xsl:apply-templates select="." mode="sub-header" />
<table>
<tr>
<td align="right">
&#xa0;
</td>
<td>
</td>
</tr>
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match="solr/solr-info/CORE" mode="sub-header">
<a name="core"><h2>Core</h2></a>
<table>
<tr>
<td align="right">
&#xa0;
</td>
<td>
</td>
</tr>
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match="solr/solr-info/CORE/entry">
<tr>
<td align="right">
<strong>name:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="name"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>class:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="class"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>version:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="version"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>description:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="description"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>stats:&#xa0;</strong>
</td>
<td>
<xsl:for-each select="stats/stat[@name]">
<xsl:value-of select="@name"/>
<xsl:text> : </xsl:text>
<xsl:variable name="name" select="@name" />
<xsl:value-of select="." /><br />
</xsl:for-each>
</td>
</tr>
<tr>
<td align="right">
</td>
<td>
</td>
</tr>
</xsl:template>
<xsl:template match="solr/solr-info/CACHE">
<br />
<xsl:template match="solr/solr-info/CACHE" mode="sub-header">
<a name="cache"><h2>Cache</h2></a>
<table>
<tr>
<td align="right">
&#xa0;
</td>
<td>
</td>
</tr>
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match="solr/solr-info/CACHE/entry">
<tr>
<td align="right">
<strong>name:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="name"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>class:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="class"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>version:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="version"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>description:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="description"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>stats:&#xa0;</strong>
</td>
<td>
<xsl:for-each select="stats/stat[@name]">
<xsl:value-of select="@name"/>
<xsl:text> : </xsl:text>
<xsl:variable name="name" select="@name" />
<xsl:value-of select="." /><br />
</xsl:for-each>
</td>
</tr>
<tr>
<td align="right">
</td>
<td>
</td>
</tr>
</xsl:template>
<xsl:template match="solr/solr-info/QUERYHANDLER">
<br />
<xsl:template match="solr/solr-info/QUERYHANDLER" mode="sub-header">
<a name="query"><h2>Query Handlers</h2></a>
<table>
<tr>
<td align="right">
&#xa0;
</td>
<td>
</td>
</tr>
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match="solr/solr-info/QUERYHANDLER/entry">
<tr>
<td align="right">
<strong>name:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="name"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>class:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="class"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>version:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="version"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>description:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="description"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>stats:&#xa0;</strong>
</td>
<td>
<xsl:for-each select="stats/stat[@name]">
<xsl:value-of select="@name"/>
<xsl:text> : </xsl:text>
<xsl:variable name="name" select="@name" />
<xsl:value-of select="." /><br />
</xsl:for-each>
</td>
</tr>
<tr>
<td align="right">
</td>
<td>
</td>
</tr>
</xsl:template>
<xsl:template match="solr/solr-info/UPDATEHANDLER">
<br />
<xsl:template match="solr/solr-info/UPDATEHANDLER" mode="sub-header">
<a name="update"><h2>Update Handlers</h2></a>
<table>
<tr>
<td align="right">
&#xa0;
</td>
<td>
</td>
</tr>
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match="solr/solr-info/UPDATEHANDLER/entry">
<tr>
<td align="right">
<strong>name:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="name"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>class:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="class"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>version:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="version"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>description:&#xa0;</strong>
</td>
<td>
<tt><xsl:value-of select="description"/>&#xa0;</tt>
</td>
</tr>
<tr>
<td align="right">
<strong>stats:&#xa0;</strong>
</td>
<td>
<xsl:for-each select="stats/stat[@name]">
<xsl:value-of select="@name"/>
<xsl:text> : </xsl:text>
<xsl:variable name="name" select="@name" />
<xsl:value-of select="." /><br />
</xsl:for-each>
</td>
</tr>
<tr>
<td align="right">
</td>
<td>
</td>
</tr>
<xsl:template match="solr/solr-info/HIGHLIGHTING" mode="sub-header">
<a name="highlight"><h2>Highlighting</h2></a>
</xsl:template>
<xsl:template match="solr/solr-info/OTHER">
<br />
<!-- catch all for new types of plugins -->
<xsl:template match="solr/solr-info/*" mode="sub-header" priority="-10">
<h2><xsl:value-of select="local-name()"/></h2>
</xsl:template>
<xsl:template match="solr/solr-info/OTHER" mode="sub-header">
<a name="other"><h2>Other</h2></a>
<table>
<tr>
<td align="right">
&#xa0;
</td>
<td>
</td>
</tr>
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match="solr/solr-info/OTHER/entry">
<xsl:template match="solr/solr-info/*/entry">
<tr>
<td align="right">
<strong>name:&#xa0;</strong>