Author: nicolas
Date: Sun Apr 27 07:55:28 2008
New Revision: 651963

URL: http://svn.apache.org/viewvc?rev=651963&view=rev
Log:
initial code base for JSP tags
Role now requires a StatValue type

Added:
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/AbstractSelectTag.java
   (with props)
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/CategoriesTag.java
   (with props)
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/RolesTag.java
   (with props)
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/StatValueTag.java
   (with props)
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/SubsystemsTag.java
   (with props)
Modified:
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Monitor.java
    
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Role.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/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/web/MonitoringServlet.java
    
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/MonitoringTest.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/Monitor.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Monitor.java?rev=651963&r1=651962&r2=651963&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Monitor.java
 (original)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Monitor.java
 Sun Apr 27 07:55:28 2008
@@ -53,13 +53,13 @@
 public interface Monitor
 {
     /** default role key for code performances */
-    Role<Counter> PERFORMANCES = new Role<Counter>( "performances", Unit.NANOS 
);
+    Role<Counter> PERFORMANCES = new Role<Counter>( "performances", 
Unit.NANOS, Counter.class );
 
     /** default role for multi-thread concurrency */
-    Role<Gauge> CONCURRENCY = new Role<Gauge>( "concurrency", Unit.UNARY );
+    Role<Gauge> CONCURRENCY = new Role<Gauge>( "concurrency", Unit.UNARY, 
Gauge.class );
 
     /** default Role for the invocation failure counter */
-    Role<Counter> FAILURES = new Role<Counter>( "failures", Unit.UNARY );
+    Role<Counter> FAILURES = new Role<Counter>( "failures", Unit.UNARY, 
Counter.class );
 
     /**
      * @return the monitor key

Modified: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Role.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Role.java?rev=651963&r1=651962&r2=651963&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Role.java
 (original)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/Role.java
 Sun Apr 27 07:55:28 2008
@@ -17,6 +17,8 @@
 
 package org.apache.commons.monitoring;
 
+import java.util.Collection;
+import java.util.Collections;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -25,15 +27,22 @@
     private String name;
 
     private Unit unit;
+    
+    private Class<T> type;
 
     private static final Map<String, Role> ROLES = new 
ConcurrentHashMap<String, Role>();
 
-    public static Role<? extends StatValue> getRole( String name )
+    public static Role getRole( String name )
     {
         return ROLES.get( name );
     }
+    
+    public static Collection<Role> getRoles()
+    {
+        return Collections.unmodifiableCollection( ROLES.values() );
+    }    
 
-    public Role( String name, Unit unit )
+    public Role( String name, Unit unit, Class<T> type )
     {
         super();
         if (name == null)
@@ -44,8 +53,13 @@
         {
             throw new IllegalArgumentException( "A role unit is required" );
         }
+        if (type == null)
+        {
+            throw new IllegalArgumentException( "A role type is required" );
+        }
         this.name = name;
         this.unit = unit;
+        this.type = type;
         ROLES.put( name, this );
     }
 
@@ -120,6 +134,11 @@
     public String toString()
     {
         return name;
+    }
+
+    public Class<T> getType()
+    {
+        return type;
     }
 
 }

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=651963&r1=651962&r2=651963&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
 Sun Apr 27 07:55:28 2008
@@ -236,7 +236,7 @@
 
     private void renderInternal( Context ctx, StatValue value, String 
attribute, long l, Options options, int ratio )
     {
-        Unit unit = options.unitFor( value );
+        Unit unit = options.unitFor( value.getRole() );
         if ( unit != null )
         {
             while ( ratio-- > 0 )
@@ -255,7 +255,7 @@
             renderNaN( ctx );
             return;
         }
-        Unit unit = options.unitFor( value );
+        Unit unit = options.unitFor( value.getRole() );
         if ( unit != null )
         {
             while ( ratio-- > 0 )

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=651963&r1=651962&r2=651963&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
 Sun Apr 27 07:55:28 2008
@@ -45,10 +45,9 @@
 
     /**
      * [EMAIL PROTECTED]
-     *
-     * @see 
org.apache.commons.monitoring.reporting.AbstractRenderer#render(java.io.Context,
-     * java.util.Collection,
-     * org.apache.commons.monitoring.reporting.Renderer.Options)
+     * 
+     * @see 
org.apache.commons.monitoring.reporting.AbstractRenderer#render(java.io.Context,
 java.util.Collection,
+     *      org.apache.commons.monitoring.reporting.Renderer.Options)
      */
     @Override
     public void render( Context ctx, Collection<Monitor> monitors, Options 
options )
@@ -100,7 +99,7 @@
         Map<String, Integer> columns = new HashMap<String, Integer>();
 
         ctx.println( "<thead><tr>" );
-        boolean detached = ( monitors.size() > 0 && 
monitors.iterator().next()instanceof Detachable );
+        boolean detached = ( monitors.size() > 0 && monitors.iterator().next() 
instanceof Detachable );
 
         if ( detached )
         {
@@ -111,38 +110,16 @@
         ctx.println( "<th rowspan='2'>subsystem</th>" );
         for ( Role role : roles )
         {
-            // Search the first monitor that has a StatValue for the role...
-            for ( Monitor monitor : monitors )
+            ctx.print( "<td colspan='" );
+            ctx.print( role.getType() == Counter.class ? "7" : "5" );
+            ctx.print( "'>" );
+            ctx.print( role.getName() );
+            Unit unit = options.unitFor( role );
+            if ( unit != null && unit.getName().length() > 0 )
             {
-                StatValue value = monitor.getValue( role );
-                if ( value != null )
-                {
-                    int span = 0;
-                    if ( value instanceof Counter )
-                    {
-                        span += options.render( role, "hits" ) ? 1 : 0;
-                        span += options.render( role, "sum" ) ? 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 ) );
-                    ctx.print( "'>" );
-                    ctx.print( value.getRole().getName() );
-                    Unit unit = options.unitFor( value );
-                    if ( unit != null && unit.getName().length() > 0 )
-                    {
-                        renderUnit( ctx, unit );
-                    }
-                    ctx.print( "</td>" );
-                    columns.put( role.getName(), span );
-                    break;
-                }
+                renderUnit( ctx, unit );
             }
+            ctx.print( "</td>" );
         }
         ctx.print( "</tr>" );
 
@@ -155,32 +132,24 @@
 
         for ( Role role : roles )
         {
-            for ( Monitor monitor : monitors )
+            if ( role.getType() == Counter.class )
             {
-                StatValue value = monitor.getValue( role );
-                if ( value != null )
-                {
-                    if ( value instanceof Counter )
-                    {
-                        writeColumnHead( ctx, options, value, "hits" );
-                        writeColumnHead( ctx, options, value, "sum" );
-                    }
-                    writeColumnHead( ctx, options, value, "min" );
-                    writeColumnHead( ctx, options, value, "max" );
-                    writeColumnHead( ctx, options, value, "mean" );
-                    writeColumnHead( ctx, options, value, "deviation" );
-                    writeColumnHead( ctx, options, value, "value" );
-                    break;
-                }
+                writeColumnHead( ctx, options, role, "hits" );
+                writeColumnHead( ctx, options, role, "sum" );
             }
+            writeColumnHead( ctx, options, role, "min" );
+            writeColumnHead( ctx, options, role, "max" );
+            writeColumnHead( ctx, options, role, "mean" );
+            writeColumnHead( ctx, options, role, "deviation" );
+            writeColumnHead( ctx, options, role, "value" );
         }
         ctx.println( "</tr></thead>" );
         ctx.put( COLUMNS, columns );
     }
 
-    protected void writeColumnHead( Context ctx, Options options, StatValue 
value, String attribute )
+    protected void writeColumnHead( Context ctx, Options options, Role role, 
String attribute )
     {
-        if ( options.render( value.getRole(), attribute ) )
+        if ( options.render( role, attribute ) )
         {
             ctx.print( "<th>" );
             ctx.print( attribute );
@@ -190,15 +159,18 @@
 
     /**
      * [EMAIL PROTECTED]
-     * @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)
+     * 
+     * @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)
      */
     @Override
     protected void renderDetached( Context ctx, Detachable detached, Options 
options )
     {
         ctx.print( "<td>" );
-        ctx.print( options.getDateFormat().format( new Date( 
detached.getAttachedAt()) ) );
+        ctx.print( options.getDateFormat().format( new Date( 
detached.getAttachedAt() ) ) );
         ctx.print( "</td><td>" );
-        ctx.print( options.getDateFormat().format( new Date( 
detached.getDetachedAt()) ) );
+        ctx.print( options.getDateFormat().format( new Date( 
detached.getDetachedAt() ) ) );
         ctx.print( "</td>" );
     }
 
@@ -237,11 +209,11 @@
 
     /**
      * [EMAIL PROTECTED]
-     *
+     * 
      * @see 
org.apache.commons.monitoring.reporting.AbstractRenderer#renderMissingValue(org.apache.commons.monitoring.reporting.Context,
-     * java.lang.String)
+     *      java.lang.String)
      */
-    @SuppressWarnings("unchecked")
+    @SuppressWarnings( "unchecked" )
     @Override
     protected void renderMissingValue( Context ctx, Role role )
     {
@@ -253,9 +225,8 @@
 
     /**
      * [EMAIL PROTECTED]
-     *
-     * @see 
org.apache.commons.monitoring.reporting.AbstractRenderer#hasNext(java.io.Context,
-     * java.lang.Class)
+     * 
+     * @see 
org.apache.commons.monitoring.reporting.AbstractRenderer#hasNext(java.io.Context,
 java.lang.Class)
      */
     @Override
     protected void hasNext( Context ctx, Class<?> type )

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=651963&r1=651962&r2=651963&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
 Sun Apr 27 07:55:28 2008
@@ -26,7 +26,6 @@
 
 import org.apache.commons.monitoring.Monitor;
 import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.StatValue;
 import org.apache.commons.monitoring.Unit;
 
 /**
@@ -53,9 +52,9 @@
     }
 
 
-    public Unit unitFor( StatValue value )
+    public Unit unitFor( Role role )
     {
-        return value.getUnit();
+        return role.getUnit();
     }
 
     public NumberFormat getDecimalFormat()

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=651963&r1=651962&r2=651963&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
 Sun Apr 27 07:55:28 2008
@@ -24,7 +24,6 @@
 
 import org.apache.commons.monitoring.Monitor;
 import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.StatValue;
 import org.apache.commons.monitoring.Unit;
 
 /**
@@ -48,7 +47,7 @@
 
         boolean renderRole( Role role );
 
-        Unit unitFor( StatValue value );
+        Unit unitFor( Role role );
 
         NumberFormat getNumberFormat();
 

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=651963&r1=651962&r2=651963&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
 Sun Apr 27 07:55:28 2008
@@ -35,7 +35,6 @@
 import org.apache.commons.monitoring.Monitor;
 import org.apache.commons.monitoring.Repository;
 import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.StatValue;
 import org.apache.commons.monitoring.Unit;
 import org.apache.commons.monitoring.Monitor.Key;
 import org.apache.commons.monitoring.reporting.Context;
@@ -226,21 +225,21 @@
         }
 
         @Override
-        public Unit unitFor( StatValue value )
+        public Unit unitFor( Role role )
         {
-            String unitName = request.getParameter( value.getRole().getName() 
+ ".unit" );
+            String unitName = request.getParameter( role.getName() + ".unit" );
             if ( unitName != null )
             {
-                if ( value.getUnit() != null )
+                if ( role.getUnit() != null )
                 {
-                    Unit unit = value.getUnit().getDerived( unitName );
+                    Unit unit = role.getUnit().getDerived( unitName );
                     if ( unit != null )
                     {
                         return unit;
                     }
                 }
             }
-            return value.getUnit();
+            return role.getUnit();
         }
     }
 

Added: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/AbstractSelectTag.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/AbstractSelectTag.java?rev=651963&view=auto
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/AbstractSelectTag.java
 (added)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/AbstractSelectTag.java
 Sun Apr 27 07:55:28 2008
@@ -0,0 +1,94 @@
+package org.apache.commons.monitoring.servlet.jsp;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspTagException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.apache.commons.monitoring.Monitoring;
+import org.apache.commons.monitoring.Repository;
+import org.apache.commons.monitoring.servlet.ServletContextUtil;
+
+public abstract class AbstractSelectTag
+    extends TagSupport
+{
+    protected Repository repository;
+    
+    private String id;
+    
+    private String name;
+
+    public AbstractSelectTag()
+    {
+        super();
+    }
+
+    @Override
+    public int doEndTag()
+        throws JspException
+    {
+        if (repository == null)
+        {
+            repository = (Repository) pageContext.getAttribute( 
ServletContextUtil.REPOSITORY_KEY );
+        }
+        
+        StringBuffer stb = new StringBuffer( "<select" );
+        if ( id != null )
+        {
+            stb.append( " id='" ).append( id ).append( "'" );
+        }
+        if ( name != null )
+        {
+            stb.append( " name='" ).append( name ).append( "'" );
+        }
+        stb.append( ">" );
+        List<String> categories = new LinkedList<String>( getElements() );
+        Collections.sort( categories );
+        for ( String category : categories )
+        {
+            stb.append( "<option value='" );
+            stb.append( category );
+            stb.append( "'>" );
+            stb.append( category );
+            stb.append( "</option>" );
+        }
+        
+        stb.append( "</select>" );
+        try
+        {
+            pageContext.getOut().print( stb.toString() );
+        }
+        catch ( Exception e )
+        {
+            throw new JspTagException( "CategoriesTag : " + e.getMessage() );
+        }
+    
+        return EVAL_PAGE;
+    }
+
+    /**
+     * The set of elements to display as a select list
+     * @return
+     */
+    protected abstract  Collection<? extends String> getElements();
+
+    public void setId( String id )
+    {
+        this.id = id;
+    }
+
+    public void setName( String name )
+    {
+        this.name = name;
+    }
+
+    public void setRepository( String repository )
+    {
+        this.repository = (Repository) pageContext.getAttribute( repository );
+    }
+
+}
\ No newline at end of file

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

Added: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/CategoriesTag.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/CategoriesTag.java?rev=651963&view=auto
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/CategoriesTag.java
 (added)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/CategoriesTag.java
 Sun Apr 27 07:55:28 2008
@@ -0,0 +1,36 @@
+/*
+ * 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.servlet.jsp;
+
+import java.util.Set;
+
+
+
+/**
+ * A JSP tag to output a select box for repositoy categories
+ * 
+ * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
+ */
+public class CategoriesTag
+    extends AbstractSelectTag
+{
+    protected Set<String> getElements()
+    {
+        return repository.getCategories();
+    }
+}

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

Added: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/RolesTag.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/RolesTag.java?rev=651963&view=auto
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/RolesTag.java
 (added)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/RolesTag.java
 Sun Apr 27 07:55:28 2008
@@ -0,0 +1,71 @@
+package org.apache.commons.monitoring.servlet.jsp;
+
+import java.io.IOException;
+import java.util.Iterator;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspTagException;
+import javax.servlet.jsp.tagext.BodyContent;
+import javax.servlet.jsp.tagext.BodyTagSupport;
+
+import org.apache.commons.monitoring.Role;
+
+public class RolesTag
+    extends BodyTagSupport
+{
+    private Iterator<Role> roles;
+
+    private String role;
+
+    @Override
+    public int doStartTag()
+        throws JspException
+    {
+        roles = Role.getRoles().iterator();
+        pageContext.setAttribute( role, roles.next() );
+        return roles.hasNext() ? EVAL_BODY_BUFFERED : SKIP_BODY;
+    }
+
+    @Override
+    public int doAfterBody()
+        throws JspException
+    {
+        BodyContent body = getBodyContent();
+        try
+        {
+            body.writeOut( getPreviousOut() );
+        }
+        catch ( IOException e )
+        {
+            throw new JspTagException( "RolesTag: " + e.getMessage() );
+        }
+
+        // clear up so the next time the body content is empty
+        body.clearBody();
+        if ( roles.hasNext() )
+        {
+            pageContext.setAttribute( role, roles.next() );
+            return EVAL_BODY_AGAIN;
+        }
+        else
+        {
+            return SKIP_BODY;
+        }
+    }
+
+    /**
+     * Name of the pageContext attribute to contain the current role during 
interation
+     * 
+     * @param role
+     */
+    public void setRole( String role )
+    {
+        this.role = role;
+    }
+
+    @Override
+    public void release()
+    {
+        role = "role";
+    }
+}

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

Added: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/StatValueTag.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/StatValueTag.java?rev=651963&view=auto
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/StatValueTag.java
 (added)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/StatValueTag.java
 Sun Apr 27 07:55:28 2008
@@ -0,0 +1,61 @@
+package org.apache.commons.monitoring.servlet.jsp;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.BodyTagSupport;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.apache.commons.monitoring.Counter;
+import org.apache.commons.monitoring.Role;
+
+public class StatValueTag
+    extends TagSupport
+{
+    private String roleAttrName;
+
+    @Override
+    public int doStartTag()
+        throws JspException
+    {
+        Role role = (Role) pageContext.getAttribute( roleAttrName );
+
+        String name = role.getName();
+        StringBuffer stb = new StringBuffer();
+        checkbox( name, "value", stb );
+        checkbox( name, "min", stb );
+        checkbox( name, "max", stb );
+        checkbox( name, "mean", stb );
+        checkbox( name, "deviation", stb );
+        if ( role.getType() == Counter.class )
+        {
+            checkbox( name, "hits", stb );
+            checkbox( name, "total", stb );
+        }
+
+        return EVAL_PAGE;
+    }
+
+    private void checkbox( String name, String property, StringBuffer stb )
+    {
+        stb.append( "<li>" );
+        stb.append( "<input type='checkbox' name='" );
+        stb.append( property );
+        stb.append( "' id='" );
+        stb.append( name );
+        stb.append( "." );
+        stb.append( property );
+        stb.append( "'/>" );
+        stb.append( "<label for='" );
+        stb.append( "'>" );
+        stb.append( name );
+        stb.append( "." );
+        stb.append( property );
+        stb.append( "</label>" );
+        stb.append( "</li>" );
+    }
+
+    public void setRole( String role )
+    {
+        this.roleAttrName = role;
+    }
+
+}

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

Added: 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/SubsystemsTag.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/SubsystemsTag.java?rev=651963&view=auto
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/SubsystemsTag.java
 (added)
+++ 
commons/sandbox/monitoring/trunk/src/main/java/org/apache/commons/monitoring/servlet/jsp/SubsystemsTag.java
 Sun Apr 27 07:55:28 2008
@@ -0,0 +1,36 @@
+/*
+ * 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.servlet.jsp;
+
+import java.util.Set;
+
+
+
+/**
+ * A JSP tag to output a select box for repositoy categories
+ * 
+ * @author <a href="mailto:[EMAIL PROTECTED]">Nicolas De Loof</a>
+ */
+public class SubsystemsTag
+    extends AbstractSelectTag
+{
+    protected Set<String> getElements()
+    {
+        return repository.getSubSystems();
+    }
+}

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

Modified: 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/MonitoringTest.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/MonitoringTest.java?rev=651963&r1=651962&r2=651963&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/MonitoringTest.java
 (original)
+++ 
commons/sandbox/monitoring/trunk/src/test/java/org/apache/commons/monitoring/MonitoringTest.java
 Sun Apr 27 07:55:28 2008
@@ -31,9 +31,9 @@
 public class MonitoringTest
     extends TestCase
 {
-    public final static Role<Counter> COUNTER = new Role<Counter>( "COUNTER", 
Unit.UNARY );
+    public final static Role<Counter> COUNTER = new Role<Counter>( "COUNTER", 
Unit.UNARY, Counter.class );
 
-    public final static Role<Gauge> GAUGE = new Role<Gauge>( "GAUGE", 
Unit.UNARY );
+    public final static Role<Gauge> GAUGE = new Role<Gauge>( "GAUGE", 
Unit.UNARY, Gauge.class );
 
 
     public void testStopWatchConcurrencyMonitoring()

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=651963&r1=651962&r2=651963&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
 Sun Apr 27 07:55:28 2008
@@ -29,7 +29,7 @@
 import org.apache.commons.monitoring.Counter;
 import org.apache.commons.monitoring.Monitor;
 import org.apache.commons.monitoring.MonitoringTest;
-import org.apache.commons.monitoring.StatValue;
+import org.apache.commons.monitoring.Role;
 import org.apache.commons.monitoring.Unit;
 import org.apache.commons.monitoring.impl.monitors.CreateValuesOnDemandMonitor;
 import org.apache.commons.monitoring.impl.values.ThreadSafeCounter;
@@ -91,7 +91,7 @@
     {
         Options options = new OptionsSupport()
         {
-            public Unit unitFor( StatValue value )
+            public Unit unitFor( Role role )
             {
                 return Unit.MICROS;
             }


Reply via email to