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());
+ }
+ }
}