You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ni...@apache.org on 2008/04/10 11:02:09 UTC

svn commit: r646698 - in /commons/sandbox/monitoring/trunk/src: main/java/org/apache/commons/monitoring/listeners/ main/java/org/apache/commons/monitoring/reporting/ main/java/org/apache/commons/monitoring/reporting/web/ test/java/org/apache/commons/mo...

Author: nicolas
Date: Thu Apr 10 02:02:07 2008
New Revision: 646698

URL: http://svn.apache.org/viewvc?rev=646698&view=rev
Log:
generate Flot graph output

Added:
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java   (with props)
    commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.flot
Modified:
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/JsonRenderer.java
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/XmlRenderer.java
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java
    commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java
    commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java?rev=646698&r1=646697&r2=646698&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/listeners/HistorizedRepositoryDecorator.java Thu Apr 10 02:02:07 2008
@@ -24,8 +24,10 @@
 import java.util.Set;
 
 import org.apache.commons.monitoring.Monitor;
+import org.apache.commons.monitoring.Monitoring;
 import org.apache.commons.monitoring.Repository;
 import org.apache.commons.monitoring.StopWatch;
+import org.apache.commons.monitoring.Unit;
 import org.apache.commons.monitoring.reporting.AbstractPeriodicLogger;
 
 /**
@@ -42,7 +44,6 @@
 
     private int size;
 
-    @SuppressWarnings( "serial" )
     public HistorizedRepositoryDecorator( long period, final int size, Observable repository )
     {
         super( period, repository );
@@ -68,6 +69,8 @@
         {
             history.remove( history.size() );
         }
+
+        Monitoring.getMonitor( "test" ).getCounter( Monitor.PERFORMANCES ).add( (long) (Math.random() * 10), Unit.MILLIS );
     }
 
     public void addListener( Listener listener )

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java?rev=646698&r1=646697&r2=646698&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/AbstractRenderer.java Thu Apr 10 02:02:07 2008
@@ -42,9 +42,17 @@
 public abstract class AbstractRenderer
     implements Renderer
 {
-    public final void render( Context ctx, Collection<Monitor> monitors )
+    private String contentType;
+
+
+    protected static final String MONITORS = "monitors";
+
+    protected static final String ROLES = "roles";
+
+    public AbstractRenderer( String contentType )
     {
-        render( ctx, monitors, new OptionsSupport() );
+        super();
+        this.contentType = contentType;
     }
 
     public void render( Context ctx, Collection<Monitor> monitors, Options options )
@@ -68,8 +76,8 @@
     protected void prepareRendering( Context ctx, Collection<Monitor> monitors, Options options )
     {
         List<String> roles = getRoles( monitors, options );
-        ctx.put( "roles", roles );
-        ctx.put( "monitors", monitors );
+        ctx.put( ROLES, roles );
+        ctx.put( MONITORS, monitors );
     }
 
     protected void hasNext( Context ctx, Class<?> type )
@@ -102,7 +110,7 @@
     @SuppressWarnings( "unchecked" )
     protected void renderStatValues( Context ctx, Monitor monitor, Options options )
     {
-        List<String> roles = (List<String>) ctx.get( "roles" );
+        List<String> roles = (List<String>) ctx.get( ROLES );
         renderStatValues( ctx, monitor, options, roles );
     }
 
@@ -161,35 +169,36 @@
 
     protected void render( Context ctx, StatValue value, Options options )
     {
+        String role = value.getRole();
         if ( value instanceof Counter )
         {
             Counter counter = (Counter) value;
-            if ( options.render( value, "hits" ) )
+            if ( options.render( role, "hits" ) )
             {
                 render( ctx, value, "hits", counter.getHits(), options, 0 );
             }
-            if ( options.render( value, "sum" ) )
+            if ( options.render( role, "sum" ) )
             {
                 render( ctx, value, "sum", counter.getSum(), options );
             }
         }
-        if ( options.render( value, "min" ) )
+        if ( options.render( role, "min" ) )
         {
             render( ctx, value, "min", value.getMin(), options );
         }
-        if ( options.render( value, "max" ) )
+        if ( options.render( role, "max" ) )
         {
             render( ctx, value, "max", value.getMax(), options );
         }
-        if ( options.render( value, "mean" ) )
+        if ( options.render( role, "mean" ) )
         {
             render( ctx, value, "mean", value.getMean(), options );
         }
-        if ( options.render( value, "deviation" ) )
+        if ( options.render( role, "deviation" ) )
         {
             render( ctx, value, "deviation", value.getStandardDeviation(), options, 1 );
         }
-        if ( options.render( value, "value" ) )
+        if ( options.render( role, "value" ) )
         {
             render( ctx, value, "value", value.get(), options, 1 );
         }
@@ -243,7 +252,7 @@
     {
         if ( Double.isNaN( d ) )
         {
-            ctx.print( "-" );
+            renderNaN( ctx );
             return;
         }
         Unit unit = options.unitFor( value );
@@ -258,6 +267,11 @@
         ctx.print( options.getDecimalFormat().format( d ) );
     }
 
+    protected void renderNaN( Context ctx )
+    {
+        ctx.print( "-" );
+    }
+
     /**
      * @param monitors
      * @return
@@ -281,5 +295,10 @@
         List<String> sorted = new ArrayList<String>( roles );
         Collections.sort( sorted );
         return sorted;
+    }
+
+    public String getContentType()
+    {
+        return contentType;
     }
 }

Added: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java?rev=646698&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java (added)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java Thu Apr 10 02:02:07 2008
@@ -0,0 +1,172 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.monitoring.reporting;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.commons.monitoring.Monitor;
+import org.apache.commons.monitoring.StatValue;
+import org.apache.commons.monitoring.Monitor.Key;
+import org.apache.commons.monitoring.listeners.Detachable;
+
+/**
+ * Render as a graph, based on jQuery Flot javascript library
+ * <p>
+ * This renderer produces JavaScript, and expect the HTML page to include
+ * <ul>
+ * <li> the required &lt;script&gt; tags :
+ *
+ * <pre>
+ *   &lt;script src=&quot;jquery.pack.js&quot; &gt;&lt;/script&gt;
+ *   &lt;script src=&quot;jquery.flot.pack.js&quot; &gt;&lt;/script&gt;
+ *   &lt;!--[if IE]&gt;&lt;script src=&quot;excanvas.pack.js&quot; &gt;&lt;/script&gt;&lt;![endif]--&gt;
+ * </pre>
+ *
+ * </li>
+ * <li>
+ * a &lt;div& id="placeholder"gt; to draw the graph into, having <tt>width</tt> and <tt>height</tt>
+ * style set.
+ * </li>
+ * </ul>
+ *
+ * @see http://code.google.com/p/flot/
+ * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
+ */
+public class FlotRenderer
+    extends AbstractRenderer
+{
+    private static final String[] ATTRIBUTES = { "hits", "sum", "min", "max", "mean", "deviation", "value" };
+
+    public FlotRenderer()
+    {
+        super( "text/javascript" );
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * @see org.apache.commons.monitoring.reporting.Renderer#render(org.apache.commons.monitoring.reporting.Context,
+     * java.util.Collection,
+     * org.apache.commons.monitoring.reporting.Renderer.Options)
+     */
+    @Override
+    public void render( Context ctx, Collection<Monitor> monitors, Options options )
+    {
+        prepareRendering( ctx, monitors, options );
+        ctx.print( "$.plot($('#placeholder'), [" );
+
+        int color = 0;
+        for ( Iterator<String> it = ( (Collection) ctx.get( ROLES ) ).iterator(); it.hasNext(); )
+        {
+            String role = it.next();
+            List<String> attribues = new ArrayList<String>();
+            for ( String attribute : ATTRIBUTES )
+            {
+                if ( !options.render( role, attribute ) )
+                {
+                    continue;
+                }
+                attribues.add( attribute );
+            }
+
+            for ( Iterator<String> attr = attribues.iterator(); attr.hasNext(); )
+            {
+                final String attribute = attr.next();
+                ctx.print( "{ color: " + color );
+                ctx.print( ", label: \"" );
+                ctx.print( role + "." + attribute );
+                ctx.print( "\", data: " );
+                ctx.print( "[" );
+                int x = 0;
+                for ( Iterator<Monitor> iterator = monitors.iterator(); iterator.hasNext(); )
+                {
+                    Monitor monitor = iterator.next();
+                    x++;
+                    StatValue value = monitor.getValue( role );
+                    if ( value == null )
+                    {
+                        continue;
+                    }
+                    ctx.put( "x", x );
+                    render( ctx, value, new OptionsSupport()
+                    {
+                        @Override
+                        public boolean render( String role, String string )
+                        {
+                            return string.equals( attribute );
+                        }
+                    });
+                    if ( iterator.hasNext() )
+                    {
+                        ctx.print( "," );
+                    }
+                }
+                ctx.print( "]" );
+                ctx.print( "}" );
+                if ( attr.hasNext() )
+                {
+                    ctx.print( "," );
+                }
+                color++;
+            }
+            if ( it.hasNext() )
+            {
+                ctx.print( "," );
+            }
+        }
+
+        ctx.print( "] );" );
+    }
+
+    protected void render( Context ctx, StatValue value, String attribute, Number number, Options options, int ratio )
+    {
+        ctx.print( "[" + ctx.get( "x" ) + "," );
+        super.render( ctx, value, attribute, number, options, ratio );
+        ctx.print( "]" );
+    }
+
+    @Override
+    protected void renderNaN( Context ctx )
+    {
+        ctx.print( "NaN" );
+    }
+
+    /**
+     * {@inheritDoc}
+     * @see org.apache.commons.monitoring.reporting.AbstractRenderer#render(org.apache.commons.monitoring.reporting.Context, org.apache.commons.monitoring.Monitor.Key)
+     */
+    @Override
+    protected void render( Context ctx, Key key )
+    {
+        // Not used here
+    }
+
+    /**
+     * {@inheritDoc}
+     * @see org.apache.commons.monitoring.reporting.AbstractRenderer#renderDetached(org.apache.commons.monitoring.reporting.Context, org.apache.commons.monitoring.listeners.Detachable, org.apache.commons.monitoring.reporting.Renderer.Options)
+     */
+    @Override
+    protected void renderDetached( Context ctx, Detachable detached, Options options )
+    {
+        // Not used here
+    }
+
+}

Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/FlotRenderer.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java?rev=646698&r1=646697&r2=646698&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/HtmlRenderer.java Thu Apr 10 02:02:07 2008
@@ -28,7 +28,6 @@
 import org.apache.commons.monitoring.Unit;
 import org.apache.commons.monitoring.Monitor.Key;
 import org.apache.commons.monitoring.listeners.Detachable;
-import org.apache.commons.monitoring.listeners.SecondaryMonitor;
 
 /**
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
@@ -37,6 +36,11 @@
     extends AbstractRenderer
 {
 
+    public HtmlRenderer()
+    {
+        super( "text/html" );
+    }
+
     /**
      * {@inheritDoc}
      *
@@ -114,14 +118,14 @@
                     int span = 0;
                     if ( value instanceof Counter )
                     {
-                        span += options.render( value, "hits" ) ? 1 : 0;
-                        span += options.render( value, "sum" ) ? 1 : 0;
+                        span += options.render( role, "hits" ) ? 1 : 0;
+                        span += options.render( role, "sum" ) ? 1 : 0;
                     }
-                    span += options.render( value, "min" ) ? 1 : 0;
-                    span += options.render( value, "max" ) ? 1 : 0;
-                    span += options.render( value, "mean" ) ? 1 : 0;
-                    span += options.render( value, "deviation" ) ? 1 : 0;
-                    span += options.render( value, "value" ) ? 1 : 0;
+                    span += options.render( role, "min" ) ? 1 : 0;
+                    span += options.render( role, "max" ) ? 1 : 0;
+                    span += options.render( role, "mean" ) ? 1 : 0;
+                    span += options.render( role, "deviation" ) ? 1 : 0;
+                    span += options.render( role, "value" ) ? 1 : 0;
 
                     ctx.print( "<td colspan='" );
                     ctx.print( String.valueOf( span ) );
@@ -174,7 +178,7 @@
 
     protected void writeColumnHead( Context ctx, Options options, StatValue value, String attribute )
     {
-        if ( options.render( value, attribute ) )
+        if ( options.render( value.getRole(), attribute ) )
         {
             ctx.print( "<th>" );
             ctx.print( attribute );

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/JsonRenderer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/JsonRenderer.java?rev=646698&r1=646697&r2=646698&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/JsonRenderer.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/JsonRenderer.java Thu Apr 10 02:02:07 2008
@@ -29,6 +29,12 @@
 public class JsonRenderer
     extends AbstractRenderer
 {
+
+    public JsonRenderer( String contentType )
+    {
+        super( contentType );
+    }
+
     @Override
     public void render( Context ctx, Collection<Monitor> monitors, Options options )
     {

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java?rev=646698&r1=646697&r2=646698&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/OptionsSupport.java Thu Apr 10 02:02:07 2008
@@ -41,7 +41,7 @@
         return true;
     }
 
-    public boolean render( StatValue value, String attribute )
+    public boolean render( String role, String attribute )
     {
         return true;
     }

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java?rev=646698&r1=646697&r2=646698&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/Renderer.java Thu Apr 10 02:02:07 2008
@@ -35,7 +35,7 @@
 {
     Collection<String> DEFAULT_ROLES = Arrays.asList( new String[] { Monitor.CONCURRENCY, Monitor.PERFORMANCES } );
 
-    void render( Context ctx, Collection<Monitor> monitors );
+    String getContentType();
 
     void render( Context ctx, Collection<Monitor> monitors, Options options );
 
@@ -43,7 +43,7 @@
     {
         boolean render( Monitor object );
 
-        boolean render( StatValue value, String attribute );
+        boolean render( String role, String attribute );
 
         boolean renderRole( String role );
 

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java?rev=646698&r1=646697&r2=646698&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/TxtRenderer.java Thu Apr 10 02:02:07 2008
@@ -33,6 +33,11 @@
 {
     private static final String HR = "--------------------------------------------------------------------------------";
 
+    public TxtRenderer()
+    {
+        super( "text/txt" );
+    }
+
     /**
      * {@inheritDoc}
      * @see org.apache.commons.monitoring.reporting.AbstractRenderer#renderDetached(org.apache.commons.monitoring.reporting.Context, org.apache.commons.monitoring.listeners.SecondaryMonitor, org.apache.commons.monitoring.reporting.Renderer.Options)

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/XmlRenderer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/XmlRenderer.java?rev=646698&r1=646697&r2=646698&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/XmlRenderer.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/XmlRenderer.java Thu Apr 10 02:02:07 2008
@@ -25,11 +25,15 @@
 import org.apache.commons.monitoring.StatValue;
 import org.apache.commons.monitoring.Monitor.Key;
 import org.apache.commons.monitoring.listeners.Detachable;
-import org.apache.commons.monitoring.reporting.Renderer.Options;
 
 public class XmlRenderer
     extends AbstractRenderer
 {
+
+    public XmlRenderer()
+    {
+        super( "text/xml" );
+    }
 
     /**
      * {@inheritDoc}

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java?rev=646698&r1=646697&r2=646698&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java Thu Apr 10 02:02:07 2008
@@ -38,6 +38,7 @@
 import org.apache.commons.monitoring.Unit;
 import org.apache.commons.monitoring.Monitor.Key;
 import org.apache.commons.monitoring.reporting.Context;
+import org.apache.commons.monitoring.reporting.FlotRenderer;
 import org.apache.commons.monitoring.reporting.HtmlRenderer;
 import org.apache.commons.monitoring.reporting.JsonRenderer;
 import org.apache.commons.monitoring.reporting.OptionsSupport;
@@ -78,8 +79,9 @@
     public void init()
         throws ServletException
     {
-        renderers.put( "text/javascript", new JsonRenderer() );
-        renderers.put( "application/json", new JsonRenderer() );
+        renderers.put( "text/javascript", new JsonRenderer( "text/javascript" ) );
+        renderers.put( "text/flot", new FlotRenderer() );
+        renderers.put( "application/json", new JsonRenderer( "application/json" ) );
         renderers.put( "text/xml", new XmlRenderer() );
         renderers.put( "text/html", new HtmlRenderer() );
 
@@ -201,10 +203,10 @@
                 && ( subsystems.isEmpty() || subsystems.contains( key.getSubsystem() ) );
         }
 
-        public boolean render( StatValue value, String attribute )
+        public boolean render( String role, String attribute )
         {
-            String columns = request.getParameter( value.getRole() + ".columns" );
-            if ( columns != null )
+            String columns = request.getParameter( role + ".columns" );
+            if ( columns == null )
             {
                 return true;
             }

Modified: commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java?rev=646698&r1=646697&r2=646698&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java (original)
+++ commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/reporting/web/NiceHtmlRenderer.java Thu Apr 10 02:02:07 2008
@@ -57,39 +57,39 @@
      * @see org.apache.commons.monitoring.reporting.HtmlRenderer#documentHead(java.io.Context)
      */
     @Override
-    protected void documentHead( Context writer )
+    protected void documentHead( Context ctx )
     {
-        writer.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" " );
-        writer.println( "  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" );
-        writer.println( "<html>" );
-        writer.println( "<head>" );
+        ctx.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" " );
+        ctx.println( "  \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" );
+        ctx.println( "<html>" );
+        ctx.println( "<head>" );
         if ( title != null )
         {
-            writer.print( "<title>" );
-            writer.print( title );
-            writer.println( "</title>" );
+            ctx.print( "<title>" );
+            ctx.print( title );
+            ctx.println( "</title>" );
         }
         if ( stylesheet != null )
         {
-            writer.print( "<link rel='stylesheet' type='text/css' href='" );
-            writer.print( contextPath );
-            writer.print( "/resources/" );
-            writer.print( stylesheet );
-            writer.println( "' />" );
+            ctx.print( "<link rel='stylesheet' type='text/css' href='" );
+            ctx.print( contextPath );
+            ctx.print( "/resources/" );
+            ctx.print( stylesheet );
+            ctx.println( "' />" );
         }
         if ( scripts != null )
         {
             for ( int i = 0; i < scripts.length; i++ )
             {
-                writer.print( "<script src='" );
-                writer.print( contextPath );
-                writer.print( "/resources/" );
-                writer.print( scripts[i] );
-                writer.println( "' ></script>" );
+                ctx.print( "<script src='" );
+                ctx.print( contextPath );
+                ctx.print( "/resources/" );
+                ctx.print( scripts[i] );
+                ctx.println( "' ></script>" );
             }
         }
-        writer.println( "</head>" );
-        writer.println( "<body>" );
+        ctx.println( "</head>" );
+        ctx.println( "<body>" );
     }
 
     @SuppressWarnings("unchecked")

Modified: commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java?rev=646698&r1=646697&r2=646698&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java (original)
+++ commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/reporting/RendererTest.java Thu Apr 10 02:02:07 2008
@@ -58,7 +58,7 @@
     public void testRenderToJson()
         throws Exception
     {
-        assertExpectedRendering( new JsonRenderer(), "js" );
+        assertExpectedRendering( new JsonRenderer( "text/javascript" ), "js" );
     }
 
     public void testRenderToXml()
@@ -79,6 +79,12 @@
         assertExpectedRendering( new HtmlRenderer(), "html" );
     }
 
+    public void testRenderToFlot()
+        throws Exception
+    {
+        assertExpectedRendering( new FlotRenderer(), "flot" );
+    }
+
     public void testOptions()
         throws Exception
     {
@@ -105,7 +111,7 @@
     {
         StringWriter out = new StringWriter();
         Context ctx = new Context( new PrintWriter( out ) );
-        renderer.render( ctx, monitors );
+        renderer.render( ctx, monitors, new OptionsSupport() );
         String actual = out.toString();
         actual = StringUtils.remove( StringUtils.remove( actual, "\n" ), "\r" );
 

Added: commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.flot
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.flot?rev=646698&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.flot (added)
+++ commons/sandbox/monitoring/trunk/src/test/resources/org/apache/commons/monitoring/reporting/RendererTest.flot Thu Apr 10 02:02:07 2008
@@ -0,0 +1,32 @@
+$.plot($('#placeholder'), [
+
+{ color: 0, label: "concurrency.hits",
+ data: []},
+{ color: 1, label: "concurrency.sum",
+ data: []},
+{ color: 2, label: "concurrency.min",
+ data: [[1,0][2,1]]},
+{ color: 3, label: "concurrency.max",
+ data: [[1,0][2,1]]},
+{ color: 4, label: "concurrency.mean",
+ data: [[1,NaN][2,0.00]]},
+{ color: 5, label: "concurrency.deviation",
+ data: [[1,NaN][2,NaN]]},
+{ color: 6, label: "concurrency.value",
+ data: [[1,0][2,1]]},
+{ color: 7, label: "performances.hits",
+ data: [[1,1][2,0]]},
+{ color: 8, label: "performances.sum",
+ data: [[1,10][2,0]]},
+{ color: 9, label: "performances.min",
+ data: [[1,10][2,0]]},
+{ color: 10, label: "performances.max",
+ data: [[1,10][2,0]]},
+{ color: 11, label: "performances.mean",
+ data: [[1,10.00][2,NaN]]},
+{ color: 12, label: "performances.deviation",
+ data: [[1,NaN][2,NaN]]},
+{ color: 13, label: "performances.value",
+ data: [[1,10][2,0]]}
+
+] );
\ No newline at end of file