This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.hc.webconsole-1.0.4
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-hc-webconsole.git

commit d086e36f18bc52d63f807b5e13df960c345f00cb
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Mon Aug 19 06:21:19 2013 +0000

    SLING-3021 :  Use service properties for HC meta data and improve JMX 
registration
    
    git-svn-id: 
https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/healthcheck/webconsole@1515281
 13f79535-47bb-0310-9956-ffa450edef68
---
 .../impl/HealthCheckWebconsolePlugin.java          | 109 ++++++++++++---------
 1 file changed, 61 insertions(+), 48 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/hc/webconsole/impl/HealthCheckWebconsolePlugin.java
 
b/src/main/java/org/apache/sling/hc/webconsole/impl/HealthCheckWebconsolePlugin.java
index 3a11943..9216c23 100644
--- 
a/src/main/java/org/apache/sling/hc/webconsole/impl/HealthCheckWebconsolePlugin.java
+++ 
b/src/main/java/org/apache/sling/hc/webconsole/impl/HealthCheckWebconsolePlugin.java
@@ -20,7 +20,7 @@ package org.apache.sling.hc.webconsole.impl;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintWriter;
-import java.util.List;
+import java.util.Arrays;
 
 import javax.servlet.Servlet;
 import javax.servlet.ServletException;
@@ -34,15 +34,15 @@ import org.apache.felix.scr.annotations.Properties;
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.request.ResponseUtil;
-import org.apache.sling.hc.api.Constants;
 import org.apache.sling.hc.api.HealthCheck;
 import org.apache.sling.hc.api.Result;
 import org.apache.sling.hc.api.ResultLog;
 import org.apache.sling.hc.util.HealthCheckFilter;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
 import org.osgi.service.component.ComponentContext;
 
-/** Webconsole plugin to execute health check services */ 
+/** Webconsole plugin to execute health check services */
 @Component(immediate=true)
 @Service(Servlet.class)
 @SuppressWarnings("serial")
@@ -62,14 +62,14 @@ public class HealthCheckWebconsolePlugin extends 
HttpServlet {
     public static final String PARAM_TAGS = "tags";
     public static final String PARAM_DEBUG = "debug";
     public static final String PARAM_QUIET = "quiet";
-    
+
     private BundleContext bundleContext;
 
     @Activate
     protected void activate(ComponentContext ctx) {
         bundleContext = ctx.getBundleContext();
     }
-    
+
     /** Serve static resource if applicable, and return true in that case */
     private boolean getStaticResource(HttpServletRequest req, 
HttpServletResponse resp) throws ServletException, IOException {
         final String pathInfo = req.getPathInfo();
@@ -82,41 +82,45 @@ public class HealthCheckWebconsolePlugin extends 
HttpServlet {
             final byte [] buffer = new byte[16384];
             int n=0;
             while( (n = is.read(buffer, 0, buffer.length)) > 0) {
-                resp.getOutputStream().write(buffer, 0, n); 
+                resp.getOutputStream().write(buffer, 0, n);
             }
             resp.getOutputStream().flush();
             return true;
         }
         return false;
     }
-    
+
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException {
         if(getStaticResource(req, resp)) {
             return;
         }
-        
+
         final String tags = getParam(req, PARAM_TAGS, "");
         final boolean debug = Boolean.valueOf(getParam(req, PARAM_DEBUG, 
"false"));
         final boolean quiet = Boolean.valueOf(getParam(req, PARAM_QUIET, 
"false"));
-        
+
         doForm(req, resp, tags, debug, quiet);
-        
+
         // Execute health checks only if tags are specified (even if empty)
         if(req.getParameter(PARAM_TAGS) != null) {
-            final List<HealthCheck> checks = new 
HealthCheckFilter(bundleContext).getTaggedHealthCheck(tags.split(","));
+            final ServiceReference[] references = new 
HealthCheckFilter(bundleContext).getTaggedHealthCheckServiceReferences(tags.split(","));
+
             final PrintWriter pw = resp.getWriter();
             pw.println("<table class='content healthcheck' cellpadding='0' 
cellspacing='0' width='100%'>");
             int total = 0;
             int failed = 0;
-            for(HealthCheck hc : checks) {
-                final Result r = hc.execute();
-                total++;
-                if(!r.isOk()) {
-                    failed++;
-                }
-                if(!quiet || !r.isOk()) {
-                    renderResult(resp, hc, r, debug);
+            for(final ServiceReference ref : references) {
+                final HealthCheck hc = (HealthCheck) 
this.bundleContext.getService(ref);
+                if ( hc != null ) {
+                    final Result r = hc.execute();
+                    total++;
+                    if (!r.isOk()) {
+                        failed++;
+                    }
+                    if (!quiet || !r.isOk()) {
+                        renderResult(resp, ref, hc, r, debug);
+                    }
                 }
             }
             final WebConsoleHelper c = new WebConsoleHelper(resp.getWriter());
@@ -124,14 +128,23 @@ public class HealthCheckWebconsolePlugin extends 
HttpServlet {
             pw.println("</table>");
         }
     }
-    
-    private void renderResult(HttpServletResponse resp, HealthCheck hc, Result 
result, boolean debug) throws IOException {
+
+    private void renderResult(HttpServletResponse resp, final ServiceReference 
ref, HealthCheck hc, Result result, boolean debug) throws IOException {
         final WebConsoleHelper c = new WebConsoleHelper(resp.getWriter());
 
         final StringBuilder status = new StringBuilder();
-        status.append("Tags: ").append(hc.getInfo().get(Constants.HC_TAGS));
-        c.titleHtml(getDescription(hc), null);
-        
+        final Object tags = ref.getProperty(HealthCheck.TAGS);
+        final String tagString;
+        if ( tags == null ) {
+            tagString = "";
+        } else if ( tags instanceof String[] ) {
+            tagString = Arrays.toString((String[])tags);
+        } else {
+            tagString = tags.toString();
+        }
+        status.append("Tags: ").append(tagString);
+        c.titleHtml(getName(ref, hc), null);
+
         c.tr();
         c.tdContent();
         c.writer().print(ResponseUtil.escapeXml(status.toString()));
@@ -142,7 +155,7 @@ public class HealthCheckWebconsolePlugin extends 
HttpServlet {
         c.writer().print("</span>");
         c.closeTd();
         c.closeTr();
-        
+
         c.tr();
         c.tdContent();
         for(ResultLog.Entry e : result) {
@@ -159,16 +172,16 @@ public class HealthCheckWebconsolePlugin extends 
HttpServlet {
         }
         c.closeTd();
     }
-    
-    private String getDescription(HealthCheck hc) {
-        String result = hc.getInfo().get(Constants.HC_NAME);
-        if(result == null) {
-            result = hc.toString();
+
+    private String getName(final ServiceReference ref, HealthCheck hc) {
+        Object result = ref.getProperty(HealthCheck.NAME);
+        if (result == null) {
+            result = hc;
         }
-        return result;
+        return result.toString();
     }
-    
-    private void doForm(HttpServletRequest req, HttpServletResponse resp, 
String tags, boolean debug, boolean quiet) 
+
+    private void doForm(HttpServletRequest req, HttpServletResponse resp, 
String tags, boolean debug, boolean quiet)
             throws IOException {
         final PrintWriter pw = resp.getWriter();
         final WebConsoleHelper c = new WebConsoleHelper(pw);
@@ -177,36 +190,36 @@ public class HealthCheckWebconsolePlugin extends 
HttpServlet {
         c.titleHtml(TITLE, "To execute health check services, enter "
                 + " an optional list of tags, to select specific health 
checks, or no tags for all checks."
                 + " Prefix a tag with a minus sign (-) to omit checks having 
that tag.");
-        
-        c.tr(); 
+
+        c.tr();
         c.tdLabel("Health Check tags (comma-separated)");
         c.tdContent();
         pw.println("<input type='text' name='" + PARAM_TAGS + "' value='" + 
tags + "' class='input' size='80'>");
-        c.closeTd(); 
+        c.closeTd();
         c.closeTr();
-        
-        c.tr(); 
+
+        c.tr();
         c.tdLabel("Show DEBUG logs");
         c.tdContent();
-        pw.println("<input type='checkbox' name='" + PARAM_DEBUG + "' 
class='input' value='true'" 
+        pw.println("<input type='checkbox' name='" + PARAM_DEBUG + "' 
class='input' value='true'"
                 + (debug ? " checked=true " : "") + ">");
-        c.closeTd(); 
+        c.closeTd();
         c.closeTr();
-        
-        c.tr(); 
+
+        c.tr();
         c.tdLabel("Show failed checks only");
         c.tdContent();
-        pw.println("<input type='checkbox' name='" + PARAM_QUIET + "' 
class='input' value='true'" 
+        pw.println("<input type='checkbox' name='" + PARAM_QUIET + "' 
class='input' value='true'"
                 + (quiet ? " checked=true " : "") + ">");
-        c.closeTd(); 
+        c.closeTd();
         c.closeTr();
-        
-        c.tr(); 
+
+        c.tr();
         c.tdContent();
         pw.println("<input type='submit' value='Execute selected health 
checks'/>");
-        c.closeTd(); 
+        c.closeTd();
         c.closeTr();
-        
+
         pw.println("</table></form>");
     }
 

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to