[jboss-cvs] JBossAS SVN: r90282 - projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jun 17 01:26:42 EDT 2009


Author: ALRubinger
Date: 2009-06-17 01:26:41 -0400 (Wed, 17 Jun 2009)
New Revision: 90282

Modified:
   projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/BasicMessageDrivenMetrics.java
   projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/BasicStatefulSessionMetrics.java
   projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/BasicStatelessSessionMetrics.java
   projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/InvocationStatisticMetaMapper.java
   projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/ManagedSessionMetricsWrapperBase.java
Log:
[EJBTHREE-1839] Add detyped meta mapping to the invocation statistics

Modified: projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/BasicMessageDrivenMetrics.java
===================================================================
--- projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/BasicMessageDrivenMetrics.java	2009-06-17 04:54:41 UTC (rev 90281)
+++ projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/BasicMessageDrivenMetrics.java	2009-06-17 05:26:41 UTC (rev 90282)
@@ -43,7 +43,7 @@
  * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
  * @version $Revision: $
  */
- at ManagementObject(isRuntime = true, properties = ManagementProperties.EXPLICIT, description = "Message-Driven Instance Metrics", componentType = @ManagementComponent(type = "EJB3", subtype = "MDB"))
+ at ManagementObject(isRuntime = true, properties = ManagementProperties.EXPLICIT, description = "Message-Driven Instance Metrics", componentType = @ManagementComponent(type = "EJB3", subtype = "MessageDriven"))
 public class BasicMessageDrivenMetrics implements MessagingDelegateWrapperMBean
 {
 

Modified: projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/BasicStatefulSessionMetrics.java
===================================================================
--- projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/BasicStatefulSessionMetrics.java	2009-06-17 04:54:41 UTC (rev 90281)
+++ projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/BasicStatefulSessionMetrics.java	2009-06-17 05:26:41 UTC (rev 90282)
@@ -40,7 +40,7 @@
  * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
  * @version $Revision: $
  */
- at ManagementObject(isRuntime = true, properties = ManagementProperties.EXPLICIT, description = "Stateful Session Bean Metrics", componentType = @ManagementComponent(type = "EJB3", subtype = "SFSB"))
+ at ManagementObject(isRuntime = true, properties = ManagementProperties.EXPLICIT, description = "Stateful Session Bean Metrics", componentType = @ManagementComponent(type = "EJB3", subtype = "StatefulSession"))
 public class BasicStatefulSessionMetrics extends ManagedSessionMetricsWrapperBase
 {
 

Modified: projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/BasicStatelessSessionMetrics.java
===================================================================
--- projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/BasicStatelessSessionMetrics.java	2009-06-17 04:54:41 UTC (rev 90281)
+++ projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/BasicStatelessSessionMetrics.java	2009-06-17 05:26:41 UTC (rev 90282)
@@ -39,7 +39,7 @@
  * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
  * @version $Revision: $
  */
- at ManagementObject(isRuntime = true, properties = ManagementProperties.EXPLICIT, description = "Stateless Session Bean Metrics", componentType = @ManagementComponent(type = "EJB3", subtype = "SLSB"))
+ at ManagementObject(isRuntime = true, properties = ManagementProperties.EXPLICIT, description = "Stateless Session Bean Metrics", componentType = @ManagementComponent(type = "EJB3", subtype = "StatelessSession"))
 public class BasicStatelessSessionMetrics extends ManagedSessionMetricsWrapperBase
 {
 

Modified: projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/InvocationStatisticMetaMapper.java
===================================================================
--- projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/InvocationStatisticMetaMapper.java	2009-06-17 04:54:41 UTC (rev 90281)
+++ projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/InvocationStatisticMetaMapper.java	2009-06-17 05:26:41 UTC (rev 90282)
@@ -21,10 +21,14 @@
  */
 package org.jboss.ejb3.metrics.deployer;
 
+import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 
+import org.jboss.ejb3.statistics.InvocationStatistics;
+import org.jboss.ejb3.statistics.InvocationStatistics.TimeStatistic;
 import org.jboss.metatype.api.types.CompositeMetaType;
 import org.jboss.metatype.api.types.ImmutableCompositeMetaType;
 import org.jboss.metatype.api.types.MapCompositeMetaType;
@@ -38,90 +42,160 @@
 /**
  * InvocationStatisticMetaMapper
  *
- * {@link MetaMapper} for detyped EJB invocation statistics.
+ * {@link MetaMapper} for detyped EJB3 invocation statistics.  This
+ * is to avoid dependence upon the EJB3 internal implementation
+ * classes in possible remote JVMs or outside ClassLoaders.
  *
  * @author Jason T. Greene
- * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a> EJB3 Maintenance only
+ * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
  * @version $Revision: $
  */
-public class InvocationStatisticMetaMapper extends MetaMapper<Map<String, Map<String, Long>>>
+public class InvocationStatisticMetaMapper extends MetaMapper<InvocationStatistics>
 {
+   // --------------------------------------------------------------------------------||
+   // Class Members ------------------------------------------------------------------||
+   // --------------------------------------------------------------------------------||
+
    public static final CompositeMetaType TYPE;
 
    public static final CompositeMetaType METHOD_STATS_TYPE;
 
-   private static String[] rootItemNames;
+   private static String[] metaTypePropertyNames;
 
-   private static MapCompositeMetaType METHOD_STATS_MAP_TYPE;
+   /**
+    * The composite type of the method stats; the value for the 
+    * {@link InvocationStatisticMetaMapper#PROP_NAME_ROOT_METHOD_STATS}
+    * property
+    */
+   private static MapCompositeMetaType VALUE_METHOD_STATS_MAP_TYPE;
 
+   /**
+    * Name of the "lastResetTime" property of the returned MetaValue
+    */
+   private static final String PROP_NAME_ROOT_LAST_RESET_TIME = "lastResetTime";
+
+   /**
+    * Name of the "methodStats" property of the returned MetaValue
+    */
+   private static final String PROP_NAME_ROOT_METHOD_STATS = "methodStats";
+
+   /**
+    * Name of the "count" property of the root MetaValue's "methodStats" property
+    */
+   private static final String PROP_NAME_METHODSTATS_COUNT = "count";
+
+   /**
+    * Name of the "minTime" property of the root MetaValue's "methodStats" property
+    */
+   private static final String PROP_NAME_METHODSTATS_MINTIME = "minTime";
+
+   /**
+    * Name of the "maxTime" property of the root MetaValue's "methodStats" property
+    */
+   private static final String PROP_NAME_METHODSTATS_MAXTIME = "maxTime";
+
+   /**
+    * Name of the "totalTime" property of the root MetaValue's "methodStats" property
+    */
+   private static final String PROP_NAME_METHODSTATS_TOTALTIME = "totalTime";
+
    static
    {
-      String[] methodItemNames =
-      {"count", "minTime", "maxTime", "totalTime"};
-      String[] methodItemDescriptions =
+      final String[] methodItemNames =
+      {PROP_NAME_METHODSTATS_COUNT, PROP_NAME_METHODSTATS_MINTIME, PROP_NAME_METHODSTATS_MAXTIME,
+            PROP_NAME_METHODSTATS_TOTALTIME};
+      final String[] methodItemDescriptions =
       {"the number of invocations", "the minimum invocation time", "the maximum invocation time",
             "the total invocation time",};
-      MetaType[] methodItemTypes =
+      final MetaType[] methodItemTypes =
       {SimpleMetaType.LONG, SimpleMetaType.LONG, SimpleMetaType.LONG, SimpleMetaType.LONG,};
       METHOD_STATS_TYPE = new ImmutableCompositeMetaType("MethodStatistics", "Method invocation statistics",
             methodItemNames, methodItemDescriptions, methodItemTypes);
 
-      METHOD_STATS_MAP_TYPE = new MapCompositeMetaType(METHOD_STATS_TYPE);
+      VALUE_METHOD_STATS_MAP_TYPE = new MapCompositeMetaType(METHOD_STATS_TYPE);
 
-      rootItemNames = new String[]
-      {"concurrentCalls", "maxConcurrentCalls", "lastResetTime", "methodStats"};
+      metaTypePropertyNames = new String[]
+      {PROP_NAME_ROOT_LAST_RESET_TIME, PROP_NAME_ROOT_METHOD_STATS};
 
-      String[] rootItemDescriptions =
-      {"the number of concurrent invocations", "the maximum number of concurrent invocations",
-            "last time statistics were reset", "method statistics",};
-      MetaType[] rootItemTypes =
-      {SimpleMetaType.LONG, SimpleMetaType.LONG, SimpleMetaType.LONG, METHOD_STATS_MAP_TYPE};
+      final String[] rootItemDescriptions =
+      {"last time statistics were reset", "method statistics",};
+      final MetaType[] rootItemTypes =
+      {SimpleMetaType.LONG, VALUE_METHOD_STATS_MAP_TYPE};
 
-      TYPE = new ImmutableCompositeMetaType("InvocationStatistics", "EJB3 invocation statistics", rootItemNames,
-            rootItemDescriptions, rootItemTypes);
+      TYPE = new ImmutableCompositeMetaType("InvocationStatistics", "EJB3 invocation statistics",
+            metaTypePropertyNames, rootItemDescriptions, rootItemTypes);
    }
 
+   /*
+    * (non-Javadoc)
+    * @see org.jboss.metatype.spi.values.MetaMapper#getMetaType()
+    */
    @Override
    public MetaType getMetaType()
    {
       return TYPE;
    }
 
+   /*
+    * (non-Javadoc)
+    * @see org.jboss.metatype.spi.values.MetaMapper#mapToType()
+    */
    @Override
    public Type mapToType()
    {
-      return Map.class;
+      return InvocationStatistics.class;
    }
 
+   /*
+    * (non-Javadoc)
+    * @see org.jboss.metatype.spi.values.MetaMapper#createMetaValue(org.jboss.metatype.api.types.MetaType, java.lang.Object)
+    */
    @Override
-   public MetaValue createMetaValue(MetaType metaType, Map<String, Map<String, Long>> object)
+   public MetaValue createMetaValue(MetaType metaType, InvocationStatistics object)
    {
-      Map<String, MetaValue> methodMap = new HashMap<String, MetaValue>();
-      for (Map.Entry<String, Map<String, Long>> entry : object.entrySet())
+      // Make the method map from the stats
+      final Map<String, MetaValue> methodMap = new HashMap<String, MetaValue>();
+      @SuppressWarnings("unchecked")
+      final Map<Method, TimeStatistic> stats = (Map<Method, TimeStatistic>) object.getStats();
+      if (stats != null)
       {
-         if (entry.getKey().charAt(0) == '#')
-            continue;
+         final Set<Method> methods = stats.keySet();
+         for (final Method method : methods)
+         {
+            // Get the underlying time stat for this method
+            final TimeStatistic stat = stats.get(method);
 
-         MapCompositeValueSupport cvs = new MapCompositeValueSupport(METHOD_STATS_TYPE);
-         for (String name : METHOD_STATS_TYPE.itemSet())
-            cvs.put(name, SimpleValueSupport.wrap(entry.getValue().get(name)));
+            // Create a composite view of the stat's state
+            final MapCompositeValueSupport cvs = new MapCompositeValueSupport(METHOD_STATS_TYPE);
+            cvs.put(PROP_NAME_METHODSTATS_COUNT, SimpleValueSupport.wrap(stat.count));
+            cvs.put(PROP_NAME_METHODSTATS_MAXTIME, SimpleValueSupport.wrap(stat.maxTime));
+            cvs.put(PROP_NAME_METHODSTATS_MINTIME, SimpleValueSupport.wrap(stat.minTime));
+            cvs.put(PROP_NAME_METHODSTATS_TOTALTIME, SimpleValueSupport.wrap(stat.totalTime));
 
-         methodMap.put(entry.getKey(), cvs);
+            // Add the stat to the method map
+            final String methodName = method.getName();
+            methodMap.put(methodName, cvs);
+         }
       }
 
-      MapCompositeValueSupport root = new MapCompositeValueSupport(TYPE);
-      for (int i = 0; i < 3; i++)
-         root.put(rootItemNames[i], SimpleValueSupport.wrap(object.get("#Global").get(rootItemNames[i])));
+      // Make a composite value for the returned MetaType
+      final MapCompositeValueSupport root = new MapCompositeValueSupport(TYPE);
 
-      root.put(rootItemNames[3], new MapCompositeValueSupport(methodMap, METHOD_STATS_MAP_TYPE));
+      // Set the properties
+      root.put(PROP_NAME_ROOT_LAST_RESET_TIME, SimpleValueSupport.wrap(object.lastResetTime));
+      root.put(PROP_NAME_ROOT_METHOD_STATS, new MapCompositeValueSupport(methodMap, VALUE_METHOD_STATS_MAP_TYPE));
 
+      // Return
       return root;
    }
 
+   /*
+    * (non-Javadoc)
+    * @see org.jboss.metatype.spi.values.MetaMapper#unwrapMetaValue(org.jboss.metatype.api.values.MetaValue)
+    */
    @Override
-   public Map<String, Map<String, Long>> unwrapMetaValue(MetaValue metaValue)
+   public InvocationStatistics unwrapMetaValue(MetaValue metaValue)
    {
-      // This is read-only, so not needed
-      return null;
+      throw new UnsupportedOperationException(InvocationStatistics.class.getSimpleName() + " is a read-only property");
    }
 }

Modified: projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/ManagedSessionMetricsWrapperBase.java
===================================================================
--- projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/ManagedSessionMetricsWrapperBase.java	2009-06-17 04:54:41 UTC (rev 90281)
+++ projects/ejb3/trunk/metrics-deployer/src/main/java/org/jboss/ejb3/metrics/deployer/ManagedSessionMetricsWrapperBase.java	2009-06-17 05:26:41 UTC (rev 90282)
@@ -21,13 +21,12 @@
  */
 package org.jboss.ejb3.metrics.deployer;
 
-import java.util.Map;
-
 import org.jboss.ejb3.session.SessionContainer;
 import org.jboss.ejb3.statistics.InvocationStatistics;
 import org.jboss.managed.api.annotation.ManagementOperation;
 import org.jboss.managed.api.annotation.ManagementProperty;
 import org.jboss.managed.api.annotation.ViewUse;
+import org.jboss.metatype.api.annotations.MetaMapping;
 
 /**
  * ManagedSessionMetricsWrapperBase
@@ -38,7 +37,7 @@
  * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
  * @version $Revision: $
  */
-abstract class ManagedSessionMetricsWrapperBase
+public abstract class ManagedSessionMetricsWrapperBase
 {
    // --------------------------------------------------------------------------------||
    // Instance Members ---------------------------------------------------------------||
@@ -92,10 +91,10 @@
     * @see org.jboss.ejb3.statistics.InvocationStatistics#getStats()
     */
    @ManagementProperty(readOnly = true, use = ViewUse.STATISTIC)
-   //@MetaMapping(value = InvocationStatisticMetaMapper.class)
-   public Map getInvocationStats()
+   @MetaMapping(value = InvocationStatisticMetaMapper.class)
+   public InvocationStatistics getInvocationStats()
    {
-      return invocationStats.getStats();
+      return invocationStats;
    }
 
    /**




More information about the jboss-cvs-commits mailing list