You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by rm...@apache.org on 2012/12/17 14:45:35 UTC

git commit: basic doc for Jmx stuff

Updated Branches:
  refs/heads/master 299226c66 -> 7ffbc2798


basic doc for Jmx stuff


Project: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/commit/7ffbc279
Tree: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/tree/7ffbc279
Diff: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/diff/7ffbc279

Branch: refs/heads/master
Commit: 7ffbc27985dd697b727db9d3176505e0ba4b0368
Parents: 299226c
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Mon Dec 17 14:43:20 2012 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Mon Dec 17 14:43:20 2012 +0100

----------------------------------------------------------------------
 .../deltaspike/core/api/jmx/JmxBroadcaster.java    |    8 +++++
 .../core/api/jmx/annotation/JmxManaged.java        |   11 +++++++
 .../deltaspike/core/api/jmx/annotation/MBean.java  |   22 +++++++++++++++
 .../core/impl/jmx/AttributeAccessor.java           |    5 +++
 .../core/impl/jmx/DynamicMBeanWrapper.java         |   16 +++++++++--
 .../deltaspike/core/impl/jmx/MBeanExtension.java   |    2 +-
 6 files changed, 60 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/7ffbc279/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/JmxBroadcaster.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/JmxBroadcaster.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/JmxBroadcaster.java
index 034746d..31c2aa6 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/JmxBroadcaster.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/JmxBroadcaster.java
@@ -20,7 +20,15 @@ package org.apache.deltaspike.core.api.jmx;
 
 import javax.management.Notification;
 
+/**
+ * Interface used to send JMX message from "CDI MBeans".
+ * It can only be used from CDI MBeans and should get injected
+ * in other beans.
+ */
 public interface JmxBroadcaster
 {
+    /**
+     * @param notification the notification to send from the current MBean.
+     */
     void send(Notification notification);
 }

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/7ffbc279/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/annotation/JmxManaged.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/annotation/JmxManaged.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/annotation/JmxManaged.java
index eba0f1f..86749e7 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/annotation/JmxManaged.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/annotation/JmxManaged.java
@@ -26,10 +26,21 @@ import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
+/**
+ * This annotation can be used either on a field or a method.
+ *
+ * Used on a method it describes a JMX operation with an optional description.
+ *
+ * Used on a field it describes a JMX attribute. This attribute is readable
+ * if a getter on this field is available and writable is a setter is found.
+ */
 @Retention(RUNTIME)
 @Target({ FIELD, METHOD })
 @Documented
 public @interface JmxManaged
 {
+    /**
+     * @return the description either of the operation or the attribute exported through JMX.
+     */
     String description() default "";
 }

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/7ffbc279/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/annotation/MBean.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/annotation/MBean.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/annotation/MBean.java
index ec675c4..dea1034 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/annotation/MBean.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/jmx/annotation/MBean.java
@@ -25,15 +25,37 @@ import java.lang.annotation.Target;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
+/**
+ * This annotation marks a CDI managed bean as exported through JMX.
+ */
 @Retention(RUNTIME)
 @Target(TYPE)
 @Inherited
 public @interface MBean
 {
+    /**
+     * @return the category to use if no objectName was specified. Default is "org.apache.deltaspike"
+     * and can be overriden either directly by the value or by a key used to resolve a value using
+     * {@see org.apache.deltaspike.core.api.config.ConfigResolver}. It is a key if the value is
+     * between bracket. Default key is "org.apache.deltaspike.mbean.category".
+     */
     String category() default "{org.apache.deltaspike.mbean.category}";
+
+    /**
+     * @return the name of the bean used if no objectName was specified.
+     * It is used with category value to create the MBean {@see javax.management.ObjectName}
+     * using the following pattern: &lt;category&gt;:type=MBeans,name=&lt;name&gt;
+     */
     String name() default "";
 
+    /**
+     * @return the direct object name used to export the decorated bean.
+     */
     String objectName() default "";
+
+    /**
+     * @return the description used to describe the JMX bean.
+     */
     String description() default "";
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/7ffbc279/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/AttributeAccessor.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/AttributeAccessor.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/AttributeAccessor.java
index 11f1191..0b4d3ba 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/AttributeAccessor.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/AttributeAccessor.java
@@ -21,6 +21,11 @@ package org.apache.deltaspike.core.impl.jmx;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
+/**
+ * Just a helper class mapping a JMX attribute.
+ * It make the link between the attribute and its accessors validating
+ * operations (read/write) are possible.
+ */
 public class AttributeAccessor
 {
     private final Method getter;

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/7ffbc279/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/DynamicMBeanWrapper.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/DynamicMBeanWrapper.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/DynamicMBeanWrapper.java
index 6426078..3d1ec8e 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/DynamicMBeanWrapper.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/DynamicMBeanWrapper.java
@@ -57,6 +57,10 @@ import java.util.Set;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+/**
+ * This class is the MBean implementation of a CDI bean.
+ * It basically delegates to a CDI instance.
+ */
 public class DynamicMBeanWrapper extends NotificationBroadcasterSupport implements DynamicMBean, JmxBroadcaster
 {
     public static final Logger LOGGER = Logger.getLogger(DynamicMBeanWrapper.class.getName());
@@ -72,10 +76,16 @@ public class DynamicMBeanWrapper extends NotificationBroadcasterSupport implemen
 
     private Object instance = null;
 
+    /**
+     * The constructor is the builder for the MBean. All the MBean parsing logic is done here.
+     *
+     * @param annotatedMBean the class of the CDI managed bean
+     * @param normalScope is the CDI bean @Dependent or not
+     * @param qualifiers qualfiers of the CDI bean (used to retrieve it)
+     */
     public DynamicMBeanWrapper(final Class<?> annotatedMBean,
                                final boolean normalScope,
-                               final Annotation[] qualifiers,
-                               final MBean mBeanAnnotation)
+                               final Annotation[] qualifiers)
     {
         this.clazz = annotatedMBean;
         this.classloader = Thread.currentThread().getContextClassLoader();
@@ -88,7 +98,7 @@ public class DynamicMBeanWrapper extends NotificationBroadcasterSupport implemen
 
         // class
         final String description =
-            getDescription(mBeanAnnotation.description(), annotatedMBean.getName());
+            getDescription(annotatedMBean.getAnnotation(MBean.class).description(), annotatedMBean.getName());
 
         final NotificationInfo notification = annotatedMBean.getAnnotation(NotificationInfo.class);
         if (notification != null)

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/7ffbc279/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/MBeanExtension.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/MBeanExtension.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/MBeanExtension.java
index fe212dd..3cf8463 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/MBeanExtension.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/jmx/MBeanExtension.java
@@ -119,7 +119,7 @@ public class MBeanExtension implements Extension, Deactivatable
 
         final boolean normalScoped = isNormalScope(bean.getAnnotated().getAnnotations(), bm);
         final Annotation[] qualifiers = qualifiers(bean.getAnnotatedBeanClass(), bm);
-        final DynamicMBeanWrapper mbean = new DynamicMBeanWrapper(clazz, normalScoped, qualifiers, mBeanAnnotation);
+        final DynamicMBeanWrapper mbean = new DynamicMBeanWrapper(clazz, normalScoped, qualifiers);
         mBeanServer().registerMBean(mbean, objectName);
 
         objectNames.add(objectName);