summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog21
-rw-r--r--examples/gnu/classpath/examples/management/TestBeans.java55
-rw-r--r--javax/management/MBeanAttributeInfo.java33
-rw-r--r--javax/management/MBeanConstructorInfo.java29
-rw-r--r--javax/management/MBeanFeatureInfo.java31
-rw-r--r--javax/management/MBeanInfo.java36
-rw-r--r--javax/management/MBeanNotificationInfo.java29
-rw-r--r--javax/management/MBeanOperationInfo.java49
-rw-r--r--javax/management/MBeanParameterInfo.java28
-rw-r--r--javax/management/StandardMBean.java14
10 files changed, 321 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 4806567be..11410c2fa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,25 @@
2006-07-29 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * examples/gnu/classpath/examples/management/TestBeans.java:
+ New file.
+ * javax/management/MBeanAttributeInfo.java:
+ (toString()): Implemented.
+ * javax/management/MBeanConstructorInfo.java:
+ (toString()): Implemented.
+ * javax/management/MBeanFeatureInfo.java:
+ (toString()): Implemented.
+ * javax/management/MBeanInfo.java:
+ (toString()): Implemented.
+ * javax/management/MBeanNotificationInfo.java:
+ (toString()): Implemented.
+ * javax/management/MBeanOperationInfo.java:
+ (toString()): Implemented.
+ * javax/management/MBeanParameterInfo.java:
+ (toString()): Implemented.
+ * javax/management/StandardMBean.java:
+ (getMBeanInfo()): Fix attribute naming.
+
+2006-07-29 Andrew John Hughes <gnu_andrew@member.fsf.org>
* gnu/java/lang/management/BeanImpl.java:
Extended javax.management.StandardMBean.
diff --git a/examples/gnu/classpath/examples/management/TestBeans.java b/examples/gnu/classpath/examples/management/TestBeans.java
new file mode 100644
index 000000000..ad8234555
--- /dev/null
+++ b/examples/gnu/classpath/examples/management/TestBeans.java
@@ -0,0 +1,55 @@
+/* TestBeans.java -- Tests the dynamic interface of the beans.
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath examples.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA. */
+
+package gnu.classpath.examples.management;
+
+import java.lang.management.ManagementFactory;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.management.DynamicMBean;
+
+public class TestBeans
+{
+ public static void main(String[] args)
+ throws Exception
+ {
+ List beans = new ArrayList();
+ /* FIXME: When there's a server, this will be easier... :) */
+ beans.add(ManagementFactory.getOperatingSystemMXBean());
+ beans.add(ManagementFactory.getRuntimeMXBean());
+ beans.add(ManagementFactory.getThreadMXBean());
+ beans.add(ManagementFactory.getCompilationMXBean());
+ beans.add(ManagementFactory.getClassLoadingMXBean());
+ beans.add(ManagementFactory.getMemoryMXBean());
+ beans.addAll(ManagementFactory.getMemoryPoolMXBeans());
+ beans.addAll(ManagementFactory.getMemoryManagerMXBeans());
+ beans.addAll(ManagementFactory.getGarbageCollectorMXBeans());
+ Iterator it = beans.iterator();
+ while (it.hasNext())
+ {
+ DynamicMBean bean = (DynamicMBean) it.next();
+ if (bean != null)
+ System.out.println(bean.getMBeanInfo());
+ }
+ }
+}
diff --git a/javax/management/MBeanAttributeInfo.java b/javax/management/MBeanAttributeInfo.java
index 3f0b16274..bded7e41a 100644
--- a/javax/management/MBeanAttributeInfo.java
+++ b/javax/management/MBeanAttributeInfo.java
@@ -265,4 +265,37 @@ public class MBeanAttributeInfo
return isWrite;
}
+ /**
+ * <p>
+ * Returns a textual representation of this instance. This
+ * is constructed using the class name
+ * (<code>javax.management.MBeanAttributeInfo</code>),
+ * the name, description and type of the attribute and the
+ * current settings of the {@link #isReadable()},
+ * {@link #isWritable()} and {@link #isIs()} properties.
+ * </p>
+ * <p>
+ * As instances of this class are immutable, the return value
+ * is computed just once for each instance and reused
+ * throughout its life.
+ * </p>
+ *
+ * @return a @link{java.lang.String} instance representing
+ * the instance in textual form.
+ */
+ public String toString()
+ {
+ if (string == null)
+ {
+ super.toString();
+ string = string.substring(0, string.length() - 1)
+ + ",type=" + attributeType
+ + ",isReadable=" + (isRead ? "yes" : "no")
+ + ",isWritable=" + (isWrite ? "yes" : "no")
+ + ",isIs=" + (is ? "yes" : "no")
+ + "]";
+ }
+ return string;
+ }
+
}
diff --git a/javax/management/MBeanConstructorInfo.java b/javax/management/MBeanConstructorInfo.java
index 22dd7d404..832a3296d 100644
--- a/javax/management/MBeanConstructorInfo.java
+++ b/javax/management/MBeanConstructorInfo.java
@@ -196,4 +196,33 @@ public class MBeanConstructorInfo
return super.hashCode() + Arrays.hashCode(signature);
}
+ /**
+ * <p>
+ * Returns a textual representation of this instance. This
+ * is constructed using the class name
+ * (<code>javax.management.MBeanConstructorInfo</code>),
+ * the name and description of the constructor and the
+ * contents of the array of parameters.
+ * </p>
+ * <p>
+ * As instances of this class are immutable, the return value
+ * is computed just once for each instance and reused
+ * throughout its life.
+ * </p>
+ *
+ * @return a @link{java.lang.String} instance representing
+ * the instance in textual form.
+ */
+ public String toString()
+ {
+ if (string == null)
+ {
+ super.toString();
+ string = string.substring(0, string.length() - 1)
+ + ",signature=" + Arrays.toString(signature)
+ + "]";
+ }
+ return string;
+ }
+
}
diff --git a/javax/management/MBeanFeatureInfo.java b/javax/management/MBeanFeatureInfo.java
index 79acc7b39..4f0243e18 100644
--- a/javax/management/MBeanFeatureInfo.java
+++ b/javax/management/MBeanFeatureInfo.java
@@ -77,6 +77,11 @@ public class MBeanFeatureInfo
protected String name;
/**
+ * The <code>toString()</code> result of this instance.
+ */
+ protected transient String string;
+
+ /**
* Constructs a new {@link MBeanFeatureInfo} with the specified
* name and description.
*
@@ -152,4 +157,30 @@ public class MBeanFeatureInfo
+ (description == null ? -1 : description.hashCode());
}
+ /**
+ * <p>
+ * Returns a textual representation of this instance. This
+ * is constructed using the class name
+ * (<code>javax.management.MBeanFeatureInfo</code>) and
+ * the name and description of the feature.
+ * </p>
+ * <p>
+ * As instances of this class are immutable, the return value
+ * is computed just once for each instance and reused
+ * throughout its life.
+ * </p>
+ *
+ * @return a @link{java.lang.String} instance representing
+ * the instance in textual form.
+ */
+ public String toString()
+ {
+ if (string == null)
+ string = getClass().getName()
+ + "[name=" + name
+ + ",desc=" + description
+ + "]";
+ return string;
+ }
+
}
diff --git a/javax/management/MBeanInfo.java b/javax/management/MBeanInfo.java
index 439272f7d..e6f03f065 100644
--- a/javax/management/MBeanInfo.java
+++ b/javax/management/MBeanInfo.java
@@ -128,6 +128,11 @@ public class MBeanInfo
private MBeanNotificationInfo[] notifications;
/**
+ * The <code>toString()</code> result of this instance.
+ */
+ private transient String string;
+
+ /**
* Constructs a new {@link MBeanInfo} using the supplied
* class name and description with the given attributes,
* operations, constructors and notifications. The class
@@ -358,4 +363,35 @@ public class MBeanInfo
+ Arrays.hashCode(operations) + Arrays.hashCode(notifications);
}
+ /**
+ * <p>
+ * Returns a textual representation of this instance. This
+ * is constructed using the class name
+ * (<code>javax.management.MBeanInfo</code>),
+ * the name and description of the bean and the contents
+ * of the four arrays.
+ * </p>
+ * <p>
+ * As instances of this class are immutable, the return value
+ * is computed just once for each instance and reused
+ * throughout its life.
+ * </p>
+ *
+ * @return a @link{java.lang.String} instance representing
+ * the instance in textual form.
+ */
+ public String toString()
+ {
+ if (string == null)
+ string = getClass().getName()
+ + "[name=" + className
+ + ",desc=" + description
+ + ",attributes=" + Arrays.toString(attributes)
+ + ",constructors=" + Arrays.toString(constructors)
+ + ",operations=" + Arrays.toString(operations)
+ + ",notifications=" + Arrays.toString(notifications)
+ + "]";
+ return string;
+ }
+
}
diff --git a/javax/management/MBeanNotificationInfo.java b/javax/management/MBeanNotificationInfo.java
index 1e02f763b..ba4077e8f 100644
--- a/javax/management/MBeanNotificationInfo.java
+++ b/javax/management/MBeanNotificationInfo.java
@@ -195,4 +195,33 @@ public class MBeanNotificationInfo
return super.hashCode() + Arrays.hashCode(types);
}
+ /**
+ * <p>
+ * Returns a textual representation of this instance. This
+ * is constructed using the class name
+ * (<code>javax.management.MBeanNotificationInfo</code>),
+ * the name and description of the notification and the
+ * contents of the array of types.
+ * </p>
+ * <p>
+ * As instances of this class are immutable, the return value
+ * is computed just once for each instance and reused
+ * throughout its life.
+ * </p>
+ *
+ * @return a @link{java.lang.String} instance representing
+ * the instance in textual form.
+ */
+ public String toString()
+ {
+ if (string == null)
+ {
+ super.toString();
+ string = string.substring(0, string.length() - 1)
+ + ",types=" + Arrays.toString(types)
+ + "]";
+ }
+ return string;
+ }
+
}
diff --git a/javax/management/MBeanOperationInfo.java b/javax/management/MBeanOperationInfo.java
index 9317d9a06..a2db8d1b0 100644
--- a/javax/management/MBeanOperationInfo.java
+++ b/javax/management/MBeanOperationInfo.java
@@ -292,4 +292,53 @@ public class MBeanOperationInfo
+ type.hashCode() + Integer.valueOf(impact).hashCode();
}
+ /**
+ * <p>
+ * Returns a textual representation of this instance. This
+ * is constructed using the class name
+ * (<code>javax.management.MBeanOperationInfo</code>),
+ * the name, description, return type and impact of the
+ * operation and the contents of the array of parameters.
+ * </p>
+ * <p>
+ * As instances of this class are immutable, the return value
+ * is computed just once for each instance and reused
+ * throughout its life.
+ * </p>
+ *
+ * @return a @link{java.lang.String} instance representing
+ * the instance in textual form.
+ */
+ public String toString()
+ {
+ if (string == null)
+ {
+ String impactString;
+ switch (impact)
+ {
+ case INFO:
+ impactString = "INFO";
+ break;
+ case ACTION:
+ impactString = "ACTION";
+ break;
+ case ACTION_INFO:
+ impactString = "ACTION_INFO";
+ break;
+ case UNKNOWN:
+ impactString = "UNKNOWN";
+ break;
+ default:
+ impactString = "ERRONEOUS VALUE";
+ }
+ super.toString();
+ string = string.substring(0, string.length() - 1)
+ + ",returnType=" + type
+ + ",impact=" + impactString
+ + ",signature=" + Arrays.toString(signature)
+ + "]";
+ }
+ return string;
+ }
+
}
diff --git a/javax/management/MBeanParameterInfo.java b/javax/management/MBeanParameterInfo.java
index 227e14c7e..ee6ef99b8 100644
--- a/javax/management/MBeanParameterInfo.java
+++ b/javax/management/MBeanParameterInfo.java
@@ -145,4 +145,32 @@ public class MBeanParameterInfo
return super.hashCode() + type.hashCode();
}
+ /**
+ * <p>
+ * Returns a textual representation of this instance. This
+ * is constructed using the class name
+ * (<code>javax.management.MBeanParameterInfo</code>) along
+ * with the name, description and type of the parameter.
+ * </p>
+ * <p>
+ * As instances of this class are immutable, the return value
+ * is computed just once for each instance and reused
+ * throughout its life.
+ * </p>
+ *
+ * @return a @link{java.lang.String} instance representing
+ * the instance in textual form.
+ */
+ public String toString()
+ {
+ if (string == null)
+ {
+ super.toString();
+ string = string.substring(0, string.length() - 1)
+ + ",type=" + type
+ + "]";
+ }
+ return string;
+ }
+
}
diff --git a/javax/management/StandardMBean.java b/javax/management/StandardMBean.java
index a8c8db701..736192ee2 100644
--- a/javax/management/StandardMBean.java
+++ b/javax/management/StandardMBean.java
@@ -562,7 +562,13 @@ public class StandardMBean
methods[a].getParameterTypes().length == 0)
{
Method[] amethods;
- String attrib = name.substring(3);
+ String attrib;
+ if (name.startsWith("is"))
+ attrib = name.substring(2,3).toLowerCase()
+ + name.substring(3);
+ else
+ attrib = name.substring(3,4).toLowerCase()
+ + name.substring(4);
if (attributes.containsKey(attrib))
amethods = (Method[]) attributes.get(attrib);
else
@@ -577,7 +583,8 @@ public class StandardMBean
methods[a].getParameterTypes().length == 1)
{
Method[] amethods;
- String attrib = name.substring(3);
+ String attrib = name.substring(3,4).toLowerCase()
+ + name.substring(4);
if (attributes.containsKey(attrib))
amethods = (Method[]) attributes.get(attrib);
else
@@ -625,8 +632,7 @@ public class StandardMBean
MBeanConstructorInfo[] cinfo = new MBeanConstructorInfo[cons.length];
for (int a = 0; a < cinfo.length; ++a)
{
- MBeanConstructorInfo oldInfo = new MBeanConstructorInfo("",
- cons[a]);
+ MBeanConstructorInfo oldInfo = new MBeanConstructorInfo("", cons[a]);
String desc = getDescription(oldInfo);
MBeanParameterInfo[] params = oldInfo.getSignature();
MBeanParameterInfo[] pinfo = new MBeanParameterInfo[params.length];