[exo-jcr-commits] exo-jcr SVN: r4067 - kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Mar 10 07:14:16 EST 2011


Author: nfilotto
Date: 2011-03-10 07:14:16 -0500 (Thu, 10 Mar 2011)
New Revision: 4067

Modified:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/WorkspaceContainer.java
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/JMX.java
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/JMXManagementProvider.java
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/MBeanScopingData.java
   kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/PropertiesInfo.java
Log:
EXOJCR-1238: Applied the given patches, it helps to display properly the MBeans in the jconsole by keeping the order of the properties used to define the MBean

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java	2011-03-09 20:25:06 UTC (rev 4066)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java	2011-03-10 12:14:16 UTC (rev 4067)
@@ -139,7 +139,7 @@
 
       this.config = config;
       this.addNamespacePlugins = addNamespacePlugins;
-      this.name = parent.getContext().getName() + "-" + config.getName();
+      this.name = config.getName();
       
       SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
       {
@@ -175,7 +175,7 @@
          config.setAccessControl(AccessControlPolicy.OPTIONAL);
 
       this.config = config;
-      this.name = parent.getContext().getName() + "-" + config.getName();
+      this.name = config.getName();
       SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
       {
          public Void run()

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/WorkspaceContainer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/WorkspaceContainer.java	2011-03-09 20:25:06 UTC (rev 4066)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/WorkspaceContainer.java	2011-03-10 12:14:16 UTC (rev 4067)
@@ -60,7 +60,7 @@
       super(new MX4JComponentAdapterFactory(), parent);
 
       repositoryContainer = parent;
-      this.name = repositoryContainer.getName() + "-" + config.getName();
+      this.name = config.getName();
    }
 
    // Components access methods -------

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/JMX.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/JMX.java	2011-03-09 20:25:06 UTC (rev 4066)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/JMX.java	2011-03-10 12:14:16 UTC (rev 4067)
@@ -18,7 +18,6 @@
  */
 package org.exoplatform.management.jmx.impl;
 
-import java.util.Hashtable;
 import java.util.Map;
 
 import javax.management.MalformedObjectNameException;
@@ -38,15 +37,8 @@
    }
 
    /**
-    * This method create an object name from a generic map argument. The main reason is that
-    * the method {@link javax.management.ObjectName#getInstance(String, java.util.Hashtable)} has
-    * uses a non generic Hashtable with Java 5 and use a Hashtable<String, String> constructor in Java 6.
+    * This method create an object name from a generic map argument.
     *
-    * The suitable solution is therefore to use a non generic Hashtable but that creates compilation warning therefore
-    * we encapsulate there this code in order to use the warning supression in that single place.
-    *
-    * @see ObjectName#getInstance(String, java.util.Hashtable)
-    *
     * @param domain  The domain part of the object name.
     * @param table A hash table containing one or more key
     * properties.  The key of each entry in the table is the key of a
@@ -62,11 +54,20 @@
     * quoting.
     * @exception NullPointerException One of the parameters is null.
     */
-   @SuppressWarnings("unchecked")
    public static ObjectName createObjectName(String domain, Map<String, String> table)
       throws MalformedObjectNameException, NullPointerException
    {
-      Hashtable tmp = new Hashtable(table);
-      return ObjectName.getInstance(domain, tmp);
+      StringBuilder name = new StringBuilder(128);
+      name.append(domain).append(':');
+      int i = 0;
+      for (Map.Entry<String, String> entry : table.entrySet())
+      {
+         if (i++ > 0)
+         {
+            name.append(",");            
+         }
+         name.append(entry.getKey()).append('=').append(entry.getValue());
+      }
+      return  ObjectName.getInstance(name.toString());
    }
 }

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/JMXManagementProvider.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/JMXManagementProvider.java	2011-03-09 20:25:06 UTC (rev 4066)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/JMXManagementProvider.java	2011-03-10 12:14:16 UTC (rev 4067)
@@ -28,7 +28,7 @@
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
-import java.util.Hashtable;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -76,7 +76,7 @@
       }
       catch (Exception e)
       {
-         e.printStackTrace();
+         LOG.warn("Could not create the ExoModelMBean for the class " + (context == null ? null : (context.getResource() == null ? null : context.getResource().getClass())), e);
       }
 
       //
@@ -93,7 +93,7 @@
             }
             catch (MalformedObjectNameException e)
             {
-               e.printStackTrace();
+               LOG.warn("Could not create the ObjectName for the class " + context.getResource().getClass(), e);
             }
          }
 
@@ -102,12 +102,14 @@
             // Merge with the container hierarchy context
             try
             {
-               Map<String, String> props = new Hashtable<String, String>();
+               Map<String, String> props = new LinkedHashMap<String, String>();
 
                // Merge scoping properties
                List<MBeanScopingData> list = context.getScopingData(MBeanScopingData.class);
-               for (MBeanScopingData scopingData : list)
+               // Read in revert order because wee received list of parents in upward order
+               for (int i = list.size(); i > 0; i--)
                {
+                  MBeanScopingData scopingData = list.get(i - 1);
                   props.putAll(scopingData);
                }
 
@@ -134,7 +136,7 @@
             }
             catch (MalformedObjectNameException e)
             {
-               e.printStackTrace();
+               LOG.warn("Could not register the MBean for the class " + context.getResource().getClass(), e);
             }
          }
       }
@@ -226,11 +228,11 @@
       }
       catch (InstanceNotFoundException e)
       {
-         e.printStackTrace();
+         LOG.warn("Could not unregister the MBean " + name, e);
       }
       catch (MBeanRegistrationException e)
       {
-         e.printStackTrace();
+         LOG.warn("Could not unregister the MBean " + name, e);
       }
    }
 }

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/MBeanScopingData.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/MBeanScopingData.java	2011-03-09 20:25:06 UTC (rev 4066)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/MBeanScopingData.java	2011-03-10 12:14:16 UTC (rev 4067)
@@ -18,14 +18,14 @@
  */
 package org.exoplatform.management.jmx.impl;
 
-import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
  * @author <a href="mailto:julien.viet at exoplatform.com">Julien Viet</a>
  * @version $Revision$
  */
-public class MBeanScopingData extends HashMap<String, String>
+public class MBeanScopingData extends LinkedHashMap<String, String>
 {
    public MBeanScopingData(int initialCapacity, float loadFactor)
    {

Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/PropertiesInfo.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/PropertiesInfo.java	2011-03-09 20:25:06 UTC (rev 4066)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/PropertiesInfo.java	2011-03-10 12:14:16 UTC (rev 4067)
@@ -25,7 +25,7 @@
 
 import java.lang.annotation.Annotation;
 import java.util.Collection;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
@@ -36,7 +36,7 @@
 {
 
    /** . */
-   private Map<String, PropertyInfo> properties;
+   private final Map<String, PropertyInfo> properties;
 
    public PropertiesInfo(Map<String, PropertyInfo> properties)
    {
@@ -57,7 +57,7 @@
       }
       if (blah != null)
       {
-         Map<String, PropertyInfo> properties = new HashMap<String, PropertyInfo>();
+         Map<String, PropertyInfo> properties = new LinkedHashMap<String, PropertyInfo>();
          for (Property property : blah)
          {
             PropertyInfo propertyInfo = new PropertyInfo(clazz, property);



More information about the exo-jcr-commits mailing list