You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2013/06/06 15:16:02 UTC

svn commit: r1490267 - in /sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl: HtmlResultRendererImpl.java JsonResultRendererImpl.java SlingHealthCheckServlet.java SlingHealthCheckWebconsolePlugin.java

Author: bdelacretaz
Date: Thu Jun  6 13:16:01 2013
New Revision: 1490267

URL: http://svn.apache.org/r1490267
Log:
SLING-2822 - add 'omit rules which have nothing to report' option

Modified:
    sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/HtmlResultRendererImpl.java
    sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/JsonResultRendererImpl.java
    sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/SlingHealthCheckServlet.java
    sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/SlingHealthCheckWebconsolePlugin.java

Modified: sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/HtmlResultRendererImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/HtmlResultRendererImpl.java?rev=1490267&r1=1490266&r2=1490267&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/HtmlResultRendererImpl.java (original)
+++ sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/HtmlResultRendererImpl.java Thu Jun  6 13:16:01 2013
@@ -25,10 +25,17 @@ import java.util.Map;
 
 import org.apache.sling.api.request.ResponseUtil;
 import org.apache.sling.hc.api.EvaluationResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /** Renders a List of EvaluationResult in HTML */
 public class HtmlResultRendererImpl implements SlingHealthCheckServlet.Renderer {
 
+    private final Logger log = LoggerFactory.getLogger(getClass());
+    
+    /** Quiet rendering option - do not show rules which have nothing to report */
+    public static final String OPTION_QUIET = "quiet";
+    
     public String getExtension() {
         return "html";
     }
@@ -37,11 +44,18 @@ public class HtmlResultRendererImpl impl
         return "text/html";
     }
     
-    public void render(List<EvaluationResult> results, Writer output) throws IOException {
+    public void render(List<EvaluationResult> results, Writer output, Map<String, String> options) throws IOException {
         final PrintWriter pw = new PrintWriter(output);
         final WebConsoleHelper c = new WebConsoleHelper(pw);
+        final boolean quiet = options == null ? false : Boolean.valueOf(options.get(OPTION_QUIET)); 
+                
         pw.println("<table class='content healthcheck' cellpadding='0' cellspacing='0' width='100%'>");
         for(EvaluationResult r : results) {
+            if(quiet && !r.anythingToReport()) {
+                log.debug("Ignoring result {}, quiet mode and nothing to report", r);
+                continue;
+            }
+            
             c.titleHtml(r.getRule().toString(), null);
             
             if(!r.getRule().getTags().isEmpty()) {

Modified: sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/JsonResultRendererImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/JsonResultRendererImpl.java?rev=1490267&r1=1490266&r2=1490267&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/JsonResultRendererImpl.java (original)
+++ sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/JsonResultRendererImpl.java Thu Jun  6 13:16:01 2013
@@ -37,7 +37,7 @@ public class JsonResultRendererImpl impl
         return "application/json";
     }
     
-    public void render(List<EvaluationResult> results, Writer output) throws IOException {
+    public void render(List<EvaluationResult> results, Writer output, Map<String, String> options) throws IOException {
         final JSONWriter w = new JSONWriter(output);
         w.setTidy(true);
         try {

Modified: sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/SlingHealthCheckServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/SlingHealthCheckServlet.java?rev=1490267&r1=1490266&r2=1490267&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/SlingHealthCheckServlet.java (original)
+++ sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/SlingHealthCheckServlet.java Thu Jun  6 13:16:01 2013
@@ -21,6 +21,7 @@ import java.io.IOException;
 import java.io.Writer;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletResponse;
@@ -74,7 +75,7 @@ public class SlingHealthCheckServlet ext
     static interface Renderer {
         String getExtension();
         String getContentType();
-        void render(List<EvaluationResult> results, Writer output) throws IOException;
+        void render(List<EvaluationResult> results, Writer output, Map<String, String> options) throws IOException;
     }
     
     private final Renderer [] renderers = { new JsonResultRendererImpl(), new HtmlResultRendererImpl() };
@@ -93,10 +94,14 @@ public class SlingHealthCheckServlet ext
     @Override
     protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) 
             throws ServletException, IOException {
-        executeRules(request.getResource(), getRuleTagsFromRequest(request), request.getRequestPathInfo().getExtension(), response);
+        executeRules(request.getResource(), getRuleTagsFromRequest(request), request.getRequestPathInfo().getExtension(), response, null);
     }
     
-    void executeRules(Resource rulesRoot, String [] tags, String extension, HttpServletResponse response) 
+    void executeRules(Resource rulesRoot, 
+            String [] tags, 
+            String extension, 
+            HttpServletResponse response,
+            Map<String, String> renderingOptions) 
             throws ServletException, IOException {
         final RulesEngine engine = healthcheck.getNewRulesEngine();
         engine.addRules(parser.parseResource(rulesRoot));
@@ -117,7 +122,7 @@ public class SlingHealthCheckServlet ext
                 new Object[] { rulesRoot.getPath(), filter, renderer });
         response.setContentType(renderer.getContentType());
         response.setCharacterEncoding("UTF-8");
-        renderer.render(engine.evaluateRules(filter), response.getWriter());
+        renderer.render(engine.evaluateRules(filter), response.getWriter(), renderingOptions);
         response.getWriter().flush();
     }
     

Modified: sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/SlingHealthCheckWebconsolePlugin.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/SlingHealthCheckWebconsolePlugin.java?rev=1490267&r1=1490266&r2=1490267&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/SlingHealthCheckWebconsolePlugin.java (original)
+++ sling/trunk/contrib/extensions/healthcheck/hc-sling/src/main/java/org/apache/sling/hc/sling/impl/SlingHealthCheckWebconsolePlugin.java Thu Jun  6 13:16:01 2013
@@ -21,7 +21,9 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintWriter;
 import java.util.Dictionary;
+import java.util.HashMap;
 import java.util.Hashtable;
+import java.util.Map;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
@@ -93,7 +95,8 @@ public class SlingHealthCheckWebconsoleP
         }
         
         // Send parameters form
-        doForm(req, resp);
+        final boolean quiet = req.getParameter(HtmlResultRendererImpl.OPTION_QUIET) != null;
+        doForm(req, resp, quiet);
         
         // And execute rules if we got a path
         final String path = getParam(req, PARAM_PATH, null);
@@ -103,6 +106,9 @@ public class SlingHealthCheckWebconsoleP
             return;
         }
         
+        final Map<String, String> renderingOptions = new HashMap<String, String>();
+        renderingOptions.put(HtmlResultRendererImpl.OPTION_QUIET, String.valueOf(quiet));
+        
         ResourceResolver resolver = null;
         try {
             resolver = resourceResolverFactory.getAdministrativeResourceResolver(null);
@@ -110,7 +116,7 @@ public class SlingHealthCheckWebconsoleP
             if(r == null) {
                 resp.sendError(HttpServletResponse.SC_NOT_FOUND, path);
             }
-            servlet.executeRules(r, tags, "html", resp);
+            servlet.executeRules(r, tags, "html", resp, renderingOptions);
         } catch (LoginException e) {
             throw new ServletException("Unable to get a ResourceResolver", e);
         } finally {
@@ -120,7 +126,7 @@ public class SlingHealthCheckWebconsoleP
         }
     }
     
-    private void doForm(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+    private void doForm(HttpServletRequest req, HttpServletResponse resp, boolean quiet) throws IOException {
         final PrintWriter pw = resp.getWriter();
         final WebConsoleHelper c = new WebConsoleHelper(pw);
         pw.print("<form method='get'>");
@@ -148,6 +154,13 @@ public class SlingHealthCheckWebconsoleP
         c.closeTr();
         
         c.tr(); 
+        c.tdLabel("Omit 'nothing to report' results");
+        c.tdContent();
+        pw.println("<input type='checkbox' name='" + HtmlResultRendererImpl.OPTION_QUIET + (quiet ? "' checked='true'>" : "'>"));
+        c.closeTd(); 
+        c.closeTr();
+        
+        c.tr(); 
         c.tdContent();
         pw.println("<input type='submit' value='Execute selected rules'/>");
         c.closeTd();