<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (version 1.7.0_25) on Mon Jul 01 12:09:06 CEST 2013 -->
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>Index (Apache Felix Web Management Console 3.1.0 API)</title>
<meta name="date" content="2013-07-01">
<link rel="stylesheet" type="text/css" href="./stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="Index (Apache Felix Web Management Console 3.1.0 API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="./org/apache/felix/webconsole/package-summary.html">Package</a></li>
<li>Class</li>
<li>Use</li>
<li><a href="./org/apache/felix/webconsole/package-tree.html">Tree</a></li>
<li><a href="./deprecated-list.html">Deprecated</a></li>
<li class="navBarCell1Rev">Index</li>
<li><a href="./help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="./index.html?index-all.html" target="_top">Frames</a></li>
<li><a href="index-all.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="./allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="contentContainer"><a href="#_A_">A</a>&nbsp;<a href="#_B_">B</a>&nbsp;<a href="#_C_">C</a>&nbsp;<a href="#_D_">D</a>&nbsp;<a href="#_E_">E</a>&nbsp;<a href="#_G_">G</a>&nbsp;<a href="#_I_">I</a>&nbsp;<a href="#_K_">K</a>&nbsp;<a href="#_L_">L</a>&nbsp;<a href="#_M_">M</a>&nbsp;<a href="#_O_">O</a>&nbsp;<a href="#_P_">P</a>&nbsp;<a href="#_R_">R</a>&nbsp;<a href="#_S_">S</a>&nbsp;<a href="#_T_">T</a>&nbsp;<a href="#_U_">U</a>&nbsp;<a href="#_V_">V</a>&nbsp;<a href="#_W_">W</a>&nbsp;<a name="_A_">
<!--   -->
</a>
<h2 class="title">A</h2>
<dl>
<dt><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole"><span class="strong">AbstractWebConsolePlugin</span></a> - Class in <a href="./org/apache/felix/webconsole/package-summary.html">org.apache.felix.webconsole</a></dt>
<dd>
<div class="block">The Web Console can be extended by registering an OSGi service for the interface
 <code>Servlet</code> with the service property
 <code>felix.webconsole.label</code> set to the label (last segment in the URL)
 of the page.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#AbstractWebConsolePlugin()">AbstractWebConsolePlugin()</a></span> - Constructor for class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>&nbsp;</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#activate(org.osgi.framework.BundleContext)">activate(BundleContext)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">This method is called from the Felix Web Console to ensure the
 AbstractWebConsolePlugin is correctly setup.</div>
</dd>
<dt><a href="./org/apache/felix/webconsole/AttachmentProvider.html" title="interface in org.apache.felix.webconsole"><span class="strong">AttachmentProvider</span></a> - Interface in <a href="./org/apache/felix/webconsole/package-summary.html">org.apache.felix.webconsole</a></dt>
<dd>
<div class="block">This is an optional extension of the <a href="./org/apache/felix/webconsole/ConfigurationPrinter.html" title="interface in org.apache.felix.webconsole"><code>ConfigurationPrinter</code></a>.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleConstants.html#ATTR_APP_ROOT">ATTR_APP_ROOT</a></span> - Static variable in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleConstants.html" title="interface in org.apache.felix.webconsole">WebConsoleConstants</a></dt>
<dd>
<div class="block">The name of the request attribute providing the absolute path of the
 Web Console root (value is "felix.webconsole.appRoot").</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleConstants.html#ATTR_CONSOLE_VARIABLE_RESOLVER">ATTR_CONSOLE_VARIABLE_RESOLVER</a></span> - Static variable in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleConstants.html" title="interface in org.apache.felix.webconsole">WebConsoleConstants</a></dt>
<dd>
<div class="block">The name of the request attribute holding the <a href="./org/apache/felix/webconsole/VariableResolver.html" title="interface in org.apache.felix.webconsole"><code>VariableResolver</code></a>
 for the request (value is "felix.webconsole.variable.resolver").</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#ATTR_FILEUPLOAD">ATTR_FILEUPLOAD</a></span> - Static variable in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">The name of the request attribute containing the map of FileItems from the POST request</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleConstants.html#ATTR_LABEL_MAP">ATTR_LABEL_MAP</a></span> - Static variable in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleConstants.html" title="interface in org.apache.felix.webconsole">WebConsoleConstants</a></dt>
<dd>
<div class="block">The name of the request attribute providing a mapping of labels to page
 titles of registered console plugins (value is "felix.webconsole.labelMap").</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleConstants.html#ATTR_PLUGIN_ROOT">ATTR_PLUGIN_ROOT</a></span> - Static variable in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleConstants.html" title="interface in org.apache.felix.webconsole">WebConsoleConstants</a></dt>
<dd>
<div class="block">The name of the request attribute providing the absolute path of the
 current plugin (value is "felix.webconsole.pluginRoot").</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleSecurityProvider.html#authenticate(java.lang.String, java.lang.String)">authenticate(String, String)</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleSecurityProvider.html" title="interface in org.apache.felix.webconsole">WebConsoleSecurityProvider</a></dt>
<dd>
<div class="block">Check if the user with the specified password exists and return an object identifying the user, else null</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleSecurityProvider.html#authorize(java.lang.Object, java.lang.String)">authorize(Object, String)</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleSecurityProvider.html" title="interface in org.apache.felix.webconsole">WebConsoleSecurityProvider</a></dt>
<dd>
<div class="block">Check that the authenticated user has the given role permission</div>
</dd>
</dl>
<a name="_B_">
<!--   -->
</a>
<h2 class="title">B</h2>
<dl>
<dt><a href="./org/apache/felix/webconsole/BrandingPlugin.html" title="interface in org.apache.felix.webconsole"><span class="strong">BrandingPlugin</span></a> - Interface in <a href="./org/apache/felix/webconsole/package-summary.html">org.apache.felix.webconsole</a></dt>
<dd>
<div class="block">The <code>BrandingPlugin</code> is the service interface for the most
 elaborate way of branding the web console.</div>
</dd>
</dl>
<a name="_C_">
<!--   -->
</a>
<h2 class="title">C</h2>
<dl>
<dt><a href="./org/apache/felix/webconsole/ConfigurationPrinter.html" title="interface in org.apache.felix.webconsole"><span class="strong">ConfigurationPrinter</span></a> - Interface in <a href="./org/apache/felix/webconsole/package-summary.html">org.apache.felix.webconsole</a></dt>
<dd>
<div class="block">The <code>ConfigurationPrinter</code> is a service interface to be used by
 providers which want to hook into the display of the current configuration
 of the OSGi framework.</div>
</dd>
</dl>
<a name="_D_">
<!--   -->
</a>
<h2 class="title">D</h2>
<dl>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#deactivate()">deactivate()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">This method is called, by the Web Console to de-activate the plugin and release
 all used resources.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html#deactivate()">deactivate()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html" title="class in org.apache.felix.webconsole">SimpleWebConsolePlugin</a></dt>
<dd>
<div class="block">This method will close all service trackers, created by
 <a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html#getService(java.lang.String)"><code>SimpleWebConsolePlugin.getService(String)</code></a> method.</div>
</dd>
<dt><a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html" title="class in org.apache.felix.webconsole"><span class="strong">DefaultBrandingPlugin</span></a> - Class in <a href="./org/apache/felix/webconsole/package-summary.html">org.apache.felix.webconsole</a></dt>
<dd>
<div class="block">The <code>DefaultBrandingPlugin</code> class is the default implementation
 of the <a href="./org/apache/felix/webconsole/BrandingPlugin.html" title="interface in org.apache.felix.webconsole"><code>BrandingPlugin</code></a> interface.</div>
</dd>
<dt><a href="./org/apache/felix/webconsole/DefaultVariableResolver.html" title="class in org.apache.felix.webconsole"><span class="strong">DefaultVariableResolver</span></a> - Class in <a href="./org/apache/felix/webconsole/package-summary.html">org.apache.felix.webconsole</a></dt>
<dd>
<div class="block">The <code>DefaultVariableResolver</code> is a <code>HashMap</code> based
 default implementation of the <a href="./org/apache/felix/webconsole/VariableResolver.html" title="interface in org.apache.felix.webconsole"><code>VariableResolver</code></a> interface.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultVariableResolver.html#DefaultVariableResolver()">DefaultVariableResolver()</a></span> - Constructor for class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultVariableResolver.html" title="class in org.apache.felix.webconsole">DefaultVariableResolver</a></dt>
<dd>
<div class="block">Creates a new variable resolver with default capacity.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultVariableResolver.html#DefaultVariableResolver(int, float)">DefaultVariableResolver(int, float)</a></span> - Constructor for class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultVariableResolver.html" title="class in org.apache.felix.webconsole">DefaultVariableResolver</a></dt>
<dd>
<div class="block">Creates a new variable resolver and initializes both - capacity & load factor</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultVariableResolver.html#DefaultVariableResolver(int)">DefaultVariableResolver(int)</a></span> - Constructor for class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultVariableResolver.html" title="class in org.apache.felix.webconsole">DefaultVariableResolver</a></dt>
<dd>
<div class="block">Creates a new variable resolver with specified initial capacity</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultVariableResolver.html#DefaultVariableResolver(java.util.Map)">DefaultVariableResolver(Map)</a></span> - Constructor for class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultVariableResolver.html" title="class in org.apache.felix.webconsole">DefaultVariableResolver</a></dt>
<dd>
<div class="block">Creates a new variable resolver copying the variables from the given map.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)">doGet(HttpServletRequest, HttpServletResponse)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Renders the web console page for the request.</div>
</dd>
</dl>
<a name="_E_">
<!--   -->
</a>
<h2 class="title">E</h2>
<dl>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#endResponse(java.io.PrintWriter)">endResponse(PrintWriter)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">This method is responsible for generating the footer of the page.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleUtil.html#escapeHtml(java.lang.String)">escapeHtml(String)</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleUtil.html" title="class in org.apache.felix.webconsole">WebConsoleUtil</a></dt>
<dd>
<div class="block">Escapes HTML special chars like: <>&\r\n and space</div>
</dd>
</dl>
<a name="_G_">
<!--   -->
</a>
<h2 class="title">G</h2>
<dl>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#GET_RESOURCE_METHOD_NAME">GET_RESOURCE_METHOD_NAME</a></span> - Static variable in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Web Console Plugin typically consists of servlet and resources such as images,
 scripts or style sheets.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AttachmentProvider.html#getAttachments(java.lang.String)">getAttachments(String)</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AttachmentProvider.html" title="interface in org.apache.felix.webconsole">AttachmentProvider</a></dt>
<dd>
<div class="block">Return an array of attachments for the given render mode.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#getBrandingPlugin()">getBrandingPlugin()</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Returns the <a href="./org/apache/felix/webconsole/BrandingPlugin.html" title="interface in org.apache.felix.webconsole"><code>BrandingPlugin</code></a> currently used for web console
 branding.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/BrandingPlugin.html#getBrandName()">getBrandName()</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/BrandingPlugin.html" title="interface in org.apache.felix.webconsole">BrandingPlugin</a></dt>
<dd>
<div class="block">Returns an indicative name of the branding plugin.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html#getBrandName()">getBrandName()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html" title="class in org.apache.felix.webconsole">DefaultBrandingPlugin</a></dt>
<dd>&nbsp;</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#getBundle()">getBundle()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Returns the <code>Bundle</code> pertaining to the
 <a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#getBundleContext()"><code>bundle context</code></a> with which this plugin has
 been activated.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#getBundleContext()">getBundleContext()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Returns the <code>BundleContext</code> with which this plugin has been
 activated.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#getCssReferences()">getCssReferences()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Returns a list of CSS reference paths or <code>null</code> if no
 additional CSS files are provided by the plugin.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html#getCssReferences()">getCssReferences()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html" title="class in org.apache.felix.webconsole">SimpleWebConsolePlugin</a></dt>
<dd>&nbsp;</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/BrandingPlugin.html#getFavIcon()">getFavIcon()</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/BrandingPlugin.html" title="interface in org.apache.felix.webconsole">BrandingPlugin</a></dt>
<dd>
<div class="block">Returns the absolute path to an icon to be used as the web console
 "favicon".</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html#getFavIcon()">getFavIcon()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html" title="class in org.apache.felix.webconsole">DefaultBrandingPlugin</a></dt>
<dd>&nbsp;</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html#getInstance()">getInstance()</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html" title="class in org.apache.felix.webconsole">DefaultBrandingPlugin</a></dt>
<dd>
<div class="block">Retrieves the shared instance</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#getLabel()">getLabel()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Retrieves the label.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html#getLabel()">getLabel()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html" title="class in org.apache.felix.webconsole">SimpleWebConsolePlugin</a></dt>
<dd>&nbsp;</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/BrandingPlugin.html#getMainStyleSheet()">getMainStyleSheet()</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/BrandingPlugin.html" title="interface in org.apache.felix.webconsole">BrandingPlugin</a></dt>
<dd>
<div class="block">Returns the absolute path to a CSS file to be used as the main CSS for
 the basic admin site.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html#getMainStyleSheet()">getMainStyleSheet()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html" title="class in org.apache.felix.webconsole">DefaultBrandingPlugin</a></dt>
<dd>&nbsp;</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#getParameter(javax.servlet.http.HttpServletRequest, java.lang.String)">getParameter(HttpServletRequest, String)</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block"><span class="strong">Deprecated.</span>
<div class="block"><i>use <a href="./org/apache/felix/webconsole/WebConsoleUtil.html#getParameter(javax.servlet.http.HttpServletRequest, java.lang.String)"><code>WebConsoleUtil.getParameter(HttpServletRequest, String)</code></a></i></div>
</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleUtil.html#getParameter(javax.servlet.http.HttpServletRequest, java.lang.String)">getParameter(HttpServletRequest, String)</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleUtil.html" title="class in org.apache.felix.webconsole">WebConsoleUtil</a></dt>
<dd>
<div class="block">An utility method, that is used to filter out simple parameter from file
 parameter when multipart transfer encoding is used.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleUtil.html#getParameterInt(javax.servlet.http.HttpServletRequest, java.lang.String, int)">getParameterInt(HttpServletRequest, String, int)</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleUtil.html" title="class in org.apache.felix.webconsole">WebConsoleUtil</a></dt>
<dd>
<div class="block">Retrieves a request parameter and converts it to int.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/BrandingPlugin.html#getProductImage()">getProductImage()</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/BrandingPlugin.html" title="interface in org.apache.felix.webconsole">BrandingPlugin</a></dt>
<dd>
<div class="block">Returns an absolute path to an image to be rendered as the logo of the
 branding product.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html#getProductImage()">getProductImage()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html" title="class in org.apache.felix.webconsole">DefaultBrandingPlugin</a></dt>
<dd>&nbsp;</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/BrandingPlugin.html#getProductName()">getProductName()</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/BrandingPlugin.html" title="interface in org.apache.felix.webconsole">BrandingPlugin</a></dt>
<dd>
<div class="block">Returns the name of the product in which the web console is contained
 and to which the web console is branded.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html#getProductName()">getProductName()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html" title="class in org.apache.felix.webconsole">DefaultBrandingPlugin</a></dt>
<dd>&nbsp;</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/BrandingPlugin.html#getProductURL()">getProductURL()</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/BrandingPlugin.html" title="interface in org.apache.felix.webconsole">BrandingPlugin</a></dt>
<dd>
<div class="block">Returns an (absolute) URL to a web site representing the product to
 which the web console is branded.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html#getProductURL()">getProductURL()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html" title="class in org.apache.felix.webconsole">DefaultBrandingPlugin</a></dt>
<dd>&nbsp;</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html#getResource(java.lang.String)">getResource(String)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html" title="class in org.apache.felix.webconsole">SimpleWebConsolePlugin</a></dt>
<dd>
<div class="block">Called internally by <a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole"><code>AbstractWebConsolePlugin</code></a> to load resources.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#getResourceProvider()">getResourceProvider()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Returns the object which might provide resources.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html#getService(java.lang.String)">getService(String)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html" title="class in org.apache.felix.webconsole">SimpleWebConsolePlugin</a></dt>
<dd>
<div class="block">Gets the service with the specified class name.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#getServletName()">getServletName()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Returns the title for this plugin as returned by <a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#getTitle()"><code>getTitle()</code></a></div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#getTitle()">getTitle()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Retrieves the title of the plug-in.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/ConfigurationPrinter.html#getTitle()">getTitle()</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/ConfigurationPrinter.html" title="interface in org.apache.felix.webconsole">ConfigurationPrinter</a></dt>
<dd>
<div class="block">Returns a human readable title string to be placed in front of the configuration
 report generated by the <a href="./org/apache/felix/webconsole/ConfigurationPrinter.html#printConfiguration(java.io.PrintWriter)"><code>ConfigurationPrinter.printConfiguration(PrintWriter)</code></a> method.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html#getTitle()">getTitle()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html" title="class in org.apache.felix.webconsole">SimpleWebConsolePlugin</a></dt>
<dd>&nbsp;</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleUtil.html#getVariableResolver(javax.servlet.ServletRequest)">getVariableResolver(ServletRequest)</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleUtil.html" title="class in org.apache.felix.webconsole">WebConsoleUtil</a></dt>
<dd>
<div class="block">Returns the <a href="./org/apache/felix/webconsole/VariableResolver.html" title="interface in org.apache.felix.webconsole"><code>VariableResolver</code></a> for the given request.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/BrandingPlugin.html#getVendorImage()">getVendorImage()</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/BrandingPlugin.html" title="interface in org.apache.felix.webconsole">BrandingPlugin</a></dt>
<dd>
<div class="block">Returns an absolute path to an image to be rendered as the logo of the
 branding product vendor.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html#getVendorImage()">getVendorImage()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html" title="class in org.apache.felix.webconsole">DefaultBrandingPlugin</a></dt>
<dd>&nbsp;</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/BrandingPlugin.html#getVendorName()">getVendorName()</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/BrandingPlugin.html" title="interface in org.apache.felix.webconsole">BrandingPlugin</a></dt>
<dd>
<div class="block">Returns the name of the branding product vendor.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html#getVendorName()">getVendorName()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html" title="class in org.apache.felix.webconsole">DefaultBrandingPlugin</a></dt>
<dd>&nbsp;</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/BrandingPlugin.html#getVendorURL()">getVendorURL()</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/BrandingPlugin.html" title="interface in org.apache.felix.webconsole">BrandingPlugin</a></dt>
<dd>
<div class="block">Returns an (absolute) URL to the web site of the branding product
 vendor.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html#getVendorURL()">getVendorURL()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultBrandingPlugin.html" title="class in org.apache.felix.webconsole">DefaultBrandingPlugin</a></dt>
<dd>&nbsp;</dd>
</dl>
<a name="_I_">
<!--   -->
</a>
<h2 class="title">I</h2>
<dl>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#isHtmlRequest(javax.servlet.http.HttpServletRequest)">isHtmlRequest(HttpServletRequest)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Detects whether this request is intended to have the headers and
 footers of this plugin be rendered or not.</div>
</dd>
</dl>
<a name="_K_">
<!--   -->
</a>
<h2 class="title">K</h2>
<dl>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleUtil.html#keyVal(org.json.JSONWriter, java.lang.String, java.lang.Object)">keyVal(JSONWriter, String, Object)</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleUtil.html" title="class in org.apache.felix.webconsole">WebConsoleUtil</a></dt>
<dd>
<div class="block">Writes a key-value pair in a JSON writer.</div>
</dd>
</dl>
<a name="_L_">
<!--   -->
</a>
<h2 class="title">L</h2>
<dl>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#log(int, java.lang.String)">log(int, String)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Calls the <code>GenericServlet.log(String)</code> method if the
 configured log level is less than or equal to the given <code>level</code>.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#log(int, java.lang.String, java.lang.Throwable)">log(int, String, Throwable)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Calls the <code>GenericServlet.log(String, Throwable)</code> method if
 the configured log level is less than or equal to the given
 <code>level</code>.</div>
</dd>
</dl>
<a name="_M_">
<!--   -->
</a>
<h2 class="title">M</h2>
<dl>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/ConfigurationPrinter.html#MODE_ALWAYS">MODE_ALWAYS</a></span> - Static variable in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/ConfigurationPrinter.html" title="interface in org.apache.felix.webconsole">ConfigurationPrinter</a></dt>
<dd>
<div class="block">The default mode - this printer is used in the web console and the zip.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/ConfigurationPrinter.html#MODE_TXT">MODE_TXT</a></span> - Static variable in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/ConfigurationPrinter.html" title="interface in org.apache.felix.webconsole">ConfigurationPrinter</a></dt>
<dd>
<div class="block">The txt mode - this printer is used in the txt.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/ConfigurationPrinter.html#MODE_WEB">MODE_WEB</a></span> - Static variable in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/ConfigurationPrinter.html" title="interface in org.apache.felix.webconsole">ConfigurationPrinter</a></dt>
<dd>
<div class="block">The web mode - this printer is used in the web console.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/ConfigurationPrinter.html#MODE_ZIP">MODE_ZIP</a></span> - Static variable in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/ConfigurationPrinter.html" title="interface in org.apache.felix.webconsole">ConfigurationPrinter</a></dt>
<dd>
<div class="block">The zip mode - this printer is used in the zip.</div>
</dd>
<dt><a href="./org/apache/felix/webconsole/ModeAwareConfigurationPrinter.html" title="interface in org.apache.felix.webconsole"><span class="strong">ModeAwareConfigurationPrinter</span></a> - Interface in <a href="./org/apache/felix/webconsole/package-summary.html">org.apache.felix.webconsole</a></dt>
<dd>
<div class="block">This is an optional extension of the <a href="./org/apache/felix/webconsole/ConfigurationPrinter.html" title="interface in org.apache.felix.webconsole"><code>ConfigurationPrinter</code></a>.</div>
</dd>
</dl>
<a name="_O_">
<!--   -->
</a>
<h2 class="title">O</h2>
<dl>
<dt><a href="./org/apache/felix/webconsole/package-summary.html">org.apache.felix.webconsole</a> - package org.apache.felix.webconsole</dt>
<dd>&nbsp;</dd>
</dl>
<a name="_P_">
<!--   -->
</a>
<h2 class="title">P</h2>
<dl>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleConstants.html#PLUGIN_CSS_REFERENCES">PLUGIN_CSS_REFERENCES</a></span> - Static variable in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleConstants.html" title="interface in org.apache.felix.webconsole">WebConsoleConstants</a></dt>
<dd>
<div class="block">The name of the service registration properties providing references
 to addition CSS files that should be loaded when rendering the header
 for a registered plugin.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleConstants.html#PLUGIN_LABEL">PLUGIN_LABEL</a></span> - Static variable in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleConstants.html" title="interface in org.apache.felix.webconsole">WebConsoleConstants</a></dt>
<dd>
<div class="block">The URI address label under which the OSGi Manager plugin is called by
 the OSGi Manager (value is "felix.webconsole.label").</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleConstants.html#PLUGIN_TITLE">PLUGIN_TITLE</a></span> - Static variable in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleConstants.html" title="interface in org.apache.felix.webconsole">WebConsoleConstants</a></dt>
<dd>
<div class="block">The title under which the OSGi Manager plugin is called by
 the OSGi Manager (value is "felix.webconsole.title").</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/ConfigurationPrinter.html#printConfiguration(java.io.PrintWriter)">printConfiguration(PrintWriter)</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/ConfigurationPrinter.html" title="interface in org.apache.felix.webconsole">ConfigurationPrinter</a></dt>
<dd>
<div class="block">Prints the configuration report to the given <code>printWriter</code>.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/ModeAwareConfigurationPrinter.html#printConfiguration(java.io.PrintWriter, java.lang.String)">printConfiguration(PrintWriter, String)</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/ModeAwareConfigurationPrinter.html" title="interface in org.apache.felix.webconsole">ModeAwareConfigurationPrinter</a></dt>
<dd>
<div class="block">Prints the configuration report to the given <code>printWriter</code>.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/ConfigurationPrinter.html#PROPERTY_MODES">PROPERTY_MODES</a></span> - Static variable in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/ConfigurationPrinter.html" title="interface in org.apache.felix.webconsole">ConfigurationPrinter</a></dt>
<dd>
<div class="block">The optional service property specifying the modes of the printer.</div>
</dd>
</dl>
<a name="_R_">
<!--   -->
</a>
<h2 class="title">R</h2>
<dl>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#readTemplateFile(java.lang.String)">readTemplateFile(String)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Reads the <code>templateFile</code> as a resource through the class
 loader of this class converting the binary data into a string using
 UTF-8 encoding.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html#register(org.osgi.framework.BundleContext)">register(BundleContext)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html" title="class in org.apache.felix.webconsole">SimpleWebConsolePlugin</a></dt>
<dd>
<div class="block">This is an utility method.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#renderContent(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)">renderContent(HttpServletRequest, HttpServletResponse)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">This method is used to render the content of the plug-in.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#renderTopNavigation(javax.servlet.http.HttpServletRequest, java.io.PrintWriter)">renderTopNavigation(HttpServletRequest, PrintWriter)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">This method is called to generate the top level links with the available plug-ins.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/DefaultVariableResolver.html#resolve(java.lang.String)">resolve(String)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/DefaultVariableResolver.html" title="class in org.apache.felix.webconsole">DefaultVariableResolver</a></dt>
<dd>
<div class="block">Returns the string representation of the value stored under the variable
 name in this map.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/VariableResolver.html#resolve(java.lang.String)">resolve(String)</a></span> - Method in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/VariableResolver.html" title="interface in org.apache.felix.webconsole">VariableResolver</a></dt>
<dd>
<div class="block">Returns a replacement value for the named variable or <code>null</code>
 if no replacement is available.</div>
</dd>
</dl>
<a name="_S_">
<!--   -->
</a>
<h2 class="title">S</h2>
<dl>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#sendRedirect(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String)">sendRedirect(HttpServletRequest, HttpServletResponse, String)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block"><span class="strong">Deprecated.</span>
<div class="block"><i>use <a href="./org/apache/felix/webconsole/WebConsoleUtil.html#sendRedirect(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String)"><code>WebConsoleUtil.sendRedirect(HttpServletRequest, HttpServletResponse, String)</code></a></i></div>
</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleUtil.html#sendRedirect(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String)">sendRedirect(HttpServletRequest, HttpServletResponse, String)</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleUtil.html" title="class in org.apache.felix.webconsole">WebConsoleUtil</a></dt>
<dd>
<div class="block">Utility method to handle relative redirects.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/ConfigurationPrinter.html#SERVICE">SERVICE</a></span> - Static variable in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/ConfigurationPrinter.html" title="interface in org.apache.felix.webconsole">ConfigurationPrinter</a></dt>
<dd>
<div class="block">The service name under which services of this class must be registered
 to be picked for inclusion in the configuration report.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleConstants.html#SERVICE_NAME">SERVICE_NAME</a></span> - Static variable in interface org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleConstants.html" title="interface in org.apache.felix.webconsole">WebConsoleConstants</a></dt>
<dd>
<div class="block">The name of the service to register as to be used as a "plugin" for
 the OSGi Manager (value is "javax.servlet.Servlet").</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#setBrandingPlugin(org.apache.felix.webconsole.BrandingPlugin)">setBrandingPlugin(BrandingPlugin)</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Sets the <a href="./org/apache/felix/webconsole/BrandingPlugin.html" title="interface in org.apache.felix.webconsole"><code>BrandingPlugin</code></a> to use globally by all extensions of
 this class for branding.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#setLogLevel(int)">setLogLevel(int)</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">Sets the log level to be applied for calls to the <a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#log(int, java.lang.String)"><code>log(int, String)</code></a>
 and <a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#log(int, java.lang.String, java.lang.Throwable)"><code>log(int, String, Throwable)</code></a> methods.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleUtil.html#setNoCache(javax.servlet.http.HttpServletResponse)">setNoCache(HttpServletResponse)</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleUtil.html" title="class in org.apache.felix.webconsole">WebConsoleUtil</a></dt>
<dd>
<div class="block">Sets response headers to force the client to not cache the response
 sent back.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleUtil.html#setVariableResolver(javax.servlet.ServletRequest, org.apache.felix.webconsole.VariableResolver)">setVariableResolver(ServletRequest, VariableResolver)</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleUtil.html" title="class in org.apache.felix.webconsole">WebConsoleUtil</a></dt>
<dd>
<div class="block">Sets the <a href="./org/apache/felix/webconsole/VariableResolver.html" title="interface in org.apache.felix.webconsole"><code>VariableResolver</code></a> as the
 <a href="./org/apache/felix/webconsole/WebConsoleConstants.html#ATTR_CONSOLE_VARIABLE_RESOLVER"><code>WebConsoleConstants.ATTR_CONSOLE_VARIABLE_RESOLVER</code></a>
 attribute in the given request.</div>
</dd>
<dt><a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html" title="class in org.apache.felix.webconsole"><span class="strong">SimpleWebConsolePlugin</span></a> - Class in <a href="./org/apache/felix/webconsole/package-summary.html">org.apache.felix.webconsole</a></dt>
<dd>
<div class="block">SimpleWebConsolePlugin is an utility class that provides default
 implementation of the <a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole"><code>AbstractWebConsolePlugin</code></a> and supports the
 following features:
 
 Methods for (un)registering the web console plugin service
 Default implementation for resource loading
 </div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html#SimpleWebConsolePlugin(java.lang.String, java.lang.String, java.lang.String[])">SimpleWebConsolePlugin(String, String, String[])</a></span> - Constructor for class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html" title="class in org.apache.felix.webconsole">SimpleWebConsolePlugin</a></dt>
<dd>
<div class="block">Creates new Simple Web Console Plugin.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html#startResponse(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)">startResponse(HttpServletRequest, HttpServletResponse)</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/AbstractWebConsolePlugin.html" title="class in org.apache.felix.webconsole">AbstractWebConsolePlugin</a></dt>
<dd>
<div class="block">This method is responsible for generating the top heading of the page.</div>
</dd>
</dl>
<a name="_T_">
<!--   -->
</a>
<h2 class="title">T</h2>
<dl>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleUtil.html#toString(java.lang.Object)">toString(Object)</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleUtil.html" title="class in org.apache.felix.webconsole">WebConsoleUtil</a></dt>
<dd>
<div class="block">This method will stringify a Java object.</div>
</dd>
</dl>
<a name="_U_">
<!--   -->
</a>
<h2 class="title">U</h2>
<dl>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html#unregister()">unregister()</a></span> - Method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html" title="class in org.apache.felix.webconsole">SimpleWebConsolePlugin</a></dt>
<dd>
<div class="block">An utility method that removes the service, registered by the
 <a href="./org/apache/felix/webconsole/SimpleWebConsolePlugin.html#register(org.osgi.framework.BundleContext)"><code>SimpleWebConsolePlugin.register(BundleContext)</code></a> method.</div>
</dd>
<dt><span class="strong"><a href="./org/apache/felix/webconsole/WebConsoleUtil.html#urlDecode(java.lang.String)">urlDecode(String)</a></span> - Static method in class org.apache.felix.webconsole.<a href="./org/apache/felix/webconsole/WebConsoleUtil.html" title="class in org.apache.felix.webconsole">WebConsoleUtil</a></dt>
<dd>
<div class="block">Decode the given value expected to be URL encoded.</div>
</dd>
</dl>
<a name="_V_">
<!--   -->
</a>
<h2 class="title">V</h2>
<dl>
<dt><a href="./org/apache/felix/webconsole/VariableResolver.html" title="interface in org.apache.felix.webconsole"><span class="strong">VariableResolver</span></a> - Interface in <a href="./org/apache/felix/webconsole/package-summary.html">org.apache.felix.webconsole</a></dt>
<dd>
<div class="block">The <code>VariableResolver</code> interface defines the API for an object
 which may be provided by plugins to provide replacement values for
 variables in the generated content.</div>
</dd>
</dl>
<a name="_W_">
<!--   -->
</a>
<h2 class="title">W</h2>
<dl>
<dt><a href="./org/apache/felix/webconsole/WebConsoleConstants.html" title="interface in org.apache.felix.webconsole"><span class="strong">WebConsoleConstants</span></a> - Interface in <a href="./org/apache/felix/webconsole/package-summary.html">org.apache.felix.webconsole</a></dt>
<dd>
<div class="block">WebConsoleConstants provides some common constants that are used by plugin
 developers.</div>
</dd>
<dt><a href="./org/apache/felix/webconsole/WebConsoleSecurityProvider.html" title="interface in org.apache.felix.webconsole"><span class="strong">WebConsoleSecurityProvider</span></a> - Interface in <a href="./org/apache/felix/webconsole/package-summary.html">org.apache.felix.webconsole</a></dt>
<dd>&nbsp;</dd>
<dt><a href="./org/apache/felix/webconsole/WebConsoleUtil.html" title="class in org.apache.felix.webconsole"><span class="strong">WebConsoleUtil</span></a> - Class in <a href="./org/apache/felix/webconsole/package-summary.html">org.apache.felix.webconsole</a></dt>
<dd>
<div class="block">The <code>WebConsoleUtil</code> provides various utility methods for use
 by Web Console plugins.</div>
</dd>
</dl>
<a href="#_A_">A</a>&nbsp;<a href="#_B_">B</a>&nbsp;<a href="#_C_">C</a>&nbsp;<a href="#_D_">D</a>&nbsp;<a href="#_E_">E</a>&nbsp;<a href="#_G_">G</a>&nbsp;<a href="#_I_">I</a>&nbsp;<a href="#_K_">K</a>&nbsp;<a href="#_L_">L</a>&nbsp;<a href="#_M_">M</a>&nbsp;<a href="#_O_">O</a>&nbsp;<a href="#_P_">P</a>&nbsp;<a href="#_R_">R</a>&nbsp;<a href="#_S_">S</a>&nbsp;<a href="#_T_">T</a>&nbsp;<a href="#_U_">U</a>&nbsp;<a href="#_V_">V</a>&nbsp;<a href="#_W_">W</a>&nbsp;</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="./org/apache/felix/webconsole/package-summary.html">Package</a></li>
<li>Class</li>
<li>Use</li>
<li><a href="./org/apache/felix/webconsole/package-tree.html">Tree</a></li>
<li><a href="./deprecated-list.html">Deprecated</a></li>
<li class="navBarCell1Rev">Index</li>
<li><a href="./help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="./index.html?index-all.html" target="_top">Frames</a></li>
<li><a href="index-all.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="./allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2006&#x2013;2013 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
