You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/05/17 17:00:00 UTC

svn commit: r1595494 - /tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/monitoring/ManagedMBean.java

Author: rmannibucau
Date: Sat May 17 15:00:00 2014
New Revision: 1595494

URL: http://svn.apache.org/r1595494
Log:
no need to implement twice the same comparator + using addAll instead of foreach { add } pattern in ManagedMBean

Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/monitoring/ManagedMBean.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/monitoring/ManagedMBean.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/monitoring/ManagedMBean.java?rev=1595494&r1=1595493&r2=1595494&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/monitoring/ManagedMBean.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/monitoring/ManagedMBean.java Sat May 17 15:00:00 2014
@@ -53,11 +53,15 @@ import java.util.concurrent.atomic.Atomi
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.regex.Pattern;
 
+import static java.util.Collections.sort;
+
 /**
  * @version $Rev$ $Date$
  */
 public class ManagedMBean implements DynamicMBean {
 
+    private static final MBeanNotificationInfo[] EMPTY_NOTIFICATIONS = new MBeanNotificationInfo[0];
+
     private final List<MBeanAttributeInfo> attributes = new ArrayList<MBeanAttributeInfo>();
     private final List<MBeanOperationInfo> operations = new ArrayList<MBeanOperationInfo>();
     private final Map<String, Member> attributesMap = new HashMap<String, Member>();
@@ -112,22 +116,6 @@ public class ManagedMBean implements Dyn
         includeInfo = new MBeanParameterInfo("includeRegex", "java.lang.String", "\"" + includes.pattern() + "\"");
     }
 
-    private void sortAttributes(final List<MBeanAttributeInfo> attributes) {
-        Collections.sort(attributes, new Comparator<MBeanAttributeInfo>() {
-            public int compare(final MBeanAttributeInfo o1, final MBeanAttributeInfo o2) {
-                return o1.getName().compareTo(o2.getName());
-            }
-        });
-    }
-
-    private void sortOperations(final List<MBeanOperationInfo> operations) {
-        Collections.sort(operations, new Comparator<MBeanOperationInfo>() {
-            public int compare(final MBeanOperationInfo o1, final MBeanOperationInfo o2) {
-                return o1.getName().compareTo(o2.getName());
-            }
-        });
-    }
-
     private void scan(final Object target, final String prefix) {
         final ClassFinder finder = new ClassFinder(Classes.ancestors(target.getClass()));
 
@@ -245,12 +233,8 @@ public class ManagedMBean implements Dyn
                         field.setAccessible(true);
                         final Object key = field.get(o);
                         final ManagedMBean bean = new ManagedMBean(o, key.toString());
-                        for (final MBeanAttributeInfo info : bean.getMBeanInfo().getAttributes()) {
-                            attributes.add(info);
-                        }
-                        for (final MBeanOperationInfo info : bean.getMBeanInfo().getOperations()) {
-                            operations.add(info);
-                        }
+                        Collections.addAll(attributes, bean.getMBeanInfo().getAttributes());
+                        Collections.addAll(operations, bean.getMBeanInfo().getOperations());
                         attributesMap.putAll(bean.attributesMap);
                         operationsMap.putAll(bean.operationsMap);
                     } catch (final Exception e) {
@@ -262,8 +246,8 @@ public class ManagedMBean implements Dyn
             }
         }
 
-        sortOperations(operations);
-        sortAttributes(attributes);
+        sort(operations, MBeanFeatureInfoComparator.INSTANCE);
+        sort(attributes, MBeanFeatureInfoComparator.INSTANCE);
 
         if (filterAttributes) {
             final Iterator<MBeanAttributeInfo> iterator = attributes.iterator();
@@ -278,7 +262,7 @@ public class ManagedMBean implements Dyn
             }
         }
 
-        return new MBeanInfo(this.getClass().getName(), "", attributes.toArray(new MBeanAttributeInfo[0]), new MBeanConstructorInfo[0], operations.toArray(new MBeanOperationInfo[0]), new MBeanNotificationInfo[0]);
+        return new MBeanInfo(this.getClass().getName(), "", attributes.toArray(new MBeanAttributeInfo[attributes.size()]), new MBeanConstructorInfo[0], operations.toArray(new MBeanOperationInfo[operations.size()]), EMPTY_NOTIFICATIONS);
     }
 
     public void setAttributesFilter(String exclude, String include) {
@@ -350,7 +334,7 @@ public class ManagedMBean implements Dyn
         /**
          * The method name needs to be changed from "getFoo" to "foo"
          *
-         * @return
+         * @return attribute name
          */
         public String getName() {
             final String method = getter.getName();
@@ -464,4 +448,12 @@ public class ManagedMBean implements Dyn
         }
     }
 
+    private static class MBeanFeatureInfoComparator implements Comparator<MBeanFeatureInfo> {
+        private static final MBeanFeatureInfoComparator INSTANCE = new MBeanFeatureInfoComparator();
+
+        @Override
+        public int compare(final MBeanFeatureInfo o1, final MBeanFeatureInfo o2) {
+            return o1.getName().compareTo(o2.getName());
+        }
+    }
 }