You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2013/08/24 02:01:33 UTC
svn commit: r1517092 - in /felix/trunk/webconsole/src/main:
java/org/apache/felix/webconsole/internal/core/ resources/OSGI-INF/l10n/
resources/res/ui/ resources/templates/
Author: cziegeler
Date: Sat Aug 24 00:01:32 2013
New Revision: 1517092
URL: http://svn.apache.org/r1517092
Log:
FELIX-4202 : Allow to filter services using ldap filter in webconsole services tab . Apply patch from Alexander Klimetschek
Modified:
felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/ServicesServlet.java
felix/trunk/webconsole/src/main/resources/OSGI-INF/l10n/bundle.properties
felix/trunk/webconsole/src/main/resources/res/ui/bundles.css
felix/trunk/webconsole/src/main/resources/res/ui/webconsole.css
felix/trunk/webconsole/src/main/resources/templates/services.html
Modified: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/ServicesServlet.java
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/ServicesServlet.java?rev=1517092&r1=1517091&r2=1517092&view=diff
==============================================================================
--- felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/ServicesServlet.java (original)
+++ felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/ServicesServlet.java Sat Aug 24 00:01:32 2013
@@ -110,6 +110,9 @@ public class ServicesServlet extends Sim
private static final String TITLE = "%services.pluginTitle"; //$NON-NLS-1$
private static final String CSS[] = null;
+ // an LDAP filter, that is used to search services
+ private static final String FILTER_PARAM = "filter";
+
private final String TEMPLATE;
/** Default constructor */
@@ -165,11 +168,15 @@ public class ServicesServlet extends Sim
}
- private final ServiceReference[] getServices()
+ private final ServiceReference[] getServices(String filter)
{
+ // empty filter string will return nothing, must set it to null to return all services
+ if (filter != null && filter.trim().length() == 0) {
+ filter = null;
+ }
try
{
- final ServiceReference[] refs = getBundleContext().getAllServiceReferences( null, null );
+ final ServiceReference[] refs = getBundleContext().getAllServiceReferences( null, filter );
if ( refs != null )
{
return refs;
@@ -212,7 +219,7 @@ public class ServicesServlet extends Sim
response.setCharacterEncoding( "UTF-8" );
final PrintWriter pw = response.getWriter();
- writeJSON( pw, service, locale );
+ writeJSON( pw, service, locale, null);
}
@@ -306,16 +313,16 @@ public class ServicesServlet extends Sim
}
- private void writeJSON( final Writer pw, final ServiceReference service, final Locale locale ) throws IOException
+ private void writeJSON(final Writer pw, final ServiceReference service, final Locale locale, final String filter) throws IOException
{
- writeJSON( pw, service, false, locale );
+ writeJSON( pw, service, false, locale, filter );
}
- private void writeJSON( final Writer pw, final ServiceReference service, final boolean fullDetails, final Locale locale )
+ private void writeJSON( final Writer pw, final ServiceReference service, final boolean fullDetails, final Locale locale, final String filter )
throws IOException
{
- final ServiceReference[] allServices = this.getServices();
+ final ServiceReference[] allServices = this.getServices(filter);
final String statusLine = getStatusLine( allServices );
final ServiceReference[] services = ( service != null ) ? new ServiceReference[]
@@ -392,13 +399,15 @@ public class ServicesServlet extends Sim
final String appRoot = ( String ) request.getAttribute( WebConsoleConstants.ATTR_APP_ROOT );
StringWriter w = new StringWriter();
- writeJSON(w, reqInfo.service, request.getLocale());
+ final String filter = request.getParameter(FILTER_PARAM);
+ writeJSON(w, reqInfo.service, request.getLocale(), filter);
// prepare variables
DefaultVariableResolver vars = ( ( DefaultVariableResolver ) WebConsoleUtil.getVariableResolver( request ) );
vars.put( "bundlePath", appRoot + "/" + BundlesServlet.NAME + "/" );
vars.put( "drawDetails", String.valueOf(reqInfo.serviceRequested));
vars.put( "__data__", w.toString() );
+ vars.put( "filter", filter == null ? "" : filter);
response.getWriter().print( TEMPLATE );
}
Modified: felix/trunk/webconsole/src/main/resources/OSGI-INF/l10n/bundle.properties
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/resources/OSGI-INF/l10n/bundle.properties?rev=1517092&r1=1517091&r2=1517092&view=diff
==============================================================================
--- felix/trunk/webconsole/src/main/resources/OSGI-INF/l10n/bundle.properties (original)
+++ felix/trunk/webconsole/src/main/resources/OSGI-INF/l10n/bundle.properties Sat Aug 24 00:01:32 2013
@@ -81,6 +81,8 @@ services.usingBundles=Using Bundles
services.info.name=Used Services
services.info.descr=This is a OSGi service that is used by the current bundle. Click to see more details in 'Services' plugin.
services.info.key=Service #{0} of type(s) {1}
+services.filter.help=An LDAP filter string to match against service properties.
+services.filter.apply=Apply Filter
# Log plugin
logs.pluginTitle=Log Service
Modified: felix/trunk/webconsole/src/main/resources/res/ui/bundles.css
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/resources/res/ui/bundles.css?rev=1517092&r1=1517091&r2=1517092&view=diff
==============================================================================
--- felix/trunk/webconsole/src/main/resources/res/ui/bundles.css (original)
+++ felix/trunk/webconsole/src/main/resources/res/ui/bundles.css Sat Aug 24 00:01:32 2013
@@ -24,7 +24,6 @@ th.col_Symbolic_Name { width: 9em }
th.col_Version,
th.col_Status { width: 7em }
th.col_Actions { width: 121px }
-.filterBox { float: left; margin-left: 1em }
.symName { font-style: italic }
.symName:before { content: " (" }
.symName:after { content: ")" }
Modified: felix/trunk/webconsole/src/main/resources/res/ui/webconsole.css
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/resources/res/ui/webconsole.css?rev=1517092&r1=1517091&r2=1517092&view=diff
==============================================================================
--- felix/trunk/webconsole/src/main/resources/res/ui/webconsole.css (original)
+++ felix/trunk/webconsole/src/main/resources/res/ui/webconsole.css Sat Aug 24 00:01:32 2013
@@ -191,3 +191,8 @@ ul.icons li {
/* language selection element */
#langSelect { position: absolute; top: 5px; right: 5px }
#langSelect img { display: block; padding: 2px 0 }
+
+.filterBox { float: left; margin-left: 1em }
+.servicesFilter { width: 400px; }
+.servicesFilterApply { width: 85px; }
+
Modified: felix/trunk/webconsole/src/main/resources/templates/services.html
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/resources/templates/services.html?rev=1517092&r1=1517091&r2=1517092&view=diff
==============================================================================
--- felix/trunk/webconsole/src/main/resources/templates/services.html [UTF-8] (original)
+++ felix/trunk/webconsole/src/main/resources/templates/services.html [UTF-8] Sat Aug 24 00:01:32 2013
@@ -19,7 +19,18 @@ var data = ${__data__};
<p class="statline"> </p>
-<div class="ui-widget-header ui-corner-top buttonGroup">${services.caption}</div>
+<form method="get" action="" class="filterForm">
+ <div class="ui-widget-header ui-corner-top buttonGroup">
+ <div class="filterBox">
+ <label>
+ Filter:
+ <input class="servicesFilter" name="filter" value="${filter}" title="${services.filter.help}"/>
+ </label>
+ <input type="submit" value="${services.filter.apply}" class="servicesFilterApply"/>
+ </div>
+ <span>${services.caption}</span>
+ </div>
+</form>
<table id="plugin_table" class="tablesorter nicetable noauto">
<thead>