Author: rob.stryker(a)jboss.com
Date: 2008-12-02 19:22:02 -0500 (Tue, 02 Dec 2008)
New Revision: 12227
Added:
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/util/EqualsUtil.java
Modified:
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/MBeanInfoWrapper.java
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/MBeanOperationInfoWrapper.java
Log:
MORE NPE's because of nonconforming MBeans on the jboss server side >=[
Modified:
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/MBeanInfoWrapper.java
===================================================================
---
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/MBeanInfoWrapper.java 2008-12-03
00:13:55 UTC (rev 12226)
+++
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/MBeanInfoWrapper.java 2008-12-03
00:22:02 UTC (rev 12227)
@@ -8,6 +8,8 @@
package org.jboss.tools.jmx.core;
+import java.util.Arrays;
+
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanInfo;
import javax.management.MBeanNotificationInfo;
@@ -17,6 +19,7 @@
import javax.management.ObjectName;
import org.eclipse.core.runtime.Assert;
+import org.jboss.tools.jmx.core.util.EqualsUtil;
public class MBeanInfoWrapper implements Comparable {
private final ObjectName on;
@@ -142,22 +145,24 @@
return false;
final MBeanInfoWrapper other = (MBeanInfoWrapper) obj;
if (info == null) {
- if (other.info != null)
- return false;
+ return other.info == null;
} else if (other.info == null ) {
return false;
- } else if (!info.equals(other.info))
- return false;
+ }
if (mbsc == null) {
- if (other.mbsc != null)
- return false;
+ return other.mbsc == null;
} else if (!mbsc.equals(other.mbsc))
return false;
if (on == null) {
- if (other.on != null)
- return false;
+ return other.on == null;
} else if (!on.equals(other.on))
return false;
- return true;
+ try {
+ return info.equals(other.info);
+ } catch( NullPointerException npe ) {
+ return EqualsUtil.infoEquals(info, other.info);
+ }
}
+
+
}
Modified:
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/MBeanOperationInfoWrapper.java
===================================================================
---
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/MBeanOperationInfoWrapper.java 2008-12-03
00:13:55 UTC (rev 12226)
+++
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/MBeanOperationInfoWrapper.java 2008-12-03
00:22:02 UTC (rev 12227)
@@ -9,9 +9,9 @@
package org.jboss.tools.jmx.core;
import javax.management.MBeanOperationInfo;
-import javax.management.MBeanParameterInfo;
import org.eclipse.core.runtime.Assert;
+import org.jboss.tools.jmx.core.util.EqualsUtil;
public class MBeanOperationInfoWrapper extends MBeanFeatureInfoWrapper {
@@ -52,56 +52,8 @@
if (info == null) {
if (other.info != null)
return false;
- } else if (!equals2(other.info))
+ } else if (!EqualsUtil.operationEquals(info, other.info))
return false;
return true;
}
-
- private boolean equals2(MBeanOperationInfo o) {
- if (o == info)
- return true;
- if (!(o instanceof MBeanOperationInfo))
- return false;
- MBeanOperationInfo p = (MBeanOperationInfo) o;
- return (p.getName().equals(info.getName()) &&
- p.getReturnType().equals(info.getReturnType()) &&
- p.getDescription().equals(info.getDescription()) &&
- p.getImpact() == info.getImpact() &&
- arrayEquals(p.getSignature(), info.getSignature()) /*&&
- p.getDescriptor().equals(info.getDescriptor()*/);
-
- }
-
- private boolean arrayEquals(MBeanParameterInfo[] a, MBeanParameterInfo[] a2) {
- if (a==a2)
- return true;
- if (a==null || a2==null)
- return false;
-
- int length = a.length;
- if (a2.length != length)
- return false;
-
- for (int i=0; i<length; i++) {
- MBeanParameterInfo o1 = a[i];
- MBeanParameterInfo o2 = a2[i];
- if (!(o1==null ? o2==null : paramEquals(o1,o2)))
- return false;
- }
-
- return true;
- }
-
- private boolean paramEquals(MBeanParameterInfo o1, MBeanParameterInfo o2) {
- if (o1 == o2)
- return true;
- return (o1.getName().equals(o2.getName()) &&
- o1.getType().equals(o2.getType()) &&
- safeEquals(o1.getDescription(), o2.getDescription()) /*&&
- o1.getDescriptor().equals(o2.getDescriptor())*/);
- }
-
- private boolean safeEquals(Object o1, Object o2) {
- return o1 == o2 || !(o1 == null || o2 == null) || o1.equals(o2);
- }
}
Added:
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/util/EqualsUtil.java
===================================================================
---
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/util/EqualsUtil.java
(rev 0)
+++
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/util/EqualsUtil.java 2008-12-03
00:22:02 UTC (rev 12227)
@@ -0,0 +1,69 @@
+package org.jboss.tools.jmx.core.util;
+
+import javax.management.MBeanInfo;
+import javax.management.MBeanOperationInfo;
+import javax.management.MBeanParameterInfo;
+
+public class EqualsUtil {
+
+
+ public static boolean operationEquals(MBeanOperationInfo one, MBeanOperationInfo two)
{
+ if (one == two)
+ return true;
+ return (one.getName().equals(two.getName()) &&
+ one.getReturnType().equals(two.getReturnType()) &&
+ one.getDescription().equals(two.getDescription()) &&
+ one.getImpact() == two.getImpact() &&
+ infoArrayEquals(one.getSignature(), two.getSignature()) /*&&
+ p.getDescriptor().equals(info.getDescriptor()*/);
+
+ }
+
+ public static boolean infoArrayEquals(MBeanParameterInfo[] a, MBeanParameterInfo[]
a2) {
+ if (a==a2)
+ return true;
+ if (a==null || a2==null)
+ return false;
+
+ int length = a.length;
+ if (a2.length != length)
+ return false;
+
+ for (int i=0; i<length; i++) {
+ MBeanParameterInfo o1 = a[i];
+ MBeanParameterInfo o2 = a2[i];
+ if (!(o1==null ? o2==null : paramEquals(o1,o2)))
+ return false;
+ }
+
+ return true;
+ }
+
+ public static boolean paramEquals(MBeanParameterInfo o1, MBeanParameterInfo o2) {
+ if (o1 == o2)
+ return true;
+ return (o1.getName().equals(o2.getName()) &&
+ o1.getType().equals(o2.getType()) &&
+ safeEquals(o1.getDescription(), o2.getDescription()) /*&&
+ o1.getDescriptor().equals(o2.getDescriptor())*/);
+ }
+
+ public static boolean safeEquals(Object o1, Object o2) {
+ return o1 == o2 || !(o1 == null || o2 == null) || o1.equals(o2);
+ }
+
+ public static boolean infoEquals(MBeanInfo one, MBeanInfo two) {
+ if (one == two )
+ return true;
+ if (!safeStringEquals(one.getClassName(), two.getClassName()) ||
+ !safeStringEquals(one.getDescription(),two.getDescription()))
+ return false;
+ return true;
+ }
+
+ public static boolean safeStringEquals(String one, String two) {
+ if( one == null )
+ return two == null;
+ return one.equals(two);
+ }
+}
Show replies by date