You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:40:19 UTC

[sling-org-apache-sling-hc-webconsole] 05/13: SLING-3278 : Provide a HealthCheckExecutor service. Move executor into separate package, reuse Result from HC

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.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-hc-webconsole.git

commit d4075954ea8be52c056a2ccf02ae33db0473f2e5
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Tue Dec 31 10:35:13 2013 +0000

    SLING-3278 : Provide a HealthCheckExecutor service. Move executor into separate package, reuse Result from HC
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/healthcheck/webconsole@1554396 13f79535-47bb-0310-9956-ffa450edef68
---
 .../impl/HealthCheckWebconsolePlugin.java          | 69 +++++++++++++++-------
 1 file changed, 47 insertions(+), 22 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 bb12065..c5f83bb 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
@@ -28,16 +28,21 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Properties;
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.request.ResponseUtil;
-import org.apache.sling.hc.api.HealthCheckExecutor;
-import org.apache.sling.hc.api.HealthCheckResult;
 import org.apache.sling.hc.api.Result;
 import org.apache.sling.hc.api.ResultLog;
+import org.apache.sling.hc.api.execution.HealthCheckExecutionResult;
+import org.apache.sling.hc.api.execution.HealthCheckExecutor;
+import org.apache.sling.hc.util.HealthCheckFilter;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
 
 /** Webconsole plugin to execute health check services */
 @Component
@@ -62,6 +67,18 @@ public class HealthCheckWebconsolePlugin extends HttpServlet {
     @Reference
     private HealthCheckExecutor healthCheckExecutor;
 
+    private BundleContext bundleContext;
+
+    @Activate
+    protected void activate(final BundleContext bc) {
+        this.bundleContext = bc;
+    }
+
+    @Deactivate
+    protected void deactivate() {
+        this.bundleContext = null;
+    }
+
     /** 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();
@@ -96,36 +113,44 @@ public class HealthCheckWebconsolePlugin extends HttpServlet {
 
         // Execute health checks only if tags are specified (even if empty)
         if(req.getParameter(PARAM_TAGS) != null) {
-            Collection<HealthCheckResult> results = healthCheckExecutor.executeAllForTags(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 (final HealthCheckResult r : results) {
+            final HealthCheckFilter filter = new HealthCheckFilter(this.bundleContext);
+            try {
+                final ServiceReference[] refs = filter.getTaggedHealthCheckServiceReferences(tags.split(","));
+                Collection<HealthCheckExecutionResult> results = healthCheckExecutor.execute(refs);
+
+                final PrintWriter pw = resp.getWriter();
+                pw.println("<table class='content healthcheck' cellpadding='0' cellspacing='0' width='100%'>");
+                int total = 0;
+                int failed = 0;
+                for (final HealthCheckExecutionResult exR : results) {
+
+                    final Result r = exR.getHealthCheckResult();
+                    total++;
+                    if (!r.isOk()) {
+                        failed++;
+                    }
+                    if (!quiet || !r.isOk()) {
+                        renderResult(resp, exR, debug);
+                    }
 
-                total++;
-                if (!r.isOk()) {
-                    failed++;
                 }
-                if (!quiet || !r.isOk()) {
-                    renderResult(resp, r, debug);
-                }
-
+                final WebConsoleHelper c = new WebConsoleHelper(resp.getWriter());
+                c.titleHtml("Summary", total + " HealthCheck executed, " + failed + " failures");
+                pw.println("</table>");
+            } finally {
+                filter.dispose();
             }
-            final WebConsoleHelper c = new WebConsoleHelper(resp.getWriter());
-            c.titleHtml("Summary", total + " HealthCheck executed, " + failed + " failures");
-            pw.println("</table>");
         }
     }
 
-    private void renderResult(HttpServletResponse resp, HealthCheckResult result, boolean debug) throws IOException {
+    private void renderResult(HttpServletResponse resp, HealthCheckExecutionResult exResult, boolean debug) throws IOException {
+        final Result result = exResult.getHealthCheckResult();
         final WebConsoleHelper c = new WebConsoleHelper(resp.getWriter());
 
         final StringBuilder status = new StringBuilder();
 
-        status.append("Tags: ").append(result.getHealthCheckTags());
-        c.titleHtml(result.getHealthCheckName(), null);
+        status.append("Tags: ").append(exResult.getHealthCheckTags());
+        c.titleHtml(exResult.getHealthCheckName(), null);
 
         c.tr();
         c.tdContent();

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.