aboutsummaryrefslogtreecommitdiff
path: root/libjava/classpath/javax/management
diff options
context:
space:
mode:
authorAndrew Haley <aph@redhat.com>2016-09-30 16:24:48 +0000
committerAndrew Haley <aph@gcc.gnu.org>2016-09-30 16:24:48 +0000
commit07b78716af6a9d7c9fd1e94d9baf94a52c873947 (patch)
tree3f22b3241c513ad168c8353805614ae1249410f4 /libjava/classpath/javax/management
parenteae993948bae8b788c53772bcb9217c063716f93 (diff)
downloadgcc-07b78716af6a9d7c9fd1e94d9baf94a52c873947.zip
gcc-07b78716af6a9d7c9fd1e94d9baf94a52c873947.tar.gz
gcc-07b78716af6a9d7c9fd1e94d9baf94a52c873947.tar.bz2
Makefile.def: Remove libjava.
2016-09-30 Andrew Haley <aph@redhat.com> * Makefile.def: Remove libjava. * Makefile.tpl: Likewise. * Makefile.in: Regenerate. * configure.ac: Likewise. * configure: Likewise. * gcc/java: Remove. * libjava: Likewise. From-SVN: r240662
Diffstat (limited to 'libjava/classpath/javax/management')
-rw-r--r--libjava/classpath/javax/management/Attribute.java143
-rw-r--r--libjava/classpath/javax/management/AttributeChangeNotification.java164
-rw-r--r--libjava/classpath/javax/management/AttributeChangeNotificationFilter.java137
-rw-r--r--libjava/classpath/javax/management/AttributeList.java220
-rw-r--r--libjava/classpath/javax/management/AttributeNotFoundException.java70
-rw-r--r--libjava/classpath/javax/management/AttributeValueExp.java181
-rw-r--r--libjava/classpath/javax/management/BadAttributeValueExpException.java90
-rw-r--r--libjava/classpath/javax/management/BadBinaryOpValueExpException.java101
-rw-r--r--libjava/classpath/javax/management/BadStringOperationException.java91
-rw-r--r--libjava/classpath/javax/management/DefaultLoaderRepository.java152
-rw-r--r--libjava/classpath/javax/management/Descriptor.java392
-rw-r--r--libjava/classpath/javax/management/DescriptorAccess.java65
-rw-r--r--libjava/classpath/javax/management/DescriptorRead.java59
-rw-r--r--libjava/classpath/javax/management/DynamicMBean.java162
-rw-r--r--libjava/classpath/javax/management/InstanceAlreadyExistsException.java75
-rw-r--r--libjava/classpath/javax/management/InstanceNotFoundException.java75
-rw-r--r--libjava/classpath/javax/management/IntrospectionException.java77
-rw-r--r--libjava/classpath/javax/management/InvalidApplicationException.java91
-rw-r--r--libjava/classpath/javax/management/InvalidAttributeValueException.java70
-rw-r--r--libjava/classpath/javax/management/JMException.java70
-rw-r--r--libjava/classpath/javax/management/JMRuntimeException.java70
-rw-r--r--libjava/classpath/javax/management/JMX.java344
-rw-r--r--libjava/classpath/javax/management/ListenerNotFoundException.java74
-rw-r--r--libjava/classpath/javax/management/MBeanAttributeInfo.java315
-rw-r--r--libjava/classpath/javax/management/MBeanConstructorInfo.java241
-rw-r--r--libjava/classpath/javax/management/MBeanException.java117
-rw-r--r--libjava/classpath/javax/management/MBeanFeatureInfo.java201
-rw-r--r--libjava/classpath/javax/management/MBeanInfo.java402
-rw-r--r--libjava/classpath/javax/management/MBeanNotificationInfo.java227
-rw-r--r--libjava/classpath/javax/management/MBeanOperationInfo.java359
-rw-r--r--libjava/classpath/javax/management/MBeanParameterInfo.java176
-rw-r--r--libjava/classpath/javax/management/MBeanPermission.java549
-rw-r--r--libjava/classpath/javax/management/MBeanRegistration.java95
-rw-r--r--libjava/classpath/javax/management/MBeanRegistrationException.java83
-rw-r--r--libjava/classpath/javax/management/MBeanServer.java1199
-rw-r--r--libjava/classpath/javax/management/MBeanServerBuilder.java102
-rw-r--r--libjava/classpath/javax/management/MBeanServerConnection.java768
-rw-r--r--libjava/classpath/javax/management/MBeanServerDelegate.java304
-rw-r--r--libjava/classpath/javax/management/MBeanServerDelegateMBean.java101
-rw-r--r--libjava/classpath/javax/management/MBeanServerFactory.java413
-rw-r--r--libjava/classpath/javax/management/MBeanServerInvocationHandler.java401
-rw-r--r--libjava/classpath/javax/management/MBeanServerNotification.java103
-rw-r--r--libjava/classpath/javax/management/MBeanServerPermission.java470
-rw-r--r--libjava/classpath/javax/management/MBeanTrustPermission.java105
-rw-r--r--libjava/classpath/javax/management/MXBean.java82
-rw-r--r--libjava/classpath/javax/management/MalformedObjectNameException.java75
-rw-r--r--libjava/classpath/javax/management/NotCompliantMBeanException.java77
-rw-r--r--libjava/classpath/javax/management/Notification.java334
-rw-r--r--libjava/classpath/javax/management/NotificationBroadcaster.java111
-rw-r--r--libjava/classpath/javax/management/NotificationBroadcasterSupport.java389
-rw-r--r--libjava/classpath/javax/management/NotificationEmitter.java75
-rw-r--r--libjava/classpath/javax/management/NotificationFilter.java65
-rw-r--r--libjava/classpath/javax/management/NotificationFilterSupport.java139
-rw-r--r--libjava/classpath/javax/management/NotificationListener.java69
-rw-r--r--libjava/classpath/javax/management/ObjectInstance.java147
-rw-r--r--libjava/classpath/javax/management/ObjectName.java944
-rw-r--r--libjava/classpath/javax/management/OperationsException.java75
-rw-r--r--libjava/classpath/javax/management/PersistentMBean.java126
-rw-r--r--libjava/classpath/javax/management/Query.java1900
-rw-r--r--libjava/classpath/javax/management/QueryEval.java95
-rw-r--r--libjava/classpath/javax/management/QueryExp.java86
-rw-r--r--libjava/classpath/javax/management/ReflectionException.java117
-rw-r--r--libjava/classpath/javax/management/RuntimeErrorException.java114
-rw-r--r--libjava/classpath/javax/management/RuntimeMBeanException.java113
-rw-r--r--libjava/classpath/javax/management/RuntimeOperationsException.java120
-rw-r--r--libjava/classpath/javax/management/ServiceNotFoundException.java74
-rw-r--r--libjava/classpath/javax/management/StandardMBean.java1083
-rw-r--r--libjava/classpath/javax/management/StringValueExp.java133
-rw-r--r--libjava/classpath/javax/management/ValueExp.java85
-rw-r--r--libjava/classpath/javax/management/loading/ClassLoaderRepository.java138
-rw-r--r--libjava/classpath/javax/management/openmbean/ArrayType.java672
-rw-r--r--libjava/classpath/javax/management/openmbean/CompositeData.java153
-rw-r--r--libjava/classpath/javax/management/openmbean/CompositeDataInvocationHandler.java190
-rw-r--r--libjava/classpath/javax/management/openmbean/CompositeDataSupport.java345
-rw-r--r--libjava/classpath/javax/management/openmbean/CompositeType.java320
-rw-r--r--libjava/classpath/javax/management/openmbean/InvalidKeyException.java76
-rw-r--r--libjava/classpath/javax/management/openmbean/InvalidOpenTypeException.java75
-rw-r--r--libjava/classpath/javax/management/openmbean/KeyAlreadyExistsException.java76
-rw-r--r--libjava/classpath/javax/management/openmbean/OpenDataException.java78
-rw-r--r--libjava/classpath/javax/management/openmbean/OpenMBeanAttributeInfo.java120
-rw-r--r--libjava/classpath/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java547
-rw-r--r--libjava/classpath/javax/management/openmbean/OpenMBeanConstructorInfo.java112
-rw-r--r--libjava/classpath/javax/management/openmbean/OpenMBeanConstructorInfoSupport.java174
-rw-r--r--libjava/classpath/javax/management/openmbean/OpenMBeanInfo.java154
-rw-r--r--libjava/classpath/javax/management/openmbean/OpenMBeanInfoSupport.java191
-rw-r--r--libjava/classpath/javax/management/openmbean/OpenMBeanOperationInfo.java154
-rw-r--r--libjava/classpath/javax/management/openmbean/OpenMBeanOperationInfoSupport.java240
-rw-r--r--libjava/classpath/javax/management/openmbean/OpenMBeanParameterInfo.java190
-rw-r--r--libjava/classpath/javax/management/openmbean/OpenMBeanParameterInfoSupport.java512
-rw-r--r--libjava/classpath/javax/management/openmbean/OpenType.java247
-rw-r--r--libjava/classpath/javax/management/openmbean/SimpleType.java350
-rw-r--r--libjava/classpath/javax/management/openmbean/TabularData.java258
-rw-r--r--libjava/classpath/javax/management/openmbean/TabularDataSupport.java648
-rw-r--r--libjava/classpath/javax/management/openmbean/TabularType.java268
-rw-r--r--libjava/classpath/javax/management/openmbean/package.html64
-rw-r--r--libjava/classpath/javax/management/package.html197
-rw-r--r--libjava/classpath/javax/management/remote/NotificationResult.java166
-rw-r--r--libjava/classpath/javax/management/remote/TargetedNotification.java126
-rw-r--r--libjava/classpath/javax/management/remote/package.html53
-rw-r--r--libjava/classpath/javax/management/remote/rmi/RMIConnection.java1161
-rw-r--r--libjava/classpath/javax/management/remote/rmi/RMIServer.java89
101 files changed, 0 insertions, 24476 deletions
diff --git a/libjava/classpath/javax/management/Attribute.java b/libjava/classpath/javax/management/Attribute.java
deleted file mode 100644
index 48f5db9..0000000
--- a/libjava/classpath/javax/management/Attribute.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Attribute.java --
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.io.Serializable;
-
-/**
- * Represents an MBean attribute, having the name and the assigned value. The
- * MBean objects use this class to get and set attributes values.
- *
- * @since 1.5
- *
- * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
- */
-public class Attribute
- implements Serializable
-{
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 2484220110589082382L;
-
- /**
- * The attribute name.
- */
- final String m_name;
-
- /**
- * The attribute value.
- */
- final Object m_value;
-
- /**
- * Create the attribute with the given name and value.
- *
- * @param name the attribute name
- * @param value the attribute value
- */
- public Attribute(String name, Object value)
- {
- m_name = name;
- m_value = value;
- }
-
- /**
- * Compares the attribute with another attribute.
- *
- * @param other the other object to compare with
- *
- * @return true if both value and object are equal, false otherwise.
- */
- public boolean equals(Object other)
- {
- if (other instanceof Attribute)
- {
- Attribute oa = (Attribute) other;
- boolean n, v;
- if (oa.m_name == null || m_name == null)
- n = oa.m_name == m_name;
- else
- n = oa.m_name.equals(m_name);
-
- if (oa.m_value == null || m_value == null)
- v = oa.m_value == m_value;
- else
- v = oa.m_value.equals(m_value);
-
- return n && v;
-
- }
- else
- return false;
- }
-
- /**
- * Returns the attribute name.
- *
- * @return the attribute name
- */
- public String getName()
- {
- return m_name;
- }
-
- /**
- * Returns the attribute value.
- *
- * @return the attribute value.
- */
- public Object getValue()
- {
- return m_value;
- }
-
- /**
- * Need to override as {@link #equals} is overridden.
- *
- * @return the expression, dependent of the object and name hashcodes.
- */
- public int hashCode()
- {
- int n = m_name == null ? 0 : m_name.hashCode();
- int v = m_value == null ? 0 : m_value.hashCode();
-
- return n ^ v;
- }
-
-}
diff --git a/libjava/classpath/javax/management/AttributeChangeNotification.java b/libjava/classpath/javax/management/AttributeChangeNotification.java
deleted file mode 100644
index 16dbf86..0000000
--- a/libjava/classpath/javax/management/AttributeChangeNotification.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/* AttributeChangeNotification.java -- Notification for attribute changes
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.management;
-
-/**
- * Defines the notification used to let listeners know of
- * an attribute change. The bean itself is responsible
- * for creating and transmitting the notification when the
- * attribute changes, by implementing
- * {@link NotificationBroadcaster}. For example, if a
- * bean increments the integer, <code>count</code>, it
- * should send a notification with the
- * <code>attributeName</code>, <code>"count"</code>,
- * the <code>attributeType</code>, <code>"Integer"</code>
- * and the old and new values of the attribute.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class AttributeChangeNotification
- extends Notification
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 535176054565814134L;
-
- /**
- * The attribute type for attribute change
- * notifications.
- */
- public static final String ATTRIBUTE_CHANGE = "jmx.attribute.change";
-
- /**
- * The name of the attribute that changed.
- */
- private String attributeName;
-
- /**
- * The type of the attribute that changed.
- */
- private String attributeType;
-
- /**
- * The old value of the attribute.
- */
- private Object oldValue;
-
- /**
- * The new value of the attribute.
- */
- private Object newValue;
-
- /**
- * Constructs a new {@link AttributeChangeNotification}
- * with the specified source, sequence number, timestamp,
- * message, and the attribute name, type, old value and
- * new value.
- *
- * @param source the producer of the notification, which
- * is usually the bean that changed the
- * attribute.
- * @param sequenceNumber the sequence number of the
- * notification.
- * @param timeStamp the date and time of the notification.
- * @param msg the message content of the notification.
- * @param name the name of the attribute.
- * @param type the type of the attribute.
- * @param oldVal the old value of the attribute.
- * @param newVal the new value of the attribute.
- */
- public AttributeChangeNotification(Object source,
- long sequenceNumber,
- long timeStamp,
- String msg, String name,
- String type, Object oldVal,
- Object newVal)
- {
- super(ATTRIBUTE_CHANGE, source, sequenceNumber,
- timeStamp, msg);
- attributeName = name;
- attributeType = type;
- oldValue = oldVal;
- newValue = newVal;
- }
-
- /**
- * Returns the name of the attribute that changed.
- *
- * @return the name of the attribute.
- */
- public String getAttributeName()
- {
- return attributeName;
- }
-
- /**
- * Returns the type of the attribute that changed.
- *
- * @return the type of the attribute.
- */
- public String getAttributeType()
- {
- return attributeType;
- }
-
- /**
- * Returns the old value of the attribute.
- *
- * @return the old value.
- */
- public Object getOldValue()
- {
- return oldValue;
- }
-
- /**
- * Returns the new value of the attribute.
- *
- * @return the new value.
- */
- public Object getNewValue()
- {
- return newValue;
- }
-
-}
diff --git a/libjava/classpath/javax/management/AttributeChangeNotificationFilter.java b/libjava/classpath/javax/management/AttributeChangeNotificationFilter.java
deleted file mode 100644
index ef3af0d..0000000
--- a/libjava/classpath/javax/management/AttributeChangeNotificationFilter.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/* AttributeChangeNotificationFilter.java -- Filter on attribute name
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.io.Serializable;
-
-import java.util.Vector;
-
-/**
- * Performs filtering of {@link AttributeChangeNotification}s
- * based on a list of attribute names.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class AttributeChangeNotificationFilter
- implements NotificationFilter, Serializable
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -6347317584796410029L;
-
- /**
- * Lists the names of the attributes that may pass
- * through the filter.
- */
- private final Vector<String> enabledAttributes = new Vector<String>();
-
- /**
- * Blocks all {@link AttributeChangeNotification}s
- * by emptying the list of enabled attributes.
- */
- public void disableAllAttributes()
- {
- enabledAttributes.clear();
- }
-
- /**
- * Removes the specified attribute name from the list
- * of enabled attributes, thus preventing
- * {@link AttributeChangeNotification}s for this attribute
- * from passing through the filter. If the attribute is
- * not enabled, this has no effect.
- *
- * @param name the name of the attribute to disable.
- */
- public void disableAttribute(String name)
- {
- enabledAttributes.remove(name);
- }
-
- /**
- * Adds the specified attribute name to the list
- * of enabled attributes, thus allowing
- * {@link AttributeChangeNotification}s for this attribute
- * to pass through the filter. If the attribute is
- * enabled, this has no effect.
- *
- * @param name the name of the attribute to enable.
- */
- public void enableAttribute(String name)
- {
- if (!enabledAttributes.contains(name))
- enabledAttributes.add(name);
- }
-
- /**
- * Returns the list of enabled attributes for this
- * filter.
- *
- * @return the list of enabled attributes.
- */
- public Vector<String> getEnabledAttributes()
- {
- return enabledAttributes;
- }
-
- /**
- * Returns true if the specified notification is an
- * {@link AttributeChangeNotification} and the name of the
- * attribute concerned is in the list of enabled attributes
- * for this filter.
- *
- * @param notif the notification being filtered.
- * @return true if the notification is an
- * {@link AttributeChangeNotification} for an
- * enabled attribute.
- */
- public boolean isNotificationEnabled(Notification notif)
- {
- if (notif instanceof AttributeChangeNotification)
- {
- AttributeChangeNotification n =
- (AttributeChangeNotification) notif;
- return enabledAttributes.contains(n.getAttributeName());
- }
- return false;
- }
-
-}
diff --git a/libjava/classpath/javax/management/AttributeList.java b/libjava/classpath/javax/management/AttributeList.java
deleted file mode 100644
index 3d240b7..0000000
--- a/libjava/classpath/javax/management/AttributeList.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/* AttributeList.java -- A list of MBean attributes.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.util.ArrayList;
-
-/**
- * Represents a list of MBean {@link Attribute}s, with their
- * names and values. This is implemented as an
- * {@link java.util.ArrayList} extension, with additional
- * methods typed to only allow the addition of {@link Attribute}s.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class AttributeList
- extends ArrayList<Object>
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -4077085769279709076L;
-
- /**
- * Constructs an empty list with an initial capacity of ten.
- *
- * @see java.util.ArrayList#ArrayList()
- */
- public AttributeList()
- {
- super();
- }
-
- /**
- * Constructs an {@link AttributeList} using the contents
- * of an existing list. The initial capacity is 110% of the
- * size of the specified list.
- *
- * @param list the list to use to fill this list.
- * @see java.util.ArrayList#ArrayList(java.util.Collection)
- */
- public AttributeList(AttributeList list)
- {
- super(list);
- }
-
- /**
- * Constructs an empty list with the specified initial capacity.
- *
- * @param capacity the initial capacity of the list.
- * @see java.util.ArrayList#ArrayList(int)
- */
- public AttributeList(int capacity)
- {
- super(capacity);
- }
-
- /**
- * Adds the specified {@link Attribute} to the end of the list.
- *
- * @param attribute the attribute to add.
- * @see java.util.Arraylist#add(Object)
- */
- public void add(Attribute attribute)
- {
- super.add(attribute);
- }
-
- /**
- * <p>
- * Adds the specified {@link Attribute} at the supplied index.
- * Any attribute already at that index is moved up one place
- * in the list to the position <code>(index + 1)</code>.
- * Likewise, the attribute at <code>(index + 1)</code> is
- * also moved up one place, continuing until the final
- * attribute in the list moves to a new position, increasing
- * the size of the list.
- * </p>
- * <p>
- * If the index is invalid (i.e. it is smaller than zero, or
- * greater than the current size of the list), a
- * @link{RuntimeOperationsException} is thrown, which wraps
- * the @link{IndexOutOfBoundsException} from the underlying
- * array list.
- * </p>
- *
- * @param index the index at which to place the new attribute.
- * @param attribute the new attribute to add.
- * @throws RuntimeOperationsException if <code>index < 0</code>
- * or <code>index > size()</code>
- * @see java.util.ArrayList#add(int, Object)
- */
- public void add(int index, Attribute attribute)
- {
- try
- {
- super.add(index, attribute);
- }
- catch (IndexOutOfBoundsException e)
- {
- throw new RuntimeOperationsException(e, "Invalid index.");
- }
- }
-
- /**
- * Adds all the {@link Attribute}s from the supplied list
- * to the end of this list, in the order they are returned
- * by the list's {@link java.util.Iterator}.
- *
- * @param list the list of attributes to add.
- * @return true if the list changed.
- * @see java.util.ArrayList#addAll(Collection)
- */
- public boolean addAll(AttributeList list)
- {
- return super.addAll(list);
- }
-
- /**
- * <p>
- * Adds all the {@link Attribute}s from the supplied list
- * to this list, at the specified index. The attributes
- * are added in the order they are returned by the
- * list's {@link java.util.Iterator}. Any attribute already
- * at that index is moved up one place in the list to the
- * position <code>(index + list.size())</code>.
- * Likewise, the attribute at <code>(index + list.size())</code>
- * is also moved up one place, continuing until the final
- * attribute in the original list.
- * </p>
- * <p>
- * If the index is invalid (i.e. it is smaller than zero, or
- * greater than the current size of the list), a
- * @link{RuntimeOperationsException} is thrown, which wraps
- * the @link{IndexOutOfBoundsException} from the underlying
- * array list.
- * </p>
- *
- * @param index the index at which to place the new attribute.
- * @param list the list of attributes to add.
- * @return true if the list changed.
- * @throws RuntimeOperationsException if <code>index < 0</code>
- * or <code>index > size()</code>
- * @see java.util.ArrayList#addAll(int, Collection)
- */
- public boolean addAll(int index, AttributeList list)
- {
- try
- {
- return super.addAll(index, list);
- }
- catch (IndexOutOfBoundsException e)
- {
- throw new RuntimeOperationsException(e, "Invalid index.");
- }
- }
-
- /**
- * Replaces the attribute at the specified index with the one
- * supplied. If the index is invalid (i.e. it is smaller than
- * zero, or greater than the current size of the list), a
- * @link{RuntimeOperationsException} is thrown, which wraps
- * the @link{IndexOutOfBoundsException} from the underlying
- * array list.
- *
- * @param index the index at which to place the new attribute.
- * @param attribute the new attribute to add.
- * @throws RuntimeOperationsException if <code>index < 0</code>
- * or <code>index > size()</code>
- * @see java.util.ArrayList#set(int, Object)
- */
- public void set(int index, Attribute attribute)
- {
- try
- {
- super.set(index, attribute);
- }
- catch (IndexOutOfBoundsException e)
- {
- throw new RuntimeOperationsException(e, "Invalid index.");
- }
- }
-
-}
diff --git a/libjava/classpath/javax/management/AttributeNotFoundException.java b/libjava/classpath/javax/management/AttributeNotFoundException.java
deleted file mode 100644
index 4b1f4e6..0000000
--- a/libjava/classpath/javax/management/AttributeNotFoundException.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/* AttributeNotFoundException.java -- Thrown by unknown attributes.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Thrown when a attribute is requested but can not be
- * found.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class AttributeNotFoundException
- extends OperationsException
-{
-
- /**
- * Constructs a new <code>AttributeNotFoundException</code>.
- */
- public AttributeNotFoundException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>AttributeNotFoundException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public AttributeNotFoundException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/AttributeValueExp.java b/libjava/classpath/javax/management/AttributeValueExp.java
deleted file mode 100644
index 6e8f5fb..0000000
--- a/libjava/classpath/javax/management/AttributeValueExp.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/* AttributeValueExp.java -- Represents attributes to be passed to queries.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Represents an attribute value being used as an argument
- * to a relational constraint.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class AttributeValueExp
- implements ValueExp
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -7768025046539163385L;
-
- /**
- * The name of the attribute.
- */
- private String attr;
-
- /**
- * Constructs a new {@link AttributeValueExp}.
- *
- * @deprecated An instance created with a <code>null</code>
- * attribute name can not be used in a query.
- */
- @Deprecated public AttributeValueExp()
- {
- }
-
- /**
- * Constructs a new {@link AttributeValueExp} using the
- * specified attribute.
- *
- * @param attr the name of the attribute whose value
- * will be used for this expression.
- */
- public AttributeValueExp(String attr)
- {
- this.attr = attr;
- }
-
- /**
- * Applies the {@link AttributeValueExp} to the specified
- * management bean by obtaining the attribute value from
- * the {@link MBeanServer} and using it to create a
- * {@link StringValueExp}.
- *
- * @param name the {@link ObjectName} of the bean to obtain
- * the value from.
- * @return a {@link StringValueExp} containing the result.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the value expression.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the value expression.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the value expression.
- * @throws InvalidApplicationException if the value expression is applied
- * to the wrong type of bean.
- */
- public ValueExp apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- Object val = getAttribute(name);
- if (val == null || !(val instanceof String))
- throw new BadAttributeValueExpException(val);
- return new StringValueExp((String) val);
- }
-
- /**
- * Returns the value of the attribute by calling the
- * {@link MBeanServer#getAttribute(ObjectName)} method of
- * the server returned by {@link QueryEval#getMBeanServer()}.
- * If an exception occurs, <code>null</code> is returned.
- *
- * @param name the {@link ObjectName} of the bean to obtain
- * the value from.
- * @return a {@link StringValueExp} containing the result.
- */
- protected Object getAttribute(ObjectName name)
- {
- try
- {
- return QueryEval.getMBeanServer().getAttribute(name, attr);
- }
- catch (NullPointerException e)
- {
- return null;
- }
- catch (MBeanException e)
- {
- return null;
- }
- catch (AttributeNotFoundException e)
- {
- return null;
- }
- catch (InstanceNotFoundException e)
- {
- return null;
- }
- catch (ReflectionException e)
- {
- return null;
- }
- }
-
- /**
- * Returns the attribute name.
- *
- * @return the attribute name.
- */
- public String getAttributeName()
- {
- return attr;
- }
-
- /**
- * Sets the {@link MBeanServer} on which the query
- * will be performed.
- *
- * @param server the new server.
- */
- public void setMBeanServer(MBeanServer server)
- {
- /* This seems to do nothing any more */
- }
-
- /**
- * Returns the attribute name, quoted.
- *
- * @return the quoted attribute name.
- */
- public String toString()
- {
- return "'" + attr + "'";
- }
-
-}
diff --git a/libjava/classpath/javax/management/BadAttributeValueExpException.java b/libjava/classpath/javax/management/BadAttributeValueExpException.java
deleted file mode 100644
index 207a786..0000000
--- a/libjava/classpath/javax/management/BadAttributeValueExpException.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/* BadAttributeValueExpException.java -- Thrown by invalid query attributes.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Thrown when the value of an a attribute passed to a query proves to
- * be invalid. This exception is only used internally by the Java
- * management API and is not exposed to user code.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class BadAttributeValueExpException
- extends Exception
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -3105272988410493376L;
-
- /**
- * The attribute value that caused the exception.
- */
- private Object val;
-
- /**
- * Constructs a new <code>BadAttributeValueExpException</code>
- * using the specified object to represent the invalid value.
- *
- * @param val the inappropriate value.
- */
- public BadAttributeValueExpException(Object val)
- {
- super();
- this.val = val;
- }
-
- /**
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.BadAttributeValueExpException</code>)
- * and the invalid value.
- *
- * @return a @link{java.lang.String} instance representing
- * the instance in textual form.
- */
- public String toString()
- {
- return getClass().getName()
- + "[val=" + val
- + "]";
- }
-
-}
diff --git a/libjava/classpath/javax/management/BadBinaryOpValueExpException.java b/libjava/classpath/javax/management/BadBinaryOpValueExpException.java
deleted file mode 100644
index 082b4a7..0000000
--- a/libjava/classpath/javax/management/BadBinaryOpValueExpException.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/* BadBinaryOpValueExpException.java -- Thrown by invalid query expressions.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Thrown when the expression passed to a method for constructing a
- * query proves to be invalid. This exception is only used internally
- * by the Java management API and is not exposed to user code.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class BadBinaryOpValueExpException
- extends Exception
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 5068475589449021227L;
-
- /**
- * The value expression that caused the exception.
- */
- private ValueExp exp;
-
- /**
- * Constructs a new <code>BadBinaryOpValueExpException</code>
- * using the specified expression to represent the invalid one.
- *
- * @param exp the inappropriate value expression.
- */
- public BadBinaryOpValueExpException(ValueExp exp)
- {
- super();
- this.exp = exp;
- }
-
- /**
- * Returns the inappropriate value expression associated
- * with this exception.
- *
- * @return the value expression.
- */
- public ValueExp getExp()
- {
- return exp;
- }
-
- /**
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.BadBinaryOpValueExpException</code>)
- * and the invalid value expression.
- *
- * @return a @link{java.lang.String} instance representing
- * the instance in textual form.
- */
- public String toString()
- {
- return getClass().getName()
- + "[exp=" + exp
- + "]";
- }
-
-}
diff --git a/libjava/classpath/javax/management/BadStringOperationException.java b/libjava/classpath/javax/management/BadStringOperationException.java
deleted file mode 100644
index 261b352..0000000
--- a/libjava/classpath/javax/management/BadStringOperationException.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/* BadStringOperationException.java -- Thrown by invalid query attributes.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Thrown when a string-based operation passed to a query proves to
- * be invalid. This exception is only used internally by the Java
- * management API and is not exposed to user code.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class BadStringOperationException
- extends Exception
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 7802201238441662100L;
-
- /**
- * The operation that caused the exception.
- */
- private String op;
-
- /**
- * Constructs a new <code>BadStringOperationException</code>
- * using the specified object to represent the invalid string
- * operation.
- *
- * @param op the inappropriate string operation.
- */
- public BadStringOperationException(String op)
- {
- super();
- this.op = op;
- }
-
- /**
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.BadStringOperationException</code>)
- * and the invalid string operation.
- *
- * @return a @link{java.lang.String} instance representing
- * the instance in textual form.
- */
- public String toString()
- {
- return getClass().getName()
- + "[op=" + op
- + "]";
- }
-
-}
diff --git a/libjava/classpath/javax/management/DefaultLoaderRepository.java b/libjava/classpath/javax/management/DefaultLoaderRepository.java
deleted file mode 100644
index d70bf7e..0000000
--- a/libjava/classpath/javax/management/DefaultLoaderRepository.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/* DefaultLoaderRepository.java -- Manages class loaders for the servers.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.util.List;
-
-/**
- * Maintains a list of the {@link ClassLoader} instances
- * registered with the management servers, allowing it
- * to be used to load classes. In early versions of the
- * JMX API, this class represented a shared repository for
- * the classloaders of all management servers. The management
- * of classloaders is now decentralised and this class is
- * deprecated. The old behaviour is emulated by consulting
- * the {@link MBeanServer#getClassLoaderRepository()} method
- * of all the servers obtained from
- * {@link MBeanServerFactory#findMBeanServer(String)}. Use of
- * this class should be avoided in new code.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- * @deprecated Use {@link MBeanServer#getClassLoaderRepository()}
- * instead.
- */
-@Deprecated public class DefaultLoaderRepository
-{
-
- /**
- * Attempts to load the given class using class loaders
- * supplied by the repository of each {@link MBeanServer}.
- * The {@link ClassLoader#loadClass(String)}
- * method of each class loader is called. If the method
- * returns successfully, then the returned {@link Class} instance
- * is returned. If a {@link ClassNotFoundException} is thrown,
- * then the next loader is tried. Any other exception thrown
- * by the method is passed back to the caller. This method
- * throws a {@link ClassNotFoundException} itself if all the
- * class loaders listed prove fruitless.
- *
- * @param name the name of the class to load.
- * @return the loaded class.
- * @throws ClassNotFoundException if all the class loaders fail
- * to load the class.
- */
- // API issue with lack of <?> on Class
- @SuppressWarnings("rawtypes")
- public static Class loadClass(String name)
- throws ClassNotFoundException
- {
- List<MBeanServer> servers = MBeanServerFactory.findMBeanServer(null);
- for (MBeanServer server : servers)
- {
- try
- {
- return server.getClassLoaderRepository().loadClass(name);
- }
- catch (ClassNotFoundException e)
- {
- /* Ignored; try the next server. */
- }
- }
- throw new ClassNotFoundException("The class loaders of all registered " +
- "servers failed to load the class, " +
- name);
- }
-
- /**
- * <p>
- * Attempts to load the given class using class loaders
- * supplied by the repository of each {@link MBeanServer}.
- * The {@link ClassLoader#loadClass(String)}
- * method of each class loader is called. If the method
- * returns successfully, then the returned {@link Class} instance
- * is returned. If a {@link ClassNotFoundException} is thrown,
- * then the next loader is tried. Any other exception thrown
- * by the method is passed back to the caller. This method
- * throws a {@link ClassNotFoundException} itself if all the
- * class loaders listed prove fruitless.
- * </p>
- * <p>
- * Note that this method may deadlock if called simultaneously
- * by two class loaders in the list.
- * {@link loadClassBefore(ClassLoader, String)} should be used
- * in preference to this method to avoid this.
- * </p>
- *
- * @param exclude the class loader to exclude, or <code>null</code>
- * to obtain the same behaviour as {@link #loadClass(String)}.
- * @param name the name of the class to load.
- * @return the loaded class.
- * @throws ClassNotFoundException if all the class loaders fail
- * to load the class.
- */
- // API issue with lack of <?> on Class
- @SuppressWarnings("rawtypes")
- public static Class loadClassWithout(ClassLoader exclude, String name)
- throws ClassNotFoundException
- {
- List<MBeanServer> servers = MBeanServerFactory.findMBeanServer(null);
- for (MBeanServer server : servers)
- {
- try
- {
- return server.getClassLoaderRepository().loadClassWithout(exclude,
- name);
- }
- catch (ClassNotFoundException e)
- {
- /* Ignored; try the next server. */
- }
- }
- throw new ClassNotFoundException("The class loaders of all registered " +
- "servers failed to load the class, " +
- name);
- }
-
-}
diff --git a/libjava/classpath/javax/management/Descriptor.java b/libjava/classpath/javax/management/Descriptor.java
deleted file mode 100644
index 9a50b9e..0000000
--- a/libjava/classpath/javax/management/Descriptor.java
+++ /dev/null
@@ -1,392 +0,0 @@
-/* Descriptor.java -- Metadata container.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.io.Serializable;
-
-/**
- * <p>
- * Provides metadata for a management element as a series
- * of fields, formed from name-value pairs. Descriptors
- * are usually attached to one of the <code>Info</code>
- * classes, such as {@link MBeanAttributeInfo}.
- * </p>
- * <p>
- * Field names are not case-sensitive, but are case-preserving
- * (in that the same use of case will be returned by
- * {@link #getFields()} and {@link #getFieldNames()}).
- * The type of the value should match the type returned
- * by the <code>getType()</code> method of the associated
- * <code>Info</code> object. In the case of {@link MXBean}s,
- * this should be the mapped type returned by the mapping rules.
- * </p>
- * <p>
- * The contents of a descriptor may be immutable, in which
- * case, attempts to change the contents of the descriptor
- * will cause an exception to be thrown. Immutable descriptors
- * are usually instances or subclasses of {@link ImmutableDescriptor},
- * while mutable descriptors are usually instances or subclasses
- * of {@link javax.management.modelmbean.DescriptorSupport}.
- * </p>
- * <p>
- * A series of field names are predefined, but additional
- * ones can be added as needed. Predefined names never include
- * a period ('.'), and so additional names may safely avoid
- * conflicts by including this character. It is recommended that
- * additional names make use of the same syntax as Java package
- * names e.g. <code>gnu.classpath.ImportantMetadata</code>.
- * </p>
- * <p>
- * The predefined names are as follows:
- * </p>
- * <table>
- * <th>
- * <td>Name</td><td>Type</td><td>Used In</td><td>Meaning</td>
- * </th>
- * <tr>
- * <td>defaultValue</td><td>Object</td><td>{@link MBeanAttributeInfo},
- * {@link MBeanParameterInfo}</td><td>Default value for an attribute
- * or parameter.</td>
- * </tr>
- * <tr>
- * <td>deprecated</td><td>String</td><td>Any</td><td>The annotated element
- * has been deprecated. Conventially, the field's value takes the form
- * of the version in which the element was deprecated, followed by an
- * explaination.</td>
- * </tr>
- * <tr>
- * <td>descriptionResourceBundleBaseName</td><td>String</td><td>Any</td>
- * <td>The base name for the bundle in which the <code>descriptionResourceKey</code>
- * can be found.</td>
- * </tr>
- * <tr>
- * <td>descriptionResourceKey</td><td>String</td><td>Any</td>
- * <td>The name of the resource key which contains a localized description of
- * this element.</td>
- * </tr>
- * <tr>
- * <td>enabled</td><td>String</td><td>{@link MBeanAttributeInfo},
- * {@link MBeanNotificationInfo}, {@link MBeanOperationInfo}</td>
- * <td>Specifies whether the annotated element is currently enabled or
- * not, via a value of either <code>"true"</code> or <code>"false"</code>.
- * </tr>
- * <tr>
- * <td>immutableInfo</td><td>String</td><td>{@link MBeanInfo}</td>
- * <td>If the value of this field is <code>"true"</code>, this means that
- * the annotated element will not change and thus may be cached.</td>
- * </tr>
- * <tr>
- * <td>infoTimeout</td><td>String or Long</td><td>{@link MBeanInfo}</td>
- * <td>If this field is present, and non-zero, it will contain a value
- * in milliseconds for which the value of the annotated element will
- * remain unchanged, allowing it to be safely cached for that period.</td>
- * </tr>
- * <tr>
- * <td>interfaceClassName</td><td>String</td><td>{@link MBeanInfo}</td>
- * <td>The Java interface name associated with the bean, as returned
- * by {@link Class#getName()}.</td>
- * </tr>
- * <tr>
- * <td>legalValues</td><td>Set<?></td><td>{@link MBeanAttributeInfo},
- * {@link MBeanParameterInfo}</td><td>Legal values for an attribute
- * or parameter.</td>
- * </tr>
- * <tr>
- * <td>maxValue</td><td>Object</td><td><td>{@link MBeanAttributeInfo},
- * {@link MBeanParameterInfo}</td><td>Maximum legal value for an attribute
- * or parameter.</td>
- * </tr>
- * <tr>
- * <td>metricType</td><td>String</td><td>{@link MBeanAttributeInfo},
- * {@link MBeanOperationInfo}</td><td>Specifies the type of metric represented
- * by the annotated element. This will be either <code>"counter"</code>
- * (an increasing value, which will only be reset and never decrease)
- * or <code>"gauge"</code> (an increasing and decreasing value).</td>
- * </tr>
- * <tr>
- * <td>minValue</td><td>Object</td><td>{@link MBeanAttributeInfo},
- * {@link MBeanParameterInfo}</td><td>Minimum legal value for an attribute
- * or parameter.</td>
- * </tr>
- * <tr>
- * <td>mxbean</td><td>String</td><td>{@link MBeanInfo}</td>
- * <td>Specifies whether the annotated element is an {@link MXBean} or
- * not, via a value of either <code>"true"</code> or <code>"false"</code>.
- * </tr>
- * <tr>
- * <td>openType</td><td>{@link javax.management.openmbean.OpenType}</td>
- * <td>{@link MBeanAttributeInfo}, {@link MBeanOperationInfo}</td>,
- * {@link MBeanNotificationInfo}, {@link MBeanParameterInfo}</td>
- * <td>Specifies the open type of the attribute or parameter, the return
- * value of the operation or the user data of the notification respectively.
- * This is present on <code>Open*Info</code> instances and for {@link MXBean}s.</td>
- * <tr>
- * <td>originalType</td><td>String</td><td>{@link MBeanAttributeInfo},
- * {@link MBeanOperationInfo}, {@link MBeanParameterInfo}</td>
- * <td>The original Java type of an element which has been converted
- * to another type according to the {@link MXBean} typing rules.
- * For example, {@link java.lang.management.MemoryType} becomes a
- * String after conversion. This field would contain
- * <code>"java.lang.management.MemoryType"</code> to represent the
- * earlier type of an element with the converted type.</td>
- * </tr>
- * <tr>
- * <td>severity</td><td>Integer or String</td>
- * <td>{@link MBeanNotificationInfo}</td><td>Represents the severity
- * of the notification, ranging from 1 (most severe) to 6 (least
- * severe), with 0 representing unknown severity.</td>
- * </tr>
- * <tr>
- * <td>since</td><td>String</td><td>Any</td>
- * <td>The version in which this field was introduced.</td>
- * </tr>
- * <tr>
- * <td>units</td><td>String</td><td>{@link MBeanAttributeInfo},
- * {@link MBeanOperationInfo}, {@link MBeanParameterInfo}</td>
- * <td>The units used by the value of an attribute or parameter,
- * or the return value of an operation, such as <code>"bytes"</code>,
- * <code>"milliseconds"</code> or <code>"kilogrammes"</code>.
- * </tr>
- * </table>
- * <p>Some names are also defined as part of the Model MBeans package.
- * See {@link javax.management.modelmbean.ModelMBeanInfo}.</p>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface Descriptor
- extends Serializable, Cloneable
-{
-
- /**
- * Returns a clone of this descriptor, which can then be modified
- * independently of this descriptor. If the descriptor is
- * immutable, it is sufficient to return this instance.
- *
- * @return a clone of this descriptor.
- * @throws RuntimeOperationsException if creation of the new
- * descriptor fails for any
- * reason.
- */
- Object clone()
- throws RuntimeOperationsException;
-
- /**
- * <p>
- * Returns true if this descriptor is equivalent to the
- * supplied object. This is true if the following holds:
- * </p>
- * <ul>
- * <li>The given object is also a {@link Descriptor}.</li>
- * <li>Has the same field names, independent of case.</li>
- * <li>Has the same values, based on the following:
- * <ul>
- * <li>If one value is <code>null</code>, the other must be.</li>
- * <li>If one value is a primitive array, the other must be a
- * primitive array of the same type with the same elements.</li>
- * <li>If one value is an {@link Object} array, the other
- * must be and {@link java.util.Arrays#deepEquals(Object[],Object[])}
- * must return true.</li>
- * <li>Otherwise, {@link Object#equals(Object)} must return true.</li>
- * </ul>
- *
- * @param obj the object to compare according to the above.
- * @return true if the above holds.
- * @see Object#equals(Object)
- * @see Object#hashCode()
- * @since 1.6
- */
- boolean equals(Object obj);
-
- /**
- * Returns the field names of the descriptor. If the
- * descriptor is empty, an empty array is returned.
- *
- * @return the field names as an array of Strings.
- */
- String[] getFieldNames();
-
- /**
- * <p>
- * Returns all the field name and value pairs, in the
- * form <code>name=value</code>. The value is converted
- * to a String as follows:
- * </p>
- * <ul>
- * <li>If the value is a String, it is used as is.</li>
- * <li>If the value is <code>null</code>, the printed
- * value will be empty.</li>
- * <li>Otherwise, the value will be converted to a
- * String using its {@link Object#toString()} method,
- * and included as <code>"(" + string + ")"</code>.</li>
- * </ul>
- * <p>If the descriptor is empty, an empty array is returned.</p>
- *
- * @return the field names and values as an array of Strings.
- * @see #setFields(String[],Object[])
- */
- String[] getFields();
-
- /**
- * Returns the value of the specified field, or <code>null</code>
- * if no value is present for the given field name.
- *
- * @param name the field name.
- * @return the value of the field, or <code>null</code> if there
- * is no value present.
- * @throws RuntimeOperationsException if the field name is illegal.
- */
- Object getFieldValue(String name);
-
- /**
- * Returns the values corresponding to the fields named in
- * the specified array, in the same order. If an empty
- * array is supplied, an empty array is returned. A value
- * of <code>null</code> leads to behaviour equivalent to
- * {@link #getFields()}. Field values are obtained as specified
- * in {@link #getFieldValue(String)}, with <code>null</code>
- * being returned if the field is not present. This applies
- * even if the given field name is <code>null</code> or
- * the empty string.
- *
- * @param names an array of field names whose values should
- * be returned.
- * @return the values of the specified fields.
- * @see #getFields()
- * @see #getFieldValue(String)
- */
- Object[] getFieldValues(String... names);
-
- /**
- * <p>
- * Returns the hash code of the descriptor. The hashcode
- * is computed as the sum of the hashcodes for each field,
- * which in turn is calculated as the sum of
- * the hashcode of the name, <code>n</code>, computed
- * using <code>n.toLowerCase().hashCode()</code>, and the
- * hashcode of the value, <code>v</code>, computed
- * using:
- * </p>
- * <ul>
- * <li>If <code>v</code> is <code>null</code>, then the
- * hash code is 0.</li>
- * <li>If <code>v</code> is a primitive array, then the
- * hash code is computed using the appropriate method
- * from {@link java.util.Arrays}.</li>
- * <li>If <code>v</code> is an {@link java.lang.Object}
- * array, then the hash code is computed using the
- * {@link java.util.Arrays#deepHashCode(Object[])} method.</li>
- * <li>Otherwise, the hashcode is equal to
- * <code>v.hashCode()</code>.
- * </ul>
- *
- * @return a hashcode for this descriptor.
- * @since 1.6
- * @see Object#equals(Object)
- * @see Object#hashCode()
- */
- int hashCode();
-
- /**
- * Returns true if all the fields have legal values, given
- * their names. Validity is determined by the implementation.
- *
- * @return true if the values are legal.
- * @throws RuntimeOperationsException if the validity check
- * fails for some reason.
- */
- boolean isValid()
- throws RuntimeOperationsException;
-
- /**
- * Removes a field from the descriptor. If the field name
- * is illegal or not found, this method fails silently.
- *
- * @param name the name of the field to remove.
- * @throws RuntimeOperationsException if the field exists
- * and the descriptor is
- * immutable. This wraps
- * an {@link UnsupportedOperationException}.
- */
- void removeField(String name);
-
- /**
- * Attempts to set the specified field to the supplied
- * value. If the field does not exist, it will be created.
- * If the field value given is invalid, then an exception will
- * be thrown. Validity is determined by the implementation
- * of the descriptor.
- *
- * @param name the field to set. Can not be <code>null</code>
- * or empty.
- * @param value the value to use, the validity of which is
- * determined by the implementation.
- * @throws RuntimeOperationsException if the name or value is
- * illegal (wrapping a
- * {@link IllegalArgumentException})
- * or if the descriptor is
- * immutable (wrapping a
- * {@link UnsupportedOperationException}.
- */
- void setField(String name, Object value)
- throws RuntimeOperationsException;
-
- /**
- * Sets the field named in the first array to the corresponding
- * value specified in the second. The array sizes must match.
- * Empty arrays have no effect. An invalid value will cause
- * an exception to be thrown.
- *
- * @param names the names of the fields to change. Neither
- * the array or its elements may be <code>null</code>.
- * @param values the values to use. The array must not be
- * <code>null</code>. The value of the elements
- * depends on the validity constraints of the
- * implementation.
- * @throws RuntimeOperationsException if the arrays differ in
- * length, or a name or value is
- * illegal (wrapping a
- * {@link IllegalArgumentException})
- * or if the descriptor is
- * immutable (wrapping a
- * {@link UnsupportedOperationException}.
- * @see #setField(String,Object)
- */
- void setFields(String[] names, Object[] values);
-
-}
diff --git a/libjava/classpath/javax/management/DescriptorAccess.java b/libjava/classpath/javax/management/DescriptorAccess.java
deleted file mode 100644
index 189b34a..0000000
--- a/libjava/classpath/javax/management/DescriptorAccess.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/* DescriptorAccess.java -- Allows a descriptor to be changed.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Allows the descriptor of a management element
- * to be changed.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface DescriptorAccess
- extends DescriptorRead
-{
-
- /**
- * Replaces the descriptor of this management element
- * with the one specified. If the specified descriptor
- * is <code>null</code>, the descriptor of the element
- * will be returned to its default, which must at least
- * contain a name and type. If the specified descriptor
- * is invalid for this management element, an exception
- * is thrown.
- *
- * @param descriptor the new descriptor to use.
- * @see DescriptorRead#getDescriptor()
- */
- void setDescriptor(Descriptor descriptor);
-
-}
diff --git a/libjava/classpath/javax/management/DescriptorRead.java b/libjava/classpath/javax/management/DescriptorRead.java
deleted file mode 100644
index 95e383a..0000000
--- a/libjava/classpath/javax/management/DescriptorRead.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/* DescriptorRead.java -- Allows a descriptor to be read.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Provides read access to the descriptor of
- * a management element.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.6
- */
-public interface DescriptorRead
-{
-
- /**
- * Returns a copy of the descriptor for this management
- * element. The return value is never <code>null</code>,
- * but the returned descriptor may be empty.
- *
- * @return the descriptor for this management element.
- */
- Descriptor getDescriptor();
-
-}
diff --git a/libjava/classpath/javax/management/DynamicMBean.java b/libjava/classpath/javax/management/DynamicMBean.java
deleted file mode 100644
index ceb47dc..0000000
--- a/libjava/classpath/javax/management/DynamicMBean.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/* DynamicMBean.java -- A management bean with a dynamic interface.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Represents a management bean that provides a
- * dynamic interface. Users of a {@link DynamicMBean}
- * may retrieve information about its attributes at
- * runtime and use this information to dynamically
- * obtain the corresponding values of these attributes.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface DynamicMBean
-{
-
- /**
- * Obtains the value of the specified attribute of the
- * management bean. The management bean should perform
- * a lookup for the named attribute, and return its value
- * by calling the appropriate getter method, if possible.
- *
- * @param name the name of the attribute to retrieve.
- * @return the value of the specified attribute.
- * @throws AttributeNotFoundException if the name does not
- * correspond to an attribute
- * of the bean.
- * @throws MBeanException if retrieving the attribute causes
- * the bean to throw an exception (which
- * becomes the cause of this exception).
- * @throws ReflectionException if an exception occurred in trying
- * to use the reflection interface
- * to lookup the attribute. The
- * thrown exception is the cause of
- * this exception.
- * @see #setAttribute(String)
- */
- Object getAttribute(String name)
- throws AttributeNotFoundException, MBeanException,
- ReflectionException;
-
- /**
- * Obtains the values of each of the specified attributes
- * of the management bean. The returned list includes
- * those attributes that were retrieved and their
- * corresponding values.
- *
- * @param names the names of the attributes to retrieve.
- * @return a list of the retrieved attributes.
- * @see #setAttributes(AttributeList)
- */
- AttributeList getAttributes(String[] names);
-
- /**
- * Returns an information object which lists the attributes
- * and actions associated with the management bean.
- *
- * @return a description of the management bean, including
- * all exposed attributes and actions.
- */
- MBeanInfo getMBeanInfo();
-
- /**
- * Invokes the specified action on the management bean using
- * the supplied parameters. The signature of the action is
- * specified by a {@link String} array, which lists the classes
- * corresponding to each parameter. The class loader used to
- * load these classes is the same as that used for loading the
- * management bean itself.
- *
- * @param name the name of the action to invoke.
- * @param params the parameters used to call the action.
- * @param signature the signature of the action.
- * @return the return value of the action.
- * @throws MBeanException if the action throws an exception. The
- * thrown exception is the cause of this
- * exception.
- * @throws ReflectionException if an exception occurred in trying
- * to use the reflection interface
- * to invoke the action. The
- * thrown exception is the cause of
- * this exception.
- */
- Object invoke(String name, Object[] params, String[] signature)
- throws MBeanException, ReflectionException;
-
- /**
- * Sets the value of the specified attribute of the
- * management bean. The management bean should perform
- * a lookup for the named attribute, and sets its value
- * using the associated setter method, if possible.
- *
- * @param attribute the attribute to set.
- * @throws AttributeNotFoundException if the attribute does not
- * correspond to an attribute
- * of the bean.
- * @throws InvalidAttributeValueException if the value is invalid
- * for this particular
- * attribute of the bean.
- * @throws MBeanException if setting the attribute causes
- * the bean to throw an exception (which
- * becomes the cause of this exception).
- * @throws ReflectionException if an exception occurred in trying
- * to use the reflection interface
- * to lookup the attribute. The
- * thrown exception is the cause of
- * this exception.
- * @see #getAttribute(String)
- */
- void setAttribute(Attribute attribute)
- throws AttributeNotFoundException, InvalidAttributeValueException,
- MBeanException, ReflectionException;
-
- /**
- * Sets the value of each of the specified attributes
- * to that supplied by the {@link Attribute} object.
- * The returned list contains the attributes that were
- * set and their new values.
- *
- * @param attributes the attributes to set.
- * @return a list of the changed attributes.
- * @see #getAttributes(AttributeList)
- */
- AttributeList setAttributes(AttributeList attributes);
-
-}
diff --git a/libjava/classpath/javax/management/InstanceAlreadyExistsException.java b/libjava/classpath/javax/management/InstanceAlreadyExistsException.java
deleted file mode 100644
index 954df52..0000000
--- a/libjava/classpath/javax/management/InstanceAlreadyExistsException.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/* InstanceAlreadyExistsException.java -- Thrown by invalid values.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Thrown when an attempt to register a bean is made, and
- * the bean is already registered.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class InstanceAlreadyExistsException
- extends OperationsException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 8893743928912733931L;
-
- /**
- * Constructs a new <code>InstanceAlreadyExistsException</code>.
- */
- public InstanceAlreadyExistsException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>InstanceAlreadyExistsException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public InstanceAlreadyExistsException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/InstanceNotFoundException.java b/libjava/classpath/javax/management/InstanceNotFoundException.java
deleted file mode 100644
index 22eee35..0000000
--- a/libjava/classpath/javax/management/InstanceNotFoundException.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/* InstanceNotFoundException.java -- Thrown by invalid values.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Thrown when an attempt to locate a bean is made, and
- * the bean does not exist in the repository.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class InstanceNotFoundException
- extends OperationsException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -882579438394773049L;
-
- /**
- * Constructs a new <code>InstanceNotFoundException</code>.
- */
- public InstanceNotFoundException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>InstanceNotFoundException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public InstanceNotFoundException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/IntrospectionException.java b/libjava/classpath/javax/management/IntrospectionException.java
deleted file mode 100644
index dfca93b..0000000
--- a/libjava/classpath/javax/management/IntrospectionException.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/* IntrospectionException.java -- Thrown by bean introspection methods.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * A general for all exceptions thrown during introspection
- * operations on management beans. For example, such an
- * exception may be thrown while constructing one of
- * the <code>MBeanXXXInfo</code> classes.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class IntrospectionException
- extends OperationsException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 1054516935875481725L;
-
- /**
- * Constructs a new <code>IntrospectionException</code>.
- */
- public IntrospectionException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>IntrospectionException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public IntrospectionException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/InvalidApplicationException.java b/libjava/classpath/javax/management/InvalidApplicationException.java
deleted file mode 100644
index b7a7e3c..0000000
--- a/libjava/classpath/javax/management/InvalidApplicationException.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/* InvalidApplicationException.java -- Thrown by invalid query attributes.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Thrown when a query or attribute is applied to a management bean
- * which is of the wrong class. This exception is only used
- * internally by the Java management API and is not exposed to user
- * code.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class InvalidApplicationException
- extends Exception
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -3048022274675537269L;
-
- /**
- * The attribute value that caused the exception.
- */
- private Object val;
-
- /**
- * Constructs a new <code>InvalidApplicationException</code>
- * using the specified object to represent the invalid value.
- *
- * @param val the inappropriate expression.
- */
- public InvalidApplicationException(Object val)
- {
- super();
- this.val = val;
- }
-
- /**
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.InvalidApplicationException</code>)
- * and the invalid expression.
- *
- * @return a @link{java.lang.String} instance representing
- * the instance in textual form.
- */
- public String toString()
- {
- return getClass().getName()
- + "[val=" + val
- + "]";
- }
-
-}
diff --git a/libjava/classpath/javax/management/InvalidAttributeValueException.java b/libjava/classpath/javax/management/InvalidAttributeValueException.java
deleted file mode 100644
index 1ec9fad..0000000
--- a/libjava/classpath/javax/management/InvalidAttributeValueException.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/* InvalidAttributeValueException.java -- Thrown by invalid values.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Thrown when a value is given for an attribute which
- * is invalid.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class InvalidAttributeValueException
- extends OperationsException
-{
-
- /**
- * Constructs a new <code>InvalidAttributeValueException</code>.
- */
- public InvalidAttributeValueException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>InvalidAttributeValueException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public InvalidAttributeValueException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/JMException.java b/libjava/classpath/javax/management/JMException.java
deleted file mode 100644
index a46ac54..0000000
--- a/libjava/classpath/javax/management/JMException.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/* JMException.java -- Thrown by the management classes.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * A general superclass for all non-runtime management
- * exceptions.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class JMException
- extends Exception
-{
-
- /**
- * Constructs a new <code>JMException</code>.
- */
- public JMException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>JMException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public JMException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/JMRuntimeException.java b/libjava/classpath/javax/management/JMRuntimeException.java
deleted file mode 100644
index d8eda33..0000000
--- a/libjava/classpath/javax/management/JMRuntimeException.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/* JMRuntimeException.java -- Thrown by the management classes.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * A general superclass for all runtime management
- * exceptions.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class JMRuntimeException
- extends RuntimeException
-{
-
- /**
- * Constructs a new <code>JMRuntimeException</code>.
- */
- public JMRuntimeException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>JMRuntimeException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public JMRuntimeException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/JMX.java b/libjava/classpath/javax/management/JMX.java
deleted file mode 100644
index 4a4958a..0000000
--- a/libjava/classpath/javax/management/JMX.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/* JMX.java -- Static methods pertaining to the management API.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.lang.reflect.Proxy;
-
-/**
- * Common static methods pertaining to the management
- * API. There are no instances of this class.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.6
- */
-public class JMX
-{
-
- /**
- * The name of the defaultValue field.
- */
- public static final String DEFAULT_VALUE_FIELD = "defaultValue";
-
- /**
- * The name of the immutableInfo field.
- */
- public static final String IMMUTABLE_INFO_FIELD = "immutableInfo";
-
- /**
- * The name of the interfaceClassName field.
- */
- public static final String INTERFACE_CLASS_NAME_FIELD = "interfaceClassName";
-
- /**
- * The name of the legalValues field.
- */
- public static final String LEGAL_VALUES_FIELD = "legalValues";
-
- /**
- * The name of the maxValue field.
- */
- public static final String MAX_VALUE_FIELD = "maxValue";
-
- /**
- * The name of the minValue field.
- */
- public static final String MIN_VALUE_FIELD = "minValue";
-
- /**
- * The name of the mxbean field.
- */
- public static final String MXBEAN_FIELD = "mxbean";
-
- /**
- * The name of the openType field.
- */
- public static final String OPEN_TYPE_FIELD = "openType";
-
- /**
- * The name of the originalType field.
- */
- public static final String ORIGINAL_TYPE_FIELD = "originalType";
-
- /**
- * Prevent instance creation.
- */
- private JMX()
- {
- }
-
- /**
- * <p>
- * Returns true if the given class represents an {@link MXBean}
- * interface. An interface is an {@link MXBean interface} if:
- * </p>
- * <ul>
- * <li>It is annotated with {@code @MXBean} or
- * {@code @MXBean(true)}</li>.
- * <li>Its name ends in {@code "MXBean"} and it does not
- * have an {@link MXBean} annotation.</li>
- * </ul>
- *
- * @param iface the interface class that is to be checked
- * for {@link MXBean} status.
- * @return true if the interface represents an {@link MXBean}.
- * @throws NullPointerException if {@code iface} is {@code null}.
- */
- public static boolean isMXBeanInterface(Class<?> iface)
- {
- MXBean annotation = iface.getAnnotation(MXBean.class);
- if (annotation != null)
- return annotation.value();
- return iface.getName().endsWith("MXBean");
- }
-
- /**
- * <p>
- * Returns a proxy for a standard management bean, using
- * the specified connection to access the named implementation.
- * To create a proxy for the bean, {@code SomethingMBean}, a call to
- * {@code JMX.newMBeanProxy(server, name, SomethingMBean.class)}
- * is made, where {@code server} is a local or remote management
- * server, and {@code name} is the registered {@link ObjectName}
- * of the implementation of {@code SomethingMBean} to use.
- * </p>
- * <p>
- * The proxy redirects calls to the methods of the interface,
- * {@link SomethingMBean}, to the appropriate methods of the
- * management server. If {@link SomethingMBean} is specified
- * as follows:
- * </p>
- * <pre>
- * public interface SomethingMBean
- * {
- * String getName();
- * void setName(String name);
- * void doStuff();
- * }
- * </pre>
- * <p>
- * The proxy created above will provide these three methods
- * using an instance of {@link MBeanServerInvocationHandler}.
- * The two methods, {@code getName} and {@code setName} define
- * an attribute, {@code Name}, so a call to {@code getName()}
- * will return the value of {@code server.getAttribute(name,
- * "Name")}, while {@code setName(newName)} will result in a
- * call to {@code server.setAttribute(name, new Attribute("Name",
- * newName))}. Finally, {@code doStuff()}, as an operation,
- * will cause the proxy to call {@link MBeanServer#invoke(ObjectName,
- * String, Object[], String[])} as
- * {@code server.invoke(name, "doStuff", null, null)}.
- * </p>
- * <p>
- * Calling this method is equivalent to calling
- * {@link #newMBeanProxy(MBeanServerConnection, ObjectName, Class,
- * boolean)}.
- * </p>
- *
- * @param conn the server connection over which to forward calls to
- * the bean.
- * @param name the registered name of the bean to use to implement
- * the given interface.
- * @param iface the interface to provide a proxy for.
- * @return a proxy implementing the specified interface using calls
- * to the methods of the bean registered with the supplied
- * server using the given name.
- * @see #newMBeanProxy(MBeanServerConnection, ObjectName, Class,
- * boolean)
- */
- public static <T> T newMBeanProxy(MBeanServerConnection conn,
- ObjectName name, Class<T> iface)
- {
- return newMBeanProxy(conn, name, iface, false);
- }
-
- /**
- * Returns a proxy for a standard management bean, using
- * the specified connection to access the named implementation,
- * as with {@link #newMBeanProxy(MBeanServerConnection, ObjectName,
- * Class)}. In addition, the proxy returned by this method will
- * also implement {@link NotificationEmitter} if {@code bcast} is
- * true, under the assumption that the implementation referenced by
- * {@code name} implements this interface. Calls to the methods of
- * {@link NotificationEmitter} will be forwarded to the bean
- * implementation via the appropriate server methods.
- *
- * @param conn the server connection over which to forward calls to
- * the bean.
- * @param name the registered name of the bean to use to implement
- * the given interface.
- * @param iface the interface to provide a proxy for.
- * @param bcast true if the proxy should implement
- * {@link NotificationEmitter}.
- * @return a proxy implementing the specified interface using calls
- * to the methods of the bean registered with the supplied
- * server using the given name.
- * @see #newMBeanProxy(MBeanServerConnection, ObjectName, Class)
- */
- public static <T> T newMBeanProxy(MBeanServerConnection conn,
- ObjectName name, Class<T> iface,
- boolean bcast)
- {
- return MBeanServerInvocationHandler.newProxyInstance(conn, name,
- iface, bcast);
- }
-
- /**
- * <p>
- * Returns a proxy for a {@link MXBean}, using the specified
- * connection to access the named implementation.
- * To create a proxy for the bean, {@code SomethingMXBean}, a call to
- * {@code JMX.newMXBeanProxy(server, name, SomethingMXBean.class)}
- * is made, where {@code server} is a local or remote management
- * server, and {@code name} is the registered {@link ObjectName}
- * of the implementation of {@code SomethingMBean} to use.
- * </p>
- * <p>
- * The proxy redirects calls to the methods of the interface,
- * {@link SomethingMXBean}, to the appropriate methods of the
- * management server with appropriate conversion between
- * Java and open types, according to the MXBean rules. If
- * {@link SomethingMXBean} is specified as follows:
- * </p>
- * <pre>
- * public interface SomethingMXBean
- * {
- * String getName();
- * void setName(String name);
- * List<Double> getStatistics();
- * void setStatistics(List<Double> statistics);
- * List<Double> getNamedStatistics(String, Map<String,Integer>);
- * }
- * </pre>
- * <p>
- * The proxy created above will provide these five methods
- * using an instance of {@link MBeanServerInvocationHandler}.
- * The two methods, {@code getName} and {@code setName} define
- * an attribute, {@code Name}, so a call to {@code getName()}
- * will return the value of {@code server.getAttribute(name,
- * "Name")}, while {@code setName(newName)} will result in a
- * call to {@code server.setAttribute(name, new Attribute("Name",
- * newName))}. As this uses a simple type, {@link String}, no
- * conversion is necessary.
- * </p>
- * <p>
- * The two methods, {@code getStatistics} and {@code setStatistics}
- * similarly define another attribute, {@code Statistics}. Calling
- * {@code getStatistics()} will cause a call to the server to be
- * made as before, {@code server.getAttribute(name, "Statistics")}.
- * However, the type of the return value from this call will be
- * an array of {@link Double} objects, as per the {@link MXBean}
- * rules. The proxy converts this back in to a {@link java.util.List}
- * of {@link Double} objects before returning it.
- * </p>
- * <p>
- * The same process is applied in reverse for
- * {@code setStatistics(newStats)}. The list is converted into
- * an appropriate array before the call to
- * {@link MBeanServerConnection#setAttribute(ObjectName, Attribute)}
- * is made. Finally, a call to {@code getNamedStatistics} will require
- * both a Java to open type conversion on the arguments, and then
- * an open type to Java conversion of the return value. Thus, a proxy
- * enables an {@link MXBean} to be used in cases where the appropriate
- * Java types are available and the user wishes to access the bean
- * using the types directly defined in its interface, just as with
- * standard management beans.
- * </p>
- * <p>
- * Calling this method is equivalent to calling
- * {@link #newMXBeanProxy(MBeanServerConnection, ObjectName, Class,
- * boolean)}.
- * </p>
- *
- * @param conn the server connection over which to forward calls to
- * the bean.
- * @param name the registered name of the bean to use to implement
- * the given interface.
- * @param iface the interface to provide a proxy for.
- * @return a proxy implementing the specified interface using calls
- * to the methods of the bean registered with the supplied
- * server using the given name.
- * @see #newMXBeanProxy(MBeanServerConnection, ObjectName, Class,
- * boolean)
- */
- public static <T> T newMXBeanProxy(MBeanServerConnection conn,
- ObjectName name, Class<T> iface)
- {
- return newMXBeanProxy(conn, name, iface, false);
- }
-
- /**
- * Returns a proxy for a {@link MXBean}, using
- * the specified connection to access the named implementation,
- * as with {@link #newMXBeanProxy(MBeanServerConnection, ObjectName,
- * Class)}. In addition, the proxy returned by this method will
- * also implement {@link NotificationEmitter} if {@code bcast} is
- * true, under the assumption that the implementation referenced by
- * {@code name} implements this interface. Calls to the methods of
- * {@link NotificationEmitter} will be forwarded to the bean
- * implementation via the appropriate server methods.
- *
- * @param conn the server connection over which to forward calls to
- * the bean.
- * @param name the registered name of the bean to use to implement
- * the given interface.
- * @param iface the interface to provide a proxy for.
- * @param bcast true if the proxy should implement
- * {@link NotificationEmitter}.
- * @return a proxy implementing the specified interface using calls
- * to the methods of the bean registered with the supplied
- * server using the given name.
- * @see #newMXBeanProxy(MBeanServerConnection, ObjectName, Class)
- */
- // Suppress warnings as we know an instance of T will be returned.
- @SuppressWarnings("unchecked")
- public static <T> T newMXBeanProxy(MBeanServerConnection conn,
- ObjectName name, Class<T> iface,
- boolean bcast)
- {
- if (bcast)
- return (T) Proxy.newProxyInstance(iface.getClassLoader(),
- new Class[] { iface,
- NotificationEmitter.class },
- new MBeanServerInvocationHandler(conn,name,true));
- else
- return (T) Proxy.newProxyInstance(iface.getClassLoader(),
- new Class[] { iface },
- new MBeanServerInvocationHandler(conn,name,true));
- }
-
-}
diff --git a/libjava/classpath/javax/management/ListenerNotFoundException.java b/libjava/classpath/javax/management/ListenerNotFoundException.java
deleted file mode 100644
index 6fd6a16..0000000
--- a/libjava/classpath/javax/management/ListenerNotFoundException.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/* ListenerNotFoundException.java -- Thrown when a listener does not exist.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Thrown when a requested listener does not exist.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class ListenerNotFoundException
- extends OperationsException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -7242605822448519061L;
-
- /**
- * Constructs a new <code>ListenerNotFoundException</code>.
- */
- public ListenerNotFoundException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>ListenerNotFoundException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public ListenerNotFoundException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/MBeanAttributeInfo.java b/libjava/classpath/javax/management/MBeanAttributeInfo.java
deleted file mode 100644
index 950e063..0000000
--- a/libjava/classpath/javax/management/MBeanAttributeInfo.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/* MBeanAttributeInfo.java -- Information about an attribute of a bean.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-
-/**
- * Describes the attributes of a management bean.
- * The information in this class is immutable as standard.
- * Of course, subclasses may change this, but this
- * behaviour is not recommended.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanAttributeInfo
- extends MBeanFeatureInfo
- implements Cloneable
-{
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = 8644704819898565848L;
-
- /**
- * The type of the attribute.
- *
- * @serial the attribute type.
- */
- private String attributeType;
-
- /**
- * True if the attribute's value can be changed.
- *
- * @serial true if the value can be changed.
- */
- private boolean isWrite;
-
- /**
- * True if the attribute's value can be read.
- *
- * @serial true if the value can be read.
- */
- private boolean isRead;
-
- /**
- * True if the attribute is a boolean and thus
- * has a isXXX accessor rather than a getXXX accessor.
- *
- * @serial true if the attribute has an isXXX accessor.
- */
- private boolean is;
-
- /**
- * Constructs a new {@link MBeanAttributeInfo} using the specified
- * name and description, with the given accessor and mutator
- * methods. A <code>null</code> value for the accessor method
- * indicates that the value can not be read. A <code>null</code>
- * value for the mutator method indicates that the value can not be
- * changed.
- *
- * @param name the name of the attribute.
- * @param desc a description of the attribute.
- * @param getter the accessor method, or <code>null</code> if the value
- * can not be read.
- * @param setter the mutator method, or <code>null</code> if the value
- * can not be changed.
- * @throws IntrospectionException if both the accessor and mutator method
- * are <code>null</code>.
- */
- public MBeanAttributeInfo(String name, String desc,
- Method getter, Method setter)
- throws IntrospectionException
- {
- super(name, desc);
- if (getter == null && setter == null)
- throw new IntrospectionException("Both the getter and setter methods can " +
- "not be null.");
- if (getter == null)
- {
- Type t = setter.getGenericParameterTypes()[0];
- if (t instanceof Class)
- attributeType = ((Class<?>) t).getName();
- else
- attributeType = t.toString();
- isRead = false;
- is = false;
- }
- else
- {
- Type t = getter.getGenericReturnType();
- if (t instanceof Class)
- attributeType = ((Class<?>) t).getName();
- else
- attributeType = t.toString();
- isRead = true;
- is = getter.getName().startsWith("is");
- }
- if (setter != null)
- isWrite = true;
- }
-
- /**
- * Constructs a new {@link MBeanAttributeInfo} using the specified
- * name, description and type with the given settings for the accessor
- * and mutator methods.
- *
- * @param name the name of the attribute.
- * @param type the type of the attribute, in the form of its class name.
- * @param desc a description of the attribute.
- * @param isReadable true if the attribute's value can be read.
- * @param isWritable true if the attribute's value can be changed.
- * @param isIs true if the attribute uses an accessor of the form isXXX.
- * @throws IllegalArgumentException if the attribute is both unreadable
- * and unwritable.
- */
- public MBeanAttributeInfo(String name, String type, String desc,
- boolean isReadable, boolean isWritable,
- boolean isIs)
- {
- super(name, desc);
- if (!isReadable && !isWritable)
- throw new IllegalArgumentException("The attribute can not be both " +
- "unreadable and unwritable.");
- attributeType = type;
- isRead = isReadable;
- isWrite = isWritable;
- is = isIs;
- }
-
- /**
- * Returns a clone of this instance. The clone is created
- * using just the method provided by {@link java.lang.Object}.
- * Thus, the clone is just a shallow clone as returned by
- * that method, and does not contain any deeper cloning based
- * on the subject of this class.
- *
- * @return a clone of this instance.
- * @see java.lang.Cloneable
- */
- public Object clone()
- {
- try
- {
- return super.clone();
- }
- catch (CloneNotSupportedException e)
- {
- /* This shouldn't happen; we implement Cloneable */
- throw new IllegalStateException("clone() called on " +
- "non-cloneable object.");
- }
- }
-
- /**
- * Compares this feature with the supplied object. This
- * returns true iff the object is an instance of
- * {@link MBeanAttributeInfo}, {@link Object#equals()}
- * returns true for a comparison of both the name and
- * description of this attribute with that of the specified
- * object (performed by the superclass), and the type and
- * boolean flags of the two instances are equal.
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link MBeanAttributeInfo}
- * instance,
- * <code>name.equals(object.getName())</code>,
- * <code>description.equals(object.getDescription())</code>,
- * <code>attributeType.equals(object.getType())</code>,
- * <code>isRead == object.isReadable()</code>,
- * <code>isWrite == object.isWritable()</code>,
- * <code>is == object.isIs()</code>
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof MBeanAttributeInfo))
- return false;
- if (!(super.equals(obj)))
- return false;
- MBeanAttributeInfo o = (MBeanAttributeInfo) obj;
- return (attributeType.equals(o.getType()) &&
- isRead == o.isReadable() &&
- isWrite == o.isWritable() &&
- is == o.isIs());
- }
-
- /**
- * Returns the type of this attribute, in the form of its class name.
- *
- * @return the type of this attribute.
- */
- public String getType()
- {
- return attributeType;
- }
-
- /**
- * Returns the hashcode of the attribute information as the sum of
- * the hashcode of the superclass, the hashcode of the type,
- * the hashcode of {@link #isReadable()}, twice the hashcode
- * of {@link #isWritable()} and four times the hashcode
- * of {@link #isIs()}.
- *
- * @return the hashcode of the attribute information.
- */
- public int hashCode()
- {
- return super.hashCode() + attributeType.hashCode()
- + Boolean.valueOf(isRead).hashCode()
- + (2 * Boolean.valueOf(isWrite).hashCode())
- + (4 * Boolean.valueOf(is).hashCode());
- }
-
- /**
- * Returns true if the accessor method of this attribute
- * is of the form <code>isXXX</code>.
- *
- * @return true if the accessor takes the form <code>isXXX</code>.
- */
- public boolean isIs()
- {
- return is;
- }
-
- /**
- * Returns true if value of this attribute can be read.
- *
- * @return true if the value of the attribute can be read.
- */
- public boolean isReadable()
- {
- return isRead;
- }
-
- /**
- * Returns true if the value of this attribute can be changed.
- *
- * @return true if the value of the attribute can be changed.
- */
- public boolean isWritable()
- {
- 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/libjava/classpath/javax/management/MBeanConstructorInfo.java b/libjava/classpath/javax/management/MBeanConstructorInfo.java
deleted file mode 100644
index 3d5ebda..0000000
--- a/libjava/classpath/javax/management/MBeanConstructorInfo.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/* MBeanConstructorInfo.java -- Information about a bean's constructor.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Type;
-
-import java.util.Arrays;
-
-/**
- * Describes the constructors of a management bean.
- * The information in this class is immutable as standard.
- * Of course, subclasses may change this, but this
- * behaviour is not recommended.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanConstructorInfo
- extends MBeanFeatureInfo
- implements Cloneable
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 4433990064191844427L;
-
- /**
- * The signature of the constructor i.e. the argument types.
- */
- private MBeanParameterInfo[] signature;
-
- /**
- * Constructs a @link{MBeanConstructorInfo} with the specified
- * description using the given constructor. Each parameter is
- * described merely by its type; the name and description are
- * <code>null</code>.
- *
- * @param desc a description of the attribute.
- * @param cons the constructor.
- */
- // API issue with lack of <?> on Constructor
- @SuppressWarnings("rawtypes")
- public MBeanConstructorInfo(String desc, Constructor cons)
- {
- super(cons.getName(), desc);
- Type[] paramTypes = cons.getGenericParameterTypes();
- signature = new MBeanParameterInfo[paramTypes.length];
- for (int a = 0; a < paramTypes.length; ++a)
- {
- Type t = paramTypes[a];
- if (t instanceof Class)
- signature[a] = new MBeanParameterInfo(null,
- ((Class<?>) t).getName(),
- null);
- else
- signature[a] = new MBeanParameterInfo(null, t.toString(), null);
- }
- }
-
- /**
- * Constructs a @link{MBeanConstructorInfo} with the specified
- * name, description and parameter information. A <code>null</code>
- * value for the parameter information is the same as passing in
- * an empty array. A copy of the parameter array is taken, so
- * later changes have no effect.
- *
- * @param name the name of the constructor.
- * @param desc a description of the constructor.
- * @param sig the signature of the constructor, as a series
- * of {@link MBeanParameterInfo} objects, one for
- * each parameter.
- */
- public MBeanConstructorInfo(String name, String desc,
- MBeanParameterInfo[] sig)
- {
- super(name, desc);
- if (sig == null)
- signature = new MBeanParameterInfo[0];
- else
- {
- signature = new MBeanParameterInfo[sig.length];
- System.arraycopy(sig, 0, signature, 0, sig.length);
- }
- }
-
- /**
- * Returns a clone of this instance. The clone is created
- * using just the method provided by {@link java.lang.Object}.
- * Thus, the clone is just a shallow clone as returned by
- * that method, and does not contain any deeper cloning based
- * on the subject of this class.
- *
- * @return a clone of this instance.
- * @see java.lang.Cloneable
- */
- public Object clone()
- {
- try
- {
- return super.clone();
- }
- catch (CloneNotSupportedException e)
- {
- /* This shouldn't happen; we implement Cloneable */
- throw new IllegalStateException("clone() called on " +
- "non-cloneable object.");
- }
- }
-
- /**
- * Compares this feature with the supplied object. This returns
- * true iff the object is an instance of {@link
- * MBeanConstructorInfo}, {@link Object#equals()} returns true for a
- * comparison of both the name and description of this notification
- * with that of the specified object (performed by the superclass),
- * and the two signature arrays contain the same elements in the
- * same order (but one may be longer than the other).
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link MBeanConstructorInfo}
- * instance,
- * <code>name.equals(object.getName())</code>,
- * <code>description.equals(object.getDescription())</code>
- * and the corresponding elements of the signature arrays are
- * equal.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof MBeanConstructorInfo))
- return false;
- if (!(super.equals(obj)))
- return false;
- MBeanConstructorInfo o = (MBeanConstructorInfo) obj;
- MBeanParameterInfo[] sig = o.getSignature();
- for (int a = 0; a < signature.length; ++a)
- {
- if (a == sig.length)
- return true;
- if (!(signature[a].equals(sig[a])))
- return false;
- }
- return true;
- }
-
- /**
- * Returns the constructor's signature, in the form of
- * information on each parameter. Each parameter is
- * described by an instance of {@link MBeanParameterInfo}.
- * The returned array is a shallow copy of the array used
- * by this instance, so changing which elements are stored
- * in the array won't affect the array used by this, but
- * changing the actual elements will affect the ones used
- * here.
- *
- * @return an array of {@link MBeanParameterInfo} objects,
- * describing the constructor parameters.
- */
- public MBeanParameterInfo[] getSignature()
- {
- return (MBeanParameterInfo[]) signature.clone();
- }
-
- /**
- * Returns the hashcode of the constructor information as the sum
- * of the hashcode of the superclass and the hashcode of the parameter
- * array.
- *
- * @return the hashcode of the constructor information.
- */
- public int hashCode()
- {
- 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/libjava/classpath/javax/management/MBeanException.java b/libjava/classpath/javax/management/MBeanException.java
deleted file mode 100644
index 7ce81de..0000000
--- a/libjava/classpath/javax/management/MBeanException.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/* MBeanException.java -- A user-defined management exception.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Represents an arbitrary exception thrown by a management
- * bean. When a management bean executes code that causes
- * an exception to be thrown, the resulting exception is
- * wrapped inside an {@link MBeanException}. Calling
- * {@link getTargetException()} will return the wrapped
- * exception.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanException
- extends JMException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 4066342430588744142L;
-
- /* Sun re-implemented causality -- don't know why, but
- serialization demands we do too... */
-
- /**
- * The target exception.
- *
- * @serial the target exception.
- */
- private Exception exception;
-
- /**
- * Constructs a new <code>MBeanException</code> wrapping
- * the specified exception.
- *
- * @param e the exception to be wrapped.
- */
- public MBeanException(Exception e)
- {
- super();
- exception = e;
- }
-
- /**
- * Constructs a new <code>MBeanException</code> wrapping
- * the specified exception and using the supplied message.
- *
- * @param e the exception to be wrapped.
- * @param message the error message to give to the user.
- */
- public MBeanException(Exception e, String message)
- {
- super(message);
- exception = e;
- }
-
- /**
- * Returns the true cause of this exception, the wrapped
- * exception.
- *
- * @return the wrapped exception.
- */
- public Throwable getCause()
- {
- return exception;
- }
-
- /**
- * Returns the true cause of this exception, the wrapped
- * exception.
- *
- * @return the wrapped exception.
- */
- public Exception getTargetException()
- {
- return exception;
- }
-
-}
diff --git a/libjava/classpath/javax/management/MBeanFeatureInfo.java b/libjava/classpath/javax/management/MBeanFeatureInfo.java
deleted file mode 100644
index a459ae9..0000000
--- a/libjava/classpath/javax/management/MBeanFeatureInfo.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/* MBeanFeatureInfo.java -- Information about a bean feature.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-
-/**
- * A general superclass for the description of features
- * of management beans. This allows the user to access
- * the feature dynamically, without knowing the details
- * beforehand. The information is immutable as standard.
- * Of course, subclasses may change this, but this
- * behaviour is not recommended.
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanFeatureInfo
- implements Serializable
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 3952882688968447265L;
-
- /**
- * A description of the feature in human-readable form.
- * Subclasses should access this via the {@link #getDescription()}
- * function rather than using the value directly.
- *
- * @serial a description of the feature.
- */
- protected String description;
-
- /**
- * The name of the feature. Subclasses should access this
- * via the {@link #getName()} function rather than using the
- * value directly.
- *
- * @serial the name of the feature.
- */
- protected String name;
-
- /**
- * The <code>toString()</code> result of this instance.
- */
- transient String string;
-
- /**
- * Constructs a new {@link MBeanFeatureInfo} with the specified
- * name and description.
- *
- * @param name the name of the management bean feature.
- * @param description the description of the feature.
- */
- public MBeanFeatureInfo(String name, String description)
- {
- this.name = name;
- this.description = description;
- }
-
- /**
- * Compares this feature with the supplied object. This
- * returns true iff the object is an instance of
- * {@link MBeanFeatureInfo} and {@link Object#equals()}
- * returns true for a comparison of both the name and
- * description of this feature with that of the specified
- * object.
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link MBeanFeatureInfo}
- * instance,
- * <code>name.equals(object.getName())</code> and
- * <code>description.equals(object.getDescription</code>.
- */
- public boolean equals(Object obj)
- {
- if (obj instanceof MBeanFeatureInfo)
- {
- MBeanFeatureInfo o = (MBeanFeatureInfo) obj;
- return ((name == null ?
- o.getName() == null :
- name.equals(o.getName())) &&
- (description == null ?
- o.getDescription() == null :
- description.equals(o.getDescription())));
- }
- else
- return false;
- }
-
- /**
- * Returns a description of this feature.
- *
- * @return a human-readable description.
- */
- public String getDescription()
- {
- return description;
- }
-
- /**
- * Returns the name of this feature.
- *
- * @return the name of the feature.
- */
- public String getName()
- {
- return name;
- }
-
- /**
- * Returns the hashcode of the feature as
- * the sum of the hashcodes of its name
- * and description.
- *
- * @return the hashcode of this feature.
- */
- public int hashCode()
- {
- return (name == null ? -1 : name.hashCode())
- + (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;
- }
-
- /**
- * Serialize the {@link MBeanFeatureInfo}.
- *
- * @param out the output stream to write to.
- * @throws IOException if an I/O error occurs.
- */
- private void writeObject(ObjectOutputStream out)
- throws IOException
- {
- out.defaultWriteObject();
- /* FIXME: Handle extra 1.6 descriptor stuff */
- }
-
-}
diff --git a/libjava/classpath/javax/management/MBeanInfo.java b/libjava/classpath/javax/management/MBeanInfo.java
deleted file mode 100644
index bf07f9ad..0000000
--- a/libjava/classpath/javax/management/MBeanInfo.java
+++ /dev/null
@@ -1,402 +0,0 @@
-/* MBeanInfo.java -- Information about a management bean.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.io.Serializable;
-
-import java.util.Arrays;
-
-/**
- * <p>
- * Describes the interface of a management bean. This allows
- * the user to access the bean dynamically, without knowing
- * the details of any of its attributes, operations,
- * constructors or notifications beforehand. The information
- * is immutable as standard. Of course, subclasses may change
- * this, but this behaviour is not recommended.
- * </p>
- * <p>
- * The contents of this class, for standard management beans,
- * are dynamically compiled using reflection.
- * {@link #getClassName()} and {@link #getConstructors()}
- * return the name of the class and its constructors, respectively.
- * This is much the same as could be obtained by reflection on the
- * bean. {@link #getAttributes()} and {@link #getOperations()},
- * however, do something more in splitting the methods of the
- * class into two sets. Those of the form, <code>getXXX</code>,
- * <code>setXXX</code> and <code>isXXX</code> are taken to be
- * the accessors and mutators of a series of attributes, with
- * <code>XXX</code> being the attribute name. These are returned
- * by {@link getAttributes()} and the {@link Attribute} class can
- * be used to manipulate them. The remaining methods are classified
- * as operations and returned by {@link getOperations()}.
- * </p>
- * <p>
- * Beans can also broadcast notifications. If the bean provides this
- * facility, by implementing the {@link NotificationBroadcaster}
- * interface, then an array of {@link MBeanNotificationInfo} objects
- * may be obtained from {@link #getNotifications()}, which describe
- * the notifications emitted.
- * </p>
- * <p>
- * Model management beans and open management beans also supply an
- * instance of this class, as part of implementing the
- * {@link DynamicMBean#getMBeanInfo()} method of {@link DynamicMBean}.
- * </p>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanInfo
- implements Cloneable, Serializable
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -6451021435135161911L;
-
- /**
- * A description of the bean.
- *
- * @serial The bean's description.
- */
- private String description;
-
- /**
- * The class name of the management bean.
- *
- * @serial The bean's class name.
- */
- private String className;
-
- /**
- * Descriptions of the attributes provided by the bean.
- */
- private MBeanAttributeInfo[] attributes;
-
- /**
- * Descriptions of the operations provided by the bean.
- */
- private MBeanOperationInfo[] operations;
-
- /**
- * Descriptions of the bean's constructors.
- */
- private MBeanConstructorInfo[] constructors;
-
- /**
- * Descriptions of the notifications emitted by the bean.
- *
- * @serial The bean's notifications.
- */
- 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
- * name does not have to actually specify a valid class that
- * can be loaded by the MBean server or class loader; it merely
- * has to be a syntactically correct class name. Any of the
- * arrays may be <code>null</code>; this will be treated as if
- * an empty array was supplied. A copy of the arrays is
- * taken, so later changes have no effect.
- *
- * @param name the name of the class this instance describes.
- * @param desc a description of the bean.
- * @param attribs the attribute descriptions for the bean,
- * or <code>null</code>.
- * @param cons the constructor descriptions for the bean,
- * or <code>null</code>.
- * @param ops the operation descriptions for the bean,
- * or <code>null</code>.
- * @param notifs the notification descriptions for the bean,
- * or <code>null</code>.
- */
- public MBeanInfo(String name, String desc, MBeanAttributeInfo[] attribs,
- MBeanConstructorInfo[] cons, MBeanOperationInfo[] ops,
- MBeanNotificationInfo[] notifs)
- {
- className = name;
- description = desc;
-
- if (attribs == null)
- attributes = new MBeanAttributeInfo[0];
- else
- attributes = (MBeanAttributeInfo[]) attribs.clone();
-
- if (cons == null)
- constructors = new MBeanConstructorInfo[0];
- else
- constructors = (MBeanConstructorInfo[]) cons.clone();
-
- if (ops == null)
- operations = new MBeanOperationInfo[0];
- else
- operations = (MBeanOperationInfo[]) ops.clone();
-
- if (notifs == null)
- notifications = new MBeanNotificationInfo[0];
- else
- notifications = (MBeanNotificationInfo[]) notifs.clone();
- }
-
- /**
- * Returns a shallow clone of the information. This is
- * simply a new copy of each string and a clone
- * of each array, which still references the same objects,
- * as obtained by the {@link Object} implementation of
- * {@link Object#clone()}. As the fields can not be
- * changed, this method is only really of interest to
- * subclasses which may add new mutable fields or make
- * the existing ones mutable.
- *
- * @return a shallow clone of this {@link MBeanInfo}.
- */
- public Object clone()
- {
- MBeanInfo clone = null;
- try
- {
- clone = (MBeanInfo) super.clone();
- }
- catch (CloneNotSupportedException e)
- {
- /* This won't happen as we implement Cloneable */
- }
- return clone;
- }
-
- /**
- * Compares this feature with the supplied object. This returns
- * true iff the object is an instance of {@link MBeanInfo} and
- * {@link Object#equals()} returns true for a comparison of the
- * class name and description, and the arrays each contain the same
- * elements in the same order (but one may be longer than the
- * other).
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link MBeanInfo}
- * instance,
- * <code>className.equals(object.getClassName())</code>,
- * <code>description.equals(object.getDescription())</code>
- * and the corresponding elements of the arrays are
- * equal.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof MBeanInfo))
- return false;
- if (!(super.equals(obj)))
- return false;
- MBeanInfo o = (MBeanInfo) obj;
- MBeanAttributeInfo[] attr = o.getAttributes();
- for (int a = 0; a < attributes.length; ++a)
- {
- if (a == attr.length)
- return true;
- if (!(attributes[a].equals(attr[a])))
- return false;
- }
- MBeanConstructorInfo[] cons = o.getConstructors();
- for (int a = 0; a < constructors.length; ++a)
- {
- if (a == cons.length)
- return true;
- if (!(constructors[a].equals(cons[a])))
- return false;
- }
- MBeanOperationInfo[] ops = o.getOperations();
- for (int a = 0; a < operations.length; ++a)
- {
- if (a == ops.length)
- return true;
- if (!(operations[a].equals(ops[a])))
- return false;
- }
- MBeanNotificationInfo[] notifs = o.getNotifications();
- for (int a = 0; a < notifications.length; ++a)
- {
- if (a == notifs.length)
- return true;
- if (!(notifications[a].equals(notifs[a])))
- return false;
- }
- return (className.equals(o.getClassName()) &&
- description.equals(o.getDescription()));
- }
-
- /**
- * Returns descriptions of each of the attributes provided
- * by this management bean. The returned value is a shallow
- * copy of the attribute array maintained by this instance.
- * Hence, changing the elements of the returned array will not
- * affect the attribute array, and the elements (instances
- * of the {@link MBeanAttributeInfo} class) are immutable.
- *
- * @return an array of {@link MBeanAttributeInfo} objects,
- * representing the attributes emitted by this
- * management bean.
- */
- public MBeanAttributeInfo[] getAttributes()
- {
- return (MBeanAttributeInfo[]) attributes.clone();
- }
-
- /**
- * Returns the class name of the management bean.
- *
- * @return the bean's class name.
- */
- public String getClassName()
- {
- return className;
- }
-
- /**
- * Returns descriptions of each of the constructors provided
- * by this management bean. The returned value is a shallow
- * copy of the constructor array maintained by this instance.
- * Hence, changing the elements of the returned array will not
- * affect the constructor array, and the elements (instances
- * of the {@link MBeanConstructorInfo} class) are immutable.
- *
- * @return an array of {@link MBeanConstructorInfo} objects,
- * representing the constructors emitted by this
- * management bean.
- */
- public MBeanConstructorInfo[] getConstructors()
- {
- return (MBeanConstructorInfo[]) constructors.clone();
- }
-
- /**
- * Returns a description of the management bean.
- *
- * @return the bean's description.
- */
- public String getDescription()
- {
- return description;
- }
-
- /**
- * Returns descriptions of each of the notifications emitted
- * by this management bean. The returned value is a shallow
- * copy of the notification array maintained by this instance.
- * Hence, changing the elements of the returned array will not
- * affect the notification array, and the elements (instances
- * of the {@link MBeanNotificationInfo} class) are immutable.
- *
- * @return an array of {@link MBeanNotificationInfo} objects,
- * representing the notifications emitted by this
- * management bean.
- */
- public MBeanNotificationInfo[] getNotifications()
- {
- return (MBeanNotificationInfo[]) notifications.clone();
- }
-
- /**
- * Returns descriptions of each of the operations provided
- * by this management bean. The returned value is a shallow
- * copy of the operation array maintained by this instance.
- * Hence, changing the elements of the returned array will not
- * affect the operation array, and the elements (instances
- * of the {@link MBeanOperationInfo} class) are immutable.
- *
- * @return an array of {@link MBeanOperationInfo} objects,
- * representing the operations emitted by this
- * management bean.
- */
- public MBeanOperationInfo[] getOperations()
- {
- return (MBeanOperationInfo[]) operations.clone();
- }
-
- /**
- * Returns the hashcode of the information as the sum of the
- * hashcode of the classname, description and each array.
- *
- * @return the hashcode of the information.
- */
- public int hashCode()
- {
- return className.hashCode() + description.hashCode()
- + Arrays.hashCode(attributes) + Arrays.hashCode(constructors)
- + 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/libjava/classpath/javax/management/MBeanNotificationInfo.java b/libjava/classpath/javax/management/MBeanNotificationInfo.java
deleted file mode 100644
index 10dd956..0000000
--- a/libjava/classpath/javax/management/MBeanNotificationInfo.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/* MBeanNotificationInfo.java -- Information about a bean's notification.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.util.Arrays;
-
-/**
- * <p>
- * Describes the notifications emitted by a management bean.
- * An instance of this class is specific to notifications
- * involving a particular type of object. A new instance
- * should be created for each Java class used for notifications,
- * and the Java class name forms the name of the instance.
- * Each instance lists a number of notification types; these
- * are not types in the sense of different Java classes, but
- * instead form the names of notifications following the same
- * syntax as Java property and package names.
- * </p>
- * <p>
- * For instance, a management bean may emit two notifications
- * containing {@link java.lang.String} objects. Both would be described
- * using one instance of this class, with a member of the array
- * returned by {@link #getNotifTypes()} for each one. If another
- * notification containing a {@link java.util.Date} object were to
- * be added, this would require a new instance of this class.
- * </p>
- * <p>
- * The information in this class is immutable as standard.
- * Of course, subclasses may change this, but this
- * behaviour is not recommended.
- * </p>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanNotificationInfo
- extends MBeanFeatureInfo
- implements Cloneable
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -3888371564530107064L;
-
- /**
- * The types of notification described by this instance.
- *
- * @serial the types of notification.
- */
- private String[] types;
-
- /**
- * Constructs a new {@link MBeanNotificationInfo} with the
- * specified name, description and notification types. The
- * notification types array may be <code>null</code> or of
- * zero length, in order to indicate the absence of any types.
- *
- * @param types an array of {@link java.lang.String} objects,
- * containing the names of the notifications emitted
- * of this Java type. The names use the dot notation
- * familiar from Java property and package names.
- * @param name the name of the Java class the notifications described
- * by this object are instances of.
- * @param description a description of the data.
- * @throws IllegalArgumentException for some reason...
- */
- public MBeanNotificationInfo(String[] types, String name,
- String description)
- {
- super(name, description);
- this.types = types;
- }
-
- /**
- * Returns a clone of this instance. The clone is created
- * using just the method provided by {@link java.lang.Object}.
- * Thus, the clone is just a shallow clone as returned by
- * that method, and does not contain any deeper cloning based
- * on the subject of this class.
- *
- * @return a clone of this instance.
- * @see java.lang.Cloneable
- */
- public Object clone()
- {
- try
- {
- return super.clone();
- }
- catch (CloneNotSupportedException e)
- {
- /* This shouldn't happen; we implement Cloneable */
- throw new IllegalStateException("clone() called on " +
- "non-cloneable object.");
- }
- }
-
- /**
- * Compares this feature with the supplied object. This returns
- * true iff the object is an instance of {@link
- * MBeanNotificationInfo}, {@link Object#equals()} returns true for
- * a comparison of both the name and description of this
- * notification with that of the specified object, and the two
- * notification type arrays contain the same elements in the same
- * order (but one may be longer than the other).
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link MBeanNotificationInfo}
- * instance,
- * <code>name.equals(object.getName())</code>,
- * <code>description.equals(object.getDescription())</code>
- * and the corresponding elements of the type arrays are
- * equal.
- */
- public boolean equals(Object obj)
- {
- if (obj instanceof MBeanNotificationInfo)
- {
- if (!(super.equals(obj)))
- return false;
- MBeanNotificationInfo o = (MBeanNotificationInfo) obj;
- String[] oTypes = o.getNotifTypes();
- for (int a = 0; a < types.length; ++a)
- {
- if (a == oTypes.length)
- return true;
- if (!(types[a].equals(oTypes[a])))
- return false;
- }
- return true;
- }
- else
- return false;
- }
-
- /**
- * Returns the notification types that the management bean may emit.
- * The notification types are strings using the dot notation
- * familiar from Java property and package names. Changing the
- * returned array does not affect the values retained by this
- * instance.
- *
- * @return the notification types.
- */
- public String[] getNotifTypes()
- {
- return types;
- }
-
- /**
- * Returns the hashcode of the notification information as the sum
- * of the hashcode of the superclass and the hashcode of the types
- * array.
- *
- * @return the hashcode of the notification information.
- */
- public int hashCode()
- {
- 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/libjava/classpath/javax/management/MBeanOperationInfo.java b/libjava/classpath/javax/management/MBeanOperationInfo.java
deleted file mode 100644
index 0adc0e6..0000000
--- a/libjava/classpath/javax/management/MBeanOperationInfo.java
+++ /dev/null
@@ -1,359 +0,0 @@
-/* MBeanOperationInfo.java -- Information about a bean's operations.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-
-import java.util.Arrays;
-
-/**
- * Describes the operations of a management bean.
- * The information in this class is immutable as standard.
- * Of course, subclasses may change this, but this
- * behaviour is not recommended.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanOperationInfo
- extends MBeanFeatureInfo
- implements Cloneable
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -6178860474881375330L;
-
- /**
- * Used to signify that the operation merely provides information
- * (akin to an accessor).
- */
- public static final int INFO = 0;
-
- /**
- * Used to signify that the operation makes some change to the
- * state of the bean (akin to a mutator).
- */
- public static final int ACTION = 1;
-
- /**
- * Used to signify that the operation makes some state change
- * to the bean and also returns information.
- */
- public static final int ACTION_INFO = 2;
-
- /**
- * Used to signify that the behaviour of the operation is
- * unknown.
- */
- public static final int UNKNOWN = 3;
-
- /**
- * The return type of the method, in the form of its class name.
- */
- private String type;
-
- /**
- * The signature of the constructor i.e. the argument types.
- */
- private MBeanParameterInfo[] signature;
-
- /**
- * The impact of the method, as one of {@link #INFO}, {@link #ACTION},
- * {@link #ACTION_INFO} and {@link #UNKNOWN}.
- */
- private int impact;
-
- /**
- * Constructs a @link{MBeanOperationInfo} with the specified
- * description using the given method. Each parameter is
- * described merely by its type; the name and description are
- * <code>null</code>. The return type and impact of the
- * method are determined from the {@link Method} instance.
- *
- * @param desc a description of the attribute.
- * @param method the method.
- */
- public MBeanOperationInfo(String desc, Method method)
- {
- super(method.getName(), desc);
- Type[] paramTypes = method.getGenericParameterTypes();
- signature = new MBeanParameterInfo[paramTypes.length];
- for (int a = 0; a < paramTypes.length; ++a)
- {
- Type t = paramTypes[a];
- if (t instanceof Class)
- signature[a] = new MBeanParameterInfo(null,
- ((Class<?>) t).getName(),
- null);
- else
- signature[a] = new MBeanParameterInfo(null, t.toString(), null);
- }
- Type retType = method.getGenericReturnType();
- if (retType instanceof Class)
- type = ((Class<?>) retType).getName();
- else
- type = retType.toString();
- if (method.getReturnType() == Void.TYPE)
- {
- if (paramTypes.length == 0)
- impact = UNKNOWN;
- else
- impact = ACTION;
- }
- else
- {
- if (paramTypes.length == 0)
- impact = INFO;
- else
- impact = ACTION_INFO;
- }
- }
-
- /**
- * Constructs a @link{MBeanOperationInfo} with the specified name,
- * description, parameter information, return type and impact. A
- * <code>null</code> value for the parameter information is the same
- * as passing in an empty array. A copy of the parameter array is
- * taken, so later changes have no effect.
- *
- * @param name the name of the constructor.
- * @param desc a description of the attribute.
- * @param sig the signature of the method, as a series
- * of {@link MBeanParameterInfo} objects, one for
- * each parameter.
- * @param type the return type of the method, as the class name.
- * @param impact the impact of performing the operation.
- */
- public MBeanOperationInfo(String name, String desc,
- MBeanParameterInfo[] sig, String type,
- int impact)
- {
- super(name, desc);
- if (sig == null)
- signature = new MBeanParameterInfo[0];
- else
- {
- signature = new MBeanParameterInfo[sig.length];
- System.arraycopy(sig, 0, signature, 0, sig.length);
- }
- this.type = type;
- this.impact = impact;
- }
-
- /**
- * Returns a clone of this instance. The clone is created
- * using just the method provided by {@link java.lang.Object}.
- * Thus, the clone is just a shallow clone as returned by
- * that method, and does not contain any deeper cloning based
- * on the subject of this class.
- *
- * @return a clone of this instance.
- * @see java.lang.Cloneable
- */
- public Object clone()
- {
- try
- {
- return super.clone();
- }
- catch (CloneNotSupportedException e)
- {
- /* This shouldn't happen; we implement Cloneable */
- throw new IllegalStateException("clone() called on " +
- "non-cloneable object.");
- }
- }
-
- /**
- * Compares this feature with the supplied object. This returns
- * true iff the object is an instance of {@link
- * MBeanConstructorInfo}, {@link Object#equals()} returns true for a
- * comparison of both the name and description of this notification
- * with that of the specified object (performed by the superclass),
- * the return type and impact are equal and the two signature arrays
- * contain the same elements in the same order (but one may be
- * longer than the other).
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link MBeanOperationInfo}
- * instance,
- * <code>name.equals(object.getName())</code>,
- * <code>description.equals(object.getDescription())</code>,
- * <code>type.equals(object.getReturnType())</code>,
- * <code>impact == object.getImpact()</code>,
- * and the corresponding elements of the signature arrays are
- * equal.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof MBeanOperationInfo))
- return false;
- if (!(super.equals(obj)))
- return false;
- MBeanOperationInfo o = (MBeanOperationInfo) obj;
- MBeanParameterInfo[] sig = o.getSignature();
- for (int a = 0; a < signature.length; ++a)
- {
- if (a == sig.length)
- return true;
- if (!(signature[a].equals(sig[a])))
- return false;
- }
- return (type.equals(o.getReturnType()) &&
- impact == o.getImpact());
- }
-
- /**
- * <p>
- * Returns the impact of performing this operation.
- * The value is equal to one of the following:
- * </p>
- * <ol>
- * <li>{@link #INFO} &mdash; the method just returns
- * information (akin to an accessor).</li>
- * <li>{@link #ACTION} &mdash; the method just alters
- * the state of the bean, without returning a value
- * (akin to a mutator).</li>
- * <li>{@link #ACTION_INFO} &mdash; the method both makes
- * state changes and returns a value.</li>
- * <li>{@link #UNKNOWN} &mdash; the behaviour of the operation
- * is unknown.</li>
- * </ol>
- *
- * @return the impact of performing the operation.
- */
- public int getImpact()
- {
- return impact;
- }
-
- /**
- * Returns the return type of the operation, as the class
- * name.
- *
- * @return the return type.
- */
- public String getReturnType()
- {
- return type;
- }
-
- /**
- * Returns the operation's signature, in the form of
- * information on each parameter. Each parameter is
- * described by an instance of {@link MBeanParameterInfo}.
- * The returned array is a shallow copy of the array used
- * by this instance, so changing which elements are stored
- * in the array won't affect the array used by this, but
- * changing the actual elements will affect the ones used
- * here.
- *
- * @return an array of {@link MBeanParameterInfo} objects,
- * describing the operation parameters.
- */
- public MBeanParameterInfo[] getSignature()
- {
- return (MBeanParameterInfo[]) signature.clone();
- }
-
- /**
- * Returns the hashcode of the operation information as the sum of
- * the hashcode of the superclass, the parameter array, the return
- * type and the impact factor.
- *
- * @return the hashcode of the operation information.
- */
- public int hashCode()
- {
- return super.hashCode() + Arrays.hashCode(signature)
- + 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/libjava/classpath/javax/management/MBeanParameterInfo.java b/libjava/classpath/javax/management/MBeanParameterInfo.java
deleted file mode 100644
index 9307de4..0000000
--- a/libjava/classpath/javax/management/MBeanParameterInfo.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/* MBeanParameterInfo.java -- Information about an operation's parameters.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Describes the parameters of a constructor or operation associated
- * with a management bean. The information in this class is immutable
- * as standard. Of course, subclasses may change this, but this
- * behaviour is not recommended.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanParameterInfo
- extends MBeanFeatureInfo
- implements Cloneable
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 7432616882776782338L;
-
- /**
- * The type of the parameter, represented by the class name.
- */
- private String type;
-
- /**
- * Constructs a new {@link MBeanParameterInfo} using the specified
- * name, description and type.
- *
- * @param name the name of the attribute.
- * @param type the type of the attribute, in the form of its class name.
- * @param desc a description of the attribute.
- */
- public MBeanParameterInfo(String name, String type, String desc)
- {
- super(name, desc);
- this.type = type;
- }
-
- /**
- * Returns a clone of this instance. The clone is created
- * using just the method provided by {@link java.lang.Object}.
- * Thus, the clone is just a shallow clone as returned by
- * that method, and does not contain any deeper cloning based
- * on the subject of this class.
- *
- * @return a clone of this instance.
- * @see java.lang.Cloneable
- */
- public Object clone()
- {
- try
- {
- return super.clone();
- }
- catch (CloneNotSupportedException e)
- {
- /* This shouldn't happen; we implement Cloneable */
- throw new IllegalStateException("clone() called on " +
- "non-cloneable object.");
- }
- }
-
- /**
- * Compares this feature with the supplied object. This returns
- * true iff the object is an instance of {@link MBeanParameterInfo},
- * {@link Object#equals()} returns true for a comparison of both the
- * name and description of this parameter with that of the specified
- * object (performed by the superclass), and the type of the two
- * instances is equal.
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link MBeanParameterInfo}
- * instance,
- * <code>name.equals(object.getName())</code>,
- * <code>description.equals(object.getDescription())</code>,
- * and <code>type.equals(object.getType())</code>.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof MBeanParameterInfo))
- return false;
- if (!(super.equals(obj)))
- return false;
- MBeanParameterInfo o = (MBeanParameterInfo) obj;
- return type.equals(o.getType());
- }
-
- /**
- * Returns the type of this attribute, in the form of its class name.
- *
- * @return the type of this attribute.
- */
- public String getType()
- {
- return type;
- }
-
- /**
- * Returns the hashcode of the parameter information as the sum of
- * the hashcode of the superclass and the hashcode of the type.
- *
- * @return the hashcode of the parameter information.
- */
- public int hashCode()
- {
- 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/libjava/classpath/javax/management/MBeanPermission.java b/libjava/classpath/javax/management/MBeanPermission.java
deleted file mode 100644
index 10813e4..0000000
--- a/libjava/classpath/javax/management/MBeanPermission.java
+++ /dev/null
@@ -1,549 +0,0 @@
-/* MBeanPermission.java -- Permissions controlling server access.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import gnu.java.lang.CPStringBuilder;
-
-import java.security.Permission;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.TreeSet;
-
-/**
- * <p>
- * Represents the permissions required to perform
- * operations using the {@link MBeanServer}. As with
- * all {@link java.security.Permission} objects, an
- * instance of this class either represents a permission
- * already held or one that is required to access a
- * particular service. In the case of {@link MBeanPermission}s,
- * implication checks are made using an instance of this class
- * when a user requests an operation from the server, and a
- * {@link SecurityManager} is in place.
- * </p>
- * <p>
- * An {@link MBeanPermission} consists of four elements,
- * which all have to match for the permission to be implied.
- * These are as follows:
- * </p>
- * <ol>
- * <li><strong>The action</strong>. For a required permission,
- * this is a single value. For a permission held by the user,
- * this is a list of comma-separated actions (with spaces allowed),
- * or <code>*</code> (representing all actions). {@link #getActions()}
- * returns this value.</li>
- * <li><strong>The class name</strong>. For a required permission,
- * this is the class name of the bean being accessed, if any. If
- * a bean isn't involved in this action, the value is <code>null</code>.
- * For a permission held by the user, it has one of three values:
- * <ol>
- * <li>The empty string, implying any class.</li>
- * <li><code>*</code>, also implying any class.</li>
- * <li>A class name pattern, which may specify a single class
- * (e.g. <code>java.lang.Object</code>) or a series of classes
- * using the wildcard character <code>*</code> (e.g.
- * <code>javax.swing.*</code>.)</li>
- * </ol></li>
- * <li><strong>The member</strong>. For a required permission,
- * this is the member of the bean being accessed (an attribute
- * or operation), if any. If a member of the bean isn't involved
- * in this action, the value is <code>null</code>.
- * For a permission held by the user, it has one of three values:
- * <ol>
- * <li>The empty string, implying any member.</li>
- * <li><code>*</code>, also implying any member.</li>
- * <li>The name of a member.</li>
- * </ol></li>
- * <li>The object name</strong>. For a required permission,
- * this is the {@link ObjectName} of the bean being accessed, if
- * any. If a bean isn't involved in this action, the value is
- * <code>null</code>. The name may not be a pattern.
- * For a permission held by the user, it may be the empty
- * string (allowing everything) or an {@link ObjectName}
- * pattern.
- * </li></ol>
- * {@link #getName()} returns the latter three of these as a
- * single string:
- * </p>
- * <p><code>className#member[objectName]</code></p>
- * <p>
- * where <code>""</code> is disallowed, as, although any of
- * the elements may be omitted, not all of them should be
- * left out simultaneously. <code>"-"</code> is used to
- * represent <code>null</code>. When this occurs in a
- * required permission, anything may match it. When this
- * forms part of a permission held by the user, it only
- * matches another <code>null</code> value.
- * </p>
- * <p>The list of valid actions is as follows:</p>
- * <ul>
- * <li>addNotificationListener</li>
- * <li>getAttribute</li>
- * <li>getClassLoader</li>
- * <li>getClassLoaderFor</li>
- * <li>getClassLoaderRepository</li>
- * <li>getDomains</li>
- * <li>getMBeanInfo</li>
- * <li>getObjectInstance</li>
- * <li>instantiate</li>
- * <li>invoke</li>
- * <li>isInstanceOf</li>
- * <li>queryMBeans</li>
- * <li>queryNames</li>
- * <li>registerMBean</li>
- * <li>removeNotificationListener</li>
- * <li>setAttribute</li>
- * <li>unregisterMBean</li>
- * </ul>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanPermission
- extends Permission
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -2416928705275160661L;
-
- /**
- * The list of actions associated with this permission.
- */
- private String actions;
-
- /**
- * The list of actions as an ordered set.
- */
- private transient Set<String> actionSet;
-
- /**
- * The set of valid actions.
- */
- private static final Set<String> validSet;
-
- /**
- * Initialise the set of valid actions.
- */
- static
- {
- validSet = new HashSet<String>();
- validSet.add("addNotificationListener");
- validSet.add("getAttribute");
- validSet.add("getClassLoader");
- validSet.add("getClassLoaderFor");
- validSet.add("getClassLoaderRepository");
- validSet.add("getDomains");
- validSet.add("getMBeanInfo");
- validSet.add("getObjectInstance");
- validSet.add("instantiate");
- validSet.add("invoke");
- validSet.add("isInstanceOf");
- validSet.add("queryMBeans");
- validSet.add("queryNames");
- validSet.add("registerMBean");
- validSet.add("removeNotificationListener");
- validSet.add("setAttribute");
- validSet.add("unregisterMBean");
- }
-
- /**
- * Constructs a new {@link MBeanPermission} with the specified name
- * and actions. The name is of the form <code>className#member[objectName]</code>,
- * where each element is optional, but a completely empty or <code>null</code>
- * name is disallowed. Actions are specified as a comma-separated list
- * and may also not be empty or <code>null</code>.
- *
- * @param name the name of the permission.
- * @param actions the actions associated with this permission.
- * @throws IllegalArgumentException if the name or actions are invalid.
- */
- public MBeanPermission(String name, String actions)
- {
- super(name);
- if (name == null || name.length() == 0)
- throw new IllegalArgumentException("The supplied name was null or empty.");
- if (actions == null || actions.length() == 0)
- throw new IllegalArgumentException("The supplied action list was null or empty.");
- this.actions = actions;
- updateActionSet();
- }
-
- /**
- * Constructs a new {@link MBeanPermission} with the specified class name,
- * member, object name and actions. The name of the permission is created
- * using the form <code>className#member[objectName]</code>,
- * where each element is optional, but an empty or <code>null</code>
- * name is disallowed. Actions are specified as a comma-separated list
- * and may also not be empty or <code>null</code>.
- *
- * @param className the name of the class to which this permission applies,
- * or either <code>null</code> or <code>"-"</code> for a
- * value which may be implied by any class name, but not
- * imply any class name itself.
- * @param member the member of the class to which this permission applies,
- * or either <code>null</code> or <code>"-"</code> for a
- * value which may be implied by any member, but not
- * imply any member itself.
- * @param name the {@link ObjectName} to which this permission applies,
- * or <code>null</code> for a value which may be implied by
- * any object name, but not imply any object name itself.
- * @param actions the actions associated with this permission.
- */
- public MBeanPermission(String className, String member,
- ObjectName name, String actions)
- {
- this((className == null ? "-" : className) + "#"
- + (member == null ? "-" : member) + "["
- + (name == null ? "-" : name.toString()) + "]", actions);
- }
-
- /**
- * Returns true if the given object is also an {@link MBeanPermission}
- * with the same name and actions.
- *
- * @param obj the object to test.
- * @return true if the object is an {@link MBeanPermission} with
- * the same name and actions.
- */
- public boolean equals(Object obj)
- {
- if (obj instanceof MBeanPermission)
- {
- MBeanPermission p = (MBeanPermission) obj;
- return (p.getName().equals(getName()) &&
- p.getActions().equals(actions));
- }
- return false;
- }
-
- /**
- * Returns the list of actions in alphabetical order.
- *
- * @return the list of actions.
- */
- public String getActions()
- {
- Iterator<String> it = actionSet.iterator();
- CPStringBuilder builder = new CPStringBuilder();
- while (it.hasNext())
- {
- builder.append(it.next());
- if (it.hasNext())
- builder.append(",");
- }
- return builder.toString();
- }
-
- /**
- * Returns the hashcode of the permission as the sum
- * of the hashcodes of the name and actions.
- *
- * @return the hashcode of the permission.
- */
- public int hashCode()
- {
- return getName().hashCode() + actions.hashCode();
- }
-
- /**
- * <p>
- * Returns true if this permission implies the supplied permission.
- * This happens if the following holds:
- * </p>
- * <ul>
- * <li>The supplied permission is an {@link MBeanPermission}</li>
- * <li>The supplied permission has either a <code>null</code> classname
- * or its classname matches the classname of this permission. A
- * classname of <code>"*"</code> for this permission always matches
- * the classname of the supplied permission. Generally, <code>'*'</code>
- * acts as a wildcard, so <code>".*"</code> matches <code>'.'</code>
- * followed by anything.</li>
- * <li>The supplied permission has either a <code>null</code> member
- * or its member matches the member of this permission. A member of
- * <code>"*"</code> for this permission always matches the member
- * of the supplied permission.</li>
- * <li>The supplied permission has either a <code>null</code> object name
- * or its object name matches the object name of this permission. If the
- * object name of this permission is a pattern, {@link ObjectName#apply(ObjectName)}
- * may be used as well.</li>
- * <li>The supplied permission's actions are a subset of the actions
- * of this permission. If the <code>queryMBeans</code> action is presented,
- * the <code>queryNames</code> action is implied.</li>
- * </ul>
- *
- * @param p the permission to check that this permission implies.
- * @return true if this permission implies <code>p</code>.
- */
- public boolean implies(Permission p)
- {
- if (p instanceof MBeanPermission)
- {
- MBeanPermission mp = (MBeanPermission) p;
- NameHolder pName = new NameHolder(mp.getName());
- NameHolder name = new NameHolder(getName());
- if (!(name.equals(pName)))
- return false;
- for (String nextAction : mp.actionSet)
- {
- boolean found = actions.contains(nextAction);
- if (!found)
- if (nextAction.equals("queryNames"))
- found = actions.contains("queryMBeans");
- if (!found)
- return false;
- }
- return true;
- }
- return false;
- }
-
- /**
- * Small helper class to handle deconstruction of the name.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- */
- private class NameHolder
- {
-
- /**
- * The class name.
- */
- private String className;
-
- /**
- * The member.
- */
- private String member;
-
- /**
- * The object name.
- */
- private ObjectName objectName;
-
- /**
- * Constructs a broken-down name from a given name.
- *
- * @param name the name to break down.
- */
- public NameHolder(String name)
- {
- String objectName = null;
- int memberIndex = name.indexOf("#");
- int onIndex = name.indexOf("[");
- if (onIndex == -1)
- {
- if (memberIndex == -1)
- className = name;
- else
- {
- className = name.substring(0, memberIndex);
- member = name.substring(memberIndex + 1);
- }
- }
- else
- {
- if (memberIndex == -1)
- {
- className = name.substring(0, onIndex);
- objectName = name.substring(onIndex + 1,
- name.length() - 1);
- }
- else
- {
- className = name.substring(0, memberIndex);
- member = name.substring(memberIndex + 1, onIndex);
- objectName = name.substring(onIndex + 1,
- name.length() - 1);
- }
- }
- if (className.equals("-"))
- className = null;
- if (member.equals("-"))
- member = null;
- if (objectName == null || objectName.equals("-"))
- this.objectName = null;
- else
- try
- {
- this.objectName = new ObjectName(objectName);
- }
- catch (MalformedObjectNameException e)
- {
- throw (Error)
- (new InternalError("Invalid object name.").initCause(e));
- }
- }
-
- /**
- * <p>
- * Returns true if the supplied object is also a
- * {@link NameHolder} and the following holds:
- * </p>
- * <ul>
- * <li>The supplied classname is <code>null</code> or the two match. A
- * classname of <code>"*"</code> for this holder always matches
- * the classname of the supplied holder. Generally, <code>'*'</code>
- * acts as a wildcard, so <code>".*"</code> matches <code>'.'</code>
- * followed by anything.</li>
- * <li>The supplied name holder has either a <code>null</code> member
- * or its member matches the member of this name holder. A member of
- * <code>"*"</code> for this name holder always matches the member
- * of the supplied name holder.</li>
- * <li>The supplied name holder has either a <code>null</code> object name
- * or its object name matches the object name of this name holder. If the
- * object name of this name holder is a pattern,
- * {@link ObjectName#apply(ObjectName)} may be used as well.</li>
- * </ul>
- *
- * @param obj the object to compare with this.
- * @return true if the above holds.
- */
- public boolean equals(Object obj)
- {
- if (obj instanceof NameHolder)
- {
- NameHolder nh = (NameHolder) obj;
- boolean cn = false;
- String ocn = nh.getClassName();
- if (ocn == null || className.equals("*"))
- cn = true;
- else
- {
- int wcIndex = className.indexOf("*");
- if (wcIndex != -1)
- cn = ocn.startsWith(className.substring(0, wcIndex));
- else
- cn = ocn.equals(className);
- }
- boolean m = false;
- String om = nh.getMember();
- if (om == null || member.equals("*"))
- m = true;
- else
- m = om.equals(member);
- boolean on = false;
- ObjectName oon = nh.getObjectName();
- if (oon == null)
- on = true;
- else if (objectName.isPattern())
- on = objectName.apply(oon);
- else
- on = oon.equals(objectName);
- return (cn && m && on);
- }
- return false;
- }
-
- /**
- * Returns the class name.
- */
- public String getClassName()
- {
- return className;
- }
-
- /**
- * Returns the member.
- */
- public String getMember()
- {
- return member;
- }
-
- /**
- * Returns the object name.
- */
- public ObjectName getObjectName()
- {
- return objectName;
- }
- }
-
- /**
- * Updates the action set from the current value of
- * the actions string.
- */
- private void updateActionSet()
- {
- String[] actionsArray = actions.split(",");
- actionSet = new TreeSet<String>();
- for (int a = 0; a < actionsArray.length; ++a)
- actionSet.add(actionsArray[a].trim());
- }
-
- /**
- * Reads the object from a stream and ensures the incoming
- * data is valid.
- *
- * @param in the input stream.
- * @throws IOException if an I/O error occurs.
- * @throws ClassNotFoundException if a class used by the object
- * can not be found.
- */
- private void readObject(ObjectInputStream in)
- throws IOException, ClassNotFoundException
- {
- in.defaultReadObject();
- updateActionSet();
- checkActions();
- }
-
- /**
- * Checks that the actions used in this permission
- * are from the valid set.
- *
- * @throws IllegalArgumentException if the name or actions are invalid.
- */
- private void checkActions()
- {
- for (String action : actionSet)
- {
- if (!(validSet.contains(action)))
- throw new IllegalArgumentException("Invalid action "
- + action + " found.");
- }
- }
-
-}
diff --git a/libjava/classpath/javax/management/MBeanRegistration.java b/libjava/classpath/javax/management/MBeanRegistration.java
deleted file mode 100644
index 5a181ca..0000000
--- a/libjava/classpath/javax/management/MBeanRegistration.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/* MBeanRegistration.java -- Interface for beans to hook into registration.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Beans may implement this interface in order to perform
- * operations immediately prior to or after their registration
- * or deregistration.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface MBeanRegistration
-{
-
- /**
- * This method is called following deregistration of the bean
- * by the server.
- */
- void postDeregister();
-
- /**
- * This method is called following both successful and unsuccessful
- * attempts to register the bean. The supplied boolean value indicates
- * the result of the attempt relative to this call.
- *
- * @param successful true if the registration was successful.
- */
- void postRegister(Boolean successful);
-
- /**
- * This method is called prior to de-registration, and may throw
- * an exception.
- *
- * @throws Exception if something goes wrong during the bean's pre-deregistration
- * operation. The server will re-throw this exception
- * as an {@link MBeanRegistrationException}.
- */
- void preDeregister()
- throws Exception;
-
- /**
- * This method is called prior to registration, with a reference to the
- * server and {@link ObjectName} supplied to the server for registration.
- * This method may be used to replace this name by one chosen by the bean.
- * Such behaviour is expected if the supplied name is <code>null</code>,
- * but may occur in all cases. The method may throw an exception, which
- * will cause registration to be aborted.
- *
- * @param server the server with which the bean is being registered.
- * @param name the name the server was supplied with for registration,
- * which may be <code>null</code>.
- * @throws Exception if something goes wrong during the bean's pre-registration
- * operation. The server will re-throw this exception
- * as an {@link MBeanRegistrationException}.
- */
- ObjectName preRegister(MBeanServer server, ObjectName name)
- throws Exception;
-
-}
diff --git a/libjava/classpath/javax/management/MBeanRegistrationException.java b/libjava/classpath/javax/management/MBeanRegistrationException.java
deleted file mode 100644
index 18ed44a..0000000
--- a/libjava/classpath/javax/management/MBeanRegistrationException.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/* MBeanRegistrationException.java -- A bean registration exception.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Represents an arbitrary exception thrown during registration of a
- * management bean. When registering a bean causes an exception to be
- * thrown, the resulting exception is wrapped inside an {@link
- * MBeanRegistrationException}. Calling {@link getTargetException()}
- * will return the wrapped exception.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanRegistrationException
- extends MBeanException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 4482382455277067805L;
-
- /**
- * Constructs a new <code>MBeanRegistrationException</code> wrapping
- * the specified exception.
- *
- * @param e the exception to be wrapped.
- */
- public MBeanRegistrationException(Exception e)
- {
- super(e);
- }
-
- /**
- * Constructs a new <code>MBeanRegistrationException</code> wrapping
- * the specified exception and using the supplied message.
- *
- * @param e the exception to be wrapped.
- * @param message the error message to give to the user.
- */
- public MBeanRegistrationException(Exception e, String message)
- {
- super(e, message);
- }
-
-
-}
diff --git a/libjava/classpath/javax/management/MBeanServer.java b/libjava/classpath/javax/management/MBeanServer.java
deleted file mode 100644
index 4b57215..0000000
--- a/libjava/classpath/javax/management/MBeanServer.java
+++ /dev/null
@@ -1,1199 +0,0 @@
-/* MBeanServer.java -- Represents a management server.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.io.ObjectInputStream;
-
-import java.util.Set;
-
-import javax.management.loading.ClassLoaderRepository;
-
-/**
- * <p>
- * This interface represents a server for management beans,
- * providing facilities for the creation, registration and
- * removal of such beans. This interface is central to the
- * Java management architecture. Users do not usually implement
- * this class. Instead, implementations of this class
- * may be obtained using an {@link MBeanServerFactory}.
- * </p>
- * <p>
- * Registering a bean with the server makes its attributes and
- * operations accessible via the server. Only JMX compliant
- * beans may be registered with the server. When a bean
- * is registered or unregistered, an {@link MBeanServerNotification}
- * is emitted by the server's {@link MBeanServerDelegate}.
- * Listeners may be registered with this bean in order to
- * obtain such notifications. It has the {@link ObjectName}
- * <code>JMImplementation:type=MBeanServerDelegate</code>.
- * </p>
- * <p>
- * Security checks are applied on the methods of the server,
- * as detailed below, if it is obtained using the
- * {@link MBeanServerFactory#createMBeanServer()} or
- * {@link MBeanServerFactory#newMBeanServer()} methods and
- * {@link System.getSecurityManager()} returns a non-<code>null</code>
- * value. If a check fails, a {@link SecurityException}
- * is thrown. Note than the class name used in the exception
- * is that of the bean, and thus, as a result, an
- * {@link InstanceNotFoundException}
- * precludes these security checks, due to the class name
- * that would be used in the exception being unavailable.
- * </p>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface MBeanServer
- extends MBeanServerConnection
-{
-
- /**
- * Registers the supplied listener with the specified management
- * bean. Notifications emitted by the management bean are forwarded
- * to the listener via the server, which will convert any MBean
- * references in the source to portable {@link ObjectName}
- * instances. The notification is otherwise unchanged.
- *
- * @param name the name of the management bean with which the listener
- * should be registered.
- * @param listener the listener which will handle notifications from
- * the bean.
- * @param filter the filter to apply to incoming notifications, or
- * <code>null</code> if no filtering should be applied.
- * @param passback an object to be passed to the listener when a
- * notification is emitted.
- * @throws InstanceNotFoundException if the name of the management bean
- * could not be resolved.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, name,
- * "addNotificationListener")</code>}.
- * @see #removeNotificationListener(ObjectName, NotificationListener)
- * @see #removeNotificationListener(ObjectName, NotificationListener,
- * NotificationFilter, Object)
- * @see NotificationBroadcaster#addNotificationListener(NotificationListener,
- * NotificationFilter,
- * Object)
- */
- void addNotificationListener(ObjectName name, NotificationListener listener,
- NotificationFilter filter, Object passback)
- throws InstanceNotFoundException;
-
- /**
- * <p>
- * Registers the supplied listener with the specified management
- * bean. Notifications emitted by the management bean are forwarded
- * to the listener via the server, which will convert any MBean
- * references in the source to portable {@link ObjectName}
- * instances. The notification is otherwise unchanged.
- * </p>
- * <p>
- * The listener that receives notifications will be the one that is
- * registered with the given name at the time this method is called.
- * Even if it later unregisters and ceases to use that name, it will
- * still receive notifications.
- * </p>
- *
- * @param name the name of the management bean with which the listener
- * should be registered.
- * @param listener the name of the listener which will handle
- * notifications from the bean.
- * @param filter the filter to apply to incoming notifications, or
- * <code>null</code> if no filtering should be applied.
- * @param passback an object to be passed to the listener when a
- * notification is emitted.
- * @throws InstanceNotFoundException if the name of the management bean
- * could not be resolved.
- * @throws RuntimeOperationsException if the bean associated with the given
- * object name is not a
- * {@link NotificationListener}. This
- * exception wraps an
- * {@link IllegalArgumentException}.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, name,
- * "addNotificationListener")</code>}.
- * @see #removeNotificationListener(ObjectName, NotificationListener)
- * @see #removeNotificationListener(ObjectName, NotificationListener,
- * NotificationFilter, Object)
- * @see NotificationBroadcaster#addNotificationListener(NotificationListener,
- * NotificationFilter,
- * Object)
- */
- void addNotificationListener(ObjectName name, ObjectName listener,
- NotificationFilter filter, Object passback)
- throws InstanceNotFoundException;
-
- /**
- * <p>
- * Instantiates a new instance of the specified management bean
- * using the default constructor and registers it with the server
- * under the supplied name. The class is loaded using the
- * {@link javax.management.loading.ClassLoaderRepository default
- * loader repository} of the server.
- * </p>
- * <p>
- * If the name supplied is <code>null</code>, then the bean is
- * expected to implement the {@link MBeanRegistration} interface.
- * The {@link MBeanRegistration#preRegister preRegister} method
- * of this interface will be used to obtain the name in this case.
- * </p>
- * <p>
- * This method is equivalent to calling {@link
- * #createMBean(String, ObjectName, Object[], String[])
- * <code>createMBean(className, name, (Object[]) null,
- * (String[]) null)</code>} with <code>null</code> parameters
- * and signature.
- * </p>
- *
- * @param className the class of the management bean, of which
- * an instance should be created.
- * @param name the name to register the new bean with.
- * @return an {@link ObjectInstance} containing the {@link ObjectName}
- * and Java class name of the created instance.
- * @throws ReflectionException if an exception occurs in creating
- * an instance of the bean.
- * @throws InstanceAlreadyExistsException if a matching instance
- * already exists.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preRegister
- * method.
- * @throws MBeanException if the bean's constructor throws an exception.
- * @throws NotCompliantMBeanException if the created bean is not
- * compliant with the JMX specification.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> class name or object
- * name or if the object name is a pattern.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply the
- * use of the <code>instantiate</code>
- * and <code>registerMBean</code> methods.
- * @see #createMBean(String, ObjectName, Object[], String[])
- */
- ObjectInstance createMBean(String className, ObjectName name)
- throws ReflectionException, InstanceAlreadyExistsException,
- MBeanRegistrationException, MBeanException,
- NotCompliantMBeanException;
-
- /**
- * <p>
- * Instantiates a new instance of the specified management bean
- * using the given constructor and registers it with the server
- * under the supplied name. The class is loaded using the
- * {@link javax.management.loading.ClassLoaderRepository default
- * loader repository} of the server.
- * </p>
- * <p>
- * If the name supplied is <code>null</code>, then the bean is
- * expected to implement the {@link MBeanRegistration} interface.
- * The {@link MBeanRegistration#preRegister preRegister} method
- * of this interface will be used to obtain the name in this case.
- * </p>
- *
- * @param className the class of the management bean, of which
- * an instance should be created.
- * @param name the name to register the new bean with.
- * @param params the parameters for the bean's constructor.
- * @param sig the signature of the constructor to use.
- * @return an {@link ObjectInstance} containing the {@link ObjectName}
- * and Java class name of the created instance.
- * @throws ReflectionException if an exception occurs in creating
- * an instance of the bean.
- * @throws InstanceAlreadyExistsException if a matching instance
- * already exists.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preRegister
- * method.
- * @throws MBeanException if the bean's constructor throws an exception.
- * @throws NotCompliantMBeanException if the created bean is not
- * compliant with the JMX specification.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> class name or object
- * name or if the object name is a pattern.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply the
- * use of the <code>instantiate</code>
- * and <code>registerMBean</code> methods.
- */
- ObjectInstance createMBean(String className, ObjectName name,
- Object[] params, String[] sig)
- throws ReflectionException, InstanceAlreadyExistsException,
- MBeanRegistrationException, MBeanException,
- NotCompliantMBeanException;
-
- /**
- * <p>
- * Instantiates a new instance of the specified management bean
- * using the default constructor and registers it with the server
- * under the supplied name. The class is loaded using the
- * given class loader. If this argument is <code>null</code>,
- * then the same class loader as was used to load the server
- * is used.
- * </p>
- * <p>
- * If the name supplied is <code>null</code>, then the bean is
- * expected to implement the {@link MBeanRegistration} interface.
- * The {@link MBeanRegistration#preRegister preRegister} method
- * of this interface will be used to obtain the name in this case.
- * </p>
- * <p>
- * This method is equivalent to calling {@link
- * #createMBean(String, ObjectName, ObjectName, Object[], String)
- * <code>createMBean(className, name, loaderName, (Object[]) null,
- * (String) null)</code>} with <code>null</code> parameters
- * and signature.
- * </p>
- *
- * @param className the class of the management bean, of which
- * an instance should be created.
- * @param name the name to register the new bean with.
- * @param loaderName the name of the class loader.
- * @return an {@link ObjectInstance} containing the {@link ObjectName}
- * and Java class name of the created instance.
- * @throws ReflectionException if an exception occurs in creating
- * an instance of the bean.
- * @throws InstanceAlreadyExistsException if a matching instance
- * already exists.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preRegister
- * method.
- * @throws MBeanException if the bean's constructor throws an exception.
- * @throws NotCompliantMBeanException if the created bean is not
- * compliant with the JMX specification.
- * @throws InstanceNotFoundException if the specified class loader is not
- * registered with the server.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> class name or object
- * name or if the object name is a pattern.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply the
- * use of the <code>instantiate</code>
- * and <code>registerMBean</code> methods.
- * @see #createMBean(String, ObjectName, ObjectName, Object[], String[])
- */
- ObjectInstance createMBean(String className, ObjectName name,
- ObjectName loaderName)
- throws ReflectionException, InstanceAlreadyExistsException,
- MBeanRegistrationException, MBeanException,
- NotCompliantMBeanException, InstanceNotFoundException;
-
- /**
- * <p>
- * Instantiates a new instance of the specified management bean
- * using the given constructor and registers it with the server
- * under the supplied name. The class is loaded using the
- * given class loader. If this argument is <code>null</code>,
- * then the same class loader as was used to load the server
- * is used.
- * </p>
- * <p>
- * If the name supplied is <code>null</code>, then the bean is
- * expected to implement the {@link MBeanRegistration} interface.
- * The {@link MBeanRegistration#preRegister preRegister} method
- * of this interface will be used to obtain the name in this case.
- * </p>
- *
- * @param className the class of the management bean, of which
- * an instance should be created.
- * @param name the name to register the new bean with.
- * @param loaderName the name of the class loader.
- * @param params the parameters for the bean's constructor.
- * @param sig the signature of the constructor to use.
- * @return an {@link ObjectInstance} containing the {@link ObjectName}
- * and Java class name of the created instance.
- * @throws ReflectionException if an exception occurs in creating
- * an instance of the bean.
- * @throws InstanceAlreadyExistsException if a matching instance
- * already exists.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preRegister
- * method.
- * @throws MBeanException if the bean's constructor throws an exception.
- * @throws NotCompliantMBeanException if the created bean is not
- * compliant with the JMX specification.
- * @throws InstanceNotFoundException if the specified class loader is not
- * registered with the server.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> class name or object
- * name or if the object name is a pattern.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply the
- * use of the <code>instantiate</code>
- * and <code>registerMBean</code> methods.
- */
- ObjectInstance createMBean(String className, ObjectName name,
- ObjectName loaderName, Object[] params,
- String[] sig)
- throws ReflectionException, InstanceAlreadyExistsException,
- MBeanRegistrationException, MBeanException,
- NotCompliantMBeanException, InstanceNotFoundException;
-
- /**
- * Deserializes a byte array using the class loader of the specified
- * management bean as its context.
- *
- * @param name the name of the bean whose class loader should be used.
- * @param data the byte array to be deserialized.
- * @return the deserialized object stream.
- * @deprecated {@link #getClassLoaderFor(ObjectName)} should be used
- * to obtain the class loader of the bean, which can then
- * be used to perform deserialization in the user's code.
- * @throws InstanceNotFoundException if the specified bean is not
- * registered with the server.
- * @throws OperationsException if any I/O error is thrown by the
- * deserialization process.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, name,
- * "getClassLoaderFor")</code>
- */
- ObjectInputStream deserialize(ObjectName name, byte[] data)
- throws InstanceNotFoundException, OperationsException;
-
- /**
- * Deserializes a byte array using the same class loader for its context
- * as was used to load the given class. This class loader is obtained by
- * loading the specified class using the {@link
- * javax.management.loading.ClassLoaderRepository Class Loader Repository}
- * and then using the class loader of the resulting {@link Class} instance.
- *
- * @param name the name of the class which should be loaded to obtain the
- * class loader.
- * @param data the byte array to be deserialized.
- * @return the deserialized object stream.
- * @deprecated {@link #getClassLoaderRepository} should be used
- * to obtain the class loading repository, which can then
- * be used to obtain the {@link Class} instance and deserialize
- * the array using its class loader.
- * @throws OperationsException if any I/O error is thrown by the
- * deserialization process.
- * @throws ReflectionException if an error occurs in obtaining the
- * {@link Class} instance.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(null, null, null,
- * "getClassLoaderRepository")</code>
- */
- ObjectInputStream deserialize(String name, byte[] data)
- throws OperationsException, ReflectionException;
-
- /**
- * Deserializes a byte array using the same class loader for its context
- * as was used to load the given class. The name of the class loader to
- * be used is supplied, and may be <code>null</code> if the server's
- * class loader should be used instead.
- *
- * @param name the name of the class which should be loaded to obtain the
- * class loader.
- * @param loader the name of the class loader to use, or <code>null</code>
- * if the class loader of the server should be used.
- * @param data the byte array to be deserialized.
- * @return the deserialized object stream.
- * @deprecated {@link #getClassLoader(ObjectName} can be used to obtain
- * the named class loader and deserialize the array.
- * @throws InstanceNotFoundException if the specified class loader is not
- * registered with the server.
- * @throws OperationsException if any I/O error is thrown by the
- * deserialization process.
- * @throws ReflectionException if an error occurs in obtaining the
- * {@link Class} instance.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, loader,
- * "getClassLoader")</code>
- */
- ObjectInputStream deserialize(String name, ObjectName loader, byte[] data)
- throws InstanceNotFoundException, ReflectionException,
- OperationsException;
-
- /**
- * Returns the value of the supplied attribute from the specified
- * management bean.
- *
- * @param bean the bean to retrieve the value from.
- * @param name the name of the attribute to retrieve.
- * @return the value of the attribute.
- * @throws AttributeNotFoundException if the attribute could not be
- * accessed from the bean.
- * @throws MBeanException if the management bean's accessor throws
- * an exception.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ReflectionException if an exception was thrown in trying
- * to invoke the bean's accessor.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean or attribute
- * name.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, name, bean,
- * "getAttribute")</code>}.
- * @see DynamicMBean#getAttribute(String)
- */
- Object getAttribute(ObjectName bean, String name)
- throws MBeanException, AttributeNotFoundException,
- InstanceNotFoundException, ReflectionException;
-
- /**
- * Returns the values of the named attributes from the specified
- * management bean.
- *
- * @param bean the bean to retrieve the value from.
- * @param names the names of the attributes to retrieve.
- * @return the values of the attributes.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ReflectionException if an exception was thrown in trying
- * to invoke the bean's accessor.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean or attribute
- * name.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, bean,
- * "getAttribute")</code>}. Additionally,
- * for an attribute name, <code>n</code>, the
- * caller's permission must imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, n, bean,
- * "getAttribute")</code>} or that attribute will
- * not be included.
- *
- * @see DynamicMBean#getAttributes(String[])
- */
- AttributeList getAttributes(ObjectName bean, String[] names)
- throws InstanceNotFoundException, ReflectionException;
-
- /**
- * Returns the specified class loader. If the specified value is
- * <code>null</code>, then the class loader of the server will be
- * returned. If <code>l</code> is the requested class loader,
- * and <code>r</code> is the actual class loader returned, then
- * either <code>l</code> and <code>r</code> will be identical,
- * or they will at least return the same class from
- * {@link ClassLoader#loadClass(String)} for any given string.
- * They may not be identical due to one or the other
- * being wrapped in another class loader (e.g. for security).
- *
- * @param name the name of the class loader to return.
- * @return the class loader.
- * @throws InstanceNotFoundException if the class loader can not
- * be found.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, name,
- * "getClassLoader")</code>
- */
- ClassLoader getClassLoader(ObjectName name)
- throws InstanceNotFoundException;
-
- /**
- * Returns the class loader of the specified management bean. If
- * <code>l</code> is the requested class loader, and <code>r</code>
- * is the actual class loader returned, then either <code>l</code>
- * and <code>r</code> will be identical, or they will at least
- * return the same class from {@link ClassLoader#loadClass(String)}
- * for any given string. They may not be identical due to one or
- * the other being wrapped in another class loader (e.g. for
- * security).
- *
- * @param name the name of the bean whose class loader should be
- * returned.
- * @return the class loader.
- * @throws InstanceNotFoundException if the bean is not registered
- * with the server.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, name,
- * "getClassLoaderFor")</code>
- */
- ClassLoader getClassLoaderFor(ObjectName name)
- throws InstanceNotFoundException;
-
- /**
- * Returns the class loader repository used by this server.
- *
- * @return the class loader repository.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(null, null, null,
- * "getClassLoaderRepository")</code>
- */
- ClassLoaderRepository getClassLoaderRepository();
-
- /**
- * Returns the default domain this server applies to beans that have
- * no specified domain.
- *
- * @return the default domain.
- */
- String getDefaultDomain();
-
- /**
- * Returns an array containing all the domains used by beans registered
- * with this server. The ordering of the array is undefined.
- *
- * @return the list of domains.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(null, null, name,
- * "getDomains")</code>}. Additionally,
- * for an domain, <code>d</code>, the
- * caller's permission must imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(null, null,
- * new ObjectName("d:x=x"), "getDomains")</code>}
- * or that domain will not be included. Note
- * that "x=x" is an arbitrary key-value pair
- * provided to satisfy the constructor.
- * @see ObjectName#getDomain()
- */
- String[] getDomains();
-
- /**
- * Returns the number of management beans registered with this server.
- * This may be less than the real number if the caller's access is
- * restricted.
- *
- * @return the number of registered beans.
- */
- Integer getMBeanCount();
-
- /**
- * Returns information on the given management bean.
- *
- * @param name the name of the management bean.
- * @return an instance of {@link MBeanInfo} for the bean.
- * @throws IntrospectionException if an exception occurs in examining
- * the bean.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ReflectionException if an exception occurs when trying
- * to invoke {@link DynamicMBean#getMBeanInfo()}
- * on the bean.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, name,
- * "getMBeanInfo")</code>}.
- * @see DynamicMBean#getMBeanInfo()
- */
- MBeanInfo getMBeanInfo(ObjectName name)
- throws InstanceNotFoundException, IntrospectionException,
- ReflectionException;
-
- /**
- * Returns the {@link ObjectInstance} created for the specified
- * management bean on registration.
- *
- * @param name the name of the bean.
- * @return the corresponding {@link ObjectInstance} instance.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, name,
- * "getObjectInstance")</code>
- * @see #createMBean(String, ObjectName)
- */
- ObjectInstance getObjectInstance(ObjectName name)
- throws InstanceNotFoundException;
-
- /**
- * <p>
- * Creates an instance of the specified class using the list of
- * class loaders from the {@link
- * javax.management.loading.ClassLoaderRepository Class Loader
- * Repository}. The class should have a public constructor
- * with no arguments. A reference to the new instance is returned,
- * but the instance is not yet registered with the server.
- * </p>
- * <p>
- * This method is equivalent to calling {@link
- * #instantiate(String, Object[], String[])
- * <code>instantiate(name, (Object[]) null, (String[]) null)</code>}
- * with <code>null</code> parameters and signature.
- * </p>
- *
- * @param name the name of the class of bean to be instantiated.
- * @return an instance of the given class.
- * @throws ReflectionException if an exception is thrown during
- * loading the class or calling the
- * constructor.
- * @throws MBeanException if the constructor throws an exception.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> name.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, null,
- * "instantiate")</code>}.
- * @see #instantiate(String, Object[], String[])
- */
- Object instantiate(String name)
- throws ReflectionException, MBeanException;
-
- /**
- * Creates an instance of the specified class using the list of
- * class loaders from the {@link
- * javax.management.loading.ClassLoaderRepository Class Loader
- * Repository}. The class should have a public constructor
- * matching the supplied signature. A reference to the new
- * instance is returned, but the instance is not yet
- * registered with the server.
- *
- * @param name the name of the class of bean to be instantiated.
- * @param params the parameters for the constructor.
- * @param sig the signature of the constructor.
- * @return an instance of the given class.
- * @throws ReflectionException if an exception is thrown during
- * loading the class or calling the
- * constructor.
- * @throws MBeanException if the constructor throws an exception.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> name.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, null,
- * "instantiate")</code>}.
- */
- Object instantiate(String name, Object[] params, String[] sig)
- throws ReflectionException, MBeanException;
-
- /**
- * <p>
- * Creates an instance of the specified class using the supplied
- * class loader. If the class loader given is <code>null</code>,
- * then the class loader of the server will be used. The class
- * should have a public constructor with no arguments. A reference
- * to the new instance is returned, but the instance is not yet
- * registered with the server.
- * </p>
- * <p>
- * This method is equivalent to calling {@link
- * #instantiate(String, ObjectName, Object[], String[])
- * <code>instantiate(name, loaderName, (Object[]) null,
- * (String[]) null)</code>} with <code>null</code> parameters
- * and signature.
- * </p>
- *
- * @param name the name of the class of bean to be instantiated.
- * @param loaderName the name of the class loader to use.
- * @return an instance of the given class.
- * @throws InstanceNotFoundException if the class loader is not
- * registered with the server.
- * @throws ReflectionException if an exception is thrown during
- * loading the class or calling the
- * constructor.
- * @throws MBeanException if the constructor throws an exception.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> name.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, null,
- * "instantiate")</code>}.
- * @see #instantiate(String, Object[], String[])
- */
- Object instantiate(String name, ObjectName loaderName)
- throws InstanceNotFoundException, ReflectionException,
- MBeanException;
-
- /**
- * Creates an instance of the specified class using the supplied
- * class loader. If the class loader given is <code>null</code>,
- * then the class loader of the server will be used. The class
- * should have a public constructor matching the supplied
- * signature. A reference to the new instance is returned,
- * but the instance is not yet registered with the server.
- *
- * @param name the name of the class of bean to be instantiated.
- * @param loaderName the name of the class loader to use.
- * @param params the parameters for the constructor.
- * @param sig the signature of the constructor.
- * @return an instance of the given class.
- * @throws InstanceNotFoundException if the class loader is not
- * registered with the server.
- * @throws ReflectionException if an exception is thrown during
- * loading the class or calling the
- * constructor.
- * @throws MBeanException if the constructor throws an exception.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> name.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, null,
- * "instantiate")</code>}.
- */
- Object instantiate(String name, ObjectName loaderName,
- Object[] params, String[] sig)
- throws InstanceNotFoundException, ReflectionException,
- MBeanException;
-
- /**
- * Invokes the supplied operation on the specified management
- * bean. The class objects specified in the signature are loaded
- * using the same class loader as was used for the management bean.
- *
- * @param bean the management bean whose operation should be invoked.
- * @param name the name of the operation to invoke.
- * @param params the parameters of the operation.
- * @param sig the signature of the operation.
- * @return the return value of the method.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws MBeanException if the method invoked throws an exception.
- * @throws ReflectionException if an exception is thrown in invoking the
- * method.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, name, bean,
- * "invoke")</code>}.
- * @see DynamicMBean#invoke(String, Object[], String[])
- */
- Object invoke(ObjectName bean, String name, Object[] params, String[] sig)
- throws InstanceNotFoundException, MBeanException,
- ReflectionException;
-
- /**
- * <p>
- * Returns true if the specified management bean is an instance
- * of the supplied class.
- * </p>
- * <p>
- * A bean, B, is an instance of a class, C, if either of the following
- * conditions holds:
- * </p>
- * <ul>
- * <li>The class name in B's {@link MBeanInfo} is equal to the supplied
- * name.</li>
- * <li>Both the class of B and C were loaded by the same class loader,
- * and B is assignable to C.</li>
- * </ul>
- *
- * @param name the name of the management bean.
- * @param className the name of the class to test if <code>name</code> is
- * an instance of.
- * @return true if either B is directly an instance of the named class,
- * or B is assignable to the class, given that both it and B's
- * current class were loaded using the same class loader.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, name,
- * "isInstanceOf")</code>
- */
- boolean isInstanceOf(ObjectName name, String className)
- throws InstanceNotFoundException;
-
- /**
- * Returns true if the specified management bean is registered with
- * the server.
- *
- * @param name the name of the management bean.
- * @return true if the bean is registered.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean name.
- */
- boolean isRegistered(ObjectName name);
-
- /**
- * <p>
- * Returns a set of {@link ObjectInstance}s matching the specified
- * criteria. The full set of beans registered with the server
- * are passed through two filters:
- * </p>
- * <ol>
- * <li>Pattern matching is performed using the supplied
- * {@link ObjectName}.</li>
- * <li>The supplied query expression is applied.</li>
- * </ol>
- * <p>
- * If both the object name and the query expression are <code>null</code>,
- * or the object name has no domain and no key properties,
- * no filtering will be performed and all beans are returned.
- * </p>
- *
- * @param name an {@link ObjectName} to use as a filter.
- * @param query a query expression to apply to each of the beans that match
- * the given object name.
- * @return a set of {@link ObjectInstance}s matching the filtered beans.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(null, null, name,
- * "queryMBeans")</code>}. Additionally,
- * for an bean, <code>b</code>, the
- * caller's permission must imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, b, name,
- * "queryMBeans")</code>} or that bean will
- * not be included. Such an exception may also
- * arise from the execution of the query, in which
- * case that particular bean will again be excluded.
- */
- Set<ObjectInstance> queryMBeans(ObjectName name, QueryExp query);
-
- /**
- * <p>
- * Returns a set of {@link ObjectName}s matching the specified
- * criteria. The full set of beans registered with the server
- * are passed through two filters:
- * </p>
- * <ol>
- * <li>Pattern matching is performed using the supplied
- * {@link ObjectName}.</li>
- * <li>The supplied query expression is applied.</li>
- * </ol>
- * <p>
- * If both the object name and the query expression are <code>null</code>,
- * or the object name has no domain and no key properties,
- * no filtering will be performed and all beans are returned.
- * </p>
- *
- * @param name an {@link ObjectName} to use as a filter.
- * @param query a query expression to apply to each of the beans that match
- * the given object name.
- * @return a set of {@link ObjectName}s matching the filtered beans.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(null, null, name,
- * "queryNames")</code>}. Additionally,
- * for an name, <code>n</code>, the
- * caller's permission must imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, n, name,
- * "queryNames")</code>} or that name will
- * not be included. Such an exception may also
- * arise from the execution of the query, in which
- * case that particular bean will again be excluded.
- * Note that these permissions are implied if the
- * <code>queryMBeans</code> permissions are available.
- */
- Set<ObjectName> queryNames(ObjectName name, QueryExp query);
-
- /**
- * Registers the supplied instance with the server, using the specified
- * {@link ObjectName}. If the name given is <code>null</code>, then
- * the bean supplied is expected to implement the {@link MBeanRegistration}
- * interface and provide the name via the
- * {@link MBeanRegistration#preRegister preRegister} method
- * of this interface.
- *
- * @param obj the object to register with the server.
- * @param name the name under which to register the object,
- * or <code>null</code> if the {@link MBeanRegistration}
- * interface should be used.
- * @throws InstanceAlreadyExistsException if a matching instance
- * already exists.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preRegister
- * method.
- * @throws NotCompliantMBeanException if the created bean is not
- * compliant with the JMX specification.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> object.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, name,
- * "registerMBean")</code>}. <code>className</code>
- * here corresponds to the result of
- * {@link MBeanInfo#getClassName()} for objects of
- * this class. If this check succeeds, a check
- * is also made on its
- * {@link java.security.ProtectionDomain} to ensure
- * it implies {@link MBeanTrustPermission(String)
- * <code>MBeanTrustPermission("register")</code>}.
- * The use of the {@link MBeanRegistration} interface
- * results in another {@link MBeanPermission} check
- * being made on the returned {@link ObjectName}.
- */
- ObjectInstance registerMBean(Object obj, ObjectName name)
- throws InstanceAlreadyExistsException, MBeanRegistrationException,
- NotCompliantMBeanException;
-
- /**
- * Removes the specified listener from the list of recipients
- * of notifications from the supplied bean. This includes all
- * combinations of filters and passback objects registered for
- * this listener. For more specific removal of listeners, see
- * {@link #removeNotificationListener(ObjectName,
- * NotificationListener,NotificationFilter,Object)}
- *
- * @param name the name of the management bean from which the
- * listener should be removed.
- * @param listener the listener to remove.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with the bean.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, name,
- * "removeNotificationListener")</code>}.
- * @see #addNotificationListener(NotificationListener, NotificationFilter,
- * java.lang.Object)
- * @see NotificationBroadcaster#removeNotificationListener(NotificationListener)
- */
- void removeNotificationListener(ObjectName name,
- NotificationListener listener)
- throws InstanceNotFoundException, ListenerNotFoundException;
-
- /**
- * Removes the specified listener from the list of recipients
- * of notifications from the supplied bean. Only the first instance with
- * the supplied filter and passback object is removed.
- * <code>null</code> is used as a valid value for these parameters,
- * rather than as a way to remove all registration instances for
- * the specified listener; for this behaviour instead, see
- * {@link #removeNotificationListener(ObjectName, NotificationListener)}.
- *
- * @param name the name of the management bean from which the
- * listener should be removed.
- * @param listener the listener to remove.
- * @param filter the filter of the listener to remove.
- * @param passback the passback object of the listener to remove.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with the bean.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, name,
- * "removeNotificationListener")</code>}.
- * @see #addNotificationListener(ObjectName, NotificationListener,
- * NotificationFilter, Object)
- * @see NotificationEmitter#removeNotificationListener(NotificationListener,
- * NotificationFilter,
- * Object)
- */
- void removeNotificationListener(ObjectName name,
- NotificationListener listener,
- NotificationFilter filter,
- Object passback)
- throws InstanceNotFoundException, ListenerNotFoundException;
-
- /**
- * Removes the specified listener from the list of recipients
- * of notifications from the supplied bean. This includes all
- * combinations of filters and passback objects registered for
- * this listener. For more specific removal of listeners, see
- * {@link #removeNotificationListener(ObjectName,
- * ObjectName,NotificationFilter,Object)}
- *
- * @param name the name of the management bean from which the
- * listener should be removed.
- * @param listener the name of the listener to remove.
- * @throws InstanceNotFoundException if a name doesn't match a registered
- * bean.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with the bean.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, name,
- * "removeNotificationListener")</code>}.
- * @see #addNotificationListener(NotificationListener, NotificationFilter,
- * java.lang.Object)
- * @see NotificationBroadcaster#removeNotificationListener(NotificationListener)
- */
- void removeNotificationListener(ObjectName name, ObjectName listener)
- throws InstanceNotFoundException, ListenerNotFoundException;
-
- /**
- * Removes the specified listener from the list of recipients
- * of notifications from the supplied bean. Only the first instance with
- * the supplied filter and passback object is removed.
- * <code>null</code> is used as a valid value for these parameters,
- * rather than as a way to remove all registration instances for
- * the specified listener; for this behaviour instead, see
- * {@link #removeNotificationListener(ObjectName, ObjectName)}.
- *
- * @param name the name of the management bean from which the
- * listener should be removed.
- * @param listener the name of the listener to remove.
- * @param filter the filter of the listener to remove.
- * @param passback the passback object of the listener to remove.
- * @throws InstanceNotFoundException if a name doesn't match a registered
- * bean.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with the bean.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, name,
- * "removeNotificationListener")</code>}.
- * @see #addNotificationListener(ObjectName, NotificationListener,
- * NotificationFilter, Object)
- * @see NotificationEmitter#removeNotificationListener(NotificationListener,
- * NotificationFilter,
- * Object)
- */
- void removeNotificationListener(ObjectName name,
- ObjectName listener,
- NotificationFilter filter,
- Object passback)
- throws InstanceNotFoundException, ListenerNotFoundException;
-
- /**
- * Sets the value of the specified attribute of the supplied
- * management bean.
- *
- * @param name the name of the management bean.
- * @param attribute the attribute to set.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws AttributeNotFoundException if the attribute does not
- * correspond to an attribute
- * of the bean.
- * @throws InvalidAttributeValueException if the value is invalid
- * for this particular
- * attribute of the bean.
- * @throws MBeanException if setting the attribute causes
- * the bean to throw an exception (which
- * becomes the cause of this exception).
- * @throws ReflectionException if an exception occurred in trying
- * to use the reflection interface
- * to lookup the attribute. The
- * thrown exception is the cause of
- * this exception.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean or attribute
- * name.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, name, bean,
- * "setAttribute")</code>}.
- * @see #getAttribute(ObjectName, String)
- * @see DynamicMBean#setAttribute(Attribute)
- */
- void setAttribute(ObjectName name, Attribute attribute)
- throws InstanceNotFoundException, AttributeNotFoundException,
- InvalidAttributeValueException, MBeanException,
- ReflectionException;
-
- /**
- * Sets the value of each of the specified attributes
- * of the supplied management bean to that specified by
- * the {@link Attribute} object. The returned list contains
- * the attributes that were set and their new values.
- *
- * @param name the name of the management bean.
- * @param attributes the attributes to set.
- * @return a list of the changed attributes.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ReflectionException if an exception occurred in trying
- * to use the reflection interface
- * to lookup the attribute. The
- * thrown exception is the cause of
- * this exception.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean or attribute
- * list.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, bean,
- * "setAttribute")</code>}. Additionally,
- * for an attribute name, <code>n</code>, the
- * caller's permission must imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, n, bean,
- * "setAttribute")</code>} or that attribute will
- * not be included.
- * @see #getAttributes(ObjectName, String[])
- * @see DynamicMBean#setAttributes(AttributeList)
- */
- AttributeList setAttributes(ObjectName name, AttributeList attributes)
- throws InstanceNotFoundException, ReflectionException;
-
- /**
- * Unregisters the specified management bean. Following this operation,
- * the bean instance is no longer accessible from the server via this
- * name. Prior to unregistering the bean, the
- * {@link MBeanRegistration#preDeregister()} method will be called if
- * the bean implements the {@link MBeanRegistration} interface.
- *
- * @param name the name of the management bean.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preDeregister
- * method.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean name or a
- * request being made to unregister the
- * {@link MBeanServerDelegate} bean.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(className, null, name,
- * "unregisterMBean")</code>}.
- */
- void unregisterMBean(ObjectName name)
- throws InstanceNotFoundException, MBeanRegistrationException;
-
-}
diff --git a/libjava/classpath/javax/management/MBeanServerBuilder.java b/libjava/classpath/javax/management/MBeanServerBuilder.java
deleted file mode 100644
index ce45915..0000000
--- a/libjava/classpath/javax/management/MBeanServerBuilder.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/* MBeanServerBuilder.java -- Creates a default management server.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import gnu.javax.management.Server;
-
-/**
- * Constructs a default implementation of an {@link MBeanServer}.
- * The {@link MBeanServerFactory} allows custom implementations of
- * {@link MBeanServer} to be used by providing subclasses of this.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanServerBuilder
-{
-
- /**
- * Constructs a new {@link MBeanServerBuilder}.
- */
- public MBeanServerBuilder()
- {
- }
-
- /**
- * <p>
- * Creates a new {@link MBeanServer} implementation with the specified
- * default domain, delegate and outer server. The latter is the server
- * passed to the {@link MBeanRegistration} interface of management beans,
- * allowing an {@link MBeanServer} implementation to wrap another in order
- * to provide additional checks, etc. If this value is <code>null</code>,
- * <code>this</code> is passed to beans instead.
- * </p>
- * <p>
- * The {@link MBeanServerFactory} calls this method after having first
- * created a delegate using the {@link #newMBeanServerDelegate()} method.
- * However, the delegate used in the call to this method may not be the
- * same as that returned by {@link #newMBeanServerDelegate()} as the factory
- * can optionally wrap the delegate before calling this method.
- * </p>
- *
- * @param defaultDomain the default domain used by the new server.
- * @param outer the {@link MBeanServer} passed to the {@link MBeanRegistration}
- * interface of management beans.
- * @param delegate the delegate bean associated with the server, which must
- * be registered as a management bean by the server.
- * @return a new instance of a server implementation.
- */
- public MBeanServer newMBeanServer(String defaultDomain, MBeanServer outer,
- MBeanServerDelegate delegate)
- {
- return new Server(defaultDomain, outer, delegate);
- }
-
- /**
- * Creates a new {@link MBeanServerDelegate}, which will be used by
- * a management server. The returned delegate may either be used directly
- * by the server, or may be further wrapped to add additional checks.
- *
- * @return a new instance of {@link MBeanServerDelegate}.
- */
- public MBeanServerDelegate newMBeanServerDelegate()
- {
- return new MBeanServerDelegate();
- }
-
-}
diff --git a/libjava/classpath/javax/management/MBeanServerConnection.java b/libjava/classpath/javax/management/MBeanServerConnection.java
deleted file mode 100644
index 9e44b8f..0000000
--- a/libjava/classpath/javax/management/MBeanServerConnection.java
+++ /dev/null
@@ -1,768 +0,0 @@
-/* MBeanServerConnection.java -- Represents a connection to a management server.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.io.IOException;
-
-import java.util.Set;
-
-/**
- * This interface represents a communication mechanism which may
- * be used to access an MBean server, whether this be local or
- * remote. The {@link MBeanServer} interface extends this with
- * additional methods that apply only to local servers.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface MBeanServerConnection
-{
-
- /**
- * Registers the supplied listener with the specified management
- * bean. Notifications emitted by the management bean are forwarded
- * to the listener via the server, which will convert any MBean
- * references in the source to portable {@link ObjectName}
- * instances. The notification is otherwise unchanged.
- *
- * @param name the name of the management bean with which the listener
- * should be registered.
- * @param listener the listener which will handle notifications from
- * the bean.
- * @param filter the filter to apply to incoming notifications, or
- * <code>null</code> if no filtering should be applied.
- * @param passback an object to be passed to the listener when a
- * notification is emitted.
- * @throws InstanceNotFoundException if the name of the management bean
- * could not be resolved.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #removeNotificationListener(ObjectName, NotificationListener)
- * @see #removeNotificationListener(ObjectName, NotificationListener,
- * NotificationFilter, Object)
- * @see NotificationBroadcaster#addNotificationListener(NotificationListener,
- * NotificationFilter,
- * Object)
- */
- void addNotificationListener(ObjectName name, NotificationListener listener,
- NotificationFilter filter, Object passback)
- throws InstanceNotFoundException, IOException;
-
- /**
- * <p>
- * Registers the supplied listener with the specified management
- * bean. Notifications emitted by the management bean are forwarded
- * to the listener via the server, which will convert any MBean
- * references in the source to portable {@link ObjectName}
- * instances. The notification is otherwise unchanged.
- * </p>
- * <p>
- * The listener that receives notifications will be the one that is
- * registered with the given name at the time this method is called.
- * Even if it later unregisters and ceases to use that name, it will
- * still receive notifications.
- * </p>
- *
- * @param name the name of the management bean with which the listener
- * should be registered.
- * @param listener the name of the listener which will handle
- * notifications from the bean.
- * @param filter the filter to apply to incoming notifications, or
- * <code>null</code> if no filtering should be applied.
- * @param passback an object to be passed to the listener when a
- * notification is emitted.
- * @throws InstanceNotFoundException if the name of the management bean
- * could not be resolved.
- * @throws RuntimeOperationsException if the bean associated with the given
- * object name is not a
- * {@link NotificationListener}. This
- * exception wraps an
- * {@link IllegalArgumentException}.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #removeNotificationListener(ObjectName, NotificationListener)
- * @see #removeNotificationListener(ObjectName, NotificationListener,
- * NotificationFilter, Object)
- * @see NotificationBroadcaster#addNotificationListener(NotificationListener,
- * NotificationFilter,
- * Object)
- */
- void addNotificationListener(ObjectName name, ObjectName listener,
- NotificationFilter filter, Object passback)
- throws InstanceNotFoundException, RuntimeOperationsException, IOException;
-
- /**
- * <p>
- * Instantiates a new instance of the specified management bean
- * using the default constructor and registers it with the server
- * under the supplied name. The class is loaded using the
- * {@link javax.management.loading.ClassLoaderRepository default
- * loader repository} of the server.
- * </p>
- * <p>
- * If the name supplied is <code>null</code>, then the bean is
- * expected to implement the {@link MBeanRegistration} interface.
- * The {@link MBeanRegistration#preRegister preRegister} method
- * of this interface will be used to obtain the name in this case.
- * </p>
- * <p>
- * This method is equivalent to calling {@link
- * #createMBean(String, ObjectName, Object[], String[])
- * <code>createMBean(className, name, (Object[]) null,
- * (String[]) null)</code>} with <code>null</code> parameters
- * and signature.
- * </p>
- *
- * @param className the class of the management bean, of which
- * an instance should be created.
- * @param name the name to register the new bean with.
- * @return an {@link ObjectInstance} containing the {@link ObjectName}
- * and Java class name of the created instance.
- * @throws ReflectionException if an exception occurs in creating
- * an instance of the bean.
- * @throws InstanceAlreadyExistsException if a matching instance
- * already exists.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preRegister
- * method.
- * @throws MBeanException if the bean's constructor throws an exception.
- * @throws NotCompliantMBeanException if the created bean is not
- * compliant with the JMX specification.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> class name or object
- * name or if the object name is a pattern.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #createMBean(String, ObjectName, Object[], String[])
- */
- ObjectInstance createMBean(String className, ObjectName name)
- throws ReflectionException, InstanceAlreadyExistsException,
- MBeanRegistrationException, MBeanException,
- NotCompliantMBeanException, IOException;
-
- /**
- * <p>
- * Instantiates a new instance of the specified management bean
- * using the given constructor and registers it with the server
- * under the supplied name. The class is loaded using the
- * {@link javax.management.loading.ClassLoaderRepository default
- * loader repository} of the server.
- * </p>
- * <p>
- * If the name supplied is <code>null</code>, then the bean is
- * expected to implement the {@link MBeanRegistration} interface.
- * The {@link MBeanRegistration#preRegister preRegister} method
- * of this interface will be used to obtain the name in this case.
- * </p>
- *
- * @param className the class of the management bean, of which
- * an instance should be created.
- * @param name the name to register the new bean with.
- * @param params the parameters for the bean's constructor.
- * @param sig the signature of the constructor to use.
- * @return an {@link ObjectInstance} containing the {@link ObjectName}
- * and Java class name of the created instance.
- * @throws ReflectionException if an exception occurs in creating
- * an instance of the bean.
- * @throws InstanceAlreadyExistsException if a matching instance
- * already exists.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preRegister
- * method.
- * @throws MBeanException if the bean's constructor throws an exception.
- * @throws NotCompliantMBeanException if the created bean is not
- * compliant with the JMX specification.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> class name or object
- * name or if the object name is a pattern.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- ObjectInstance createMBean(String className, ObjectName name,
- Object[] params, String[] sig)
- throws ReflectionException, InstanceAlreadyExistsException,
- MBeanRegistrationException, MBeanException,
- NotCompliantMBeanException, IOException;
-
- /**
- * <p>
- * Instantiates a new instance of the specified management bean
- * using the default constructor and registers it with the server
- * under the supplied name. The class is loaded using the
- * given class loader. If this argument is <code>null</code>,
- * then the same class loader as was used to load the server
- * is used.
- * </p>
- * <p>
- * If the name supplied is <code>null</code>, then the bean is
- * expected to implement the {@link MBeanRegistration} interface.
- * The {@link MBeanRegistration#preRegister preRegister} method
- * of this interface will be used to obtain the name in this case.
- * </p>
- * <p>
- * This method is equivalent to calling {@link
- * #createMBean(String, ObjectName, ObjectName, Object[], String)
- * <code>createMBean(className, name, loaderName, (Object[]) null,
- * (String) null)</code>} with <code>null</code> parameters
- * and signature.
- * </p>
- *
- * @param className the class of the management bean, of which
- * an instance should be created.
- * @param name the name to register the new bean with.
- * @param loaderName the name of the class loader.
- * @return an {@link ObjectInstance} containing the {@link ObjectName}
- * and Java class name of the created instance.
- * @throws ReflectionException if an exception occurs in creating
- * an instance of the bean.
- * @throws InstanceAlreadyExistsException if a matching instance
- * already exists.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preRegister
- * method.
- * @throws MBeanException if the bean's constructor throws an exception.
- * @throws NotCompliantMBeanException if the created bean is not
- * compliant with the JMX specification.
- * @throws InstanceNotFoundException if the specified class loader is not
- * registered with the server.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> class name or object
- * name or if the object name is a pattern.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #createMBean(String, ObjectName, ObjectName, Object[], String[])
- */
- ObjectInstance createMBean(String className, ObjectName name,
- ObjectName loaderName)
- throws ReflectionException, InstanceAlreadyExistsException,
- MBeanRegistrationException, MBeanException,
- NotCompliantMBeanException, InstanceNotFoundException,
- IOException;
-
- /**
- * <p>
- * Instantiates a new instance of the specified management bean
- * using the given constructor and registers it with the server
- * under the supplied name. The class is loaded using the
- * given class loader. If this argument is <code>null</code>,
- * then the same class loader as was used to load the server
- * is used.
- * </p>
- * <p>
- * If the name supplied is <code>null</code>, then the bean is
- * expected to implement the {@link MBeanRegistration} interface.
- * The {@link MBeanRegistration#preRegister preRegister} method
- * of this interface will be used to obtain the name in this case.
- * </p>
- *
- * @param className the class of the management bean, of which
- * an instance should be created.
- * @param name the name to register the new bean with.
- * @param loaderName the name of the class loader.
- * @param params the parameters for the bean's constructor.
- * @param sig the signature of the constructor to use.
- * @return an {@link ObjectInstance} containing the {@link ObjectName}
- * and Java class name of the created instance.
- * @throws ReflectionException if an exception occurs in creating
- * an instance of the bean.
- * @throws InstanceAlreadyExistsException if a matching instance
- * already exists.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preRegister
- * method.
- * @throws MBeanException if the bean's constructor throws an exception.
- * @throws NotCompliantMBeanException if the created bean is not
- * compliant with the JMX specification.
- * @throws InstanceNotFoundException if the specified class loader is not
- * registered with the server.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> class name or object
- * name or if the object name is a pattern.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- ObjectInstance createMBean(String className, ObjectName name,
- ObjectName loaderName, Object[] params,
- String[] sig)
- throws ReflectionException, InstanceAlreadyExistsException,
- MBeanRegistrationException, MBeanException,
- NotCompliantMBeanException, InstanceNotFoundException,
- IOException;
-
- /**
- * Returns the value of the supplied attribute from the specified
- * management bean.
- *
- * @param bean the bean to retrieve the value from.
- * @param name the name of the attribute to retrieve.
- * @return the value of the attribute.
- * @throws AttributeNotFoundException if the attribute could not be
- * accessed from the bean.
- * @throws MBeanException if the management bean's accessor throws
- * an exception.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ReflectionException if an exception was thrown in trying
- * to invoke the bean's accessor.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean or attribute
- * name.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see DynamicMBean#getAttribute(String)
- */
- Object getAttribute(ObjectName bean, String name)
- throws MBeanException, AttributeNotFoundException,
- InstanceNotFoundException, ReflectionException,
- IOException;
-
- /**
- * Returns the values of the named attributes from the specified
- * management bean.
- *
- * @param bean the bean to retrieve the value from.
- * @param names the names of the attributes to retrieve.
- * @return the values of the attributes.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ReflectionException if an exception was thrown in trying
- * to invoke the bean's accessor.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean or attribute
- * name.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see DynamicMBean#getAttributes(String[])
- */
- AttributeList getAttributes(ObjectName bean, String[] names)
- throws InstanceNotFoundException, ReflectionException,
- IOException;
-
- /**
- * Returns the default domain this server applies to beans that have
- * no specified domain.
- *
- * @return the default domain.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- String getDefaultDomain()
- throws IOException;
-
- /**
- * Returns an array containing all the domains used by beans registered
- * with this server. The ordering of the array is undefined.
- *
- * @return the list of domains.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see ObjectName#getDomain()
- */
- String[] getDomains()
- throws IOException;
-
- /**
- * Returns the number of management beans registered with this server.
- *
- * @return the number of registered beans.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- Integer getMBeanCount()
- throws IOException;
-
- /**
- * Returns information on the given management bean.
- *
- * @param name the name of the management bean.
- * @return an instance of {@link MBeanInfo} for the bean.
- * @throws IntrospectionException if an exception occurs in examining
- * the bean.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ReflectionException if an exception occurs when trying
- * to invoke {@link DynamicMBean#getMBeanInfo()}
- * on the bean.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see DynamicMBean#getMBeanInfo()
- */
- MBeanInfo getMBeanInfo(ObjectName name)
- throws InstanceNotFoundException, IntrospectionException,
- ReflectionException, IOException;
-
- /**
- * Returns the {@link ObjectInstance} created for the specified
- * management bean on registration.
- *
- * @param name the name of the bean.
- * @return the corresponding {@link ObjectInstance} instance.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #createMBean(String, ObjectName)
- */
- ObjectInstance getObjectInstance(ObjectName name)
- throws InstanceNotFoundException, IOException;
-
- /**
- * Invokes the supplied operation on the specified management
- * bean. The class objects specified in the signature are loaded
- * using the same class loader as was used for the management bean.
- *
- * @param bean the management bean whose operation should be invoked.
- * @param name the name of the operation to invoke.
- * @param params the parameters of the operation.
- * @param sig the signature of the operation.
- * @return the return value of the method.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws MBeanException if the method invoked throws an exception.
- * @throws ReflectionException if an exception is thrown in invoking the
- * method.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see DynamicMBean#invoke(String, Object[], String[])
- */
- Object invoke(ObjectName bean, String name, Object[] params, String[] sig)
- throws InstanceNotFoundException, MBeanException,
- ReflectionException, IOException;
-
- /**
- * <p>
- * Returns true if the specified management bean is an instance
- * of the supplied class.
- * </p>
- * <p>
- * A bean, B, is an instance of a class, C, if either of the following
- * conditions holds:
- * </p>
- * <ul>
- * <li>The class name in B's {@link MBeanInfo} is equal to the supplied
- * name.</li>
- * <li>Both the class of B and C were loaded by the same class loader,
- * and B is assignable to C.</li>
- * </ul>
- *
- * @param name the name of the management bean.
- * @param className the name of the class to test if <code>name</code> is
- * an instance of.
- * @return true if either B is directly an instance of the named class,
- * or B is assignable to the class, given that both it and B's
- * current class were loaded using the same class loader.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- boolean isInstanceOf(ObjectName name, String className)
- throws InstanceNotFoundException, IOException;
-
- /**
- * Returns true if the specified management bean is registered with
- * the server.
- *
- * @param name the name of the management bean.
- * @return true if the bean is registered.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean name.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- boolean isRegistered(ObjectName name)
- throws IOException;
-
- /**
- * <p>
- * Returns a set of {@link ObjectInstance}s matching the specified
- * criteria. The full set of beans registered with the server
- * are passed through two filters:
- * </p>
- * <ol>
- * <li>Pattern matching is performed using the supplied
- * {@link ObjectName}.</li>
- * <li>The supplied query expression is applied.</li>
- * </ol>
- * <p>
- * If both the object name and the query expression are <code>null</code>,
- * or the object name has no domain and no key properties,
- * no filtering will be performed and all beans are returned.
- * </p>
- *
- * @param name an {@link ObjectName} to use as a filter.
- * @param query a query expression to apply to each of the beans that match
- * the given object name.
- * @return a set of {@link ObjectInstance}s matching the filtered beans.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- Set<ObjectInstance> queryMBeans(ObjectName name, QueryExp query)
- throws IOException;
-
- /**
- * <p>
- * Returns a set of {@link ObjectName}s matching the specified
- * criteria. The full set of beans registered with the server
- * are passed through two filters:
- * </p>
- * <ol>
- * <li>Pattern matching is performed using the supplied
- * {@link ObjectName}.</li>
- * <li>The supplied query expression is applied.</li>
- * </ol>
- * <p>
- * If both the object name and the query expression are <code>null</code>,
- * or the object name has no domain and no key properties,
- * no filtering will be performed and all beans are returned.
- * </p>
- *
- * @param name an {@link ObjectName} to use as a filter.
- * @param query a query expression to apply to each of the beans that match
- * the given object name.
- * @return a set of {@link ObjectName}s matching the filtered beans.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- Set<ObjectName> queryNames(ObjectName name, QueryExp query)
- throws IOException;
-
- /**
- * Removes the specified listener from the list of recipients
- * of notifications from the supplied bean. This includes all
- * combinations of filters and passback objects registered for
- * this listener. For more specific removal of listeners, see
- * {@link #removeNotificationListener(ObjectName,
- * NotificationListener,NotificationFilter,Object)}
- *
- * @param name the name of the management bean from which the
- * listener should be removed.
- * @param listener the listener to remove.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with the bean.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #addNotificationListener(NotificationListener, NotificationFilter,
- * java.lang.Object)
- * @see NotificationBroadcaster#removeNotificationListener(NotificationListener)
- */
- void removeNotificationListener(ObjectName name,
- NotificationListener listener)
- throws InstanceNotFoundException, ListenerNotFoundException,
- IOException;
-
- /**
- * Removes the specified listener from the list of recipients
- * of notifications from the supplied bean. Only the first instance with
- * the supplied filter and passback object is removed.
- * <code>null</code> is used as a valid value for these parameters,
- * rather than as a way to remove all registration instances for
- * the specified listener; for this behaviour instead, see
- * {@link #removeNotificationListener(ObjectName, NotificationListener)}.
- *
- * @param name the name of the management bean from which the
- * listener should be removed.
- * @param listener the listener to remove.
- * @param filter the filter of the listener to remove.
- * @param passback the passback object of the listener to remove.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with the bean.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #addNotificationListener(ObjectName, NotificationListener,
- * NotificationFilter, Object)
- * @see NotificationEmitter#removeNotificationListener(NotificationListener,
- * NotificationFilter,
- * Object)
- */
- void removeNotificationListener(ObjectName name,
- NotificationListener listener,
- NotificationFilter filter,
- Object passback)
- throws InstanceNotFoundException, ListenerNotFoundException,
- IOException;
-
- /**
- * Removes the specified listener from the list of recipients
- * of notifications from the supplied bean. This includes all
- * combinations of filters and passback objects registered for
- * this listener. For more specific removal of listeners, see
- * {@link #removeNotificationListener(ObjectName,
- * ObjectName,NotificationFilter,Object)}
- *
- * @param name the name of the management bean from which the
- * listener should be removed.
- * @param listener the name of the listener to remove.
- * @throws InstanceNotFoundException if a name doesn't match a registered
- * bean.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with the bean.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #addNotificationListener(NotificationListener, NotificationFilter,
- * java.lang.Object)
- * @see NotificationBroadcaster#removeNotificationListener(NotificationListener)
- */
- void removeNotificationListener(ObjectName name, ObjectName listener)
- throws InstanceNotFoundException, ListenerNotFoundException,
- IOException;
-
- /**
- * Removes the specified listener from the list of recipients
- * of notifications from the supplied bean. Only the first instance with
- * the supplied filter and passback object is removed.
- * <code>null</code> is used as a valid value for these parameters,
- * rather than as a way to remove all registration instances for
- * the specified listener; for this behaviour instead, see
- * {@link #removeNotificationListener(ObjectName, ObjectName)}.
- *
- * @param name the name of the management bean from which the
- * listener should be removed.
- * @param listener the name of the listener to remove.
- * @param filter the filter of the listener to remove.
- * @param passback the passback object of the listener to remove.
- * @throws InstanceNotFoundException if a name doesn't match a registered
- * bean.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with the bean.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #addNotificationListener(ObjectName, NotificationListener,
- * NotificationFilter, Object)
- * @see NotificationEmitter#removeNotificationListener(NotificationListener,
- * NotificationFilter,
- * Object)
- */
- void removeNotificationListener(ObjectName name,
- ObjectName listener,
- NotificationFilter filter,
- Object passback)
- throws InstanceNotFoundException, ListenerNotFoundException,
- IOException;
-
- /**
- * Sets the value of the specified attribute of the supplied
- * management bean.
- *
- * @param name the name of the management bean.
- * @param attribute the attribute to set.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws AttributeNotFoundException if the attribute does not
- * correspond to an attribute
- * of the bean.
- * @throws InvalidAttributeValueException if the value is invalid
- * for this particular
- * attribute of the bean.
- * @throws MBeanException if setting the attribute causes
- * the bean to throw an exception (which
- * becomes the cause of this exception).
- * @throws ReflectionException if an exception occurred in trying
- * to use the reflection interface
- * to lookup the attribute. The
- * thrown exception is the cause of
- * this exception.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean or attribute
- * name.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #getAttribute(ObjectName, String)
- * @see DynamicMBean#setAttribute(Attribute)
- */
- void setAttribute(ObjectName name, Attribute attribute)
- throws InstanceNotFoundException, AttributeNotFoundException,
- InvalidAttributeValueException, MBeanException,
- ReflectionException, IOException;
-
- /**
- * Sets the value of each of the specified attributes
- * of the supplied management bean to that specified by
- * the {@link Attribute} object. The returned list contains
- * the attributes that were set and their new values.
- *
- * @param name the name of the management bean.
- * @param attributes the attributes to set.
- * @return a list of the changed attributes.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ReflectionException if an exception occurred in trying
- * to use the reflection interface
- * to lookup the attribute. The
- * thrown exception is the cause of
- * this exception.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean or attribute
- * list.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #getAttributes(ObjectName, String[])
- * @see DynamicMBean#setAttributes(AttributeList)
- */
- AttributeList setAttributes(ObjectName name, AttributeList attributes)
- throws InstanceNotFoundException, ReflectionException,
- IOException;
-
- /**
- * Unregisters the specified management bean. Following this operation,
- * the bean instance is no longer accessible from the server via this
- * name. Prior to unregistering the bean, the
- * {@link MBeanRegistration#preDeregister()} method will be called if
- * the bean implements the {@link MBeanRegistration} interface.
- *
- * @param name the name of the management bean.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preDeregister
- * method.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean name or a
- * request being made to unregister the
- * {@link MBeanServerDelegate} bean.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- void unregisterMBean(ObjectName name)
- throws InstanceNotFoundException, MBeanRegistrationException,
- IOException;
-
-}
diff --git a/libjava/classpath/javax/management/MBeanServerDelegate.java b/libjava/classpath/javax/management/MBeanServerDelegate.java
deleted file mode 100644
index 5addb99..0000000
--- a/libjava/classpath/javax/management/MBeanServerDelegate.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/* MBeanServerDelegate.java -- The management server delegate.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import gnu.javax.management.ListenerData;
-import gnu.classpath.SystemProperties;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Provides an implementation of a delegate bean, which is associated
- * with a management server. The delegate bean is responsible
- * for providing metadata about the server and handling the
- * registration and deregistration notifications.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanServerDelegate
- implements MBeanServerDelegateMBean, NotificationEmitter
-{
-
- /**
- * The identifier of the server associated with this delegate.
- */
- private String id;
-
- /**
- * The listeners registered with the delegate.
- */
- private final List<ListenerData> listeners =
- new ArrayList<ListenerData>();
-
- /**
- * The sequence identifier used by the delegate.
- */
- private long seqNo;
-
- /**
- * Default constructor which generates the id.
- */
- public MBeanServerDelegate()
- {
- String hostName;
- try
- {
- hostName = InetAddress.getLocalHost().getHostName();
- }
- catch (UnknownHostException e)
- {
- hostName = "Unknown host";
- }
- id = hostName + "_" + new Date().getTime();
- }
-
- /**
- * Registers the specified listener as a new recipient of
- * notifications from the delegate. If non-null, the filter
- * argument will be used to select which notifications are
- * delivered. The supplied object will also be passed to
- * the recipient with each notification. This should not
- * be modified by the broadcaster, but instead should be
- * passed unmodified to the listener.
- *
- * @param listener the new listener, who will receive
- * notifications from this broadcasting bean.
- * @param filter a filter to determine which notifications are
- * delivered to the listener, or <code>null</code>
- * if no filtering is required.
- * @param passback an object to be passed to the listener with
- * each notification.
- * @throws IllegalArgumentException if <code>listener</code> is
- * <code>null</code>.
- * @see #removeNotificationListener(NotificationListener)
- */
- public void addNotificationListener(NotificationListener listener,
- NotificationFilter filter,
- Object passback)
- throws IllegalArgumentException
- {
- if (listener == null)
- throw new IllegalArgumentException("A null listener was supplied.");
- listeners.add(new ListenerData(listener, filter, passback));
- }
-
- /**
- * Returns the name of this Java Management eXtensions (JMX) implementation.
- *
- * @return the implementation name.
- */
- public String getImplementationName()
- {
- return "GNU JMX";
- }
-
- /**
- * Returns the vendor of this Java Management eXtensions (JMX) implementation.
- *
- * @return the implementation vendor.
- */
- public String getImplementationVendor()
- {
- return "The GNU Classpath Project";
- }
-
- /**
- * Returns the version of this Java Management eXtensions (JMX) implementation.
- *
- * @return the implementation version.
- */
- public String getImplementationVersion()
- {
- return SystemProperties.getProperty("gnu.classpath.version");
- }
-
- /**
- * Returns the unique identifier for this management server.
- *
- * @return the unique id of the server.
- */
- public String getMBeanServerId()
- {
- return id;
- }
-
- /**
- * Returns an array describing the notifications this
- * bean may send to its registered listeners. Ideally, this
- * array should be complete, but in some cases, this may
- * not be possible. However, be aware that some listeners
- * may expect this to be so.
- *
- * @return the array of possible notifications.
- */
- public MBeanNotificationInfo[] getNotificationInfo()
- {
- return new MBeanNotificationInfo[]
- {
- new MBeanNotificationInfo(new String[]
- {
- MBeanServerNotification.REGISTRATION_NOTIFICATION,
- MBeanServerNotification.UNREGISTRATION_NOTIFICATION,
- },
- MBeanServerNotification.class.getName(),
- "Server registration notifications")
- };
- }
-
- /**
- * Returns the name of this Java Management eXtensions (JMX) specification.
- *
- * @return the specification name.
- */
- public String getSpecificationName()
- {
- return "JMX";
- }
-
-
- /**
- * Returns the vendor of this Java Management eXtensions (JMX) specification.
- *
- * @return the specification vendor.
- */
- public String getSpecificationVendor()
- {
- return "Sun Microsystems";
- }
-
- /**
- * Returns the version of this Java Management eXtensions (JMX) specification.
- *
- * @return the specification version.
- */
- public String getSpecificationVersion()
- {
- return "1.2";
- }
-
- /**
- * Removes the specified listener from the list of recipients
- * of notifications from this bean. This includes all combinations
- * of filters and passback objects registered for this listener.
- * For more specific removal of listeners, see
- * {@link #removeNotificationListener(NotificationListener,
- * NotificationFilter, java.lang.Object)}
- *
- * @param listener the listener to remove.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with this bean.
- * @see #addNotificationListener(NotificationListener, NotificationFilter,
- * java.lang.Object)
- */
- public void removeNotificationListener(NotificationListener listener)
- throws ListenerNotFoundException
- {
- Iterator<ListenerData> it = listeners.iterator();
- boolean foundOne = false;
- while (it.hasNext())
- {
- if (it.next().getListener() == listener)
- {
- it.remove();
- foundOne = true;
- }
- }
- if (!foundOne)
- throw new ListenerNotFoundException("The specified listener, " + listener +
- "is not registered with this bean.");
- }
-
- /**
- * Removes the specified listener from the list of recipients
- * of notifications from this delegate. Only the first instance with
- * the supplied filter and passback object is removed.
- * <code>null</code> is used as a valid value for these parameters,
- * rather than as a way to remove all registration instances for
- * the specified listener; for this behaviour instead, see
- * {@link #removeNotificationListener(NotificationListener)}.
- *
- * @param listener the listener to remove.
- * @param filter the filter of the listener to remove.
- * @param passback the passback object of the listener to remove.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with this bean.
- * @see #addNotificationListener(NotificationListener, NotificationFilter,
- * java.lang.Object)
- * @see #removeNotificationListener(NotificationListener)
- */
- public void removeNotificationListener(NotificationListener listener,
- NotificationFilter filter,
- Object passback)
- throws ListenerNotFoundException
- {
- if (!(listeners.remove(new ListenerData(listener, filter, passback))))
- {
- throw new ListenerNotFoundException("The specified listener, " + listener +
- " with filter " + filter +
- "and passback " + passback +
- ", is not registered with this bean.");
- }
- }
-
- /**
- * Allows the server to use the delegate to send a notification.
- * If the supplied notification has a sequence number <= 0, then
- * it is replaced with the delegate's own sequence number.
- *
- * @param notification the notification to send.
- */
- public void sendNotification(Notification notification)
- {
- if (notification.getSequenceNumber() <= 0)
- notification.setSequenceNumber(++seqNo);
- for (ListenerData ldata : listeners)
- {
- NotificationFilter filter = ldata.getFilter();
- if (filter == null || filter.isNotificationEnabled(notification))
- ldata.getListener().handleNotification(notification, ldata.getPassback());
- }
- }
-
-}
diff --git a/libjava/classpath/javax/management/MBeanServerDelegateMBean.java b/libjava/classpath/javax/management/MBeanServerDelegateMBean.java
deleted file mode 100644
index aa7b273..0000000
--- a/libjava/classpath/javax/management/MBeanServerDelegateMBean.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/* MBeanServerDelegateMBean.java -- The interface of a management server delegate.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Defines the interface for the delegate bean associated
- * with a management server. The delegate bean is responsible
- * for providing metadata about the server and handling the
- * registration and deregistration notifications.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface MBeanServerDelegateMBean
-{
-
- /**
- * Returns the name of this Java Management eXtensions (JMX) implementation.
- *
- * @return the implementation name.
- */
- String getImplementationName();
-
- /**
- * Returns the vendor of this Java Management eXtensions (JMX) implementation.
- *
- * @return the implementation vendor.
- */
- String getImplementationVendor();
-
- /**
- * Returns the version of this Java Management eXtensions (JMX) implementation.
- *
- * @return the implementation version.
- */
- String getImplementationVersion();
-
- /**
- * Returns the unique identifier for this management server.
- *
- * @return the unique id of the server.
- */
- String getMBeanServerId();
-
- /**
- * Returns the name of this Java Management eXtensions (JMX) specification.
- *
- * @return the specification name.
- */
- String getSpecificationName();
-
- /**
- * Returns the vendor of this Java Management eXtensions (JMX) specification.
- *
- * @return the specification vendor.
- */
- String getSpecificationVendor();
-
- /**
- * Returns the version of this Java Management eXtensions (JMX) specification.
- *
- * @return the specification version.
- */
- String getSpecificationVersion();
-
-}
diff --git a/libjava/classpath/javax/management/MBeanServerFactory.java b/libjava/classpath/javax/management/MBeanServerFactory.java
deleted file mode 100644
index f9bd456..0000000
--- a/libjava/classpath/javax/management/MBeanServerFactory.java
+++ /dev/null
@@ -1,413 +0,0 @@
-/* MBeanServerFactory.java -- Manages server instances.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import gnu.classpath.SystemProperties;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.management.loading.ClassLoaderRepository;
-
-/**
- * <p>
- * Creates and maintains a set of {@link MBeanServer} instances.
- * Server instances, as of JMX 1.2, are created using a subclass
- * of {@link MBeanServerBuilder}. The exact class used is controlled
- * by the property <code>javax.management.builder.initial</code>,
- * and allows the instances created by {@link MBeanServerBuilder}
- * to be wrapped, thus providing additional functionality.
- * </p>
- * <p>
- * The property is used as follows:
- * </p>
- * <ol>
- * <li>If the property has no value, then an instance of
- * {@link MBeanServerBuilder} is used.</li>
- * <li>If a value is given, then:
- * <ol>
- * <li>The class is loaded using
- * <code>Thread.currentThread().getContextClassLoader()</code>, or,
- * if this is <code>null</code>, by <code>Class.forName()</code>.</li>
- * <li><code>Class.newInstance()</code> is used to create an instance
- * of the class. The class must be public and have a public empty
- * constructor. If an exception is thrown, it is propogated as
- * a {@link JMRuntimeException} and no new server instances may be
- * created until the property is set to a valid value.</li>
- * </ol></li>
- * <li>The value is checked on each successive request for a server.
- * If it differs from the class of the existing instance of
- * {@link MBeanServerBuilder}, then the value is used to create
- * a new instance.</li>
- * </ol>
- */
-public class MBeanServerFactory
-{
-
- /**
- * The last builder instance.
- */
- private static MBeanServerBuilder builder;
-
- /**
- * The map of registered servers (identifiers to servers).
- */
- private static final Map<Object,MBeanServer> servers =
- new HashMap<Object,MBeanServer>();
-
- /**
- * Private constructor to prevent instance creation.
- */
- private MBeanServerFactory() {}
-
- /**
- * Returns a server implementation using the default domain name
- * of <code>"DefaultDomain"</code>. The default domain name is
- * used when the domain name specified by the user is <code>null</code.
- * A reference to the created server is retained, so that it can
- * be retrieved at a later date using {@link #findMBeanServer}.
- * Calling this method is equivalent to calling
- * {@link createMBeanServer(String)} with a <code>null</code> value.
- *
- * @return a new {@link MBeanServer} instance.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanServerPermission(String)}("createMBeanServer")
- * @throws JMRuntimeException if the property
- * <code>javax.management.builder.initial</code>
- * exists but names a class which either can not be
- * instantiated or provides an implementation that returns
- * <code>null</code> from either
- * {@link MBeanServerBuilder#newMBeanServerDelegate()}
- * or {@link MBeanServerBuilder#newMBeanServer()}
- * @throws ClassCastException if the property
- * <code>javax.management.builder.initial</code>
- * exists but names a class which is not a subclass
- * of {@link MBeanServerBuilder}.
- * @see #createMBeanServer(String)
- */
- public static MBeanServer createMBeanServer()
- {
- return createMBeanServer(null);
- }
-
- /**
- * Returns a server implementation using the default domain name
- * given, or <code>"DefaultDomain"</code> if this is <code>null</code>.
- * The default domain name is used when the domain name specified by
- * the user is <code>null</code. A reference to the created server is
- * retained, so that it can be retrieved at a later date using
- * {@link #findMBeanServer}.
- *
- * @param domain the default domain name of the server.
- * @return a new {@link MBeanServer} instance.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanServerPermission(String)}("createMBeanServer")
- * @throws JMRuntimeException if the property
- * <code>javax.management.builder.initial</code>
- * exists but names a class which either can not be
- * instantiated or provides an implementation that returns
- * <code>null</code> from either
- * {@link MBeanServerBuilder#newMBeanServerDelegate()}
- * or {@link MBeanServerBuilder#newMBeanServer()}
- * @throws ClassCastException if the property
- * <code>javax.management.builder.initial</code>
- * exists but names a class which is not a subclass
- * of {@link MBeanServerBuilder}.
- */
- public static MBeanServer createMBeanServer(String domain)
- {
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkPermission(new MBeanServerPermission("createMBeanServer"));
- MBeanServer server = createServer(domain);
- try
- {
- ObjectName dn = new
- ObjectName("JMImplementation:type=MBeanServerDelegate");
- servers.put(server.getAttribute(dn, "MBeanServerId"), server);
- }
- catch (MalformedObjectNameException e)
- {
- throw (Error)
- (new InternalError("Malformed delegate bean name.").initCause(e));
- }
- catch (MBeanException e)
- {
- throw (Error)
- (new InternalError("Exception in getMBeanServerId().").initCause(e));
- }
- catch (AttributeNotFoundException e)
- {
- throw (Error)
- (new InternalError("Could not find MBeanServerId attribute.").initCause(e));
- }
- catch (InstanceNotFoundException e)
- {
- throw (Error)
- (new InternalError("Could not find the delegate bean.").initCause(e));
- }
- catch (ReflectionException e)
- {
- throw (Error)
- (new InternalError("Could not call getMBeanServerId().").initCause(e));
- }
- return server;
- }
-
- /**
- * Returns the specified server, or, if <code>id</code> is <code>null</code>,
- * a list of all registered servers. A registered server is one that
- * was created using {@link #createMBeanServer()} or
- * {@link #createMBeanServer(String)} and has not yet been released
- * using {@link releaseMBeanServer(MBeanServer)}.
- *
- * @param id the id of the server to retrieve, or <code>null</code>
- * to return all servers.
- * @return a list of {@link MBeanServer}s.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanServerPermission(String)}("findMBeanServer")
- */
- public static ArrayList<MBeanServer> findMBeanServer(String id)
- {
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkPermission(new MBeanServerPermission("findMBeanServer"));
- if (id == null)
- return new ArrayList<MBeanServer>(servers.values());
- ArrayList<MBeanServer> list = new ArrayList<MBeanServer>();
- MBeanServer server = servers.get(id);
- if (server != null)
- list.add(servers.get(id));
- return list;
- }
-
- /**
- * Returns the class loader repository used by the specified server.
- * This is equivalent to calling {@link MBeanServer#getClassLoaderRepository()}
- * on the given server.
- *
- * @param server the server whose class loader repository should be
- * retrieved.
- * @throws NullPointerException if <code>server</code> is <code>null</code>.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanPermission(String,String,ObjectName,String)
- * <code>MBeanPermission(null, null, null,
- * "getClassLoaderRepository")</code>
- */
- public static ClassLoaderRepository getClassLoaderRepository(MBeanServer server)
- {
- return server.getClassLoaderRepository();
- }
-
- /**
- * Returns a server implementation using the default domain name
- * of <code>"DefaultDomain"</code>. The default domain name is
- * used when the domain name specified by the user is <code>null</code.
- * No reference to the created server is retained, so the server is
- * garbage collected when it is no longer used, but it can not be
- * retrieved at a later date using {@link #findMBeanServer}.
- * Calling this method is equivalent to calling
- * {@link newMBeanServer(String)} with a <code>null</code> value.
- *
- * @return a new {@link MBeanServer} instance.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanServerPermission(String)}("newMBeanServer")
- * @throws JMRuntimeException if the property
- * <code>javax.management.builder.initial</code>
- * exists but names a class which either can not be
- * instantiated or provides an implementation that returns
- * <code>null</code> from either
- * {@link MBeanServerBuilder#newMBeanServerDelegate()}
- * or {@link MBeanServerBuilder#newMBeanServer()}
- * @throws ClassCastException if the property
- * <code>javax.management.builder.initial</code>
- * exists but names a class which is not a subclass
- * of {@link MBeanServerBuilder}.
- * @see #newMBeanServer(String)
- */
- public static MBeanServer newMBeanServer()
- {
- return newMBeanServer(null);
- }
-
- /**
- * Returns a server implementation using the default domain name
- * given, or <code>"DefaultDomain"</code> if this is <code>null</code>.
- * The default domain name is used when the domain name specified by
- * the user is <code>null</code. No reference to the created server is
- * retained, so the server is garbage collected when it is no longer
- * used, but it can not be retrieved at a later date using
- * {@link #findMBeanServer}.
- *
- * @param domain the default domain name of the server.
- * @return a new {@link MBeanServer} instance.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanServerPermission(String)}("newMBeanServer")
- * @throws JMRuntimeException if the property
- * <code>javax.management.builder.initial</code>
- * exists but names a class which either can not be
- * instantiated or provides an implementation that returns
- * <code>null</code> from either
- * {@link MBeanServerBuilder#newMBeanServerDelegate()}
- * or {@link MBeanServerBuilder#newMBeanServer()}
- * @throws ClassCastException if the property
- * <code>javax.management.builder.initial</code>
- * exists but names a class which is not a subclass
- * of {@link MBeanServerBuilder}.
- */
- public static MBeanServer newMBeanServer(String domain)
- {
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkPermission(new MBeanServerPermission("newMBeanServer"));
- return createServer(domain);
- }
-
- /**
- * Common method to create a server for the {@link #createMBeanServer(String)}
- * and {@link #newMBeanServer(String)} methods above.
- *
- * @param domain the default domain name of the server.
- * @throws JMRuntimeException if the property
- * <code>javax.management.builder.initial</code>
- * exists but names a class which either can not be
- * instantiated or provides an implementation that returns
- * <code>null</code> from either
- * {@link MBeanServerBuilder#newMBeanServerDelegate()}
- * or {@link MBeanServerBuilder#newMBeanServer()}
- * @throws ClassCastException if the property
- * <code>javax.management.builder.initial</code>
- * exists but names a class which is not a subclass
- * of {@link MBeanServerBuilder}.
- */
- private static MBeanServer createServer(String domain)
- {
- if (domain == null)
- domain = "DefaultDomain";
- String builderClass =
- SystemProperties.getProperty("javax.management.builder.initial");
- if (builderClass == null)
- {
- if (builder == null ||
- builder.getClass() != MBeanServerBuilder.class)
- builder = new MBeanServerBuilder();
- }
- else if (!(builder != null &&
- builderClass.equals(builder.getClass().getName())))
- {
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- if (cl == null)
- cl = MBeanServerFactory.class.getClassLoader();
- try
- {
- Class<?> bClass = Class.forName(builderClass, true, cl);
- builder = (MBeanServerBuilder) bClass.newInstance();
- }
- catch (ClassNotFoundException e)
- {
- throw (JMRuntimeException) (new JMRuntimeException("The builder class, "
- + builderClass +
- ", could not be found."))
- .initCause(e);
- }
- catch (InstantiationException e)
- {
- throw (JMRuntimeException) (new JMRuntimeException("The builder class, "
- + builderClass +
- ", could not be instantiated."))
- .initCause(e);
- }
- catch (IllegalAccessException e)
- {
- throw (JMRuntimeException) (new JMRuntimeException("The builder class, "
- + builderClass +
- ", could not be accessed."))
- .initCause(e);
- }
- }
- MBeanServerDelegate delegate = builder.newMBeanServerDelegate();
- if (delegate == null)
- throw new JMRuntimeException("A delegate could not be created.");
- MBeanServer server = builder.newMBeanServer(domain, null, delegate);
- if (server == null)
- throw new JMRuntimeException("A server could not be created.");
- return server;
- }
-
- /**
- * Removes the reference to the specified server, thus allowing it to
- * be garbage collected.
- *
- * @param server the server to remove.
- * @throws IllegalArgumentException if a reference to the server is not
- * held (i.e. it wasn't created by
- * {@link #createMBeanServer(String)}
- * or this method has already been called
- * on it.
- * @throws SecurityException if a security manager exists and the
- * caller's permissions don't imply {@link
- * MBeanServerPermission(String)}("releaseMBeanServer")
- */
- public static void releaseMBeanServer(MBeanServer server)
- {
- SecurityManager sm = System.getSecurityManager();
- if (sm != null)
- sm.checkPermission(new MBeanServerPermission("releaseMBeanServer"));
- Iterator<MBeanServer> i = servers.values().iterator();
- while (i.hasNext())
- {
- MBeanServer s = i.next();
- if (server == s)
- {
- i.remove();
- return;
- }
- }
- throw new IllegalArgumentException("The server given is not referenced.");
- }
-
-
-}
diff --git a/libjava/classpath/javax/management/MBeanServerInvocationHandler.java b/libjava/classpath/javax/management/MBeanServerInvocationHandler.java
deleted file mode 100644
index 093e882..0000000
--- a/libjava/classpath/javax/management/MBeanServerInvocationHandler.java
+++ /dev/null
@@ -1,401 +0,0 @@
-/* MBeanServerInvocationHandler.java -- Provides a proxy for a bean.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import gnu.javax.management.Translator;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-
-/**
- * <p>
- * Provides a proxy for a management bean. The methods
- * of the given interface are fulfilled by redirecting the
- * calls over an {@link MBeanServerConnection} to the bean
- * specified by the supplied {@link ObjectName}.
- * </p>
- * <p>
- * The {@link java.lang.reflect.InvocationHandler} also makes
- * provision for {@link MXBean}s by providing type conversion
- * according to the rules defined for these beans. The input
- * parameters are converted to their equivalent open type before
- * calling the method, and then the return value is converted
- * back from its open type to the appropriate Java type. For
- * example, a method that takes an {@link Enum} as input and
- * returns a {@link java.util.List} will have the input value
- * converted from an {@link Enum} to a {@link String}, while
- * the return value will be converted from its return type
- * (an appropriately typed array) to a {@link java.util.List}.
- * </p>
- * <p>
- * The proxy has special cases for the {@link Object#equals(Object)},
- * {@link Object#hashCode()} and {@link Object#toString()} methods.
- * Unless they are specified explictly by the interface, the
- * following behaviour is provided for these methods by the proxy:
- * </p>
- * <ul>
- * <li><code>equals(Object)</code> returns true if the other object
- * is an {@link MBeanServerInvocationHandler} with the same
- * {@link MBeanServerConnection} and {@link ObjectName}. If an
- * interface class was specified on construction for one of the
- * proxies, then the same class must have also been specified
- * for the other.</li>
- * <li><code>hashCode()</code> returns the same value for
- * equivalent proxies.</li>
- * <li><code>toString()</code> returns a textual representation
- * of the proxy.</li>
- * </ul>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanServerInvocationHandler
- implements InvocationHandler
-{
-
- /**
- * The connection used to make the calls.
- */
- private MBeanServerConnection conn;
-
- /**
- * The name of the bean to perform operations on.
- */
- private ObjectName name;
-
- /**
- * True if this proxy is for an {@link MXBean}.
- */
- private boolean mxBean;
-
- /**
- * The interface class associated with the bean.
- */
- private Class<?> iface;
-
- /**
- * Constructs a new {@link MBeanServerInvocationHandler}
- * which forwards methods to the supplied bean via the
- * given {@link MBeanServerConnection}. This constructor
- * is used in preference to
- * {@link JMX#newMBeanProxy(MBeanServerConnection, ObjectName,
- * Class<T>)} if you wish to make your own call to
- * {@link java.lang.reflect.Proxy#newInstance(ClassLoader,
- * Class[], java.lang.reflect.InvocationHandler)} with
- * a different {@link ClassLoader}. Calling this constructor
- * is equivalent to <code>MBeanServerInvocationHandler(conn,
- * name, false)</code>. The other constructor should be used
- * instead if the bean being proxied is an {@link MXBean}.
- *
- * @param conn the connection through which methods will
- * be forwarded to the bean.
- * @param name the name of the bean to use to provide the
- * actual calls.
- */
- public MBeanServerInvocationHandler(MBeanServerConnection conn,
- ObjectName name)
- {
- this(conn, name, false);
- }
-
- /**
- * Constructs a new {@link MBeanServerInvocationHandler}
- * which forwards methods to the supplied bean via the
- * given {@link MBeanServerConnection}. This constructor
- * is used in preference to
- * {@link JMX#newMBeanProxy(MBeanServerConnection, ObjectName,
- * Class<T>)} if you wish to make your own call to
- * {@link java.lang.reflect.Proxy#newInstance(ClassLoader,
- * Class[], java.lang.reflect.InvocationHandler)} with
- * a different {@link ClassLoader}.
- *
- * @param conn the connection through which methods will
- * be forwarded to the bean.
- * @param name the name of the bean to use to provide the
- * actual calls.
- * @param mxBean true if the bean being proxied is an
- * {@link MXBean}.
- * @since 1.6
- */
- public MBeanServerInvocationHandler(MBeanServerConnection conn,
- ObjectName name, boolean mxBean)
- {
- this.conn = conn;
- this.name = name;
- this.mxBean = mxBean;
- }
-
- /**
- * Returns the connection through which the calls to the bean
- * will be made.
- *
- * @return the connection being used to forward the calls to
- * the bean.
- * @since 1.6
- */
- public MBeanServerConnection getMBeanServerConnection()
- {
- return conn;
- }
-
- /**
- * Returns the name of the bean to which method calls are made.
- *
- * @return the bean which provides the actual method calls.
- * @since 1.6
- */
- public ObjectName getObjectName()
- {
- return name;
- }
-
- /**
- * Called by the proxy class whenever a method is called. The method
- * is emulated by retrieving an attribute from, setting an attribute on
- * or invoking a method on the server connection as required. Translation
- * between the Java data types supplied as arguments to the open types used
- * by the bean is provided, as well as translation of the return value back
- * in to the appropriate Java type if the bean is an {@link MXBean}.
- *
- * @param proxy the proxy on which the method was called.
- * @param method the method which was called.
- * @param args the arguments supplied to the method.
- * @return the return value from the method.
- * @throws Throwable if an exception is thrown in performing the
- * method emulation.
- */
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable
- {
- String mName = method.getName();
- Class<?> proxyClass = proxy.getClass();
- if (mName.equals("toString"))
- {
- if (inInterface(mName, proxyClass))
- return conn.invoke(name,mName,null,null);
- else
- return proxyClass.getName() + "[name=" + name
- + ", conn=" + conn + "]";
- }
- if (mName.equals("hashCode"))
- {
- if (inInterface(mName, proxyClass))
- return conn.invoke(name,mName,null,null);
- else
- return conn.hashCode() + name.hashCode()
- + (iface == null ? 0 : iface.hashCode());
- }
- if (mName.equals("equals"))
- {
- if (inInterface(mName, proxyClass, Object.class))
- return conn.invoke(name,mName,new Object[]{args[0]},
- new String[]{"java.lang.Object"});
- else
- {
- if (args[0].getClass() != proxy.getClass())
- return false;
- InvocationHandler ih = Proxy.getInvocationHandler(args[0]);
- if (ih instanceof MBeanServerInvocationHandler)
- {
- MBeanServerInvocationHandler h =
- (MBeanServerInvocationHandler) ih;
- return conn.equals(h.getMBeanServerConnection())
- && name.equals(h.getObjectName())
- && (iface == null ? h.iface == null
- : iface.equals(h.iface));
- }
- return false;
- }
- }
- if (NotificationEmitter.class.isAssignableFrom(proxyClass))
- {
- if (mName.equals("addNotificationListener"))
- {
- conn.addNotificationListener(name,
- (NotificationListener) args[0],
- (NotificationFilter) args[1],
- args[2]);
- return null;
- }
- if (mName.equals("getNotificationInfo"))
- return conn.getMBeanInfo(name).getNotifications();
- if (mName.equals("removeNotificationListener"))
- {
- if (args.length == 1)
- conn.removeNotificationListener(name,
- (NotificationListener)
- args[0]);
- else
- conn.removeNotificationListener(name,
- (NotificationListener)
- args[0],
- (NotificationFilter)
- args[1], args[2]);
- return null;
- }
- }
- String[] sigs;
- if (args == null)
- sigs = null;
- else
- {
- sigs = new String[args.length];
- for (int a = 0; a < args.length; ++a)
- sigs[a] = args[a].getClass().getName();
- }
- String attrib = null;
- if (mName.startsWith("get"))
- attrib = mName.substring(3);
- else if (mName.startsWith("is"))
- attrib = mName.substring(2);
- if (attrib != null)
- {
- Object val = conn.getAttribute(name, attrib);
- if (mxBean)
- return Translator.toJava(val, method);
- else
- return val;
- }
- else if (mName.startsWith("set"))
- {
- Object arg;
- if (mxBean)
- arg = Translator.fromJava(args, method)[0];
- else
- arg = args[0];
- conn.setAttribute(name, new Attribute(mName.substring(3), arg));
- return null;
- }
- if (mxBean)
- return Translator.toJava(conn.invoke(name, mName,
- Translator.fromJava(args,method),
- sigs), method);
- else
- return conn.invoke(name, mName, args, sigs);
- }
-
- /**
- * Returns true if this is a proxy for an {@link MXBean}
- * and conversions must be applied to input parameters
- * and return types, according to the rules for such beans.
- *
- * @return true if this is a proxy for an {@link MXBean}.
- * @since 1.6
- */
- public boolean isMXBean()
- {
- return mxBean;
- }
-
- /**
- * <p>
- * Returns a proxy for the specified bean. A proxy object is created
- * using <code>Proxy.newProxyInstance(iface.getClassLoader(),
- * new Class[] { iface }, handler)</code>. The
- * {@link javax.management.NotificationEmitter} class is included as the
- * second element of the array if <code>broadcaster</code> is true.
- * <code>handler</code> refers to the invocation handler which forwards
- * calls to the connection, which is created by a call to
- * <code>new MBeanServerInvocationHandler(conn, name)</code>.
- * </p>
- * <p>
- * <strong>Note</strong>: use of the proxy may result in
- * {@link java.io.IOException}s from the underlying
- * {@link MBeanServerConnection}.
- * As of 1.6, the use of {@link JMX#newMBeanProxy(MBeanServerConnection,
- * ObjectName,Class)} and {@link JMX#newMBeanProxy(MBeanServerConnection,
- * ObjectName,Class,boolean)} is preferred.
- * </p>
- *
- * @param conn the server connection to use to access the bean.
- * @param name the {@link javax.management.ObjectName} of the
- * bean to provide a proxy for.
- * @param iface the interface for the bean being proxied.
- * @param broadcaster true if the proxy should implement
- * {@link NotificationEmitter}.
- * @return a proxy for the specified bean.
- * @see JMX#newMBeanProxy(MBeanServerConnection,ObjectName,Class)
- */
- // Suppress warnings as we know an instance of T will be returned.
- @SuppressWarnings("unchecked")
- public static <T> T newProxyInstance(MBeanServerConnection conn,
- ObjectName name, Class<T> iface,
- boolean broadcaster)
- {
- if (broadcaster)
- return (T) Proxy.newProxyInstance(iface.getClassLoader(),
- new Class[] { iface,
- NotificationEmitter.class },
- new MBeanServerInvocationHandler(conn,name));
- else
- return (T) Proxy.newProxyInstance(iface.getClassLoader(),
- new Class[] { iface },
- new MBeanServerInvocationHandler(conn,name));
- }
-
- /**
- * Returns true if the specified method is specified
- * by one of the proxy's interfaces.
- *
- * @param name the name of the method to search for.
- * @param proxyClass the class of the proxy.
- * @param args the arguments to the method.
- * @return true if one of the interfaces specifies the
- * given method.
- */
- private boolean inInterface(String name, Class<?> proxyClass,
- Class<?>... args)
- {
- for (Class<?> iface : proxyClass.getInterfaces())
- {
- try
- {
- iface.getMethod(name, args);
- return true;
- }
- catch (NoSuchMethodException e)
- {
- /* Ignored; this interface doesn't specify
- the method. */
- }
- }
- return false;
- }
-
-}
diff --git a/libjava/classpath/javax/management/MBeanServerNotification.java b/libjava/classpath/javax/management/MBeanServerNotification.java
deleted file mode 100644
index e225a29..0000000
--- a/libjava/classpath/javax/management/MBeanServerNotification.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/* MBeanServerNotification.java -- The registration notification.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * The notification emitted by a management server on a registration
- * or de-registration event. Events are emitted via the delegate
- * management bean of the server. Other objects can listen for
- * such events by registering their interest with the delegate
- * bean. The bean can be obtained via the {@link ObjectName}
- * <code>JMImplementation:type=MBeanServerDelegate</code>.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanServerNotification
- extends Notification
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 2876477500475969677L;
-
- /**
- * Notification type for the registration event.
- */
- public static final String REGISTRATION_NOTIFICATION = "JMX.mbean.registered";
-
- /**
- * Notification type for the de-registration event.
- */
- public static final String UNREGISTRATION_NOTIFICATION = "JMX.mbean.unregistered";
-
- /**
- * The name of the bean which forms the subject of this notification.
- */
- private ObjectName objectName;
-
- /**
- * Constructs a new {@link MBeanServerNotification} of the specified
- * type for an event relating to the supplied bean, with the given
- * source and sequence number.
- *
- * @param type the type of notification (registration or de-registration).
- * @param source the source of the notification.
- * @param seqNo the sequence number of this notification, used to order
- * multiple such notifications.
- * @param name the name of the bean concerned by this event.
- */
- public MBeanServerNotification(String type, Object source, long seqNo,
- ObjectName name)
- {
- super(type, source, seqNo);
- objectName = name;
- }
-
- /**
- * Returns the name of the bean this notification concerns.
- *
- * @return the name of the bean.
- */
- public ObjectName getMBeanName()
- {
- return objectName;
- }
-
-}
diff --git a/libjava/classpath/javax/management/MBeanServerPermission.java b/libjava/classpath/javax/management/MBeanServerPermission.java
deleted file mode 100644
index fea4ea2..0000000
--- a/libjava/classpath/javax/management/MBeanServerPermission.java
+++ /dev/null
@@ -1,470 +0,0 @@
-/* MBeanServerPermission.java -- Permissions controlling server creation.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.security.BasicPermission;
-import java.security.Permission;
-import java.security.PermissionCollection;
-
-import java.util.Enumeration;
-import java.util.NoSuchElementException;
-
-/**
- * <p>
- * Represents the permissions required to perform
- * operations provided by the {@link MBeanServerFactory}.
- * As with all {@link java.security.Permission} objects, an
- * instance of this class either represents a permission
- * already held or one that is required to access a
- * particular service. In the case of {@link MBeanServerPermission}s,
- * implication checks are made using an instance of this class
- * when a user requests an operation from the factory, and a
- * {@link SecurityManager} is in place.
- * </p>
- * <p>
- * The permission is defined by its name, which may be
- * either a <code>'*'</code> (to allow all) or one or
- * more of the following, separated by a <code>','</code>:
- * </p>
- * <ul>
- * <li><code>createMBeanServer</code> -- allows a registered
- * instance of a server to be obtained from the factory.</li>
- * <li><code>findMBeanServer</code> -- allows all or one
- * particular server instance to be retrieved from the factory.</li>
- * <li><code>newMBeanServer</code> -- allows an unregistered
- * instance of a server to be obtained from the factory.</li>
- * <li><code>releaseMBeanServer</code> -- allows a reference to
- * a server instance to be removed from the factory.</li>
- * </ul>
- * <p>
- * The names may be surrounded by arbitrary amounts of whitespace.
- * <code>createMBeanServer</code> implies <code>newMBeanServer</code>.
- * </p>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanServerPermission
- extends BasicPermission
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -5661980843569388590L;
-
- /**
- * <p>
- * Constructs a new {@link MBeanServerPermission} with
- * the given name. The name must not be <code>null</code>
- * and must be equal to either <code>"*"</code> or a
- * comma-separated list of valid permissions. The four
- * valid constraints are:
- * </p>
- * <ol>
- * <li><code>createMBeanServer</code></li>
- * <li><code>findMBeanServer</code></li>
- * <li><code>newMBeanServer</code></li>
- * <li><code>releaseMBeanServer</code></li>
- * </ol>
- * <p>
- * Calling this constructor is equivalent to calling
- * <code>MBeanPermission(name, null)</code>.
- * </p>
- *
- * @param name the name of this permission.
- * @throws NullPointerException if <code>name</code>
- * is <code>null</code>.
- * @throws IllegalArgumentException if <code>name</code>
- * is not either equal to
- * <code>"*"</code> or forms
- * a comma-separated list of
- * valid constraints.
- * @see #MBeanServerPermission(String,String)
- */
- public MBeanServerPermission(String name)
- {
- this(name, null);
- }
-
- /**
- * <p>
- * Constructs a new {@link MBeanServerPermission} with
- * the given name and actions. The actions are unused,
- * and must be either <code>null</code> or the empty
- * string. The name must not be <code>null</code>
- * and must be equal to either <code>"*"</code> or a
- * comma-separated list of valid permissions. The four
- * valid constraints are:
- * </p>
- * <ol>
- * <li><code>createMBeanServer</code></li>
- * <li><code>findMBeanServer</code></li>
- * <li><code>newMBeanServer</code></li>
- * <li><code>releaseMBeanServer</code></li>
- * </ol>
- * <p>
- * Calling this constructor is equivalent to calling
- * <code>MBeanPermission(name, null)</code>.
- * </p>
- *
- * @param name the name of this permission.
- * @throws NullPointerException if <code>name</code>
- * is <code>null</code>.
- * @throws IllegalArgumentException if <code>name</code>
- * is not either equal to
- * <code>"*"</code> or forms
- * a comma-separated list of
- * valid constraints, or if
- * <code>actions</code> is not
- * <code>null</code> or the
- * empty string.
- * @see #MBeanServerPermission(String,String)
- */
- public MBeanServerPermission(String name, String actions)
- {
- super(checkName(name), actions);
- if (actions != null && actions.length() > 0)
- throw new IllegalArgumentException("The supplied action list " +
- "was not equal to null or the " +
- "empty string.");
- }
-
- /**
- * Returns true if the given object is also an {@link MBeanServerPermission}
- * with the same name.
- *
- * @param obj the object to compare with this one.
- * @return true if the object is an {@link MBeanPermission}
- * with the same name.
- */
- public boolean equals(Object obj)
- {
- if (obj instanceof MBeanServerPermission)
- {
- MBeanServerPermission o = (MBeanServerPermission) obj;
- return o.getName().equals(getName());
- }
- return false;
- }
-
- /**
- * Returns a unique hash code for this permission.
- * This is simply the hashcode of {@link BasicPermission#getName()}.
- *
- * @return the hashcode of this permission.
- */
- public int hashCode()
- {
- return getName().hashCode();
- }
-
- /**
- * Returns true if this {@link MBeanServerPermission} implies
- * the given permission. This occurs if the given permission
- * is also an {@link MBeanServerPermission} and its target names
- * are a subset of the target names of this permission. Note that
- * the name <code>createMBeanServer</code> implies
- * <code>newMBeanServer</code>.
- *
- * @param p the permission to check for implication.
- * @return true if this permission implies <code>p</code>.
- */
- public boolean implies(Permission p)
- {
- if (p instanceof MBeanServerPermission)
- {
- if (getName().equals("*"))
- return true;
- MBeanServerPermission msp = (MBeanServerPermission) p;
- String[] thisCaps = getName().split(",");
- String[] mspCaps = msp.getName().split(",");
- for (int a = 0; a < mspCaps.length; ++a)
- {
- boolean found = false;
- String mc = mspCaps[a].trim();
- for (int b = 0; b < thisCaps.length; ++b)
- {
- String tc = thisCaps[b].trim();
- if (tc.equals(mc))
- found = true;
- if (tc.equals("createMBeanServer") &&
- mc.equals("newMBeanServer"))
- found = true;
- }
- if (!found)
- return false;
- }
- return true;
- }
- return false;
- }
-
- /**
- * Returns a {@link PermissionCollection} which stores
- * a series of {@link MBeanServerPermission}s as the union
- * of their capabilities.
- *
- * @return a collection for {@link MBeanServerPermission}s.
- */
- public PermissionCollection newPermissionCollection()
- {
- return new MBeanServerPermissionCollection();
- }
-
- /**
- * A collection of {@link MBeanServerPermission}s, stored
- * as a single permission with the union of the capabilities
- * as its capabilities.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
- private class MBeanServerPermissionCollection
- extends PermissionCollection
- {
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -5661980843569388590L;
-
- /**
- * The collected permission. This is <code>null</code> or
- * the union of the permissions held by all the collected
- * permissions.
- */
- private MBeanServerPermission collectionPermission;
-
- /**
- * Adds a new permission by unifying it with the existing
- * collection permission.
- *
- * @param p the permission to add.
- * @throws SecurityException if the collection is read only.
- * @see #isReadOnly()
- * @see #setReadOnly(boolean)
- */
- @Override
- public void add(Permission p)
- {
- if (isReadOnly())
- throw new SecurityException("This collection is read only.");
- if (p instanceof MBeanServerPermission)
- {
- MBeanServerPermission msp = (MBeanServerPermission) p;
- if (collectionPermission == null)
- collectionPermission = msp;
- else
- {
- String finalString = collectionPermission.getName();
- String[] cp = finalString.split(",");
- String[] np = msp.getName().split(",");
- int createms = finalString.indexOf("createMBeanServer");
- int newms = finalString.indexOf("newMBeanServer");
- for (int a = 0; a < np.length; ++a)
- {
- boolean found = false;
- String nps = np[a].trim();
- for (int b = 0; b < cp.length; ++b)
- {
- String cps = cp[b].trim();
- if (cps.equals(nps))
- found = true;
- if (nps.equals("newMBeanServer")
- && createms != -1)
- found = true;
- if (nps.equals("createMBeanServer")
- && newms != -1)
- finalString =
- finalString.replace("newMBeanServer",
- "createMBeanServer");
- }
- if (!found)
- finalString += "," + nps;
- }
- collectionPermission =
- new MBeanServerPermission(finalString);
- }
- }
- }
-
- /**
- * Returns an enumeration over the single permission.
- *
- * @return an enumeration over the collection permission.
- */
- @Override
- public Enumeration<Permission> elements()
- {
- return new
- MBeanServerPermissionEnumeration(collectionPermission);
- }
-
- /**
- * Provides an enumeration over a comma-separated list
- * of capabilities.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
- private class MBeanServerPermissionEnumeration
- implements Enumeration<Permission>
- {
-
- /**
- * The collected permission.
- */
- private MBeanServerPermission p;
-
- /**
- * True if we have returned the permission.
- */
- private boolean done;
-
- /**
- * Constructs a new {@link MBeanServerPermissionEnumeration}
- * using the given collected permission.
- *
- * @param p the collected permission.
- */
- public MBeanServerPermissionEnumeration(MBeanServerPermission p)
- {
- this.p = p;
- done = false;
- }
-
- /**
- * Returns true if there are more capabilities to return.
- *
- * @return true if there are more capabilities available.
- */
- public boolean hasMoreElements()
- {
- return !done;
- }
-
- /**
- * Returns the next capability.
- *
- * @return the next capability.
- */
- public Permission nextElement()
- {
- if (hasMoreElements())
- {
- done = true;
- return p;
- }
- else
- throw new NoSuchElementException("No more elements are available.");
- }
-
- }
-
- /**
- * Returns true if the collected {@link MBeanServerPermission}
- * implies the given permission. This occurs if the given permission
- * is also an {@link MBeanServerPermission} and its target names
- * are a subset of the target names of this permission. Note that
- * the name <code>createMBeanServer</code> implies
- * <code>newMBeanServer</code>.
- *
- * @param p the permission to check for implication.
- * @return true if this permission implies <code>p</code>.
- */
- @Override
- public boolean implies(Permission p)
- {
- return collectionPermission.implies(p);
- }
- }
-
- /**
- * Checks the name is valid, including removing
- * the <code>newMBeanServer</code> permission when
- * <code>createMBeanServer</code> is present.
- *
- * @param name the name to check.
- * @throws NullPointerException if <code>name</code>
- * is <code>null</code>.
- * @throws IllegalArgumentException if <code>name</code>
- * is not either equal to
- * <code>"*"</code> or forms
- * a comma-separated list of
- * valid constraints.
- */
- private static String checkName(String name)
- {
- if (!(name.equals("*")))
- {
- String[] constraints = name.split(",");
- name = "";
- boolean seenCreate = false;
- boolean seenNew = false;
- boolean start = true;
- for (int a = 0; a < constraints.length; ++a)
- {
- String next = constraints[a].trim();
- if (!(next.equals("createMBeanServer") ||
- next.equals("findMBeanServer") ||
- next.equals("newMBeanServer") ||
- next.equals("releaseMBeanServer")))
- throw new IllegalArgumentException("An invalid constraint, " +
- next + ", was specified.");
- if (next.equals("newMBeanServer"))
- seenNew = true;
- else if (next.equals("createMBeanServer"))
- seenCreate = true;
- else
- {
- if (!start)
- name += ",";
- name += next;
- start = false;
- }
- }
- if (seenNew && !seenCreate)
- name += (start ? "" : ",") + "newMBeanServer";
- else if (seenCreate)
- name += (start ? "" : ",") + "createMBeanServer";
- }
- return name;
- }
-
-}
diff --git a/libjava/classpath/javax/management/MBeanTrustPermission.java b/libjava/classpath/javax/management/MBeanTrustPermission.java
deleted file mode 100644
index 371e129..0000000
--- a/libjava/classpath/javax/management/MBeanTrustPermission.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/* MBeanTrustPermission.java -- Represents a trusted bean source.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.security.BasicPermission;
-
-/**
- * Represents the permission held by a trusted source of
- * management beans. For a bean to be added to a management
- * server, the source of that bean must hold this permission.
- * It has a target, but no actions. Valid values for the target
- * are <code>"register"</code> and <code>"*"</code>, the latter
- * representing both the existing <code>"register"</code> target
- * and any future targets.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MBeanTrustPermission
- extends BasicPermission
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -2952178077029018140L;
-
- /**
- * Constructs a {@link MBeanTrustPermission} with the given target.
- * The target must be either <code>"register"</code> or <code>"*"</code>.
- * The actions of the permission default to <code>null</code>,
- * so this is equivalent to calling
- * <code>MBeanTrustPermission(target, null)</code>.
- *
- * @param target the target of this permission.
- * @throws NullPointerException if <code>target</code> is null.
- * @throws IllegalArgumentException if the target is other than
- * <code>"register"</code> or <code>"*"</code>.
- * @see #MBeanTrustPermission(String, String)
- */
- public MBeanTrustPermission(String target)
- {
- this(target, null);
- }
-
- /**
- * Constructs a {@link MBeanTrustPermission} with the given target
- * and actions. The target must be either <code>"register"</code>
- * or <code>"*"</code>. The actions must be either <code>null</code>
- * or the empty string, <code>""</code>.
- *
- * @param target the target of this permission.
- * @param actions the actions for this permission.
- * @throws NullPointerException if <code>target</code> is null.
- * @throws IllegalArgumentException if the target is other than
- * <code>"register"</code> or <code>"*"</code>
- * or actions is other than
- * <code>null</code> or <code>""</code>.
- */
- public MBeanTrustPermission(String target, String actions)
- {
- super(target, actions);
- if ((!(target.equals("register"))) &&
- (!(target.equals("*"))))
- throw new IllegalArgumentException("The target must be 'register' or '*'");
- if (actions != null && !(actions.length() == 0))
- throw new IllegalArgumentException("The actions must be null or ''");
- }
-
-}
diff --git a/libjava/classpath/javax/management/MXBean.java b/libjava/classpath/javax/management/MXBean.java
deleted file mode 100644
index 7b3af54..0000000
--- a/libjava/classpath/javax/management/MXBean.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/* MXBean.java - Marks a management bean interface as an MXBean.
- Copyright (C) 2007 Free Software Foundation
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static java.lang.annotation.ElementType.TYPE;
-
-/**
- * <p>
- * An annotation used to explictly mark an interface
- * as defining (or not defining) an {@link MXBean}. By
- * default, such beans are taken to be those whose interface
- * has the suffix {@code "MXBean"}. The presence of this
- * annotation overrides this intuition. The following
- * interfaces would be classed as {@link MXBean}s:
- * </p>
- * <ul>
- * <li>{@code public interface SomethingMXBean{}}</li>
- * <li>{@code @MXBean public interface Someat{}}</li>
- * <li>{@code @MXBean(true) public interface SomeatElse{}}</li>
- * </ul>
- * <p>The following would not:</p>
- * <ul>
- * <li>{@code public interface RandomInterface{}}</li>
- * <li>{@code @MXBean(false) public interface SomethingMXBean{}}</li>
- * </ul>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.6
- */
-@Documented @Retention(RUNTIME) @Target(TYPE)
-public @interface MXBean
-{
-
- /**
- * Returns true if the annotated interface
- * is an {@link MXBean}.
- *
- * @return true if the interface is an {@link MXBean}.
- */
- boolean value();
-
-}
diff --git a/libjava/classpath/javax/management/MalformedObjectNameException.java b/libjava/classpath/javax/management/MalformedObjectNameException.java
deleted file mode 100644
index 9a98991..0000000
--- a/libjava/classpath/javax/management/MalformedObjectNameException.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/* MalformedObjectNameException.java -- Thrown by invalid values.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Thrown when a string used as an {@link ObjectName}
- * is invalid.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class MalformedObjectNameException
- extends OperationsException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -572689714442915824L;
-
- /**
- * Constructs a new <code>MalformedObjectNameException</code>.
- */
- public MalformedObjectNameException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>MalformedObjectNameException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public MalformedObjectNameException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/NotCompliantMBeanException.java b/libjava/classpath/javax/management/NotCompliantMBeanException.java
deleted file mode 100644
index a8fa7a8..0000000
--- a/libjava/classpath/javax/management/NotCompliantMBeanException.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/* NotCompliantMBeanException.java -- Thrown due to a non-compliant bean.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Thrown when a management bean is passed to a method
- * (e.g. to an MBean server to be registered) and it
- * fails to comply with the specifications for such
- * a bean.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class NotCompliantMBeanException
- extends OperationsException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 5175579583207963577L;
-
- /**
- * Constructs a new <code>NotCompliantMBeanException</code>.
- */
- public NotCompliantMBeanException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>NotCompliantMBeanException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public NotCompliantMBeanException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/Notification.java b/libjava/classpath/javax/management/Notification.java
deleted file mode 100644
index 0831c29..0000000
--- a/libjava/classpath/javax/management/Notification.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/* Notification.java -- A notification emitted by a bean.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-
-import java.util.Date;
-import java.util.EventObject;
-
-/**
- * <p>
- * A notification message that may be emitted by a bean.
- * Notifications have both a message and a type, so individual
- * notifications can be grouped by type. They also incorporate
- * sequencing, so that the recipient can order the delivered
- * messages correctly (there is no guarantee that they will
- * be delivered in order).
- * </p>
- * <p>
- * Notifications also include a reference to the source of
- * the notification. The source bean is represented either
- * by an {@link ObjectName} or by a direct reference to the
- * bean. The former is preferable, and notifications emitted
- * via a {@link MBeanServer} will automatically have the source
- * transformed into an {@link ObjectName}.
- * </p>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class Notification
- extends EventObject
-{
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = -7516092053498031989L;
-
- /**
- * The notification message.
- *
- * @serial the notification message.
- */
- private String message;
-
- /**
- * The notification's sequence number, relative to the notifications
- * emitted by the bean.
- *
- * @serial the notification sequence number.
- */
- private long sequenceNumber;
-
- /**
- * The source of the notification. This is redeclared in order to
- * replace the <code>source</code> variable in {@link java.util.EventObject}
- * with a non-transient version.
- *
- * @serial the notification source.
- */
- protected Object source;
-
- /**
- * The time the notification was generated.
- *
- * @serial the notification timestamp.
- */
- private long timeStamp;
-
- /**
- * The type of notification sent. This utilises the same style
- * as Java property and package names. For example,
- * <code>gnu.gcj.compiler</code> may be one type of notifications.
- *
- * @serial the notification type.
- */
- private String type;
-
- /**
- * The user data associated with the notification. This includes
- * any additional data which should be transmitted with the notification,
- * but can't be achieved using the {@link java.lang.String} format
- * of the <code>message</code>.
- *
- * @serial the notification user data.
- */
- private Object userData;
-
- /**
- * Creates a new {@link Notification} object with the specified type,
- * source and sequence number. The timestamp is created using the
- * current date and time.
- *
- * @param type the type of the notification.
- * @param source the source of the notification.
- * @param sequenceNumber the sequence number of the notifcation.
- */
- public Notification(String type, Object source, long sequenceNumber)
- {
- this(type, source, sequenceNumber, new Date().getTime());
- }
-
- /**
- * Creates a new {@link Notification} object with the specified type,
- * source, sequence number and timestamp.
- *
- * @param type the type of the notification.
- * @param source the source of the notification.
- * @param sequenceNumber the sequence number of the notifcation.
- * @param timeStamp the time the notification was emitted.
- */
- public Notification(String type, Object source, long sequenceNumber,
- long timeStamp)
- {
- this(type, source, sequenceNumber, timeStamp, "");
- }
-
- /**
- * Creates a new {@link Notification} object with the specified type,
- * source, sequence number, timestamp and message.
- *
- * @param type the type of the notification.
- * @param source the source of the notification.
- * @param sequenceNumber the sequence number of the notifcation.
- * @param timeStamp the time the notification was emitted.
- * @param message the message contained in the notification.
- */
- public Notification(String type, Object source, long sequenceNumber,
- long timeStamp, String message)
- {
- super(source);
- this.type = type;
- this.source = source;
- this.sequenceNumber = sequenceNumber;
- this.timeStamp = timeStamp;
- this.message = message;
- }
-
- /**
- * Creates a new {@link Notification} object with the specified type,
- * source, sequence number and message. The timestamp is created using
- * the current date and time.
- *
- * @param type the type of the notification.
- * @param source the source of the notification.
- * @param sequenceNumber the sequence number of the notifcation.
- * @param message the message contained in the notification.
- */
- public Notification(String type, Object source, long sequenceNumber,
- String message)
- {
- this(type, source, sequenceNumber, new Date().getTime(), message);
- }
-
- /**
- * Returns the message contained in this notification. The message
- * is in {@link java.lang.String} form, and is thus intended for
- * display to the end-user. Data transferred as part of the notification
- * which shouldn't be displayed is included in the <code>userData</code>
- * field.
- *
- * @return the notification message.
- * @see #getUserData()
- * @see #setUserData(java.lang.Object)
- */
- public String getMessage()
- {
- return message;
- }
-
- /**
- * Returns the sequence number of this notification. This
- * can be used to determine the order in which notifications
- * were emitted by the broadcasting bean.
- *
- * @return the sequence number.
- * @see #setSequenceNumber(long)
- */
- public long getSequenceNumber()
- {
- return sequenceNumber;
- }
-
- /**
- * Returns the date and time at which this notification was
- * emitted.
- *
- * @return the notification timestamp.
- * @see #setTimeStamp(long)
- */
- public long getTimeStamp()
- {
- return timeStamp;
- }
-
- /**
- * Returns the type of this notification. Types take the same
- * form as Java package and property names.
- *
- * @return the type of the notification.
- */
- public String getType()
- {
- return type;
- }
-
- /**
- * Returns the additional user data associated with the notification.
- * This is used to attach additional non-textual information to the
- * notification.
- *
- * @return the user data associated with the notification.
- * @see #setUserData(java.lang.Object)
- */
- public Object getUserData()
- {
- return userData;
- }
-
- /**
- * Sets the sequence number to the value specified.
- *
- * @param sequenceNumber the new sequence number.
- * @see #getSequenceNumber()
- */
- public void setSequenceNumber(long sequenceNumber)
- {
- this.sequenceNumber = sequenceNumber;
- }
-
- /**
- * Sets the source of this notification to the value
- * specified.
- *
- * @param source the new source of the notification.
- * @see java.util.EventSource#getSource()
- */
- public void setSource(Object source)
- {
- this.source = source;
- }
-
- /**
- * Sets the date and time at which this notification
- * was emitted.
- *
- * @param timeStamp the new time stamp of the notification.
- * @see #getTimeStamp()
- */
- public void setTimeStamp(long timeStamp)
- {
- this.timeStamp = timeStamp;
- }
-
- /**
- * Sets the additional user data associated with the notification
- * to the specified value. This is used to attach additional
- * non-textual information to the notification.
- *
- * @param userData the new user data associated with the notification.
- * @see #getUserData()
- */
- public void setUserData(Object userData)
- {
- this.userData = userData;
- }
-
- /**
- * A textual representation of the notification.
- *
- * @return the notification in {@link java.lang.String} form.
- */
- public String toString()
- {
- return getClass().getName()
- + "[message=" + message
- + ", sequenceNumber=" + sequenceNumber
- + ", source=" + source
- + ", timeStamp=" + timeStamp
- + ", type=" + type
- + ", userData=" + userData
- + "]";
- }
-
- /**
- * Serialize the {@link Notification}.
- *
- * @param out the output stream to write to.
- * @throws IOException if an I/O error occurs.
- */
- private void writeObject(ObjectOutputStream out)
- throws IOException
- {
- out.defaultWriteObject();
- }
-
-}
diff --git a/libjava/classpath/javax/management/NotificationBroadcaster.java b/libjava/classpath/javax/management/NotificationBroadcaster.java
deleted file mode 100644
index 2196e98..0000000
--- a/libjava/classpath/javax/management/NotificationBroadcaster.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/* NotificationBroadcaster.java -- Interface for broadcasters.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * <p>
- * Represents a bean that can emit notifications when
- * events occur. Other beans can use this interface
- * to add themselves to the list of recipients of such
- * notifications.
- * </p>
- * <p>
- * <strong>Note</strong>: New classes should use
- * {@link NotificationEmitter}, a subinterface of this,
- * in preference to using this interface directly.
- * </p>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface NotificationBroadcaster
-{
-
- /**
- * Registers the specified listener as a new recipient of
- * notifications from this bean. If non-null, the filter
- * argument will be used to select which notifications are
- * delivered. The supplied object will also be passed to
- * the recipient with each notification. This should not
- * be modified by the broadcaster, but instead should be
- * passed unmodified to the listener.
- *
- * @param listener the new listener, who will receive
- * notifications from this broadcasting bean.
- * @param filter a filter to determine which notifications are
- * delivered to the listener, or <code>null</code>
- * if no filtering is required.
- * @param passback an object to be passed to the listener with
- * each notification.
- * @throws IllegalArgumentException if <code>listener</code> is
- * <code>null</code>.
- * @see #removeNotificationListener(NotificationListener)
- */
- void addNotificationListener(NotificationListener listener,
- NotificationFilter filter,
- Object passback)
- throws IllegalArgumentException;
-
- /**
- * Returns an array describing the notifications this
- * bean may send to its registered listeners. Ideally, this
- * array should be complete, but in some cases, this may
- * not be possible. However, be aware that some listeners
- * may expect this to be so.
- *
- * @return the array of possible notifications.
- */
- MBeanNotificationInfo[] getNotificationInfo();
-
- /**
- * Removes the specified listener from the list of recipients
- * of notifications from this bean. This includes all combinations
- * of filters and passback objects registered for this listener.
- * For more specific removal of listeners, see the subinterface
- * {@link NotificationEmitter}.
- *
- * @param listener the listener to remove.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with this bean.
- * @see #addNotificationListener(NotificationListener, NotificationFilter,
- * java.lang.Object)
- */
- void removeNotificationListener(NotificationListener listener)
- throws ListenerNotFoundException;
-
-}
diff --git a/libjava/classpath/javax/management/NotificationBroadcasterSupport.java b/libjava/classpath/javax/management/NotificationBroadcasterSupport.java
deleted file mode 100644
index 28b8148..0000000
--- a/libjava/classpath/javax/management/NotificationBroadcasterSupport.java
+++ /dev/null
@@ -1,389 +0,0 @@
-/* NotificationBroadcasterSupport.java -- Supporting implementation.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import gnu.javax.management.ListenerData;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import java.util.concurrent.Executor;
-
-/**
- * <p>
- * Provides an implementation of the {@link NotificationEmitter}
- * interface, which beans may utilise by extension. By default,
- * a synchronous dispatch system is provided, whereby the
- * {@link #handleNotification(NotificationListener, Notification,
- * Object)} is called once per listener by
- * {*@link #sendNotification(Notification)} before returning.
- * Thus, unless the listener is remote, it will have received
- * the notification before the method returns.
- * This may be changed by overriding the <code>handleNotification</code>
- * method, or by providing an {@link java.util.concurrent.Executor} to
- * use. With the latter, the dispatch of a notification to a particular
- * listener will form one task performed by the executor.
- * </p>
- * <p>
- * Any exceptions thrown by the dispatch process will be caught, allowing
- * other listeners to still receive the notification. However, any
- * {@link Error}s that are thrown will be propogated to the caller of
- * {@link #sendNotification(Notification)}.
- * </p>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class NotificationBroadcasterSupport
- implements NotificationEmitter
-{
-
- /**
- * The executor for dispatch, or
- * <code>null</code> if this thread should
- * handle dispatch itself.
- */
- private Executor executor;
-
- /**
- * An array containing information on each
- * notification, or <code>null</code> if an
- * empty array should be returned by
- * {@link #getNotificationInfo()}.
- */
- private MBeanNotificationInfo[] info;
-
- /**
- * The list of listeners registered with
- * this broadcaster.
- */
- private final List<ListenerData> listeners =
- new ArrayList<ListenerData>();
-
- /**
- * Constructs a {@link NotificationBroadcasterSupport} using
- * the default synchronous dispatch model, where a single
- * thread sends the notification to all listeners. This
- * is equivalent to calling
- * <code>NotificationBroadcasterSupport(null, null)</code>.
- */
- public NotificationBroadcasterSupport()
- {
- this(null, (MBeanNotificationInfo[]) null);
- }
-
- /**
- * Constructs a {@link NotificationBroadcasterSupport} where
- * the specified (@link java.util.concurrent.Executor} is used
- * to perform each invocation of the
- * {@link #handleNotification(NotificationListener, Notification,
- * Object)} method. Filtering is performed beforehand, by this
- * thread; only calls which have successfully passed through the
- * filter are sent to the executor. This is equivalent to calling
- * <code>NotificationBroadcasterSupport(executor, null)</code>.
- *
- * @param executor the executor to use for each call to
- * <code>handleNotification()</code>.
- * @since 1.6
- */
- public NotificationBroadcasterSupport(Executor executor)
- {
- this(executor, (MBeanNotificationInfo) null);
- }
-
- /**
- * Constructs a {@link NotificationBroadcasterSupport} using
- * the default synchronous dispatch model, where a single
- * thread sends the notification to all listeners. The specified
- * {@link MBeanNotificationInfo} array is used to provide
- * information about the notifications on calls to
- * {@link #getNotificationInfo()}, where a clone will be
- * returned if the array is non-empty. This is equivalent to
- * calling <code>NotificationBroadcasterSupport(null, info)</code>.
- *
- * @param info an array of {@link MBeanNotificationInfo} objects
- * describing the notifications delivered by this
- * broadcaster. This may be <code>null</code>, which
- * is taken as being equivalent to an empty array.
- */
- public NotificationBroadcasterSupport(MBeanNotificationInfo... info)
- {
- this(null, info);
- }
-
- /**
- * Constructs a {@link NotificationBroadcasterSupport} where
- * the specified (@link java.util.concurrent.Executor} is used
- * to perform each invocation of the
- * {@link #handleNotification(NotificationListener, Notification,
- * Object)} method. Filtering is performed beforehand, by this
- * thread; only calls which have successfully passed through the
- * filter are sent to the executor. The specified
- * {@link MBeanNotificationInfo} array is used to provide
- * information about the notifications on calls to
- * {@link #getNotificationInfo()}, where a clone will be
- * returned if the array is non-empty.
- *
- * @param executor the executor to use for each call to
- * <code>handleNotification()</code>.
- * @param info an array of {@link MBeanNotificationInfo} objects
- * describing the notifications delivered by this
- * broadcaster. This may be <code>null</code>, which
- * is taken as being equivalent to an empty array.
- * @since 1.6
- */
- public NotificationBroadcasterSupport(Executor executor,
- MBeanNotificationInfo... info)
- {
- this.executor = executor;
- this.info = info;
- }
-
- /**
- * Registers the specified listener as a new recipient of
- * notifications from this bean. If non-null, the filter
- * argument will be used to select which notifications are
- * delivered. The supplied object will also be passed to
- * the recipient with each notification. This should not
- * be modified by the broadcaster, but instead should be
- * passed unmodified to the listener.
- *
- * @param listener the new listener, who will receive
- * notifications from this broadcasting bean.
- * @param filter a filter to determine which notifications are
- * delivered to the listener, or <code>null</code>
- * if no filtering is required.
- * @param passback an object to be passed to the listener with
- * each notification.
- * @throws IllegalArgumentException if <code>listener</code> is
- * <code>null</code>.
- * @see #removeNotificationListener(NotificationListener)
- */
- public void addNotificationListener(NotificationListener listener,
- NotificationFilter filter,
- Object passback)
- throws IllegalArgumentException
- {
- if (listener == null)
- throw new IllegalArgumentException("Null listener added to bean.");
- listeners.add(new ListenerData(listener, filter, passback));
- }
-
- /**
- * Returns an array describing the notifications this
- * bean may send to its registered listeners. Ideally, this
- * array should be complete, but in some cases, this may
- * not be possible. However, be aware that some listeners
- * may expect this to be so.
- *
- * @return the array of possible notifications.
- */
- public MBeanNotificationInfo[] getNotificationInfo()
- {
- if (info == null || info.length == 0)
- return new MBeanNotificationInfo[0];
- return (MBeanNotificationInfo[]) info.clone();
- }
-
- /**
- * This method is called on a per-listener basis, either
- * from this thread or the supplied executor, and may be
- * overridden by subclasses which wish to change how
- * notifications are delivered. The default
- * implementation simply calls
- * <code>listener.handleNotification(notif, passback)</code>.
- *
- * @param listener the listener to send the notification to.
- * @param notif the notification to dispatch.
- * @param passback the passback object of the listener.
- */
- protected void handleNotification(NotificationListener listener,
- Notification notif,
- Object passback)
- {
- listener.handleNotification(notif, passback);
- }
-
- /**
- * Removes the specified listener from the list of recipients
- * of notifications from this bean. This includes all combinations
- * of filters and passback objects registered for this listener.
- * For more specific removal of listeners, see the subinterface
- * {@link NotificationEmitter}.
- *
- * @param listener the listener to remove.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with this bean.
- * @see #addNotificationListener(NotificationListener, NotificationFilter,
- * java.lang.Object)
- */
- public void removeNotificationListener(NotificationListener listener)
- throws ListenerNotFoundException
- {
- Iterator<ListenerData> it = listeners.iterator();
- boolean foundOne = false;
- while (it.hasNext())
- {
- if (it.next().getListener() == listener)
- {
- it.remove();
- foundOne = true;
- }
- }
- if (!foundOne)
- throw new ListenerNotFoundException("The specified listener, " + listener +
- "is not registered with this bean.");
- }
-
- /**
- * Removes the specified listener from the list of recipients
- * of notifications from this bean. Only the first instance with
- * the supplied filter and passback object is removed.
- * <code>null</code> is used as a valid value for these parameters,
- * rather than as a way to remove all registration instances for
- * the specified listener; for this behaviour instead, see the details
- * of the same method in {@link NotificationBroadcaster}.
- *
- * @param listener the listener to remove.
- * @param filter the filter of the listener to remove.
- * @param passback the passback object of the listener to remove.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with this bean.
- * @see #addNotificationListener(NotificationListener, NotificationFilter,
- * java.lang.Object)
- */
- public void removeNotificationListener(NotificationListener listener,
- NotificationFilter filter,
- Object passback)
- throws ListenerNotFoundException
- {
- if (!(listeners.remove(new ListenerData(listener, filter, passback))))
- {
- throw new ListenerNotFoundException("The specified listener, " + listener +
- " with filter " + filter +
- "and passback " + passback +
- ", is not registered with this bean.");
- }
- }
-
- /**
- * <p>
- * Performs delivery of the notification. If an executor
- * was specified on construction, this will be used to call
- * {@link #handleNotification(NotificationListener, Notification,
- * Object)}. If the executor is <code>null</code>, however,
- * this thread calls the method itself in order to perform a
- * synchronous dispatch of the notification to all eligible
- * listeners.
- * </p>
- * <p>
- * Prior to either process taking place, the listeners are filtered.
- * Notifications are only delivered if the filter is either
- * <code>null</code> or returns true from the
- * {@link NotificationFilter#isNotificationEnabled(Notification)}
- * method.
- * </p>
- *
- * @param notif the notification to send.
- */
- public void sendNotification(Notification notif)
- {
- for (ListenerData ldata : listeners)
- {
- NotificationFilter filter = ldata.getFilter();
- if (filter == null || filter.isNotificationEnabled(notif))
- {
- if (executor == null)
- try
- {
- handleNotification(ldata.getListener(), notif,
- ldata.getPassback());
- }
- catch (Exception e) { /* Ignore */ }
- else
- executor.execute(new DispatchTask(ldata, notif));
- }
- }
- }
-
- /**
- * The dispatch task to be performed by an executor.
- */
- private final class DispatchTask
- implements Runnable
- {
-
- /**
- * The data on the listener being called.
- */
- private ListenerData ldata;
-
- /**
- * The notification to send.
- */
- private Notification notif;
-
- /**
- * Construct a new {@link DispatchTask}.
- *
- * @param ldata the listener data.
- * @param notif the notification to send.
- */
- public DispatchTask(ListenerData ldata,
- Notification notif)
- {
- this.ldata = ldata;
- this.notif = notif;
- }
-
- /**
- * Dispatch the notification.
- */
- public void run()
- {
- try
- {
- handleNotification(ldata.getListener(), notif,
- ldata.getPassback());
- }
- catch (Exception e) { /* Ignore */ }
- }
- }
-
-}
diff --git a/libjava/classpath/javax/management/NotificationEmitter.java b/libjava/classpath/javax/management/NotificationEmitter.java
deleted file mode 100644
index 7187d8c..0000000
--- a/libjava/classpath/javax/management/NotificationEmitter.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/* NotificationEmitter.java -- Refined interface for broadcasters.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Represents a bean that can emit notifications when
- * events occur. Other beans can use this interface
- * to add themselves to the list of recipients of such
- * notifications.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface NotificationEmitter
- extends NotificationBroadcaster
-{
-
- /**
- * Removes the specified listener from the list of recipients
- * of notifications from this bean. Only the first instance with
- * the supplied filter and passback object is removed.
- * <code>null</code> is used as a valid value for these parameters,
- * rather than as a way to remove all registration instances for
- * the specified listener; for this behaviour instead, see the details
- * of the same method in {@link NotificationBroadcaster}.
- *
- * @param listener the listener to remove.
- * @param filter the filter of the listener to remove.
- * @param passback the passback object of the listener to remove.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with this bean.
- * @see #addNotificationListener(NotificationListener, NotificationFilter,
- * java.lang.Object)
- */
- void removeNotificationListener(NotificationListener listener,
- NotificationFilter filter,
- Object passback)
- throws ListenerNotFoundException;
-
-}
diff --git a/libjava/classpath/javax/management/NotificationFilter.java b/libjava/classpath/javax/management/NotificationFilter.java
deleted file mode 100644
index db39aad7f..0000000
--- a/libjava/classpath/javax/management/NotificationFilter.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/* NotificationFilter.java -- Interface for notification filters.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.io.Serializable;
-
-/**
- * Represents a object that acts as a filter for notifications.
- * Implementations of this class are used to determine which
- * notifications should be passed to a receiving bean, and which
- * should not.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface NotificationFilter
- extends Serializable
-{
-
- /**
- * Returns true if the specified notification should be passed
- * on to the listener.
- *
- * @param notification the notification being delivered.
- * @return true if the notification should be passed to the
- * listener, false otherwise.
- */
- boolean isNotificationEnabled(Notification notification);
-
-}
diff --git a/libjava/classpath/javax/management/NotificationFilterSupport.java b/libjava/classpath/javax/management/NotificationFilterSupport.java
deleted file mode 100644
index a71f5c7..0000000
--- a/libjava/classpath/javax/management/NotificationFilterSupport.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/* NotificationFilterSupport.java -- Filter on notification type.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.util.Vector;
-
-/**
- * Performs filtering of {@link Notification}s
- * based on a list of type prefixes. The type of a notification
- * is compared with each member of the list using
- * {@link String#startsWith(String)} and, if one matches,
- * the notification is allowed to pass through the filter.
- * Matching on the beginning of the string is used in
- * preference to wildcards, so <code>type.*</code> will
- * match only notifications with a type beginning with
- * code>type.*</code>, not <code>type.</code> as
- * expected.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class NotificationFilterSupport
- implements NotificationFilter
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 6579080007561786969L;
-
- /**
- * Lists the types that may pass through the filter.
- */
- private final Vector<String> enabledTypes = new Vector<String>();
-
- /**
- * Blocks all types by emptying the list of enabled attributes.
- */
- public void disableAllTypes()
- {
- enabledTypes.clear();
- }
-
- /**
- * Removes the specified type prefix from the list
- * of enabled types, thus preventing matching types
- * from passing through the filter. If the specified
- * type prefix is not enabled, this operation has no
- * effect.
- *
- * @param prefix the prefix to disable.
- */
- public void disableType(String prefix)
- {
- enabledTypes.remove(prefix);
- }
-
- /**
- * Adds the specified type prefix to the list
- * of enabled types, thus allowing
- * types starting with this string to pass through
- * the filter. If the type prefix is already
- * enabled, this has no effect.
- *
- * @param prefix the prefix to enable.
- * @throws IllegalArgumentException if <code>prefix</code>
- * is <code>null</code>.
- */
- public void enableType(String prefix)
- {
- if (prefix == null)
- throw new IllegalArgumentException("A null prefix was supplied.");
- if (!enabledTypes.contains(prefix))
- enabledTypes.add(prefix);
- }
-
- /**
- * Returns the list of enabled types for this
- * filter.
- *
- * @return the list of enabled types.
- */
- public Vector<String> getEnabledTypes()
- {
- return enabledTypes;
- }
-
- /**
- * Returns true if the type of the specified notification
- * begins with one of the enabled type prefixes.
- *
- * @param notif the notification being filtered.
- * @return true if the notification's type is enabled.
- */
- public boolean isNotificationEnabled(Notification notif)
- {
- String nType = notif.getType();
- for (String type : enabledTypes)
- if (nType.startsWith(type))
- return true;
- return false;
- }
-
-}
diff --git a/libjava/classpath/javax/management/NotificationListener.java b/libjava/classpath/javax/management/NotificationListener.java
deleted file mode 100644
index 4810e91..0000000
--- a/libjava/classpath/javax/management/NotificationListener.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/* NotificationListener.java -- Interface for receivers of notifications.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.util.EventListener;
-
-/**
- * Represents a object that can receive notifications from
- * a bean.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface NotificationListener
- extends EventListener
-{
-
- /**
- * Invoked by the notifying bean when a notification is to
- * be delivered to the recipient. As the transmission of
- * notifications takes place sequentially, implementors of
- * this method should avoid performing lengthy operations,
- * as the notifying bean will stall until the method is
- * complete.
- *
- * @param notification the notification from the bean.
- * @param passback the object that was passed to the notifying
- * bean as part of the registration process.
- * @see NotificationBroadcaster#addListener(NotificationListener,
- * NotificationFilter, Object)
- */
- void handleNotification(Notification notification, Object passback);
-
-}
diff --git a/libjava/classpath/javax/management/ObjectInstance.java b/libjava/classpath/javax/management/ObjectInstance.java
deleted file mode 100644
index 1328db0..0000000
--- a/libjava/classpath/javax/management/ObjectInstance.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/* ObjectInstance.java -- Represent the bean instance used by a server.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.io.Serializable;
-
-/**
- * A simple class used to link a bean instance to its class name.
- * If the bean is a {@link DynamicMBean}, the class name may be
- * obtained using {@link MBeanInfo#getClassName()}.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class ObjectInstance
- implements Serializable
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -4099952623687795850L;
-
- /**
- * The name of the bean.
- */
- private ObjectName name;
-
- /**
- * The class name of the bean.
- */
- private String className;
-
- /**
- * Constructs a new {@link ObjectInstance} for the specified bean
- * with the supplied class name. The class name should include
- * the full package name.
- *
- * @param name the name of the bean.
- * @param className the class name of the bean.
- */
- public ObjectInstance(ObjectName name, String className)
- {
- this.name = name;
- this.className = className;
- }
-
- /**
- * Constructs a new {@link ObjectInstance} for the specified bean
- * with the supplied class name. The class name should include
- * the full package name.
- *
- * @param name the name of the bean.
- * @param className the class name of the bean.
- * @throws MalformedObjectNameException if the name of the bean
- * does not match the syntax
- * of an {@link ObjectName}.
- */
- public ObjectInstance(String name, String className)
- throws MalformedObjectNameException
- {
- this(new ObjectName(name), className);
- }
-
- /**
- * Returns true if the supplied object is also an {@link ObjectInstance}
- * with the same bean and class name.
- *
- * @param obj the object to compare.
- * @return true if the the supplied object is equal to <code>this</code>.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof ObjectInstance))
- return false;
- ObjectInstance i = (ObjectInstance) obj;
- return (i.getClassName().equals(className) &&
- i.getObjectName().equals(name));
- }
-
- /**
- * Returns the class name of the bean.
- *
- * @return the class name.
- */
- public String getClassName()
- {
- return className;
- }
-
- /**
- * Returns the name of the bean.
- *
- * @return the name of the bean.
- */
- public ObjectName getObjectName()
- {
- return name;
- }
-
- /**
- * Returns a hash code for this instance. This is calculated as
- * the sum of the hashcodes for the bean's name and the class name.
- *
- * @return the hash code of this instance.
- */
- public int hashCode()
- {
- return name.hashCode() + className.hashCode();
- }
-
-}
diff --git a/libjava/classpath/javax/management/ObjectName.java b/libjava/classpath/javax/management/ObjectName.java
deleted file mode 100644
index 856d03f..0000000
--- a/libjava/classpath/javax/management/ObjectName.java
+++ /dev/null
@@ -1,944 +0,0 @@
-/* ObjectName.java -- Represent the name of a bean, or a pattern for a name.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import gnu.java.lang.CPStringBuilder;
-
-import java.io.Serializable;
-
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.TreeMap;
-
-import java.io.IOException;
-import java.io.InvalidObjectException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-/**
- * <p>
- * An {@link ObjectName} instance represents the name of a management
- * bean, or a pattern which may match the name of one or more
- * management beans. Patterns are distinguished from names by the
- * presence of the '?' and '*' characters (which match a single
- * character and a series of zero or more characters, respectively).
- * </p>
- * <p>
- * Each name begins with a domain element, which is terminated by
- * a ':' character. The domain may be empty. If so, it will be
- * replaced by the default domain of the bean server in certain
- * contexts. The domain is a pattern, if it contains either '?'
- * or '*'. To avoid collisions, it is usual to use reverse
- * DNS names for the domain, as in Java package and property names.
- * </p>
- * <p>
- * Following the ':' character is a series of properties. The list
- * is separated by commas, and largely consists of unordered key-value
- * pairs, separated by an equals sign ('='). At most one element may
- * be an asterisk ('*'), which turns the {@link ObjectName} instance
- * into a <emph>property list pattern</emph>. In this situation, the pattern
- * matches a name if the name contains at least those key-value pairs
- * given and has the same domain.
- * </p>
- * <p>
- * A <emph>key</emph> is a string of characters which doesn't include
- * any of those used as delimiters or in patterns (':', '=', ',', '?'
- * and '*'). Keys must be unique.
- * </p>
- * <p>
- * A value may be <emph>quoted</emph> or <emph>unquoted</emph>. Unquoted
- * values obey the same rules as given for keys above. Quoted values are
- * surrounded by quotation marks ("), and use a backslash ('\') character
- * to include quotes ('\"'), backslashes ('\\'), newlines ('\n'), and
- * the pattern characters ('\?' and '\*'). The quotes and backslashes
- * (after expansion) are considered part of the value.
- * </p>
- * <p>
- * Both quoted and unquoted values may contain the wildcard characters
- * '?' and '*'. A name with at least one value containing a wildcard
- * character is known as a <emph>property value pattern</emph>. A
- * name is generally a <emph>property pattern</emph> if it is either
- * a <emph>property list pattern</emph> or <emph>property value pattern</emph>.
- * </p>
- * <p>
- * Spaces are maintained within the different parts of the name. Thus,
- * '<code>domain: key1 = value1 </code>' has a key ' key1 ' with value
- * ' value1 '. Newlines are disallowed, except where escaped in quoted
- * values.
- * </p>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class ObjectName
- implements Serializable, QueryExp
-{
-
- private static final long serialVersionUID = 1081892073854801359L;
-
- /**
- * The wildcard {@link ObjectName} {@code "*:*"}
- *
- * @since 1.6
- */
- public static final ObjectName WILDCARD;
-
- /**
- * The domain of the name.
- */
- private transient String domain;
-
- /**
- * The properties, as key-value pairs.
- */
- private transient TreeMap<String,String> properties;
-
- /**
- * The properties as a string (stored for ordering).
- */
- private transient String propertyListString;
-
- /**
- * True if this object name is a property list pattern.
- */
- private transient boolean propertyListPattern;
-
- /**
- * True if this object name is a property value pattern.
- */
- private transient boolean propertyValuePattern;
-
- /**
- * The management server associated with this object name.
- */
- private transient MBeanServer server;
-
- /**
- * Static initializer to set up the wildcard.
- */
- static
- {
- try
- {
- WILDCARD = new ObjectName("");
- }
- catch (MalformedObjectNameException e)
- {
- throw (InternalError) (new InternalError("A problem occurred " +
- "initializing the ObjectName " +
- "wildcard.").initCause(e));
- }
- }
-
- /**
- * Constructs an {@link ObjectName} instance from the given string,
- * which should be of the form
- * &lt;domain&gt;:&lt;properties&gt;&lt;wild&gt;. &lt;domain&gt;
- * represents the domain section of the name. &lt;properties&gt;
- * represents the key-value pairs, as returned by {@link
- * #getKeyPropertyListString()}. &lt;wild&gt; is the optional
- * asterisk present in the property list. If the string doesn't
- * represent a property pattern, it will be empty. If it does,
- * it will be either ',*' or '*', depending on whether other
- * properties are present or not, respectively.
- *
- * @param name the string to use to construct this instance.
- * @throws MalformedObjectNameException if the string is of the
- * wrong format.
- * @throws NullPointerException if <code>name</code> is
- * <code>null</code>.
- */
- public ObjectName(String name)
- throws MalformedObjectNameException
- {
- if (name.length() == 0)
- name = "*:*";
- parse(name);
- }
-
- /**
- * Parse the name in the same form as the constructor. Used by
- * readObject().
- */
- private void parse(String name)
- throws MalformedObjectNameException
- {
- int domainSep = name.indexOf(':');
- if (domainSep == -1)
- throw new MalformedObjectNameException("No domain separator was found.");
- domain = name.substring(0, domainSep);
- String rest = name.substring(domainSep + 1);
- properties = new TreeMap<String,String>();
- String[] pairs = rest.split(",");
- if (pairs.length == 0 && !isPattern())
- throw new MalformedObjectNameException("A name that is not a " +
- "pattern must contain at " +
- "least one key-value pair.");
- propertyListString = "";
- for (int a = 0; a < pairs.length; ++a)
- {
- if (pairs[a].equals("*"))
- {
- if (propertyListPattern)
- throw new MalformedObjectNameException("Multiple wildcards " +
- "in properties.");
- propertyListPattern = true;
- continue;
- }
- int sep = pairs[a].indexOf('=');
- if (sep == -1)
- throw new MalformedObjectNameException("A key must be " +
- "followed by a value.");
- String key = pairs[a].substring(0, sep);
- if (properties.containsKey(key))
- throw new MalformedObjectNameException("The same key occurs " +
- "more than once.");
- String value = pairs[a].substring(sep+1);
- properties.put(key, value);
- propertyListString += key + "=" + value + ",";
- }
- if (propertyListString.length() > 0)
- propertyListString =
- propertyListString.substring(0, propertyListString.length() - 1);
- checkComponents();
- }
-
- /**
- * Constructs an {@link ObjectName} instance using the given
- * domain and the one specified property.
- *
- * @param domain the domain part of the object name.
- * @param key the key of the property.
- * @param value the value of the property.
- * @throws MalformedObjectNameException the domain, key or value
- * contains an illegal
- * character or the value
- * does not follow the quoting
- * specifications.
- * @throws NullPointerException if one of the parameters is
- * <code>null</code>.
- */
- public ObjectName(String domain, String key, String value)
- throws MalformedObjectNameException
- {
- this.domain = domain;
- properties = new TreeMap<String,String>();
- properties.put(key, value);
- checkComponents();
- }
-
- /**
- * Constructs an {@link ObjectName} instance using the given
- * domain and properties.
- *
- * @param domain the domain part of the object name.
- * @param properties the key-value property pairs.
- * @throws MalformedObjectNameException the domain, a key or a value
- * contains an illegal
- * character or a value
- * does not follow the quoting
- * specifications.
- * @throws NullPointerException if one of the parameters is
- * <code>null</code>.
- */
- public ObjectName(String domain, Hashtable<String,String> properties)
- throws MalformedObjectNameException
- {
- this.domain = domain;
- this.properties = new TreeMap<String,String>();
- this.properties.putAll(properties);
- checkComponents();
- }
-
- /**
- * Checks the legality of the domain and the properties.
- *
- * @throws MalformedObjectNameException the domain, a key or a value
- * contains an illegal
- * character or a value
- * does not follow the quoting
- * specifications.
- */
- private void checkComponents()
- throws MalformedObjectNameException
- {
- if (domain.indexOf(':') != -1)
- throw new MalformedObjectNameException("The domain includes a ':' " +
- "character.");
- if (domain.indexOf('\n') != -1)
- throw new MalformedObjectNameException("The domain includes a newline " +
- "character.");
- char[] keychars = new char[] { '\n', ':', ',', '*', '?', '=' };
- char[] valchars = new char[] { '\n', ':', ',', '=' };
- for (Map.Entry<String,String> entry : properties.entrySet())
- {
- for (int a = 0; a < keychars.length; ++a)
- if (entry.getKey().indexOf(keychars[a]) != -1)
- throw new MalformedObjectNameException("A key contains a '" +
- keychars[a] + "' " +
- "character.");
- String value = entry.getValue();
- int quote = value.indexOf('"');
- if (quote == 0)
- {
- try
- {
- unquote(value);
- }
- catch (IllegalArgumentException e)
- {
- throw (MalformedObjectNameException)
- new MalformedObjectNameException("The quoted value is " +
- "invalid.").initCause(e);
- }
- }
- else if (quote != -1)
- throw new MalformedObjectNameException("A value contains " +
- "a '\"' character.");
- else
- {
- for (int a = 0; a < valchars.length; ++a)
- if (value.indexOf(valchars[a]) != -1)
- throw new MalformedObjectNameException("A value contains " +
- "a '" + valchars[a] + "' " +
- "character.");
-
- }
- if (value.indexOf('*') != -1 || value.indexOf('?') != -1)
- propertyValuePattern = true;
- }
- }
-
- /**
- * <p>
- * Attempts to find a match between this name and the one supplied.
- * The following criteria are used:
- * </p>
- * <ul>
- * <li>If the supplied name is a pattern, <code>false</code> is
- * returned.</li>
- * <li>If this name is a pattern, this method returns <code>true</code>
- * if the supplied name matches the pattern.</li>
- * <li>If this name is not a pattern, the result of
- * <code>equals(name)</code> is returned.
- * </ul>
- *
- * @param name the name to find a match with.
- * @return true if the name either matches this pattern or is
- * equivalent to this name under the criteria of
- * {@link #equals(java.lang.Object)}
- * @throws NullPointerException if <code>name</code> is <code>null</code>.
- */
- public boolean apply(ObjectName name)
- {
- if (name.isPattern())
- return false;
-
- if (!isPattern())
- return equals(name);
-
- if (isDomainPattern())
- {
- if (!domainMatches(domain, 0, name.getDomain(), 0))
- return false;
- }
- else
- {
- if (!domain.equals(name.getDomain()))
- return false;
- }
-
- if (isPropertyPattern())
- {
- Hashtable<String,String> oProps = name.getKeyPropertyList();
- for (Map.Entry<String,String> entry : properties.entrySet())
- {
- String key = entry.getKey();
- if (!(oProps.containsKey(key)))
- return false;
- String val = entry.getValue();
- if (!(val.equals(oProps.get(key))))
- return false;
- }
- }
- else
- {
- if (!getCanonicalKeyPropertyListString().equals
- (name.getCanonicalKeyPropertyListString()))
- return false;
- }
- return true;
- }
-
- /**
- * Returns true if the domain matches the pattern.
- *
- * @param pattern the pattern to match against.
- * @param patternindex the index into the pattern to start matching.
- * @param domain the domain to match.
- * @param domainindex the index into the domain to start matching.
- * @return true if the domain matches the pattern.
- */
- private static boolean domainMatches(String pattern, int patternindex,
- String domain, int domainindex)
- {
- while (patternindex < pattern.length())
- {
- char c = pattern.charAt(patternindex++);
-
- if (c == '*')
- {
- for (int i = domain.length(); i >= domainindex; i--)
- {
- if (domainMatches(pattern, patternindex, domain, i))
- return true;
- }
- return false;
- }
-
- if (domainindex >= domain.length())
- return false;
-
- if (c != '?' && c != domain.charAt(domainindex))
- return false;
-
- domainindex++;
- }
- return true;
- }
-
- /**
- * Compares the specified object with this one. The two
- * are judged to be equivalent if the given object is an
- * instance of {@link ObjectName} and has an equal canonical
- * form (as returned by {@link #getCanonicalName()}).
- *
- * @param obj the object to compare with this.
- * @return true if the object is also an {@link ObjectName}
- * with an equivalent canonical form.
- */
- public boolean equals(Object obj)
- {
- if (obj instanceof ObjectName)
- {
- ObjectName o = (ObjectName) obj;
- return getCanonicalName().equals(o.getCanonicalName());
- }
- return false;
- }
-
- /**
- * Returns the property list in canonical form. The keys
- * are ordered using the lexicographic ordering used by
- * {@link java.lang.String#compareTo(java.lang.Object)}.
- *
- * @return the property list, with the keys in lexicographic
- * order.
- */
- public String getCanonicalKeyPropertyListString()
- {
- CPStringBuilder builder = new CPStringBuilder();
- Iterator<Map.Entry<String,String>> i = properties.entrySet().iterator();
- while (i.hasNext())
- {
- Map.Entry<String,String> entry = i.next();
- builder.append(entry.getKey() + "=" + entry.getValue());
- if (i.hasNext())
- builder.append(",");
- }
- return builder.toString();
- }
-
- /**
- * <p>
- * Returns the name as a string in canonical form. More precisely,
- * this returns a string of the format
- * &lt;domain&gt;:&lt;properties&gt;&lt;wild&gt;. &lt;properties&gt;
- * is the same value as returned by
- * {@link #getCanonicalKeyPropertyListString()}. &lt;wild&gt;
- * is:
- * </p>
- * <ul>
- * <li>an empty string, if the object name is not a property pattern.</li>
- * <li>'*' if &lt;properties&gt; is empty.</li>
- * <li>',*' if there is at least one key-value pair.</li>
- * </ul>
- *
- * @return the canonical string form of the object name, as specified
- * above.
- */
- public String getCanonicalName()
- {
- return domain + ":" +
- getCanonicalKeyPropertyListString() +
- (isPropertyPattern() ? (properties.isEmpty() ? "*" : ",*") : "");
- }
-
- /**
- * Returns the domain part of the object name.
- *
- * @return the domain.
- */
- public String getDomain()
- {
- return domain;
- }
-
- /**
- * Returns an {@link ObjectName} instance that is substitutable for the
- * one given. The instance returned may be a subclass of {@link ObjectName},
- * but is not guaranteed to be of the same type as the given name, if that
- * should also turn out to be a subclass. The returned instance may or may
- * not be equivalent to the one given. The purpose of this method is to provide
- * an instance of {@link ObjectName} with a well-defined semantics, such as may
- * be used in cases where the given name is not trustworthy.
- *
- * @param name the {@link ObjectName} to provide a substitute for.
- * @return a substitute for the given name, which may or may not be a subclass
- * of {@link ObjectName}. In either case, the returned object is
- * guaranteed to have the semantics defined here.
- * @throws NullPointerException if <code>name</code> is <code>null</code>.
- */
- public static ObjectName getInstance(ObjectName name)
- {
- try
- {
- return new ObjectName(name.getCanonicalName());
- }
- catch (MalformedObjectNameException e)
- {
- throw (InternalError)
- (new InternalError("The canonical name of " +
- "the given name is invalid.").initCause(e));
- }
- }
-
- /**
- * Returns an {@link ObjectName} instance for the specified name, represented
- * as a {@link java.lang.String}. The instance returned may be a subclass of
- * {@link ObjectName} and may or may not be equivalent to earlier instances
- * returned by this method for the same string.
- *
- * @param name the {@link ObjectName} to provide an instance of.
- * @return a instance for the given name, which may or may not be a subclass
- * of {@link ObjectName}.
- * @throws MalformedObjectNameException the domain, a key or a value
- * contains an illegal
- * character or a value
- * does not follow the quoting
- * specifications.
- * @throws NullPointerException if <code>name</code> is <code>null</code>.
- */
- public static ObjectName getInstance(String name)
- throws MalformedObjectNameException
- {
- return new ObjectName(name);
- }
-
- /**
- * Returns an {@link ObjectName} instance for the specified name, represented
- * as a series of {@link java.lang.String} objects for the domain and a single
- * property, as a key-value pair. The instance returned may be a subclass of
- * {@link ObjectName} and may or may not be equivalent to earlier instances
- * returned by this method for the same parameters.
- *
- * @param domain the domain part of the object name.
- * @param key the key of the property.
- * @param value the value of the property.
- * @return a instance for the given name, which may or may not be a subclass
- * of {@link ObjectName}.
- * @throws MalformedObjectNameException the domain, a key or a value
- * contains an illegal
- * character or a value
- * does not follow the quoting
- * specifications.
- * @throws NullPointerException if <code>name</code> is <code>null</code>.
- */
- public static ObjectName getInstance(String domain, String key, String value)
- throws MalformedObjectNameException
- {
- return new ObjectName(domain, key, value);
- }
-
- /**
- * Returns an {@link ObjectName} instance for the specified name, represented
- * as a domain {@link java.lang.String} and a table of properties. The
- * instance returned may be a subclass of {@link ObjectName} and may or may
- * not be equivalent to earlier instances returned by this method for the
- * same string.
- *
- * @param domain the domain part of the object name.
- * @param properties the key-value property pairs.
- * @return a instance for the given name, which may or may not be a subclass
- * of {@link ObjectName}.
- * @throws MalformedObjectNameException the domain, a key or a value
- * contains an illegal
- * character or a value
- * does not follow the quoting
- * specifications.
- * @throws NullPointerException if <code>name</code> is <code>null</code>.
- */
- public static ObjectName getInstance(String domain,
- Hashtable<String,String> properties)
- throws MalformedObjectNameException
- {
- return new ObjectName(domain, properties);
- }
-
- /**
- * Returns the property value corresponding to the given key.
- *
- * @param key the key of the property to be obtained.
- * @return the value of the specified property.
- * @throws NullPointerException if <code>key</code> is <code>null</code>.
- */
- public String getKeyProperty(String key)
- {
- if (key == null)
- throw new NullPointerException("Null key given in request for a value.");
- return (String) properties.get(key);
- }
-
- /**
- * Returns the properties in a {@link java.util.Hashtable}. The table
- * contains each of the properties as keys mapped to their value. The
- * returned table is not unmodifiable, but changes made to it will not
- * be reflected in the object name.
- *
- * @return a {@link java.util.Hashtable}, containing each of the object
- * name's properties.
- */
- public Hashtable<String,String> getKeyPropertyList()
- {
- return new Hashtable<String,String>(properties);
- }
-
- /**
- * Returns a {@link java.lang.String} representation of the property
- * list. If the object name was created using {@link
- * ObjectName(String)}, then this string will contain the properties
- * in the same order they were given in at creation.
- *
- * @return the property list.
- */
- public String getKeyPropertyListString()
- {
- if (propertyListString != null)
- return propertyListString;
- return getCanonicalKeyPropertyListString();
- }
-
- /**
- * Returns a hash code for this object name. This is calculated as the
- * summation of the hash codes of the domain and the properties.
- *
- * @return a hash code for this object name.
- */
- public int hashCode()
- {
- return domain.hashCode() + properties.hashCode();
- }
-
- /**
- * Returns true if the domain of this object name is a pattern.
- * This is the case if it contains one or more wildcard characters
- * ('*' or '?').
- *
- * @return true if the domain is a pattern.
- */
- public boolean isDomainPattern()
- {
- return domain.contains("?") || domain.contains("*");
- }
-
- /**
- * Returns true if this is an object name pattern. An object
- * name pattern has a domain containing a wildcard character
- * ('*' or '?') and/or a '*' in the list of properties.
- * This method will return true if either {@link #isDomainPattern()}
- * or {@link #isPropertyPattern()} does.
- *
- * @return true if this is an object name pattern.
- */
- public boolean isPattern()
- {
- return isDomainPattern() || isPropertyPattern();
- }
-
- /**
- * Returns true if this object name is a property list
- * pattern, a property value pattern or both.
- *
- * @return true if the properties of this name contain a pattern.
- * @see #isPropertyListPattern
- * @see #isPropertyValuePattern
- */
- public boolean isPropertyPattern()
- {
- return propertyListPattern || propertyValuePattern;
- }
-
- /**
- * Returns true if this object name is a property list pattern. This is
- * the case if the list of properties contains an '*'.
- *
- * @return true if this is a property list pattern.
- * @since 1.6
- */
- public boolean isPropertyListPattern()
- {
- return propertyListPattern;
- }
-
- /**
- * Returns true if this object name is a property value pattern. This is
- * the case if one of the values contains a wildcard character,
- * '?' or '*'.
- *
- * @return true if this is a property value pattern.
- * @since 1.6
- */
- public boolean isPropertyValuePattern()
- {
- return propertyValuePattern;
- }
-
- /**
- * Returns true if the value of the given key is a pattern. This is
- * the case if the value contains a wildcard character, '?' or '*'.
- *
- * @param key the key whose value should be checked.
- * @return true if the value of the given key is a pattern.
- * @since 1.6
- * @throws NullPointerException if {@code key} is {@code null}.
- * @throws IllegalArgumentException if {@code key} is not a valid
- * property.
- */
- public boolean isPropertyValuePattern(String key)
- {
- String value = getKeyProperty(key);
- if (value == null)
- throw new IllegalArgumentException(key + " is not a valid property.");
- return value.indexOf('?') != -1 || value.indexOf('*') != -1;
- }
-
- /**
- * <p>
- * Returns a quoted version of the supplied string. The string may
- * contain any character. The resulting quoted version is guaranteed
- * to be usable as the value of a property, so this method provides
- * a good way of ensuring that a value is legal.
- * </p>
- * <p>
- * The string is transformed as follows:
- * </p>
- * <ul>
- * <li>The string is prefixed with an opening quote character, '"'.
- * <li>For each character, s:
- * <ul>
- * <li>If s is a quote ('"'), it is replaced by a backslash
- * followed by a quote.</li>
- * <li>If s is a star ('*'), it is replaced by a backslash followed
- * by a star.</li>
- * <li>If s is a question mark ('?'), it is replaced by a backslash
- * followed by a question mark.</li>
- * <li>If s is a backslash ('\'), it is replaced by two backslashes.</li>
- * <li>If s is a newline character, it is replaced by a backslash followed by
- * a '\n'.</li>
- * <li>Otherwise, s is used verbatim.
- * </ul></li>
- * <li>The string is terminated with a closing quote character, '"'.</li>
- * </ul>
- *
- * @param string the string to quote.
- * @return a quoted version of the supplied string.
- * @throws NullPointerException if <code>string</code> is <code>null</code>.
- */
- public static String quote(String string)
- {
- CPStringBuilder builder = new CPStringBuilder();
- builder.append('"');
- for (int a = 0; a < string.length(); ++a)
- {
- char s = string.charAt(a);
- switch (s)
- {
- case '"':
- builder.append("\\\"");
- break;
- case '*':
- builder.append("\\*");
- break;
- case '?':
- builder.append("\\?");
- break;
- case '\\':
- builder.append("\\\\");
- break;
- case '\n':
- builder.append("\\\n");
- break;
- default:
- builder.append(s);
- }
- }
- builder.append('"');
- return builder.toString();
- }
-
- /**
- * Changes the {@link MBeanServer} on which this query is performed.
- *
- * @param server the new server to use.
- */
- public void setMBeanServer(MBeanServer server)
- {
- this.server = server;
- }
-
- /**
- * Returns a textual representation of the object name.
- *
- * <p>The format is unspecified beyond that equivalent object
- * names will return the same string from this method, but note
- * that Tomcat depends on the string returned by this method
- * being a valid textual representation of the object name and
- * will fail to start if it is not.
- *
- * @return a textual representation of the object name.
- */
- public String toString()
- {
- return getCanonicalName();
- }
-
-
- /**
- * Serialize this {@link ObjectName}. The serialized
- * form is the same as the string parsed by the constructor.
- *
- * @param out the output stream to write to.
- * @throws IOException if an I/O error occurs.
- */
- private void writeObject(ObjectOutputStream out)
- throws IOException
- {
- out.defaultWriteObject();
- CPStringBuilder buffer = new CPStringBuilder(getDomain());
- buffer.append(':');
- String properties = getKeyPropertyListString();
- buffer.append(properties);
- if (isPropertyPattern())
- {
- if (properties.length() == 0)
- buffer.append("*");
- else
- buffer.append(",*");
- }
- out.writeObject(buffer.toString());
- }
-
- /**
- * Reads the serialized form, which is that used
- * by the constructor.
- *
- * @param in the input stream to read from.
- * @throws IOException if an I/O error occurs.
- */
- private void readObject(ObjectInputStream in)
- throws IOException, ClassNotFoundException
- {
- in.defaultReadObject();
- String objectName = (String)in.readObject();
- try
- {
- parse(objectName);
- }
- catch (MalformedObjectNameException x)
- {
- throw new InvalidObjectException(x.toString());
- }
- }
-
-
- /**
- * Unquotes the supplied string. The quotation marks are removed as
- * are the backslashes preceding the escaped characters ('"', '?',
- * '*', '\n', '\\'). A one-to-one mapping exists between quoted and
- * unquoted values. As a result, a string <code>s</code> should be
- * equal to <code>unquote(quote(s))</code>.
- *
- * @param q the quoted string to unquote.
- * @return the unquoted string.
- * @throws NullPointerException if <code>q</code> is <code>null</code>.
- * @throws IllegalArgumentException if the string is not a valid
- * quoted string i.e. it is not
- * surrounded by quotation marks
- * and/or characters are not properly
- * escaped.
- */
- public static String unquote(String q)
- {
- if (q.charAt(0) != '"')
- throw new IllegalArgumentException("The string does " +
- "not start with a quote.");
- if (q.charAt(q.length() - 1) != '"')
- throw new IllegalArgumentException("The string does " +
- "not end with a quote.");
- CPStringBuilder builder = new CPStringBuilder();
- for (int a = 1; a < (q.length() - 1); ++a)
- {
- char n = q.charAt(a);
- if (n == '\\')
- {
- n = q.charAt(++a);
- if (n != '"' && n != '?' && n != '*' &&
- n != 'n' && n != '\\')
- throw new IllegalArgumentException("Illegal escaped character: "
- + n);
- }
- else if (n == '"' || n == '\n')
- throw new IllegalArgumentException("Illegal character: " + n);
- builder.append(n);
- }
-
- return builder.toString();
- }
-
-}
diff --git a/libjava/classpath/javax/management/OperationsException.java b/libjava/classpath/javax/management/OperationsException.java
deleted file mode 100644
index b0e434d..0000000
--- a/libjava/classpath/javax/management/OperationsException.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/* OperationsException.java -- Thrown by management operations.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * A general superclass for all exceptions thrown by
- * operations on management beans.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class OperationsException
- extends JMException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -4967597595580536216L;
-
- /**
- * Constructs a new <code>OperationsException</code>.
- */
- public OperationsException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>OperationsException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public OperationsException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/PersistentMBean.java b/libjava/classpath/javax/management/PersistentMBean.java
deleted file mode 100644
index 51ee460..0000000
--- a/libjava/classpath/javax/management/PersistentMBean.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/* PersistentMBean.java -- Interface for beans that should persist.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Beans may implement this interface in order to become
- * persistent. The {@link #load()} method should be
- * called on construction in order to reload the stored
- * state. The {@link #store()} method should be called
- * sometime during the bean's lifetime in order to create
- * a persistent copy of the bean's instance data. This
- * method may also be called by the {@link MBeanServer}
- * as a result of the {@link Descriptor} of an
- * {@link javax.management.modelmbean.ModelMBean}.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface PersistentMBean
-{
-
- /**
- * Instantiates the bean with the data previously stored
- * using a call to {@link #store()}. The data stored can
- * include values held by attributes as well as those returned
- * by operations. This method should be called during
- * construction or initialisation of the bean, before
- * it becomes registered with an {@link MBeanServer}.
- *
- * @throws MBeanException if persistence is not supported,
- * or another exception is thrown
- * (which this then wraps).
- * @throws RuntimeOperationsException if the persistence
- * mechanism throws an
- * exception.
- * @throws InstanceNotFoundException if the bean can not
- * be found in the
- * persistent store.
- */
- void load()
- throws MBeanException, RuntimeOperationsException,
- InstanceNotFoundException;
-
- /**
- * <p>
- * Captures the current state of the bean and stores it
- * for future retrieval by the {@link #load()} method.
- * The data stored can include values held by attributes
- * as well as those returned by operations.
- * </p>
- * <p>
- * Whether the state is stored or not depends on the
- * <code>persistPolicy</code> field of the MBean/attribute
- * descriptor. The state should be stored if the policy
- * is set to any of the following:
- * </p>
- * <ul>
- * <li><code>always</code></li>
- * <li><code>onTimer</code> and <code>now</code> is
- * greater than or equal to <code>lastPersistTime +
- * persistPeriod</code>.</li>
- * <li><code>noMoreOftenThan</code> and <code>now</code> is
- * greater than or equal to <code>lastPersistTime +
- * persistPeriod</code>.</li>
- * <li>onUnregister</li>
- * </ul>
- * <p>If the policy is set to any of the following, the state
- * should not be stored:</p>
- * <ul>
- * <li><code>never</code></li>
- * <li><code>onUpdate</code></li>
- * <li><code>onTimer</code> and <code>now</code> is
- * less than <code>lastPersistTime + persistPeriod</code>.
- * </li>
- * </ul>
- *
- * @throws MBeanException if persistence is not supported,
- * or another exception is thrown
- * (which this then wraps).
- * @throws RuntimeOperationsException if the persistence
- * mechanism throws an
- * exception.
- * @throws InstanceNotFoundException if the persistent
- * store can not be found
- * or accessed.
- */
- void store()
- throws MBeanException, RuntimeOperationsException,
- InstanceNotFoundException;
-
-}
diff --git a/libjava/classpath/javax/management/Query.java b/libjava/classpath/javax/management/Query.java
deleted file mode 100644
index 7cd0270..0000000
--- a/libjava/classpath/javax/management/Query.java
+++ /dev/null
@@ -1,1900 +0,0 @@
-/* Query.java -- Static methods for query construction.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Provides static methods for constructing queries. Queries
- * may be used to list and enumerate management beans, via
- * the {@link MBeanServer}. By using the methods in this class,
- * complex queries can be created from their more basic
- * components.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class Query
-{
-
- /**
- * A code representing the {@link #plus(ValueExp, ValueExp)
- * query to be used in serialization.
- */
- public static final int PLUS = 0;
-
- /**
- * A code representing the {@link #minus(ValueExp, ValueExp)
- * query to be used in serialization.
- */
- public static final int MINUS = 1;
-
- /**
- * A code representing the {@link #times(ValueExp, ValueExp)
- * query to be used in serialization.
- */
- public static final int TIMES = 2;
-
- /**
- * A code representing the {@link #div(ValueExp, ValueExp)
- * query to be used in serialization.
- */
- public static final int DIV = 3;
-
- /**
- * A code representing the {@link #gt(ValueExp, ValueExp)
- * query to be used in serialization.
- */
- public static final int GT = 0;
-
- /**
- * A code representing the {@link #lt(ValueExp, ValueExp)
- * query to be used in serialization.
- */
- public static final int LT = 1;
-
- /**
- * A code representing the {@link #ge(ValueExp, ValueExp)
- * query to be used in serialization.
- */
- public static final int GE = 2;
-
- /**
- * A code representing the {@link #le(ValueExp, ValueExp)
- * query to be used in serialization.
- */
- public static final int LE = 3;
-
- /**
- * A code representing the {@link #eq(ValueExp, ValueExp)
- * query to be used in serialization.
- */
- public static final int EQ = 4;
-
- /**
- * Returns a query expression formed from the conjunction
- * of the two supplied query expressions.
- *
- * @param q1 the first query expression.
- * @param q2 the second query expression.
- * @return a query expression representing q1 && q2. This
- * will be serialized as the non-public class
- * {@link AndQueryExp}.
- */
- public static QueryExp and(QueryExp q1, QueryExp q2)
- {
- return new AndQueryExp(q1, q2);
- }
-
- /**
- * Returns a query expression which checks that an
- * attribute value held by the specified
- * {@link AttributeValueExp} contains the string
- * specified by the given {@link StringValueExp}.
- *
- * @param attrib the attribute to match.
- * @param string the substring to find.
- * @return a query expression representing
- * <code>attrib.matches("*" + string + "*")</code>.
- * This will be serialized as the non-public class
- * {@link MatchQueryExp}.
- */
- public static QueryExp anySubString(AttributeValueExp attrib,
- StringValueExp string)
- {
- return new MatchQueryExp(attrib, "*" + string.getValue() + "*");
- }
-
- /**
- * Returns a value expression for the value of the
- * named attribute. Evaluating this using an
- * {@link ObjectName} involves an underlying call
- * to {@link MBeanServer#getAttribute(ObjectName,String)}.
- *
- * @param name the name of the attribute.
- * @return a value expression which returns the value
- * of the named attribute when applied.
- */
- public static AttributeValueExp attr(String name)
- {
- return new AttributeValueExp(name);
- }
-
- /**
- * Returns a value expression for the value of the
- * named attribute from the specified class. Evaluating
- * this using an {@link ObjectName} involves an underlying call
- * to both {@link MBeanServer#getObjectInstance(ObjectName)} and
- * {@link MBeanServer#getAttribute(ObjectName,String)}.
- *
- * @param className the class containing the attribute.
- * @param name the name of the attribute.
- * @return a value expression which returns the value
- * of the named attribute when applied.
- * This will be serialized as the non-public class
- * {@link QualifiedAttributeValueExp}.
- */
- public static AttributeValueExp attr(String className,
- String name)
- {
- return new QualifiedAttributeValueExp(className, name);
- }
-
- /**
- * Returns a query expression representing the constraint
- * that the value, <code>v1</code>, lies between <code>v2</code>
- * and <code>v3</code>.
- *
- * @param v1 the value to compare against the boundaries.
- * @param v2 the lower boundary.
- * @param v3 the upper boundary.
- * @return a query expression representing a comparison
- * of <code>v1</code> against <code>v2</code>
- * and <code>v3</code>. It returns true if
- * <code>v2 <= v1 <= v3</code>. This
- * will be serialized as the non-public class
- * {@link BetweenQueryExp}.
- */
- public static QueryExp between(ValueExp v1, ValueExp v2,
- ValueExp v3)
- {
- return new BetweenQueryExp(v1, v2, v3);
- }
-
- /**
- * Returns a value expression which evaluates to the name of
- * the class of the bean when applied. Associating the expression
- * with an {@link ObjectName} involves an underlying call
- * to both {@link MBeanServer#getObjectInstance(ObjectName)}
- * to obtain this information.
- *
- * @return a value expression which returns the class name
- * of the bean to which it is applied.
- * This will be serialized as the non-public class
- * {@link ClassAttributeValueExp}.
- */
- public static AttributeValueExp classattr()
- {
- return new ClassAttributeValueExp();
- }
-
- /**
- * Returns a value expression which evaluates to the result of
- * dividing <code>v1</code> by <code>v2</code>.
- *
- * @param v1 the left-hand operand.
- * @param v2 the right-hand operand.
- * @return a value expression which returns the result of
- * the division when applied. This will be serialized
- * as the non-public class {@link BinaryOpValueExp}
- * with an operation of {@link #DIV}.
- */
- public static ValueExp div(ValueExp v1, ValueExp v2)
- {
- return new BinaryOpValueExp(DIV, v1, v2);
- }
-
- /**
- * Returns a query expression which evaluates to the result of
- * comparing <code>v1</code> to <code>v2</code> for equality.
- *
- * @param v1 the left-hand operand.
- * @param v2 the right-hand operand.
- * @return a value expression which returns the result of
- * the comparison when applied. This will be serialized
- * as the non-public class {@link BinaryRelQueryExp}
- * with an operation of {@link #EQ}.
- */
- public static QueryExp eq(ValueExp v1, ValueExp v2)
- {
- return new BinaryRelQueryExp(EQ, v1, v2);
- }
-
- /**
- * Returns a query expression which checks that an
- * attribute value held by the specified
- * {@link AttributeValueExp} ends with the string
- * specified by the given {@link StringValueExp}.
- *
- * @param attrib the attribute to match.
- * @param string the substring to find.
- * @return a query expression representing
- * <code>attrib.matches("*" + string)</code>.
- * This will be serialized as the non-public class
- * {@link MatchQueryExp}.
- */
- public static QueryExp finalSubString(AttributeValueExp attrib,
- StringValueExp string)
- {
- return new MatchQueryExp(attrib, "*" + string.getValue());
- }
-
- /**
- * Returns a query expression which evaluates to the result of
- * comparing <code>v1</code> to <code>v2</code> to see if
- * <code>v1</code> is greater than or equal to <code>v2</code>.
- *
- * @param v1 the left-hand operand.
- * @param v2 the right-hand operand.
- * @return a value expression which returns the result of
- * the comparison when applied. This will be serialized
- * as the non-public class {@link BinaryRelQueryExp}
- * with an operation of {@link #GE}.
- */
- public static QueryExp geq(ValueExp v1, ValueExp v2)
- {
- return new BinaryRelQueryExp(GE, v1, v2);
- }
-
- /**
- * Returns a query expression which evaluates to the result of
- * comparing <code>v1</code> to <code>v2</code> to see if
- * <code>v1</code> is greater than <code>v2</code>.
- *
- * @param v1 the left-hand operand.
- * @param v2 the right-hand operand.
- * @return a value expression which returns the result of
- * the comparison when applied. This will be serialized
- * as the non-public class {@link BinaryRelQueryExp}
- * with an operation of {@link #GT}.
- */
- public static QueryExp gt(ValueExp v1, ValueExp v2)
- {
- return new BinaryRelQueryExp(GT, v1, v2);
- }
-
- /**
- * Returns a query expression representing the constraint
- * that the value, <code>v</code>, is a member of the
- * list, <code>vlist</code>.
- *
- * @param v the value to look for in the list.
- * @param vlist the list of allowed values.
- * @return a query expression representing a membership check
- * of <code>v</code> against the list, <code>vlist</code>.
- * This will be serialized as the non-public class
- * {@link InQueryExp}.
- */
- public static QueryExp in(ValueExp v, ValueExp[] vlist)
- {
- return new InQueryExp(v, vlist);
- }
-
- /**
- * Returns a query expression which checks that an
- * attribute value held by the specified
- * {@link AttributeValueExp} starts with the string
- * specified by the given {@link StringValueExp}.
- *
- * @param attrib the attribute to match.
- * @param string the substring to find.
- * @return a query expression representing
- * <code>attrib.matches(string + "*")</code>.
- * This will be serialized as the non-public class
- * {@link MatchQueryExp}.
- */
- public static QueryExp initialSubString(AttributeValueExp attrib,
- StringValueExp string)
- {
- return new MatchQueryExp(attrib, string.getValue() + "*");
- }
-
- /**
- * Returns a query expression which checks that a
- * bean is an instance of the class specified
- * by the given {@link StringValueExp}. Associating the
- * expression with an {@link ObjectName} involves an underlying
- * call to {@link MBeanServer#isInstanceOf(ObjectName, String)}
- * using the value of <code>((StringValueExp)
- * className.apply(objectName)).getValue()</code> as the
- * class name.
- *
- * @param className the name of the class which the bean
- * should be an instance of.
- * @return a query expression representing
- * the inheritance check. This will be serialized
- * as the non-public class {@link InstanceOfQueryExp}.
- * @since 1.6
- */
- public static QueryExp isInstanceOf(StringValueExp className)
- {
- return new InstanceOfQueryExp(className);
- }
-
- /**
- * Returns a query expression which evaluates to the result of
- * comparing <code>v1</code> to <code>v2</code> to see if
- * <code>v1</code> is less than or equal to <code>v2</code>.
- *
- * @param v1 the left-hand operand.
- * @param v2 the right-hand operand.
- * @return a value expression which returns the result of
- * the comparison when applied. This will be serialized
- * as the non-public class {@link BinaryRelQueryExp}
- * with an operation of {@link #LE}.
- */
- public static QueryExp leq(ValueExp v1, ValueExp v2)
- {
- return new BinaryRelQueryExp(LE, v1, v2);
- }
-
- /**
- * Returns a query expression which evaluates to the result of
- * comparing <code>v1</code> to <code>v2</code> to see if
- * <code>v1</code> is less than <code>v2</code>.
- *
- * @param v1 the left-hand operand.
- * @param v2 the right-hand operand.
- * @return a value expression which returns the result of
- * the comparison when applied. This will be serialized
- * as the non-public class {@link BinaryRelQueryExp}
- * with an operation of {@link #LT}.
- */
- public static QueryExp lt(ValueExp v1, ValueExp v2)
- {
- return new BinaryRelQueryExp(LT, v1, v2);
- }
-
- /**
- * <p>
- * Returns a query expression which checks that an
- * attribute value matches the pattern
- * specified by the given {@link StringValueExp}.
- * The pattern uses file-globbing syntax:
- * </p>
- * <ul>
- * <li>'*' stands for any number of arbitrary characters.</li>
- * <li>'?' stands for a single arbitrary characters.</li>
- * <li>An expression within '[' and ']' specify a character
- * class.</li>
- * <ul>
- * <li>A range of characters can be specified by separating
- * the start and end character with '-'.</li>
- * <li>The complement of the class can be obtained by using
- * '!' as the first character of the class.</li>
- * <li>'?', '*' and '[' can occur freely within the class. '-'
- * may occur as the first or last character. '!' may occur
- * normally in any position other than the first. ']' may occur
- * as the first element of the class.</li>
- * </ul>
- * <li>'?', '*' and '[' may be escaped using a backslash
- * character, '\'.</li>
- * </ul>
- *
- * @param attrib the attribute to match.
- * @param string the substring to find.
- * @return a query expression representing the result of
- * matching the pattern against the evaluated
- * value of the attribute. This will be serialized
- * as the non-public class {@link MatchQueryExp}.
- */
- public static QueryExp match(AttributeValueExp attrib,
- StringValueExp string)
- {
- return new MatchQueryExp(attrib, string.getValue());
- }
-
- /**
- * Returns a value expression which evaluates to the result of
- * subtracting <code>v2</code> from <code>v1</code>.
- *
- * @param v1 the left-hand operand.
- * @param v2 the right-hand operand.
- * @return a value expression which returns the result of
- * the subtraction when applied. This will be serialized
- * as the non-public class {@link BinaryOpValueExp}
- * with an operation of {@link #MINUS}.
- */
- public static ValueExp minus(ValueExp v1, ValueExp v2)
- {
- return new BinaryOpValueExp(MINUS, v1, v2);
- }
-
- /**
- * Returns a query expression representing the negation
- * of the specified query expression.
- *
- * @param q the query to negate.
- * @return a query expression representing the negation of
- * <code>q</code>. This will be serialized as the
- * non-public class {@link NotQueryExp}.
- */
- public static QueryExp not(QueryExp q)
- {
- return new NotQueryExp(q);
- }
-
- /**
- * Returns a query expression formed from the disjunction
- * of the two supplied query expressions.
- *
- * @param q1 the first query expression.
- * @param q2 the second query expression.
- * @return a query expression representing q1 || q2. This
- * will be serialized as the non-public class
- * {@link OrQueryExp}.
- */
- public static QueryExp or(QueryExp q1, QueryExp q2)
- {
- return new OrQueryExp(q1, q2);
- }
-
- /**
- * Returns a value expression which evaluates to the result of
- * adding <code>v1</code> to <code>v2</code>.
- *
- * @param v1 the left-hand operand.
- * @param v2 the right-hand operand.
- * @return a value expression which returns the result of
- * the addition when applied. This will be serialized
- * as the non-public class {@link BinaryOpValueExp}
- * with an operation of {@link #PLUS}.
- */
- public static ValueExp plus(ValueExp v1, ValueExp v2)
- {
- return new BinaryOpValueExp(PLUS, v1, v2);
- }
-
- /**
- * Returns a value expression which evaluates to the result of
- * multiplying <code>v1</code> by <code>v2</code>.
- *
- * @param v1 the left-hand operand.
- * @param v2 the right-hand operand.
- * @return a value expression which returns the result of
- * the multiplication when applied. This will be serialized
- * as the non-public class {@link BinaryOpValueExp}
- * with an operation of {@link #TIMES}.
- */
- public static ValueExp times(ValueExp v1, ValueExp v2)
- {
- return new BinaryOpValueExp(TIMES, v1, v2);
- }
-
- /**
- * Returns a value expression wrapping the specified value.
- *
- * @param val the boolean value to wrap.
- * @return a value expression wrapping <code>val</code>. This
- * will be serialized as the non-public class
- * {@link BooleanValueExp}.
- */
- public static ValueExp value(boolean val)
- {
- return new BooleanValueExp(val);
- }
-
- /**
- * Returns a value expression wrapping the specified value.
- *
- * @param val the double value to wrap.
- * @return a value expression wrapping <code>val</code>. This
- * will be serialized as the non-public class
- * {@link NumericValueExp}.
- */
- public static ValueExp value(double val)
- {
- return new NumericValueExp(val);
- }
-
- /**
- * Returns a value expression wrapping the specified value.
- *
- * @param val the float value to wrap.
- * @return a value expression wrapping <code>val</code>. This
- * will be serialized as the non-public class
- * {@link NumericValueExp}.
- */
- public static ValueExp value(float val)
- {
- return new NumericValueExp(val);
- }
-
- /**
- * Returns a value expression wrapping the specified value.
- *
- * @param val the integer value to wrap.
- * @return a value expression wrapping <code>val</code>. This
- * will be serialized as the non-public class
- * {@link NumericValueExp}.
- */
- public static ValueExp value(int val)
- {
- return new NumericValueExp(val);
- }
-
- /**
- * Returns a value expression wrapping the specified value.
- *
- * @param val the long value to wrap.
- * @return a value expression wrapping <code>val</code>. This
- * will be serialized as the non-public class
- * {@link NumericValueExp}.
- */
- public static ValueExp value(long val)
- {
- return new NumericValueExp(val);
- }
-
- /**
- * Returns a value expression wrapping the specified value.
- *
- * @param val the {@link Number} value to wrap.
- * @return a value expression wrapping <code>val</code>. This
- * will be serialized as the non-public class
- * {@link NumericValueExp}.
- */
- public static ValueExp value(Number val)
- {
- return new NumericValueExp(val);
- }
-
- /**
- * Returns a value expression wrapping the specified string.
- *
- * @param val the {@link String} to wrap.
- * @return a {@link StringValueExp} wrapping <code>val</code>.
- */
- public static StringValueExp value(String val)
- {
- return new StringValueExp(val);
- }
-
- /**
- * Representation of the conjunction formed using
- * {@link #and(QueryExp, QueryExp).
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
- private static final class AndQueryExp
- extends QueryEval
- implements QueryExp
- {
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = -1081892073854801359L;
-
- /**
- * The first operand.
- */
- private QueryExp exp1;
-
- /**
- * The second operand.
- */
- private QueryExp exp2;
-
- /**
- * Constructs a new {@link AndQueryExp} using
- * the two specified operands.
- *
- * @param exp1 the first query expression.
- * @param exp2 the second query expression.
- */
- public AndQueryExp(QueryExp exp1, QueryExp exp2)
- {
- this.exp1 = exp1;
- this.exp2 = exp2;
- }
-
- /**
- * Returns the conjunction of the two query
- * expressions.
- *
- * @param name the {@link ObjectName} to apply
- * the query to.
- * @return the conjunction of applying the name
- * to both operands.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the query.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the query.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the query.
- * @throws InvalidApplicationException if the query is applied
- * to the wrong type of bean.
- */
- public boolean apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- return exp1.apply(name) && exp2.apply(name);
- }
-
- }
-
- /**
- * Representation of a query that matches an
- * attribute's value against a given pattern.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
- private static final class MatchQueryExp
- extends QueryEval
- implements QueryExp
- {
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = -7156603696948215014L;
-
- /**
- * The attribute to match against.
- */
- private AttributeValueExp exp;
-
- /**
- * The pattern to be matched.
- */
- private String pattern;
-
- /**
- * Constructs a new {@link MatchQueryExp} using
- * the specified attribute value and pattern.
- *
- * @param exp the attribute value expression.
- * @param pattern the pattern.
- */
- public MatchQueryExp(AttributeValueExp exp,
- String pattern)
- {
- this.exp = exp;
- this.pattern = pattern;
- }
-
- /**
- * Returns the result of matching the attribute
- * value against the pattern.
- *
- * @param name the {@link ObjectName} to apply
- * the query to.
- * @return the result of the match.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the query.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the query.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the query.
- * @throws InvalidApplicationException if the query is applied
- * to the wrong type of bean.
- */
- public boolean apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- String val = ((StringValueExp) exp.apply(name)).getValue();
- int valPos = 0;
- int fallback = -1;
- int fallbackP = -1;
- boolean backslash = false;
- for (int a = 0; a < pattern.length(); ++a)
- {
- boolean matched = false;
- int next = pattern.codePointAt(a);
- if (!backslash)
- {
- if (next == '?' && valPos < val.length())
- {
- ++valPos;
- matched = true;
- }
- else if (next == '*')
- {
- fallback = valPos;
- fallbackP = a;
- matched = true;
- }
- else if (next == '[' && valPos < val.length())
- {
- boolean negated = false;
- int b = a + 1;
- int classChar = pattern.codePointAt(b);
- do
- {
- if (classChar == '!' && b == a + 1)
- negated = true;
- else if (pattern.codePointAt(b + 1) == '-' &&
- pattern.codePointAt(b + 2) != ']')
- {
- if (classChar > pattern.codePointAt(b + 2))
- throw new BadStringOperationException("Invalid range: " +
- classChar + " to " +
- pattern.codePointAt(b+2));
- for (int c = classChar; c <= pattern.codePointAt(b+2); ++c)
- if (val.codePointAt(valPos) == c)
- matched = true;
- b = b + 2;
- }
- else if (val.codePointAt(valPos) == classChar)
- matched = true;
- ++b;
- classChar = pattern.codePointAt(b);
- } while (classChar != ']');
- if (negated)
- matched = !matched;
- ++valPos;
- a = b;
- }
- else if (next == '\\')
- backslash = true;
- else if (valPos < val.length() && next == val.codePointAt(valPos))
- {
- matched = true;
- ++valPos;
- }
- }
- else
- {
- backslash = false;
- if (valPos < val.length() && next == val.codePointAt(valPos))
- {
- matched = true;
- ++valPos;
- }
- }
- if (!matched)
- if (fallback != -1)
- {
- ++fallback;
- valPos = fallback;
- a = fallbackP;
- if (valPos == val.length())
- return false;
- continue;
- }
- else
- return false;
- }
- return true;
- }
- }
-
- /**
- * Representation of the retrieval of an attribute
- * value from a certain class for {@link #attr(String,String)}.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
- private static final class QualifiedAttributeValueExp
- extends AttributeValueExp
- {
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = 8832517277410933254L;
-
- /**
- * The name of the class from which the attribute is taken.
- */
- private String className;
-
- /**
- * Constructs a new {@link QualifiedAttributeValueExp} using
- * the specified class name and attribute name.
- *
- * @param className the class name.
- * @param name the attribute name.
- */
- public QualifiedAttributeValueExp(String className, String name)
- {
- super(name);
- this.className = className;
- }
-
- /**
- * Applies the {@link AttributeValueExp} to the specified
- * management bean by checking that the attribute will be
- * obtained from the correct class (by a class to
- * {@link MBeanServer#getObjectInstance(ObjectName)} and
- * then obtaining the attribute value from the
- * {@link MBeanServer}, using it to create a
- * {@link StringValueExp}.
- *
- * @param name the {@link ObjectName} of the bean to obtain
- * the value from.
- * @return a {@link StringValueExp} containing the result.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the value expression.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the value expression.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the value expression.
- * @throws InvalidApplicationException if the value expression is applied
- * to the wrong type of bean.
- */
- public ValueExp apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- try
- {
- if (!(QueryEval.getMBeanServer().getObjectInstance(name).getClassName().equals(className)))
- throw new BadAttributeValueExpException("The value is not from " +
- "the correct class.");
- }
- catch (InstanceNotFoundException e)
- {
- throw (BadAttributeValueExpException)
- new BadAttributeValueExpException("The named bean is not registered.").initCause(e);
- }
- return super.apply(name);
- }
-
- }
-
- /**
- * Representation of the comparison of a value with
- * a pair of bounds formed using
- * {@link #between(ValueExp, ValueExp, ValueExp).
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
- private static final class BetweenQueryExp
- extends QueryEval
- implements QueryExp
- {
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = -2933597532866307444L;
-
- /**
- * The value to compare.
- */
- private ValueExp exp1;
-
- /**
- * The lower boundary.
- */
- private ValueExp exp2;
-
- /**
- * The upper boundary.
- */
- private ValueExp exp3;
-
- /**
- * Constructs a new {@link BetweenQueryExp} using
- * the specified comparison value and the given
- * bounds.
- *
- * @param exp1 the value to compare.
- * @param exp2 the lower bound.
- * @param exp3 the upper bound.
- */
- public BetweenQueryExp(ValueExp exp1, ValueExp exp2,
- ValueExp exp3)
- {
- this.exp1 = exp1;
- this.exp2 = exp2;
- this.exp3 = exp3;
- }
-
- /**
- * Returns the result of the comparison between
- * the value and the two bounds.
- *
- * @param name the {@link ObjectName} to apply
- * the query to.
- * @return the result of the comparison.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the query.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the query.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the query.
- * @throws InvalidApplicationException if the query is applied
- * to the wrong type of bean.
- */
- public boolean apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- String v1 = exp1.apply(name).toString();
- String v2 = exp2.apply(name).toString();
- String v3 = exp3.apply(name).toString();
- return v1.compareTo(v2) >= 0 && v1.compareTo(v3) <= 0;
- }
-
- }
-
- /**
- * Representation of the retrieval of the name of
- * a bean's class for {@link #classattr()}.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
- private static final class ClassAttributeValueExp
- extends AttributeValueExp
- {
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = -1081892073854801359L;
-
- /**
- * Obtains the name of the specified bean's class using a call
- * to {@link MBeanServer#getObjectInstance(ObjectName)}.
- *
- * @param name the {@link ObjectName} of the bean to obtain
- * the class name from.
- * @return a {@link StringValueExp} containing the result.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the value expression.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the value expression.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the value expression.
- * @throws InvalidApplicationException if the value expression is applied
- * to the wrong type of bean.
- */
- public ValueExp apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- try
- {
- return new StringValueExp(QueryEval.getMBeanServer().getObjectInstance(name).getClassName());
- }
- catch (InstanceNotFoundException e)
- {
- throw (BadAttributeValueExpException)
- new BadAttributeValueExpException("The named bean is not registered.").initCause(e);
- }
- }
-
- }
-
- /**
- * Representation of a binary operation formed using
- * {@link #div(ValueExp, ValueExp), {@link #plus(ValueExp,ValueExp)},
- * {@link #minus(ValueExp, ValueExp) or
- * {@link #times(ValueExp, ValueExp)}.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
- private static final class BinaryOpValueExp
- extends QueryEval
- implements ValueExp
- {
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = 1216286847881456786L;
-
- /**
- * The operation to perform.
- */
- private int op;
-
- /**
- * The left-hand operand.
- */
- private ValueExp exp1;
-
- /**
- * The right-hand operand.
- */
- private ValueExp exp2;
-
- /**
- * Constructs a new {@link BinaryOpValueExp} using
- * the specified operation and the two values supplied.
- *
- * @param op the operation to perform.
- * @param exp1 the left-hand operand.
- * @param exp2 the right-hand operand.
- */
- public BinaryOpValueExp(int op, ValueExp exp1, ValueExp exp2)
- {
- this.op = op;
- this.exp1 = exp1;
- this.exp2 = exp2;
- }
-
- /**
- * Returns the result of performing the operation on
- * <code>exp1</code> and <code>exp2</code>.
- *
- * @param name the {@link ObjectName} to apply
- * the query to.
- * @return the result of the operation.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the query.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the query.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the query.
- * @throws InvalidApplicationException if the query is applied
- * to the wrong type of bean.
- */
- public ValueExp apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- NumericValueExp v1 = (NumericValueExp) exp1.apply(name);
- NumericValueExp v2 = (NumericValueExp) exp2.apply(name);
- switch (op)
- {
- case PLUS:
- return v1.plus(v2);
- case MINUS:
- return v1.minus(v2);
- case TIMES:
- return v1.times(v2);
- case DIV:
- return v1.div(v2);
- default:
- throw new BadBinaryOpValueExpException(this);
- }
- }
-
- /**
- * Returns a textual representation of the operation.
- *
- * @return a textual version of the operation.
- */
- public String toString()
- {
- String opS;
- switch (op)
- {
- case PLUS:
- opS = "+";
- break;
- case MINUS:
- opS = "-";
- break;
- case TIMES:
- opS = "x";
- break;
- case DIV:
- opS = "/";
- break;
- default:
- opS = "?";
- }
- return exp1 + " " + opS + " " + exp2;
- }
- }
-
- /**
- * Representation of a binary operation formed using
- * {@link #eq(ValueExp, ValueExp), {@link #geq(ValueExp, ValueExp)},
- * {@link #leq(ValueExp, ValueExp), {@link #gt(ValueExp, ValueExp)}
- * or {@link #lt(ValueExp, ValueExp)}.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
- private static final class BinaryRelQueryExp
- extends QueryEval
- implements QueryExp
- {
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = -5690656271650491000L;
-
- /**
- * The operation to perform.
- */
- private int relOp;
-
- /**
- * The left-hand operand.
- */
- private ValueExp exp1;
-
- /**
- * The right-hand operand.
- */
- private ValueExp exp2;
-
- /**
- * Constructs a new {@link BinaryRelQueryExp} using
- * the specified operation and the two values supplied.
- *
- * @param relOp the operation to perform.
- * @param exp1 the left-hand operand.
- * @param exp2 the right-hand operand.
- */
- public BinaryRelQueryExp(int relOp, ValueExp exp1, ValueExp exp2)
- {
- this.relOp = relOp;
- this.exp1 = exp1;
- this.exp2 = exp2;
- }
-
- /**
- * Returns the result of performing the operation on
- * <code>exp1</code> and <code>exp2</code>.
- *
- * @param name the {@link ObjectName} to apply
- * the query to.
- * @return the result of the comparison.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the query.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the query.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the query.
- * @throws InvalidApplicationException if the query is applied
- * to the wrong type of bean.
- */
- public boolean apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- String v1 = exp1.apply(name).toString();
- String v2 = exp2.apply(name).toString();
- switch (relOp)
- {
- case EQ:
- return v1.equals(v2);
- case GT:
- return v1.compareTo(v2) > 0;
- case GE:
- return v1.compareTo(v2) >= 0;
- case LE:
- return v1.compareTo(v2) <= 0;
- case LT:
- return v1.compareTo(v2) < 0;
- default:
- throw new BadStringOperationException("Invalid operator: " + relOp);
- }
- }
-
- /**
- * Returns a textual representation of the operation.
- *
- * @return a textual version of the operation.
- */
- public String toString()
- {
- String op;
- switch (relOp)
- {
- case EQ:
- op = "=";
- break;
- case GT:
- op = ">";
- break;
- case GE:
- op = ">=";
- break;
- case LE:
- op = "<=";
- break;
- case LT:
- op = "<";
- break;
- default:
- op = "?";
- }
- return exp1 + " " + op + " " + exp2;
- }
- }
-
- /**
- * Representation of the comparison of a value with
- * the members of a list formed using
- * {@link #in(ValueExp, ValueExp[]).
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
- private static final class InQueryExp
- extends QueryEval
- implements QueryExp
- {
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = -5801329450358952434L;
-
- /**
- * The value to look for.
- */
- private ValueExp val;
-
- /**
- * The array to search.
- */
- private ValueExp[] valueList;
-
- /**
- * Constructs a new {@link InQueryExp} using
- * the specified comparison value and the given
- * list.
- *
- * @param val the value to compare.
- * @param valueList the list of values.
- */
- public InQueryExp(ValueExp val, ValueExp[] valueList)
- {
- this.val = val;
- this.valueList = valueList;
- }
-
- /**
- * Returns the result of the comparison between
- * the value and the list of allowed values.
- *
- * @param name the {@link ObjectName} to apply
- * the query to.
- * @return the result of the comparison.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the query.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the query.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the query.
- * @throws InvalidApplicationException if the query is applied
- * to the wrong type of bean.
- */
- public boolean apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- String v = val.apply(name).toString();
- for (ValueExp vl : valueList)
- if (v.equals(vl.apply(name).toString()))
- return true;
- return false;
- }
-
- }
-
- /**
- * Representation of the inheritance check on a
- * bean for {@link #isInstanceOf(StringValueExp)}.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.6
- */
- private static final class InstanceOfQueryExp
- extends QueryEval
- implements QueryExp
- {
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = -1081892073854801359L;
-
- /**
- * The name of the class from which the attribute is taken.
- */
- private StringValueExp classNameValue;
-
- /**
- * Constructs a new {@link InstanceOfQueryExp} using
- * the specified class name.
- *
- * @param classNameValue the class name.
- */
- public InstanceOfQueryExp(StringValueExp classNameValue)
- {
- this.classNameValue = classNameValue;
- }
-
- /**
- * Checks that the bean specified by the supplied
- * {@link ObjectName} is of the correct class
- * using {@link MBeanServer#isInstanceOf(ObjectName,String)}.
- * where the string is obtained by evaluating
- * <code>classNameValue</code>.
- *
- * @param name the {@link ObjectName} of the bean to obtain
- * the value from.
- * @return true if the bean is an instance of the class.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the value expression.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the value expression.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the value expression.
- * @throws InvalidApplicationException if the value expression is applied
- * to the wrong type of bean.
- */
- public boolean apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- try
- {
- String className = ((StringValueExp)
- classNameValue.apply(name)).getValue();
- return QueryEval.getMBeanServer().isInstanceOf(name, className);
- }
- catch (InstanceNotFoundException e)
- {
- throw (BadAttributeValueExpException)
- new BadAttributeValueExpException("The named bean is not registered.").initCause(e);
- }
- }
-
- }
-
- /**
- * Representation of the negation of a query formed using
- * {@link #not(QueryExp).
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
- private static final class NotQueryExp
- extends QueryEval
- implements QueryExp
- {
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = 5269643775896723397L;
-
- /**
- * The expression to negate.
- */
- private QueryExp exp;
-
- /**
- * Constructs a new {@link NotQueryExp} using
- * the specified query expression.
- *
- * @param exp the expression to negate.
- */
- public NotQueryExp(QueryExp exp)
- {
- this.exp = exp;
- }
-
- /**
- * Returns the result of the negation.
- *
- * @param name the {@link ObjectName} to apply
- * the query to.
- * @return the result of the negation.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the query.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the query.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the query.
- * @throws InvalidApplicationException if the query is applied
- * to the wrong type of bean.
- */
- public boolean apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- return !(exp.apply(name));
- }
-
- }
-
- /**
- * Representation of the disjunction formed using
- * {@link #or(QueryExp, QueryExp).
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
- private static final class OrQueryExp
- extends QueryEval
- implements QueryExp
- {
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = 2962973084421716523L;
-
- /**
- * The first operand.
- */
- private QueryExp exp1;
-
- /**
- * The second operand.
- */
- private QueryExp exp2;
-
- /**
- * Constructs a new {@link OrQueryExp} using
- * the two specified operands.
- *
- * @param exp1 the first query expression.
- * @param exp2 the second query expression.
- */
- public OrQueryExp(QueryExp exp1, QueryExp exp2)
- {
- this.exp1 = exp1;
- this.exp2 = exp2;
- }
-
- /**
- * Returns the disjunction of the two query
- * expressions.
- *
- * @param name the {@link ObjectName} to apply
- * the query to.
- * @return the disjunction of applying the name
- * to both operands.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the query.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the query.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the query.
- * @throws InvalidApplicationException if the query is applied
- * to the wrong type of bean.
- */
- public boolean apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- return exp1.apply(name) || exp2.apply(name);
- }
-
- }
-
- /**
- * Representation of a boolean being used as an argument
- * to a relational constraint, formed using
- * {@link #value(boolean)}.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
- private static final class BooleanValueExp
- extends QueryEval
- implements ValueExp
- {
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = 7754922052666594581L;
-
- /**
- * The boolean value.
- */
- private boolean val;
-
- /**
- * Constructs a new {@link BooleanValueExp} using the
- * specified value.
- *
- * @param val the boolean value used for this expression.
- */
- public BooleanValueExp(boolean val)
- {
- this.val = val;
- }
-
- /**
- * Applies the {@link BooleanValueExp} to the specified
- * management bean by simply returning the value.
- *
- * @param name the {@link ObjectName} of the bean.
- * @return the {@link BooleanValueExp} itself.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the value expression.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the value expression.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the value expression.
- * @throws InvalidApplicationException if the value expression is applied
- * to the wrong type of bean.
- */
- public ValueExp apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- return this;
- }
-
- /**
- * Returns the value as a string.
- *
- * @return the value in textual form.
- */
- public String toString()
- {
- return Boolean.toString(val);
- }
-
- }
-
- /**
- * Representation of a number being used as an argument
- * to a relational constraint, formed using
- * {@link #value(double)}, {@link #value(float)},
- * {@link #value(int)}, {@link #value(long)} or
- * {@link #value(Number)}.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
- private static final class NumericValueExp
- extends QueryEval
- implements ValueExp
- {
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = -4679739485102359104L;
-
- /**
- * The numeric value.
- */
- private Number val;
-
- /**
- * Constructs a new {@link NumericValueExp} using the
- * specified value.
- *
- * @param val the numeric value used for this expression.
- */
- public NumericValueExp(Number val)
- {
- this.val = val;
- }
-
- /**
- * Applies the {@link NumericValueExp} to the specified
- * management bean by simply returning the value.
- *
- * @param name the {@link ObjectName} of the bean.
- * @return the {@link NumericValueExp} itself.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the value expression.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the value expression.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the value expression.
- * @throws InvalidApplicationException if the value expression is applied
- * to the wrong type of bean.
- */
- public ValueExp apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- return this;
- }
-
- /**
- * Returns the value.
- */
- public Number getValue()
- {
- return val;
- }
-
- /**
- * Returns the value as a string.
- *
- * @return the value in textual form.
- */
- public String toString()
- {
- return val.toString();
- }
-
- /**
- * Return the result of adding the specified
- * {@link NumericValueExp} to this one.
- *
- * @param o the value to add.
- * @return the result of the addition.
- */
- public NumericValueExp plus(NumericValueExp o)
- {
- Number v = o.getValue();
- if (val instanceof Double)
- {
- double d = val.doubleValue();
- if (v instanceof Double)
- return new NumericValueExp(d + v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(d + v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(d + v.longValue());
- else
- return new NumericValueExp(d + v.intValue());
- }
- else if (val instanceof Float)
- {
- float f = val.floatValue();
- if (v instanceof Double)
- return new NumericValueExp(f + v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(f + v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(f + v.longValue());
- else
- return new NumericValueExp(f + v.intValue());
- }
- else if (val instanceof Long)
- {
- long l = val.longValue();
- if (v instanceof Double)
- return new NumericValueExp(l + v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(l + v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(l + v.longValue());
- else
- return new NumericValueExp(l + v.intValue());
- }
- int i = val.intValue();
- if (v instanceof Double)
- return new NumericValueExp(i + v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(i + v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(i + v.longValue());
- else
- return new NumericValueExp(i + v.intValue());
- }
-
- /**
- * Return New NumericValueExp(the result of subtracting the specified
- * {@link NumericValueExp} from this one.
- *
- * @param o the value to subtract.
- * @return new NumericValueExp(the result of the subtraction.
- */
- public NumericValueExp minus(NumericValueExp o)
- {
- Number v = o.getValue();
- if (val instanceof Double)
- {
- double d = val.doubleValue();
- if (v instanceof Double)
- return new NumericValueExp(d - v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(d - v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(d - v.longValue());
- else
- return new NumericValueExp(d - v.intValue());
- }
- else if (val instanceof Float)
- {
- float f = val.floatValue();
- if (v instanceof Double)
- return new NumericValueExp(f - v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(f - v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(f - v.longValue());
- else
- return new NumericValueExp(f - v.intValue());
- }
- else if (val instanceof Long)
- {
- long l = val.longValue();
- if (v instanceof Double)
- return new NumericValueExp(l - v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(l - v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(l - v.longValue());
- else
- return new NumericValueExp(l - v.intValue());
- }
- int i = val.intValue();
- if (v instanceof Double)
- return new NumericValueExp(i - v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(i - v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(i - v.longValue());
- else
- return new NumericValueExp(i - v.intValue());
- }
-
- /**
- * Return New NumericValueExp(the result of multiplying the specified
- * {@link NumericValueExp} to this one.
- *
- * @param o the value to multiply by.
- * @return new NumericValueExp(the result of the multiplication.
- */
- public NumericValueExp times(NumericValueExp o)
- {
- Number v = o.getValue();
- if (val instanceof Double)
- {
- double d = val.doubleValue();
- if (v instanceof Double)
- return new NumericValueExp(d * v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(d * v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(d * v.longValue());
- else
- return new NumericValueExp(d * v.intValue());
- }
- else if (val instanceof Float)
- {
- float f = val.floatValue();
- if (v instanceof Double)
- return new NumericValueExp(f * v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(f * v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(f * v.longValue());
- else
- return new NumericValueExp(f * v.intValue());
- }
- else if (val instanceof Long)
- {
- long l = val.longValue();
- if (v instanceof Double)
- return new NumericValueExp(l * v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(l * v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(l * v.longValue());
- else
- return new NumericValueExp(l * v.intValue());
- }
- int i = val.intValue();
- if (v instanceof Double)
- return new NumericValueExp(i * v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(i * v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(i * v.longValue());
- else
- return new NumericValueExp(i * v.intValue());
- }
-
- /**
- * Return New NumericValueExp(the result of dividing this
- * number by value of the specified
- * {@link NumericValueExp}.
- *
- * @param o the value to divide by.
- * @return new NumericValueExp(the result of the division.
- */
- public NumericValueExp div(NumericValueExp o)
- {
- Number v = o.getValue();
- if (val instanceof Double)
- {
- double d = val.doubleValue();
- if (v instanceof Double)
- return new NumericValueExp(d / v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(d / v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(d / v.longValue());
- else
- return new NumericValueExp(d / v.intValue());
- }
- else if (val instanceof Float)
- {
- float f = val.floatValue();
- if (v instanceof Double)
- return new NumericValueExp(f / v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(f / v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(f / v.longValue());
- else
- return new NumericValueExp(f / v.intValue());
- }
- else if (val instanceof Long)
- {
- long l = val.longValue();
- if (v instanceof Double)
- return new NumericValueExp(l / v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(l / v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(l / v.longValue());
- else
- return new NumericValueExp(l / v.intValue());
- }
- int i = val.intValue();
- if (v instanceof Double)
- return new NumericValueExp(i / v.doubleValue());
- else if (v instanceof Float)
- return new NumericValueExp(i / v.floatValue());
- else if (v instanceof Long)
- return new NumericValueExp(i / v.longValue());
- else
- return new NumericValueExp(i / v.intValue());
- }
-
- }
-
-}
diff --git a/libjava/classpath/javax/management/QueryEval.java b/libjava/classpath/javax/management/QueryEval.java
deleted file mode 100644
index 0b9df61..0000000
--- a/libjava/classpath/javax/management/QueryEval.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/* QueryEval.java -- An evaluation context for a MBean server query.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.io.Serializable;
-
-/**
- * Represents the evaluation context of a {@link MBeanServer}
- * query by retaining the server used on a thread-by-thread
- * basis.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class QueryEval
- implements Serializable
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 2675899265640874796L;
-
- /**
- * Stores the server used, on a
- * thread-by-thread basis.
- */
- private static InheritableThreadLocal<MBeanServer> server =
- new InheritableThreadLocal<MBeanServer>();
-
- /**
- * Returns the {@link MBeanServer} last supplied to the
- * {@link #setMBeanServer(MBeanServer)} method. If this method
- * has not been called for this thread, then the value will be
- * inherited from any parent thread on which the method has
- * been called. If the method has never been called, then
- * <code>null</code> is returned.
- *
- * @return the server.
- * @see #setMBeanServer(MBeanServer)
- */
- public static MBeanServer getMBeanServer()
- {
- return server.get();
- }
-
- /**
- * Sets the {@link MBeanServer} on which the query will be
- * performed. This value is inherited automatically by
- * child threads. This method is only non-static for historical
- * reasons; it makes no use of instance-related values.
- *
- * @param svr the server to use.
- */
- public void setMBeanServer(MBeanServer svr)
- {
- server.set(svr);
- }
-
-}
diff --git a/libjava/classpath/javax/management/QueryExp.java b/libjava/classpath/javax/management/QueryExp.java
deleted file mode 100644
index 778e28f..0000000
--- a/libjava/classpath/javax/management/QueryExp.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/* QueryExp.java -- Represents a query expression.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.io.Serializable;
-
-/**
- * Applies the type of relational constraints seen in the
- * <code>where</code> clauses of databases to an
- * {@link ObjectName}. Instances of this class are usually
- * returned by the static methods of the {@link Query} classes.
- * If a custom implementation is required, it is better to
- * extend the {@link QueryEval} class, rather than simply
- * implementing this interface, in order to ensure that
- * the {@link #setMBeanServer(MBeanServer)} method functions
- * correctly.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface QueryExp
- extends Serializable
-{
-
- /**
- * Applies the query to the specified management bean.
- *
- * @param name the name of the management bean.
- * @return true if the query was applied successfully.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the query.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the query.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the query.
- * @throws InvalidApplicationException if the query is applied
- * to the wrong type of bean.
- */
- boolean apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException;
-
- /**
- * Changes the {@link MBeanServer} on which this query is performed.
- *
- * @param server the new server to use.
- */
- void setMBeanServer(MBeanServer server);
-
-}
diff --git a/libjava/classpath/javax/management/ReflectionException.java b/libjava/classpath/javax/management/ReflectionException.java
deleted file mode 100644
index 96b4ea5..0000000
--- a/libjava/classpath/javax/management/ReflectionException.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/* ReflectionException.java -- A reflection-based management exception.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Represents one of the reflection exceptions thrown by a
- * management bean. When a management bean tries to perform
- * a lookup using the reflection API and encounters an exception,
- * it gets wrapped inside an {@link ReflectionException}.
- * Calling {@link getTargetException()} will return the wrapped
- * exception.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class ReflectionException
- extends JMException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 9170809325636915553L;
-
- /* Sun re-implemented causality -- don't know why, but
- serialization demands we do too... */
-
- /**
- * The target exception.
- *
- * @serial the target exception.
- */
- private Exception exception;
-
- /**
- * Constructs a new <code>ReflectionException</code> wrapping
- * the specified exception.
- *
- * @param e the exception to be wrapped.
- */
- public ReflectionException(Exception e)
- {
- super();
- exception = e;
- }
-
- /**
- * Constructs a new <code>ReflectionException</code> wrapping
- * the specified exception and using the supplied message.
- *
- * @param e the exception to be wrapped.
- * @param message the error message to give to the user.
- */
- public ReflectionException(Exception e, String message)
- {
- super(message);
- exception = e;
- }
-
- /**
- * Returns the true cause of this exception, the wrapped
- * exception.
- *
- * @return the wrapped exception.
- */
- public Throwable getCause()
- {
- return exception;
- }
-
- /**
- * Returns the true cause of this exception, the wrapped
- * exception.
- *
- * @return the wrapped exception.
- */
- public Exception getTargetException()
- {
- return exception;
- }
-
-}
diff --git a/libjava/classpath/javax/management/RuntimeErrorException.java b/libjava/classpath/javax/management/RuntimeErrorException.java
deleted file mode 100644
index f361a2c..0000000
--- a/libjava/classpath/javax/management/RuntimeErrorException.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/* RuntimeErrorException.java -- A user-defined management error.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Represents an arbitrary error thrown by a management
- * bean. When a management bean executes code that causes
- * an error to be thrown, the resulting error is
- * wrapped inside an {@link RuntimeErrorException}. Calling
- * {@link getTargetError()} will return the wrapped
- * exception.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class RuntimeErrorException
- extends JMRuntimeException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 704338937753949796L;
-
- /**
- * The target error.
- *
- * @serial the target error.
- */
- private Error error;
-
- /**
- * Constructs a new <code>RuntimeErrorException</code> wrapping
- * the specified error.
- *
- * @param e the error to be wrapped.
- */
- public RuntimeErrorException(Error e)
- {
- super();
- error = e;
- }
-
- /**
- * Constructs a new <code>RuntimeErrorException</code> wrapping
- * the specified error and using the supplied message.
- *
- * @param e the error to be wrapped.
- * @param message the error message to give to the user.
- */
- public RuntimeErrorException(Error e, String message)
- {
- super(message);
- error = e;
- }
-
- /**
- * Returns the true cause of this error, the wrapped
- * error.
- *
- * @return the wrapped error.
- */
- public Throwable getCause()
- {
- return error;
- }
-
- /**
- * Returns the true cause of this error, the wrapped
- * error.
- *
- * @return the wrapped error.
- */
- public Error getTargetError()
- {
- return error;
- }
-
-}
diff --git a/libjava/classpath/javax/management/RuntimeMBeanException.java b/libjava/classpath/javax/management/RuntimeMBeanException.java
deleted file mode 100644
index 1c8b242..0000000
--- a/libjava/classpath/javax/management/RuntimeMBeanException.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/* RuntimeMBeanException.java -- A user-defined management exception.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Represents an arbitrary runtime exception thrown by a management
- * bean. When a management bean executes code that causes a runtime
- * exception to be thrown, the resulting exception is wrapped inside a
- * {@link RuntimeMBeanException}. Calling {@link
- * getTargetException()} will return the wrapped exception.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class RuntimeMBeanException
- extends JMRuntimeException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 5274912751982730171L;
-
- /**
- * The target exception.
- *
- * @serial the target exception.
- */
- private RuntimeException runtimeException;
-
- /**
- * Constructs a new <code>RuntimeMBeanException</code> wrapping
- * the specified exception.
- *
- * @param e the exception to be wrapped.
- */
- public RuntimeMBeanException(RuntimeException e)
- {
- super();
- runtimeException = e;
- }
-
- /**
- * Constructs a new <code>RuntimeMBeanException</code> wrapping
- * the specified exception and using the supplied message.
- *
- * @param e the exception to be wrapped.
- * @param message the error message to give to the user.
- */
- public RuntimeMBeanException(RuntimeException e, String message)
- {
- super(message);
- runtimeException = e;
- }
-
- /**
- * Returns the true cause of this exception, the wrapped runtime
- * exception.
- *
- * @return the wrapped exception.
- */
- public Throwable getCause()
- {
- return runtimeException;
- }
-
- /**
- * Returns the true cause of this exception, the wrapped runtime
- * exception.
- *
- * @return the wrapped exception.
- */
- public RuntimeException getTargetException()
- {
- return runtimeException;
- }
-
-}
diff --git a/libjava/classpath/javax/management/RuntimeOperationsException.java b/libjava/classpath/javax/management/RuntimeOperationsException.java
deleted file mode 100644
index 8c134f0..0000000
--- a/libjava/classpath/javax/management/RuntimeOperationsException.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/* RuntimeOperationsException.java -- A wrapped run-time exception.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Represents a runtime exception thrown by a management
- * bean operation. When a management bean executes code
- * that causes a runtime exception to be thrown, the
- * resulting exception is wrapped inside an
- * {@link RuntimeOperationsException}. Calling
- * {@link getTargetException()} will return the wrapped
- * exception.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class RuntimeOperationsException
- extends JMRuntimeException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -8408923047489133588L;
-
- /* Sun re-implemented causality -- don't know why, but
- serialization demands we do too... */
-
- /**
- * The target exception.
- *
- * @serial the target exception.
- */
- private RuntimeException runtimeException;
-
- /**
- * Constructs a new <code>RuntimeOperationsException</code>
- * wrapping the specified exception.
- *
- * @param e the exception to be wrapped.
- */
- public RuntimeOperationsException(RuntimeException e)
- {
- super();
- runtimeException = e;
- }
-
- /**
- * Constructs a new <code>RuntimeOperationsException</code>
- * wrapping the specified exception and using the supplied
- * message.
- *
- * @param e the exception to be wrapped.
- * @param message the error message to give to the user.
- */
- public RuntimeOperationsException(RuntimeException e,
- String message)
- {
- super(message);
- runtimeException = e;
- }
-
- /**
- * Returns the true cause of this exception, the wrapped
- * exception.
- *
- * @return the wrapped exception.
- */
- public Throwable getCause()
- {
- return runtimeException;
- }
-
- /**
- * Returns the true cause of this exception, the wrapped
- * exception.
- *
- * @return the wrapped exception.
- */
- public RuntimeException getTargetException()
- {
- return runtimeException;
- }
-
-}
diff --git a/libjava/classpath/javax/management/ServiceNotFoundException.java b/libjava/classpath/javax/management/ServiceNotFoundException.java
deleted file mode 100644
index 1c0d742..0000000
--- a/libjava/classpath/javax/management/ServiceNotFoundException.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/* ServiceNotFoundException.java -- Thrown by invalid values.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Thrown when a requested service is unsupported.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class ServiceNotFoundException
- extends OperationsException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -3990675661956646827L;
-
- /**
- * Constructs a new <code>ServiceNotFoundException</code>.
- */
- public ServiceNotFoundException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>ServiceNotFoundException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public ServiceNotFoundException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/StandardMBean.java b/libjava/classpath/javax/management/StandardMBean.java
deleted file mode 100644
index 8e30fc5..0000000
--- a/libjava/classpath/javax/management/StandardMBean.java
+++ /dev/null
@@ -1,1083 +0,0 @@
-/* StandardMBean.java -- A standard reflection-based management bean.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Provides a dynamic management bean by using reflection on an
- * interface and an implementing class. By default, a bean instance
- * is paired up with its interface based on specific naming
- * conventions (if the implementation is called X, the interface must
- * be XMBean). Using this class removes the need to use a specific
- * naming system to match up the two. Instead, an instance of this
- * bean is created either via explicit construction or subclassing,
- * and this provides access to the attributes, constructors and
- * operations of the implementation via reflection. Various hooks are
- * provided in order to allow customization of this process.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class StandardMBean
- implements DynamicMBean
-{
-
- /**
- * The interface for this bean.
- */
- private Class<?> iface;
-
- /**
- * The implementation of the interface.
- */
- private Object impl;
-
- /**
- * Cached bean information.
- */
- private MBeanInfo info;
-
- /**
- * Constructs a new {@link StandardMBean} using the specified
- * interface and <code>this</code> as the instance. This should
- * be used to create an instance via subclassing.
- *
- * @param iface the interface this bean implements, or <code>null</code>
- * if the interface should be determined using the naming
- * convention (class X has interface XMBean).
- * @throws NotCompliantMBeanException if this class doesn't implement
- * the interface or a method appears
- * in the interface that doesn't comply
- * with the naming conventions.
- */
- protected StandardMBean(Class<?> iface)
- throws NotCompliantMBeanException
- {
- if (iface == null)
- {
- String className = getClass().getName();
- try
- {
- iface = Class.forName(className + "MBean");
- }
- catch (ClassNotFoundException e)
- {
- for (Class<?> nextIface : getClass().getInterfaces())
- {
- if (JMX.isMXBeanInterface(nextIface))
- {
- iface = nextIface;
- break;
- }
- }
- if (iface == null)
- throw (NotCompliantMBeanException)
- (new NotCompliantMBeanException("An interface for the class "
- + className +
- " was not found.").initCause(e));
- }
- }
- if (!(iface.isInstance(this)))
- throw new NotCompliantMBeanException("The instance, " + impl +
- ", is not an instance of " + iface);
- impl = this;
- this.iface = iface;
- }
-
- /**
- * Constructs a new {@link StandardMBean} using the specified
- * interface and the supplied instance as the implementation.
- *
- * @param impl the implementation.
- * @param iface the interface the bean implements, or <code>null</code>
- * if the interface should be determined using the naming
- * convention (class X has interface XMBean).
- * @throws IllegalArgumentException if <code>impl</code> is <code>null</code>.
- * @throws NotCompliantMBeanException if <code>impl</code> doesn't implement
- * the interface or a method appears
- * in the interface that doesn't comply
- * with the naming conventions.
- */
- public <T> StandardMBean(T impl, Class<T> iface)
- throws NotCompliantMBeanException
- {
- if (impl == null)
- throw new IllegalArgumentException("The specified implementation is null.");
- if (iface == null)
- {
- Class<?> implClass = impl.getClass();
- String className = implClass.getName();
- try
- {
- this.iface = Class.forName(className + "MBean", true,
- implClass.getClassLoader());
- }
- catch (ClassNotFoundException e)
- {
- for (Class<?> nextIface : implClass.getInterfaces())
- {
- if (JMX.isMXBeanInterface(nextIface))
- {
- this.iface = nextIface;
- break;
- }
- }
- if (this.iface == null)
- throw (NotCompliantMBeanException)
- (new NotCompliantMBeanException("An interface for the class " +
- className +
- " was not found.").initCause(e));
- }
- }
- else
- this.iface = iface;
- if (!(this.iface.isInstance(impl)))
- throw new NotCompliantMBeanException("The instance, " + impl +
- ", is not an instance of " + iface);
- this.impl = impl;
- }
-
- /**
- * Caches the {@link MBeanInfo} instance for this object. This is a
- * customization hook, so that subclasses can choose the caching policy
- * used. The default implementation caches the value in the instance
- * itself. Subclasses may override this so as to not cache the data
- * at all, or so as to use a cache shared between multiple beans.
- *
- * @param info the {@link MBeanInfo} instance to cache, or <code>null</code>
- * if there is no new value to cache. When the value is not
- * <code>null</code>, the cache should replace the current value
- * with the value supplied here.
- * @see #getCachedMBeanInfo()
- */
- protected void cacheMBeanInfo(MBeanInfo info)
- {
- if (info != null)
- this.info = info;
- }
-
- /**
- * Obtains the value of the specified attribute of the
- * management bean. The management bean should perform
- * a lookup for the named attribute, and return its value
- * by calling the appropriate getter method, if possible.
- *
- * @param name the name of the attribute to retrieve.
- * @return the value of the specified attribute.
- * @throws AttributeNotFoundException if the name does not
- * correspond to an attribute
- * of the bean.
- * @throws MBeanException if retrieving the attribute causes
- * the bean to throw an exception (which
- * becomes the cause of this exception).
- * @throws ReflectionException if an exception occurred in trying
- * to use the reflection interface
- * to lookup the attribute. The
- * thrown exception is the cause of
- * this exception.
- * @see #setAttribute(String)
- */
- public Object getAttribute(String name)
- throws AttributeNotFoundException, MBeanException,
- ReflectionException
- {
- Method getter;
- try
- {
- getter = iface.getMethod("get" + name);
- }
- catch (NoSuchMethodException e)
- {
- try
- {
- getter = iface.getMethod("is" + name);
- }
- catch (NoSuchMethodException ex)
- {
- throw ((AttributeNotFoundException)
- new AttributeNotFoundException("The attribute, " + name +
- ", was not found.").initCause(ex));
- }
- }
- Object result;
- try
- {
- result = getter.invoke(impl);
- }
- catch (IllegalAccessException e)
- {
- throw new ReflectionException(e, "Failed to retrieve " + name);
- }
- catch (IllegalArgumentException e)
- {
- throw new ReflectionException(e, "Failed to retrieve " + name);
- }
- catch (InvocationTargetException e)
- {
- throw new MBeanException((Exception) e.getCause(),
- "The getter of " + name +
- " threw an exception");
- }
- return result;
- }
-
- /**
- * Obtains the values of each of the specified attributes
- * of the management bean. The returned list includes
- * those attributes that were retrieved and their
- * corresponding values.
- *
- * @param names the names of the attributes to retrieve.
- * @return a list of the retrieved attributes.
- * @see #setAttributes(AttributeList)
- */
- public AttributeList getAttributes(String[] names)
- {
- AttributeList list = new AttributeList(names.length);
- for (int a = 0; a < names.length; ++a)
- {
- try
- {
- Object value = getAttribute(names[a]);
- list.add(new Attribute(names[a], value));
- }
- catch (AttributeNotFoundException e)
- {
- /* Ignored */
- }
- catch (ReflectionException e)
- {
- /* Ignored */
- }
- catch (MBeanException e)
- {
- /* Ignored */
- }
- }
- return list;
- }
-
- /**
- * Returns the cached {@link MBeanInfo} instance for this object. This is a
- * customization hook, so that subclasses can choose the caching policy
- * used. The default implementation caches the value in the instance
- * itself, and returns this value on calls to this method.
- *
- * @return the cached {@link MBeanInfo} instance, or <code>null</code>
- * if no value is cached.
- * @see #cacheMBeanInfo(javax.management.MBeanInfo)
- */
- protected MBeanInfo getCachedMBeanInfo()
- {
- return info;
- }
-
- /**
- * Returns the class name that will be used in the {@link MBeanInfo}
- * instance. This is a customization hook, so that subclasses can
- * provide a custom class name. By default, this returns the class
- * name from the supplied {@link MBeanInfo} instance.
- *
- * @param info the {@link MBeanInfo} instance constructed via
- * reflection.
- * @return the class name to use in the instance.
- */
- protected String getClassName(MBeanInfo info)
- {
- return info.getClassName();
- }
-
- /**
- * Returns information on the constructors that will be used in
- * the {@link MBeanInfo} instance. This is a customization hook,
- * so that subclasses can provide their own information on the
- * bean's constructors, if necessary. By default, this method
- * returns <code>null</code> unless the implementation supplied
- * is either <code>null</code> or <code>this</code>. This default
- * implementation prevents the use of
- * {@link MBeanServer#createMBean} in cases where the bean is
- * not created as a subclass of {@link StandardMBean}.
- *
- * @param constructors the constructor information created via
- * reflection.
- * @param impl the implementation, or <code>null</code> if this
- * should be ignored.
- * @return the constructor information to use.
- */
- protected MBeanConstructorInfo[] getConstructors(MBeanConstructorInfo[]
- constructors, Object impl)
- {
- if (impl == null || impl == this)
- return constructors;
- return null;
- }
-
- /**
- * Returns the description of the attribute that will be used in
- * the supplied {@link MBeanAttributeInfo} instance. This is a
- * customization hook, so that subclasses can provide a custom
- * description. By default, this calls
- * {@link #getDescription(MBeanFeatureInfo)} with the supplied
- * {@link MBeanAttributeInfo} instance.
- *
- * @param info the {@link MBeanAttributeInfo} instance constructed
- * via reflection.
- * @return the description to use in the instance.
- */
- protected String getDescription(MBeanAttributeInfo info)
- {
- return getDescription((MBeanFeatureInfo) info);
- }
-
- /**
- * Returns the description of the constructor that will be used in
- * the supplied {@link MBeanConstructorInfo} instance. This is a
- * customization hook, so that subclasses can provide a custom
- * description. By default, this calls
- * {@link #getDescription(MBeanFeatureInfo)} with the supplied
- * {@link MBeanConstructorInfo} instance.
- *
- * @param info the {@link MBeanConstructorInfo} instance constructed
- * via reflection.
- * @return the description to use in the instance.
- */
- protected String getDescription(MBeanConstructorInfo info)
- {
- return getDescription((MBeanFeatureInfo) info);
- }
-
- /**
- * Returns the description of the nth parameter of the constructor
- * that will be used in the supplied {@link MBeanParameterInfo}
- * instance. This is a customization hook, so that subclasses
- * can provide a custom description. By default, this calls
- * <code>param.getDescription()</code>.
- *
- * @param info the {@link MBeanConstructorInfo} instance constructed
- * via reflection.
- * @param param the {@link MBeanParameterInfo} instance constructed
- * via reflection.
- * @param n the number of the parameter, in order to link it to the
- * information on the constructor.
- * @return the description to use in the instance.
- */
- protected String getDescription(MBeanConstructorInfo info,
- MBeanParameterInfo param, int n)
- {
- return param.getDescription();
- }
-
- /**
- * Returns the description of the supplied feature that
- * will be used in the supplied {@link MBeanFeatureInfo}
- * instance. This is a customization hook, so that subclasses
- * can provide a custom description. By default, this calls
- * <code>info.getDescription()</code>. This method is also called
- * by default for the more specific description methods for attributes,
- * constructors and operations.
- *
- * @param info the {@link MBeanFeatureInfo} instance constructed
- * via reflection.
- * @return the description to use in the instance.
- */
- protected String getDescription(MBeanFeatureInfo info)
- {
- return info.getDescription();
- }
-
- /**
- * Returns the description of the bean that will be used in the
- * supplied {@link MBeanInfo} instance. This is a customization
- * hook, so that subclasses can provide a custom description. By
- * default, this calls <code>info.getDescription()</code>.
- *
- * @param info the {@link MBeanInfo} instance constructed
- * via reflection.
- * @return the description to use in the instance.
- */
- protected String getDescription(MBeanInfo info)
- {
- return info.getDescription();
- }
-
- /**
- * Returns the description of the operation that will be used in
- * the supplied {@link MBeanOperationInfo} instance. This is a
- * customization hook, so that subclasses can provide a custom
- * description. By default, this calls
- * {@link #getDescription(MBeanFeatureInfo)} with the supplied
- * {@link MBeanOperationInfo} instance.
- *
- * @param info the {@link MBeanOperationInfo} instance constructed
- * via reflection.
- * @return the description to use in the instance.
- */
- protected String getDescription(MBeanOperationInfo info)
- {
- return getDescription((MBeanFeatureInfo) info);
- }
-
- /**
- * Returns the description of the nth parameter of the operation
- * that will be used in the supplied {@link MBeanParameterInfo}
- * instance. This is a customization hook, so that subclasses
- * can provide a custom description. By default, this calls
- * <code>param.getDescription()</code>.
- *
- * @param info the {@link MBeanOperationInfo} instance constructed
- * via reflection.
- * @param param the {@link MBeanParameterInfo} instance constructed
- * via reflection.
- * @param n the number of the parameter, in order to link it to the
- * information on the operation.
- * @return the description to use in the instance.
- */
- protected String getDescription(MBeanOperationInfo info,
- MBeanParameterInfo param, int n)
- {
- return param.getDescription();
- }
-
- /**
- * Returns the impact of the operation that will be used in the
- * supplied {@link MBeanOperationInfo} instance. This is a
- * customization hook, so that subclasses can provide a custom
- * impact flag. By default, this returns
- * <code>info.getImpact()</code>.
- *
- * @param info the {@link MBeanOperationInfo} instance constructed
- * via reflection.
- * @return the impact flag to use in the instance.
- */
- protected int getImpact(MBeanOperationInfo info)
- {
- return info.getImpact();
- }
-
- /**
- * Returns the instance that implements this bean.
- *
- * @return the implementation.
- */
- public Object getImplementation()
- {
- return impl;
- }
-
- /**
- * Returns the class of the instance that implements this bean.
- *
- * @return the implementation class.
- */
- public Class<?> getImplementationClass()
- {
- return impl.getClass();
- }
-
- /**
- * <p>
- * Returns an information object which lists the attributes
- * and actions associated with the management bean. This
- * implementation proceeds as follows:
- * </p>
- * <ol>
- * <li>{@link #getCachedMBeanInfo()} is called to obtain
- * the cached instance. If this returns a non-null value,
- * this value is returned.</li>
- * <li>If there is no cached value, then the method proceeds
- * to create one. During this process, the customization hooks
- * detailed in this class are called to allow the values used
- * to be overrided:
- * <ul>
- * <li>For each attribute,
- * {@link #getDescription(MBeanAttributeInfo)} is called.</li>
- * <li>For each constructor,
- * {@link #getDescription(MBeanConstructorInfo)} is called,
- * along with {@link #getDescription(MBeanConstructorInfo,
- * MBeanParameterInfo, int)} and
- * {@link #getParameterName(MBeanConstructorInfo,
- * MBeanParameterInfo, int)} for each parameter.</li>
- * <li>The constructors may be replaced as a whole by
- * a call to
- * {@link #getConstructors(MBeanConstructorInfo[], Object)}.</li>
- * <li>For each operation,
- * {@link #getDescription(MBeanOperationInfo)} and
- * {@link #getImpact(MBeanOperationInfo)} are called,
- * along with {@link #getDescription(MBeanOperationInfo,
- * MBeanParameterInfo, int)} and
- * {@link #getParameterName(MBeanOperationInfo,
- * MBeanParameterInfo, int)} for each parameter.</li>
- * <li>{@link #getClassName(MBeanInfo)} and
- * {@link #getDescription(MBeanInfo)} are called to customise
- * the basic information about the class.</li>
- * </ul>
- * </li>
- * <li>Finally, {@link #cacheMBeanInfo(MBeanInfo)} is called
- * with the created instance before it is returned.</li>
- * </ol>
- *
- * @return a description of the management bean, including
- * all exposed attributes and actions.
- */
- public MBeanInfo getMBeanInfo()
- {
- MBeanInfo info = getCachedMBeanInfo();
- if (info != null)
- return info;
- Method[] methods = iface.getMethods();
- Map<String,Method[]> attributes = new HashMap<String,Method[]>();
- List<MBeanOperationInfo> operations = new ArrayList<MBeanOperationInfo>();
- for (int a = 0; a < methods.length; ++a)
- {
- String name = methods[a].getName();
- if (((name.startsWith("get") &&
- methods[a].getReturnType() != Void.TYPE) ||
- (name.startsWith("is") &&
- methods[a].getReturnType() == Boolean.TYPE)) &&
- methods[a].getParameterTypes().length == 0)
- {
- Method[] amethods;
- String attrib;
- if (name.startsWith("is"))
- attrib = name.substring(2);
- else
- attrib = name.substring(3);
- if (attributes.containsKey(attrib))
- amethods = (Method[]) attributes.get(attrib);
- else
- {
- amethods = new Method[2];
- attributes.put(attrib, amethods);
- }
- amethods[0] = methods[a];
- }
- else if (name.startsWith("set") &&
- methods[a].getReturnType() == Void.TYPE &&
- methods[a].getParameterTypes().length == 1)
- {
- Method[] amethods;
- String attrib = name.substring(3);
- if (attributes.containsKey(attrib))
- amethods = (Method[]) attributes.get(attrib);
- else
- {
- amethods = new Method[2];
- attributes.put(attrib, amethods);
- }
- amethods[1] = methods[a];
- }
- else
- operations.add(new MBeanOperationInfo(methods[a].getName(),
- methods[a]));
- }
- List<MBeanAttributeInfo> attribs = new ArrayList<MBeanAttributeInfo>(attributes.size());
- for (Map.Entry<String,Method[]> entry : attributes.entrySet())
- {
- Method[] amethods = entry.getValue();
- try
- {
- attribs.add(new MBeanAttributeInfo(entry.getKey(),
- entry.getKey(),
- amethods[0], amethods[1]));
- }
- catch (IntrospectionException e)
- {
- /* Shouldn't happen; both shouldn't be null */
- throw new IllegalStateException("The two methods passed to " +
- "the MBeanAttributeInfo " +
- "constructor for " + entry +
- "were null.", e);
- }
- }
- MBeanAttributeInfo[] ainfo = new MBeanAttributeInfo[attribs.size()];
- for (int a = 0; a < ainfo.length; ++a)
- {
- MBeanAttributeInfo oldInfo = (MBeanAttributeInfo) attribs.get(a);
- String desc = getDescription(oldInfo);
- ainfo[a] = new MBeanAttributeInfo(oldInfo.getName(),
- oldInfo.getType(), desc,
- oldInfo.isReadable(),
- oldInfo.isWritable(),
- oldInfo.isIs());
- }
- Constructor<?>[] cons = impl.getClass().getConstructors();
- MBeanConstructorInfo[] cinfo = new MBeanConstructorInfo[cons.length];
- for (int a = 0; a < cinfo.length; ++a)
- {
- MBeanConstructorInfo oldInfo = new MBeanConstructorInfo(cons[a].getName(),
- cons[a]);
- String desc = getDescription(oldInfo);
- MBeanParameterInfo[] params = oldInfo.getSignature();
- MBeanParameterInfo[] pinfo = new MBeanParameterInfo[params.length];
- for (int b = 0; b < pinfo.length; ++b)
- {
- String pdesc = getDescription(oldInfo, params[b], b);
- String pname = getParameterName(oldInfo, params[b], b);
- pinfo[b] = new MBeanParameterInfo(pname, params[b].getType(),
- pdesc);
- }
- cinfo[a] = new MBeanConstructorInfo(oldInfo.getName(), desc,
- pinfo);
- }
- cinfo = getConstructors(cinfo, impl);
- MBeanOperationInfo[] oinfo = new MBeanOperationInfo[operations.size()];
- for (int a = 0; a < oinfo.length; ++a)
- {
- MBeanOperationInfo oldInfo = (MBeanOperationInfo) operations.get(a);
- String desc = getDescription(oldInfo);
- int impact = getImpact(oldInfo);
- MBeanParameterInfo[] params = oldInfo.getSignature();
- MBeanParameterInfo[] pinfo = new MBeanParameterInfo[params.length];
- for (int b = 0; b < pinfo.length; ++b)
- {
- String pdesc = getDescription(oldInfo, params[b], b);
- String pname = getParameterName(oldInfo, params[b], b);
- pinfo[b] = new MBeanParameterInfo(pname, params[b].getType(),
- pdesc);
- }
- oinfo[a] = new MBeanOperationInfo(oldInfo.getName(), desc, pinfo,
- oldInfo.getReturnType(), impact);
- }
- info = new MBeanInfo(impl.getClass().getName(), impl.getClass().getName(),
- ainfo, cinfo, oinfo, null);
- String cname = getClassName(info);
- String desc = getDescription(info);
- MBeanNotificationInfo[] ninfo = null;
- if (impl instanceof NotificationBroadcaster)
- ninfo = ((NotificationBroadcaster) impl).getNotificationInfo();
- info = new MBeanInfo(cname, desc, ainfo, cinfo, oinfo, ninfo);
- cacheMBeanInfo(info);
- return info;
- }
-
- /**
- * Returns the interface for this management bean.
- *
- * @return the management interface.
- */
- public final Class<?> getMBeanInterface()
- {
- return iface;
- }
-
- /**
- * Returns the name of the nth parameter of the constructor
- * that will be used in the supplied {@link MBeanParameterInfo}
- * instance. This is a customization hook, so that subclasses
- * can provide a custom name. By default, this calls
- * <code>param.getName()</code>.
- *
- * @param info the {@link MBeanConstructorInfo} instance constructed
- * via reflection.
- * @param param the {@link MBeanParameterInfo} instance constructed
- * via reflection.
- * @param n the number of the parameter, in order to link it to the
- * information on the constructor.
- * @return the name to use in the instance.
- */
- protected String getParameterName(MBeanConstructorInfo info,
- MBeanParameterInfo param, int n)
- {
- return param.getName();
- }
-
- /**
- * Returns the name of the nth parameter of the operation
- * that will be used in the supplied {@link MBeanParameterInfo}
- * instance. This is a customization hook, so that subclasses
- * can provide a custom name. By default, this calls
- * <code>param.getName()</code>.
- *
- * @param info the {@link MBeanOperationInfo} instance constructed
- * via reflection.
- * @param param the {@link MBeanParameterInfo} instance constructed
- * via reflection.
- * @param n the number of the parameter, in order to link it to the
- * information on the operation.
- * @return the name to use in the instance.
- */
- protected String getParameterName(MBeanOperationInfo info,
- MBeanParameterInfo param, int n)
- {
- return param.getName();
- }
-
- /**
- * Invokes the specified action on the management bean using
- * the supplied parameters. The signature of the action is
- * specified by a {@link String} array, which lists the classes
- * corresponding to each parameter. The class loader used to
- * load these classes is the same as that used for loading the
- * management bean itself.
- *
- * @param name the name of the action to invoke.
- * @param params the parameters used to call the action.
- * @param signature the signature of the action.
- * @return the return value of the action.
- * @throws MBeanException if the action throws an exception. The
- * thrown exception is the cause of this
- * exception.
- * @throws ReflectionException if an exception occurred in trying
- * to use the reflection interface
- * to invoke the action. The
- * thrown exception is the cause of
- * this exception.
- */
- public Object invoke(String name, Object[] params, String[] signature)
- throws MBeanException, ReflectionException
- {
- if (name.startsWith("get") || name.startsWith("is") ||
- name.startsWith("set"))
- throw new ReflectionException(new NoSuchMethodException(),
- "Invocation of an attribute " +
- "method is disallowed.");
- ClassLoader loader = getClass().getClassLoader();
- Class<?>[] sigTypes;
- if (signature != null)
- {
- sigTypes = new Class<?>[signature.length];
- for (int a = 0; a < signature.length; ++a)
- try
- {
- sigTypes[a] = Class.forName(signature[a], true, loader);
- }
- catch (ClassNotFoundException e)
- {
- throw new ReflectionException(e, "The class, " + signature[a] +
- ", in the method signature " +
- "could not be loaded.");
- }
- }
- else
- sigTypes = null;
- Method method;
- try
- {
- method = iface.getMethod(name, sigTypes);
- }
- catch (NoSuchMethodException e)
- {
- throw new ReflectionException(e, "The method, " + name +
- ", could not be found.");
- }
- Object result;
- try
- {
- result = method.invoke(impl, params);
- }
- catch (IllegalAccessException e)
- {
- throw new ReflectionException(e, "Failed to call " + name);
- }
- catch (IllegalArgumentException e)
- {
- throw new ReflectionException(e, "Failed to call " + name);
- }
- catch (InvocationTargetException e)
- {
- throw new MBeanException((Exception) e.getCause(), "The method "
- + name + " threw an exception");
- }
- return result;
- }
-
- /**
- * Sets the value of the specified attribute of the
- * management bean. The management bean should perform
- * a lookup for the named attribute, and sets its value
- * using the associated setter method, if possible.
- *
- * @param attribute the attribute to set.
- * @throws AttributeNotFoundException if the attribute does not
- * correspond to an attribute
- * of the bean.
- * @throws InvalidAttributeValueException if the value is invalid
- * for this particular
- * attribute of the bean.
- * @throws MBeanException if setting the attribute causes
- * the bean to throw an exception (which
- * becomes the cause of this exception).
- * @throws ReflectionException if an exception occurred in trying
- * to use the reflection interface
- * to lookup the attribute. The
- * thrown exception is the cause of
- * this exception.
- * @see #getAttribute(String)
- */
- public void setAttribute(Attribute attribute)
- throws AttributeNotFoundException, InvalidAttributeValueException,
- MBeanException, ReflectionException
- {
- String name = attribute.getName();
- String attName = name.substring(0, 1).toUpperCase() + name.substring(1);
- Object val = attribute.getValue();
- try
- {
- getMutator(attName, val.getClass()).invoke(impl, new Object[] { val });
- }
- catch (IllegalAccessException e)
- {
- throw new ReflectionException(e, "Failed to set " + name);
- }
- catch (IllegalArgumentException e)
- {
- throw ((InvalidAttributeValueException)
- new InvalidAttributeValueException(attribute.getValue() +
- " is an invalid value for " +
- name).initCause(e));
- }
- catch (InvocationTargetException e)
- {
- throw new MBeanException(e, "The getter of " + name +
- " threw an exception");
- }
- }
-
- /**
- * Sets the value of each of the specified attributes
- * to that supplied by the {@link Attribute} object.
- * The returned list contains the attributes that were
- * set and their new values.
- *
- * @param attributes the attributes to set.
- * @return a list of the changed attributes.
- * @see #getAttributes(AttributeList)
- */
- public AttributeList setAttributes(AttributeList attributes)
- {
- AttributeList list = new AttributeList(attributes.size());
- Iterator<Object> it = attributes.iterator();
- while (it.hasNext())
- {
- try
- {
- Attribute attrib = (Attribute) it.next();
- setAttribute(attrib);
- list.add(attrib);
- }
- catch (AttributeNotFoundException e)
- {
- /* Ignored */
- }
- catch (InvalidAttributeValueException e)
- {
- /* Ignored */
- }
- catch (ReflectionException e)
- {
- /* Ignored */
- }
- catch (MBeanException e)
- {
- /* Ignored */
- }
- }
- return list;
- }
-
- /**
- * Replaces the implementation of the interface used by this
- * instance with the one specified. The new implementation
- * must be non-null and implement the interface specified on
- * construction of this instance.
- *
- * @throws IllegalArgumentException if <code>impl</code> is <code>null</code>.
- * @throws NotCompliantMBeanException if <code>impl</code> doesn't implement
- * the interface or a method appears
- * in the interface that doesn't comply
- * with the naming conventions.
- */
- public void setImplementation(Object impl)
- throws NotCompliantMBeanException
- {
- if (impl == null)
- throw new IllegalArgumentException("The specified implementation is null.");
- if (!(iface.isInstance(impl)))
- throw new NotCompliantMBeanException("The instance, " + impl +
- ", is not an instance of " + iface);
- this.impl = impl;
- }
-
- /**
- * Returns the mutator method for a particular attribute name
- * with a parameter type matching that of the given value.
- *
- * @param name the name of the attribute.
- * @param type the type of the parameter.
- * @return the appropriate mutator method.
- * @throws AttributeNotFoundException if a method can't be found.
- */
- private Method getMutator(String name, Class<?> type)
- throws AttributeNotFoundException
- {
- String mutator = "set" + name;
- Exception ex = null;
- try
- {
- return iface.getMethod(mutator, type);
- }
- catch (NoSuchMethodException e)
- {
- /* Ignored; we'll try harder instead */
- ex = e;
- }
- /* Special cases */
- if (type == Boolean.class)
- try
- {
- return iface.getMethod(mutator, Boolean.TYPE);
- }
- catch (NoSuchMethodException e)
- {
- throw ((AttributeNotFoundException)
- new AttributeNotFoundException("The attribute, " + name +
- ", was not found.").initCause(e));
- }
- if (type == Byte.class)
- try
- {
- return iface.getMethod(mutator, Byte.TYPE);
- }
- catch (NoSuchMethodException e)
- {
- throw ((AttributeNotFoundException)
- new AttributeNotFoundException("The attribute, " + name +
- ", was not found.").initCause(e));
- }
- if (type == Character.class)
- try
- {
- return iface.getMethod(mutator, Character.TYPE);
- }
- catch (NoSuchMethodException e)
- {
- throw ((AttributeNotFoundException)
- new AttributeNotFoundException("The attribute, " + name +
- ", was not found.").initCause(e));
- }
- if (type == Double.class)
- try
- {
- return iface.getMethod(mutator, Double.TYPE);
- }
- catch (NoSuchMethodException e)
- {
- throw ((AttributeNotFoundException)
- new AttributeNotFoundException("The attribute, " + name +
- ", was not found.").initCause(e));
- }
- if (type == Float.class)
- try
- {
- return iface.getMethod(mutator, Float.TYPE);
- }
- catch (NoSuchMethodException e)
- {
- throw ((AttributeNotFoundException)
- new AttributeNotFoundException("The attribute, " + name +
- ", was not found.").initCause(e));
- }
- if (type == Integer.class)
- try
- {
- return iface.getMethod(mutator, Integer.TYPE);
- }
- catch (NoSuchMethodException e)
- {
- throw ((AttributeNotFoundException)
- new AttributeNotFoundException("The attribute, " + name +
- ", was not found.").initCause(e));
- }
- if (type == Long.class)
- try
- {
- return iface.getMethod(mutator, Long.TYPE);
- }
- catch (NoSuchMethodException e)
- {
- throw ((AttributeNotFoundException)
- new AttributeNotFoundException("The attribute, " + name +
- ", was not found.").initCause(e));
- }
- if (type == Short.class)
- try
- {
- return iface.getMethod(mutator, Short.TYPE);
- }
- catch (NoSuchMethodException e)
- {
- throw ((AttributeNotFoundException)
- new AttributeNotFoundException("The attribute, " + name +
- ", was not found.").initCause(e));
- }
- /* Superclasses and interfaces */
- for (Class<?> i : type.getInterfaces())
- try
- {
- return getMutator(name, i);
- }
- catch (AttributeNotFoundException e)
- {
- ex = e;
- }
- Class<?> sclass = type.getSuperclass();
- if (sclass != null && sclass != Object.class)
- try
- {
- return getMutator(name, sclass);
- }
- catch (AttributeNotFoundException e)
- {
- ex = e;
- }
- /* If we get this far, give up */
- throw ((AttributeNotFoundException)
- new AttributeNotFoundException("The attribute, " + name +
- ", was not found.").initCause(ex));
- }
-
-}
diff --git a/libjava/classpath/javax/management/StringValueExp.java b/libjava/classpath/javax/management/StringValueExp.java
deleted file mode 100644
index 0ecd065..0000000
--- a/libjava/classpath/javax/management/StringValueExp.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/* StringValueExp.java -- Represents strings to be passed to queries.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-/**
- * Represents a string being used as an argument
- * to a relational constraint.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class StringValueExp
- implements ValueExp
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -3256390509806284044L;
-
- /**
- * The string value.
- */
- private String val;
-
- /**
- * Constructs a new {@link StringValueExp}.
- */
- public StringValueExp()
- {
- }
-
- /**
- * Constructs a new {@link StringValueExp} using the
- * specified value.
- *
- * @param val the string value used for this expression.
- */
- public StringValueExp(String val)
- {
- this.val = val;
- }
-
- /**
- * Applies the {@link StringValueExp} to the specified
- * management bean by simply returning the value.
- *
- * @param name the {@link ObjectName} of the bean.
- * @return the {@link StringValueExp} itself.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the value expression.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the value expression.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the value expression.
- * @throws InvalidApplicationException if the value expression is applied
- * to the wrong type of bean.
- */
- public ValueExp apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException
- {
- return this;
- }
-
- /**
- * Returns the value.
- *
- * @return the value.
- */
- public String getValue()
- {
- return val;
- }
-
- /**
- * Sets the {@link MBeanServer} on which the query
- * will be performed.
- *
- * @param server the new server.
- */
- public void setMBeanServer(MBeanServer server)
- {
- /* This seems to do nothing any more */
- }
-
- /**
- * Returns the value in quotes.
- *
- * @return the value (quoted).
- */
- public String toString()
- {
- return "'" + val + "'";
- }
-
-}
diff --git a/libjava/classpath/javax/management/ValueExp.java b/libjava/classpath/javax/management/ValueExp.java
deleted file mode 100644
index f989276..0000000
--- a/libjava/classpath/javax/management/ValueExp.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/* ValueExp.java -- Represents values that can be passed to queries.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management;
-
-import java.io.Serializable;
-
-/**
- * Represents values that may be passed as arguments to
- * {@link QueryExp}s. Strings, numbers and bean attributes
- * are all valid argument types for query expressions, and
- * so should be represented as implementations of this
- * interface.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface ValueExp
- extends Serializable
-{
-
- /**
- * Applies the value expression to the specified management bean.
- *
- * @param name the name of the management bean.
- * @return the value expression.
- * @throws BadStringOperationException if an invalid string
- * operation is used by
- * the value expression.
- * @throws BadBinaryOpValueExpException if an invalid expression
- * is used by the value expression.
- * @throws BadAttributeValueExpException if an invalid attribute
- * is used by the value expression.
- * @throws InvalidApplicationException if the value expression is applied
- * to the wrong type of bean.
- */
- ValueExp apply(ObjectName name)
- throws BadStringOperationException, BadBinaryOpValueExpException,
- BadAttributeValueExpException, InvalidApplicationException;
-
- /**
- * Changes the {@link MBeanServer} on which this query is performed.
- *
- * @param server the new server to use.
- * @deprecated This method is superfluous, as the {@link ValueExp}
- * can access the server using
- * {@link QueryEval#getMBeanServer()}.
- */
- void setMBeanServer(MBeanServer server);
-
-}
diff --git a/libjava/classpath/javax/management/loading/ClassLoaderRepository.java b/libjava/classpath/javax/management/loading/ClassLoaderRepository.java
deleted file mode 100644
index cfd031e..0000000
--- a/libjava/classpath/javax/management/loading/ClassLoaderRepository.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/* ClassLoaderRepository.java -- Represents a collection of class loadersx.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.loading;
-
-/**
- * Implementations of this interface maintain a list of
- * {@link ClassLoader}s for use by the management servers,
- * allowing classes to be loaded by the first {@link ClassLoader}
- * that will do so. A class loader is added to the list
- * whenever a {@link ClassLoader} instance is registered with
- * the management server, and it does not implement the
- * {@link PrivateClassLoader} interface. They are removed when
- * unregistered. The first class loader in the list is always
- * the one which was used to load the management server itself.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- * @see MBeanServerFactory
- */
-public interface ClassLoaderRepository
-{
-
- /**
- * Attempts to load the given class using class loaders
- * supplied by the list. The {@link ClassLoader#loadClass(String)}
- * method of each class loader is called. If the method
- * returns successfully, then the returned {@link Class} instance
- * is returned. If a {@link ClassNotFoundException} is thrown,
- * then the next loader is tried. Any other exception thrown
- * by the method is passed back to the caller. This method
- * throws a {@link ClassNotFoundException} itself if all the
- * class loaders listed prove fruitless.
- *
- * @param name the name of the class to load.
- * @return the loaded class.
- * @throws ClassNotFoundException if all the class loaders fail
- * to load the class.
- */
- Class<?> loadClass(String name)
- throws ClassNotFoundException;
-
- /**
- * <p>
- * Attempts to load the given class using class loaders
- * supplied by the list, stopping when the specified
- * loader is reached. The {@link ClassLoader#loadClass(String)}
- * method of each class loader is called. If the method
- * returns successfully, then the returned {@link Class} instance
- * is returned. If a {@link ClassNotFoundException} is thrown,
- * then the next loader is tried. Any other exception thrown
- * by the method is passed back to the caller. This method
- * throws a {@link ClassNotFoundException} itself if all the
- * class loaders listed prove fruitless.
- * </p>
- * <p>
- * This method is usually used by the class loader specified
- * by the <code>stop</code> argument to load classes using the
- * loaders that appear before it in the list. By stopping when
- * the loader is reached, the deadlock that occurs when the loader
- * is merely skipped is avoided.
- * </p>
- *
- * @param stop the class loader at which to stop, or <code>null</code>
- * to obtain the same behaviour as {@link #loadClass(String)}.
- * @param name the name of the class to load.
- * @return the loaded class.
- * @throws ClassNotFoundException if all the class loaders fail
- * to load the class.
- */
- Class<?> loadClassBefore(ClassLoader stop, String name)
- throws ClassNotFoundException;
-
- /**
- * <p>
- * Attempts to load the given class using class loaders
- * supplied by the list, excluding the one specified.
- * The {@link ClassLoader#loadClass(String)}
- * method of each class loader is called. If the method
- * returns successfully, then the returned {@link Class} instance
- * is returned. If a {@link ClassNotFoundException} is thrown,
- * then the next loader is tried. Any other exception thrown
- * by the method is passed back to the caller. This method
- * throws a {@link ClassNotFoundException} itself if all the
- * class loaders listed prove fruitless.
- * </p>
- * <p>
- * Note that this method may deadlock if called simultaneously
- * by two class loaders in the list.
- * {@link loadClassBefore(ClassLoader, String)} should be used
- * in preference to this method to avoid this.
- * </p>
- *
- * @param exclude the class loader to exclude, or <code>null</code>
- * to obtain the same behaviour as {@link #loadClass(String)}.
- * @param name the name of the class to load.
- * @return the loaded class.
- * @throws ClassNotFoundException if all the class loaders fail
- * to load the class.
- */
- Class<?> loadClassWithout(ClassLoader exclude, String name)
- throws ClassNotFoundException;
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/ArrayType.java b/libjava/classpath/javax/management/openmbean/ArrayType.java
deleted file mode 100644
index fc18870..0000000
--- a/libjava/classpath/javax/management/openmbean/ArrayType.java
+++ /dev/null
@@ -1,672 +0,0 @@
-/* ArrayType.java -- Open type descriptor for an array.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.lang.reflect.Array;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * The open type descriptor for arrays of open data values.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class ArrayType<T>
- extends OpenType<T>
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 720504429830309770L;
-
- /**
- * The number of dimensions arrays of this type has.
- */
- private int dimension;
-
- /**
- * The element type of arrays of this type.
- */
- private OpenType<?> elementType;
-
- /**
- * True if this type represents a primitive array.
- */
- private boolean primitiveArray;
-
- /**
- * The hash code of this instance.
- */
- private transient Integer hashCode;
-
- /**
- * The <code>toString()</code> result of this instance.
- */
- private transient String string;
-
- /**
- * A cache of {@link ArrayType} instances created
- * by {@link #getArrayType(OpenType)}.
- */
- private static final Map<OpenType<?>,ArrayType<?>> cache =
- new HashMap<OpenType<?>,ArrayType<?>>();
-
- /**
- * A cache of {@link ArrayType} instances created
- * by {@link #getPrimitiveArrayType(Class)}.
- */
- private static final Map<Class<?>,ArrayType<?>> primCache =
- new HashMap<Class<?>,ArrayType<?>>();
-
- /**
- * Returns the class name of the array, given the element
- * class name and its dimensions.
- *
- * @param elementType the type of the array's elements.
- * @param dim the dimensions of the array.
- * @param primitive true if this should be a primitive array.
- * @return the array's class name.
- * @throws OpenDataException if the class name does not reference
- * a loadable class.
- */
- private static final String getArrayClassName(OpenType<?> elementType,
- int dim,
- boolean primitive)
- throws OpenDataException
- {
- Class<?> type;
- if (primitive)
- type = getPrimitiveTypeClass((SimpleType<?>) elementType);
- else
- {
- String className = elementType.getClassName();
- try
- {
- type = Class.forName(className);
- }
- catch (ClassNotFoundException e)
- {
- throw new OpenDataException("The class name, " + className +
- ", is unavailable.");
- }
- }
- while (type.isArray())
- type = type.getComponentType();
- return
- Array.newInstance(type,
- new int[getDimensions(elementType, dim)]).getClass().getName();
- }
-
- /**
- * Returns the dimensions of the new {@link ArrayType},
- * based on whether the given element type is already an
- * {@link ArrayType} or not.
- *
- * @param elementType the type of the array.
- * @param dim the proposed dimensions.
- * @return the resultant dimensions.
- * @throws IllegalArgumentException if <code>dim</code> is less than 1.
- */
- private static final int getDimensions(OpenType<?> elementType,
- int dim)
- {
- if (dim < 1)
- throw new IllegalArgumentException("Dimensions must be greater " +
- "than or equal to 1.");
- if (elementType instanceof ArrayType)
- return dim + ((ArrayType<?>) elementType).getDimension();
- return dim;
- }
-
- /**
- * Returns the appropriate primitive type name, given the
- * corresponding wrapper class.
- *
- * @param type the type to convert.
- * @return the corresponding primitive type.
- * @throws OpenDataException if {@code type} is not a valid
- * {@link Class} for a primitive type.
- *
- */
- private static final SimpleType<?> getPrimitiveType(Class<?> type)
- throws OpenDataException
- {
- if (type.equals(Boolean.TYPE))
- return SimpleType.BOOLEAN;
- if (type.equals(Byte.TYPE))
- return SimpleType.BYTE;
- if (type.equals(Character.TYPE))
- return SimpleType.CHARACTER;
- if (type.equals(Double.TYPE))
- return SimpleType.DOUBLE;
- if (type.equals(Float.TYPE))
- return SimpleType.FLOAT;
- if (type.equals(Integer.TYPE))
- return SimpleType.INTEGER;
- if (type.equals(Long.TYPE))
- return SimpleType.LONG;
- if (type.equals(Short.TYPE))
- return SimpleType.SHORT;
- if (type.equals(Void.TYPE))
- return SimpleType.VOID;
- throw new OpenDataException(type + " is not a primitive type.");
- }
-
- /**
- * Returns the appropriate primitive type name, given the
- * corresponding wrapper class.
- *
- * @param type the type to convert.
- * @return the corresponding primitive type.
- * @throws OpenDataException if {@code type} is not a valid
- * {@link SimpleType} for a primitive type.
- *
- */
- private static final Class<?> getPrimitiveTypeClass(SimpleType<?> type)
- throws OpenDataException
- {
- if (type.equals(SimpleType.BOOLEAN))
- return Boolean.TYPE;
- if (type.equals(SimpleType.BYTE))
- return Byte.TYPE;
- if (type.equals(SimpleType.CHARACTER))
- return Character.TYPE;
- if (type.equals(SimpleType.DOUBLE))
- return Double.TYPE;
- if (type.equals(SimpleType.FLOAT))
- return Float.TYPE;
- if (type.equals(SimpleType.INTEGER))
- return Integer.TYPE;
- if (type.equals(SimpleType.LONG))
- return Long.TYPE;
- if (type.equals(SimpleType.SHORT))
- return Short.TYPE;
- if (type.equals(SimpleType.VOID))
- return Void.TYPE;
- throw new OpenDataException(type + " is not a primitive type.");
- }
-
- /**
- * Returns the element type that will actually be used, if the
- * specified element type is passed to a constructor. This is
- * necessary to ensure that a non-array type is still returned when
- * an {@link ArrayType} is constructed from an {@link ArrayType}.
- *
- * @param elemType the element type that was supplied.
- * @return the element type that will be used.
- */
- private static final OpenType<?> getElementType(OpenType<?> elemType)
- {
- if (elemType instanceof ArrayType)
- return ((ArrayType<?>) elemType).getElementOpenType();
- return elemType;
- }
-
- /**
- * Returns the element type name that will actually be used, if the
- * specified element type is passed to a constructor. This is
- * necessary to ensure that a non-array type is still returned when
- * an {@link ArrayType} is constructed from an {@link ArrayType},
- * and that primitive arrays are described correctly.
- *
- * @param elemType the element type that was supplied.
- * @return the element type name that will be used.
- * @throws OpenDataException if the element type is not a valid
- * {@link SimpleType} for a primitive type.
- */
- private static final String getElementTypeName(OpenType<?> elemType)
- throws OpenDataException
- {
- OpenType<?> trueElemType = getElementType(elemType);
- if (elemType instanceof ArrayType &&
- ((ArrayType<?>) elemType).isPrimitiveArray())
- return getPrimitiveTypeClass((SimpleType<?>) trueElemType).getName();
- return trueElemType.getClassName();
- }
-
- /**
- * <p>
- * Constructs a new {@link ArrayType} instance for an array of the
- * specified type with the supplied number of dimensions. The attributes
- * used by the superclass, {@link OpenType}, are automatically defined,
- * based on these values. Both the class name and type name are set
- * to the value returned by the {@link java.lang.Class#getName()} of
- * the array's class (i.e. the element type, preceded by n instances of
- * '[' and an 'L', where n is the number of dimensions the array has).
- * The description is based upon the template <code>n-dimension array
- * of e</code>, where n is the number of dimensions of the array, and
- * e is the element type. The class name of the actual elements is
- * obtainable by calling {@link OpenType#getClassName()} on the result
- * of {@link #getElementOpenType()}.
- * </p>
- * <p>
- * As an example, the array type returned by
- * <code>new ArrayType(6, SimpleType.INTEGER)</code> has the following
- * values:
- * </p>
- * <table>
- * <th><td>Attribute</td><td>Value</td></th>
- * <tr><td>Class Name</td><td><code>[[[[[[Ljava.lang.Integer;</code>
- * </td></tr>
- * <tr><td>Type Name</td><td><code>[[[[[[Ljava.lang.Integer;</code>
- * </td></tr>
- * <tr><td>Description</td><td><code>6-dimension array of
- * java.lang.Integer</code></td></tr>
- * <tr><td>Element Type Class Name</td><td><code>java.lang.Integer</code>
- * </td></tr>
- * </table>
- * <p>
- * The dimensions of the array must be equal to or greater than 1. The
- * element type must be an instance of {@link SimpleType},
- * {@link CompositeType} or {@link TabularType}.
- * </p>
- *
- * @param dim the dimensions of the array.
- * @param elementType the type of the elements of the array.
- * @throws IllegalArgumentException if <code>dim</code> is less than 1.
- * @throws OpenDataException if the element type is not an instance of either
- * {@link SimpleType}, {@link CompositeType}
- * or {@link TabularType}.
- */
- public ArrayType(int dim, OpenType<?> elementType)
- throws OpenDataException
- {
- super(getArrayClassName(elementType, dim, false),
- getArrayClassName(elementType, dim, false),
- getDimensions(elementType, dim) + "-dimension array of "
- + getElementTypeName(elementType));
- if (!(elementType instanceof SimpleType ||
- elementType instanceof CompositeType ||
- elementType instanceof TabularType ||
- elementType instanceof ArrayType))
- throw new OpenDataException("The element type must be a simple " +
- "type, an array type, a composite type " +
- "or a tabular type.");
- dimension = getDimensions(elementType, dim);
- this.elementType = getElementType(elementType);
- primitiveArray = (elementType instanceof ArrayType &&
- ((ArrayType<?>) elementType).isPrimitiveArray());
- }
-
- /**
- * <p>
- * Constructs a new {@link ArrayType} instance for a unidimensional
- * array of the specified {@link SimpleType}. The attributes
- * used by the superclass, {@link OpenType}, are automatically defined,
- * based on these values. Both the class name and type name are set
- * to the value returned by the {@link java.lang.Class#getName()} of
- * the array's class. If the array is of a primitive type (indicated
- * by giving {@code primitiveArray} the value {@code true}), the
- * name will be '[' followed by the appropriate letter for the
- * primitive type (see {@link java.lang.Class#getName()}). If the
- * array is not of a primitive type, then the name is formed from
- * the element type, preceded by '[' and an 'L', in the same way
- * as when the multi-dimensional constructor is used.
- * </p>
- * <p>
- * The description is based upon the template <code>1-dimension array
- * of e</code>, where e is either the primitive type or a class name,
- * depending on whether the array itself is of a primitive type or not.
- * The class name of the actual elements is obtainable by calling
- * {@link OpenType#getClassName()} on the result of
- * {@link #getElementOpenType()}. This will be the appropriate wrapper
- * class for a primitive type.
- * </p>
- * <p>
- * As an example, the array type returned by
- * <code>new ArrayType(SimpleType.INTEGER, true)</code> has the following
- * values:
- * </p>
- * <table>
- * <th><td>Attribute</td><td>Value</td></th>
- * <tr><td>Class Name</td><td><code>[I</code>
- * </td></tr>
- * <tr><td>Type Name</td><td><code>[I</code>
- * </td></tr>
- * <tr><td>Description</td><td><code>1-dimension array of int</code></td></tr>
- * <tr><td>Element Type Class Name</td><td><code>java.lang.Integer</code>
- * </td></tr>
- * </table>
- *
- * @param elementType the type of the elements of the array.
- * @param primitiveArray true if the array should be of a primitive type.
- * @throws OpenDataException if {@code primitiveArray} is {@code true},
- * and {@link elementType} is not a valid
- * {@link SimpleType} for a primitive type.
- * @since 1.6
- */
- public ArrayType(SimpleType<?> elementType, boolean primitiveArray)
- throws OpenDataException
- {
- super(getArrayClassName(elementType, 1, primitiveArray),
- getArrayClassName(elementType, 1, primitiveArray),
- "1-dimension array of " +
- (primitiveArray ? getPrimitiveTypeClass(elementType).getName()
- : elementType.getClassName()));
- dimension = 1;
- this.elementType = elementType;
- this.primitiveArray = primitiveArray;
- }
-
- /**
- * <p>
- * Compares this array type with another object
- * for equality. The objects are judged to be equal if:
- * </p>
- * <ul>
- * <li><code>obj</code> is not null.</li>
- * <li><code>obj</code> is an instance of
- * {@link ArrayType}.</li>
- * <li>The dimensions are equal.</li>
- * <li>The element types are equal.</li>
- * <li>The primitive array flag is set the same in both
- * instances.</li>
- * </ul>
- *
- * @param obj the object to compare with.
- * @return true if the conditions above hold.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof ArrayType))
- return false;
- ArrayType<?> atype = (ArrayType<?>) obj;
- return (atype.getDimension() == dimension &&
- atype.getElementOpenType().equals(elementType) &&
- atype.isPrimitiveArray() == primitiveArray);
- }
-
- /**
- * <p>
- * Returns a new {@link ArrayType} instance in a type-safe
- * manner, by ensuring that the type of the given {@link OpenType}
- * matches the component type used in the type of the
- * returned instance. If the given {@link OpenType} is a
- * {@link SimpleType}, {@link CompositeType} or
- * {@link TabularType}, then a 1-dimensional array of that
- * type is returned. Otherwise, if the type is
- * an {@link ArrayType} of n dimensions, the returned
- * type is also an {@link ArrayType} but of n+1 dimensions.
- * For example,
- * {@code ArrayType.getArrayType(ArrayType.getArrayType(SimpleType.STRING))}
- * returns a 2-dimensional array of {@link SimpleType#String}.
- * </p>
- * <p>
- * This method caches its results, so that the same instance
- * is returned from subsequent calls with the same parameters.
- * </p>
- *
- * @param elementType the element type of the new array type.
- * @throws OpenDataException if the class name of {@code elementType}
- * is not in {@link OpenType#ALLOWED_CLASSNAMES_LIST}.
- * @since 1.6
- */
- @SuppressWarnings("unchecked")
- public static <E> ArrayType<E[]> getArrayType(OpenType<E> elementType)
- throws OpenDataException
- {
- ArrayType<E[]> arr = (ArrayType<E[]>) cache.get(elementType);
- if (arr != null)
- return arr;
- arr = new ArrayType<E[]>(1, elementType);
- cache.put(elementType, arr);
- return arr;
- }
-
- /**
- * <p>
- * Returns a new {@link ArrayType} instance for the given
- * primitive type in a type-safe* manner, by ensuring that
- * the type of the given {@link OpenType} matches the type
- * used in the returned instance. If the type is
- * an array of n dimensions, the returned
- * type is also an {@link ArrayType} of n dimensions.
- * </p>
- * <p>
- * As an example, the array type returned by
- * <code>getPrimitiveArrayType(Integer.TYPE)</code> has the
- * following values:
- * </p>
- * <table>
- * <th><td>Attribute</td><td>Value</td></th>
- * <tr><td>Class Name</td><td><code>[I</code>
- * </td></tr>
- * <tr><td>Type Name</td><td><code>[I</code>
- * </td></tr>
- * <tr><td>Description</td><td><code>1-dimension array of int</code></td></tr>
- * <tr><td>Element Type Class Name</td><td><code>java.lang.Integer</code>
- * </td></tr>
- * </table>
- * <p>
- * This method caches its results, so that the same instance
- * is returned from subsequent calls with the same parameters.
- * </p>
- *
- * @param type the type of the new {@link ArrayType}.
- * @throws IllegalArgumentException if the type is not a primitive
- * array.
- * @since 1.6
- */
- @SuppressWarnings("unchecked")
- public static <T> ArrayType<T> getPrimitiveArrayType(Class<T> type)
- {
- ArrayType<T> arr = (ArrayType<T>) primCache.get(type);
- if (arr != null)
- return arr;
- Class<?> comType = type;
- int dim = 0;
- do
- {
- comType = comType.getComponentType();
- ++dim;
- if (comType == null)
- throw new IllegalArgumentException("The given class is " +
- "not an array.");
- } while (comType.isArray());
- try
- {
- arr = new ArrayType<T>(getPrimitiveType(comType), true);
- }
- catch (OpenDataException e)
- {
- throw new IllegalArgumentException("The array is not of a primitive " +
- "type", e);
- }
- while (dim > 1)
- try
- {
- arr = new ArrayType<T>(1, arr);
- --dim;
- }
- catch (OpenDataException e)
- {
- throw (Error)
- new InternalError("Couldn't generate extra dimensions").initCause(e);
- }
- primCache.put(type, arr);
- return arr;
- }
-
- /**
- * Returns the number of dimensions used by arrays
- * of this type.
- *
- * @return the number of dimensions.
- */
- public int getDimension()
- {
- return dimension;
- }
-
- /**
- * Returns the open type descriptor which describes
- * the type of the elements of this array type.
- *
- * @return the type of the elements.
- */
- public OpenType<?> getElementOpenType()
- {
- return elementType;
- }
-
- /**
- * <p>
- * Returns the hash code of the array type.
- * This is computed as the sum of the hash code of the
- * element type together with the number of dimensions
- * the array has and the primitive array flag. These
- * are the same elements of the type that are compared as
- * part of the {@link #equals(java.lang.Object)} method,
- * thus ensuring that the hashcode is compatible with the
- * equality test.
- * </p>
- * <p>
- * As instances of this class are immutable, the hash code
- * is computed just once for each instance and reused
- * throughout its life.
- * </p>
- *
- * @return the hash code of this instance.
- */
- public int hashCode()
- {
- if (hashCode == null)
- hashCode = Integer.valueOf(dimension +
- elementType.hashCode() +
- Boolean.valueOf(primitiveArray).hashCode());
- return hashCode.intValue();
- }
-
- /**
- * Returns true if this instance represents an array of
- * a primitive type.
- *
- * @return true if the array is of a primitive type.
- */
- public boolean isPrimitiveArray()
- {
- return primitiveArray;
- }
-
- /**
- * <p>
- * Returns true if the specified object is a member of this
- * array type. The object is judged to be so if it is
- * non-null, an array and one of the following two conditions
- * holds:
- * </p>
- * <ul>
- * <li>This {@link ArrayType} instance has a {@link SimpleType}
- * as its element type. Thus, the object must have the same
- * class name as that returned by {@link SimpleType#getClassName()}
- * for this class.</li>
- * <li>This {@link ArrayType} instance has a {@link CompositeType}
- * or a {@link TabularType} as its element type. Thus, the object
- * must be assignable to such an array, and have elements which
- * are either null or valid values for the element type.</li>
- * </ul>
- *
- * @param obj the object to test for membership.
- * @return true if the object is a member of this type.
- */
- public boolean isValue(Object obj)
- {
- if (obj == null)
- return false;
- Class<?> objClass = obj.getClass();
- if (!(objClass.isArray()))
- return false;
- if (elementType instanceof SimpleType)
- return getClassName().equals(objClass.getName());
- Class<?> elementClass = null;
- try
- {
- elementClass = Class.forName(getClassName());
- }
- catch (ClassNotFoundException e)
- {
- throw new IllegalStateException("The array type's element " +
- "class could not be found.", e);
- }
- if (!(elementClass.isAssignableFrom(objClass)))
- return false;
- for (int a = 0; a < Array.getLength(obj); ++a)
- {
- Object elem = Array.get(obj, a);
- if (elem != null &&
- (!(elementType.isValue(elem))))
- return false;
- }
- return true;
- }
-
- /**
- * <p>
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.ArrayType</code>)
- * and each element of the instance which is relevant to
- * the definition of {@link equals(java.lang.Object)} and
- * {@link hashCode()} (i.e. the type name, the number of
- * dimensions and the element type).
- * </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=" + getTypeName()
- + ", dimension=" + dimension
- + ", elementType=" + elementType
- + ", primitiveArray=" + primitiveArray
- + "]";
- return string;
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/CompositeData.java b/libjava/classpath/javax/management/openmbean/CompositeData.java
deleted file mode 100644
index c3d2b2d..0000000
--- a/libjava/classpath/javax/management/openmbean/CompositeData.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/* CompositeData.java -- A composite data structure.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.util.Collection;
-
-/**
- * Provides an interface to a composite data structure,
- * in order to aid interoperability. The composite data
- * structure is represented by mapping field names to
- * values.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface CompositeData
-{
-
- /**
- * Returns true if this {@link CompositeData} instance contains
- * the specified key. This method always returns false for
- * an input key equal to <code>null</code> or the empty string.
- *
- * @param key the key to find in the structure.
- * @return true if the key exists.
- */
- boolean containsKey(String key);
-
- /**
- * Returns true if this {@link CompositeData} instance has
- * a value equal to that supplied.
- *
- * @param value the value to look for.
- * @return true if the value exists.
- */
- boolean containsValue(Object value);
-
- /**
- * Compares the specified object with this object for equality.
- * The object is judged equivalent if it is non-null, and also
- * an instance of {@link CompositeData} with the same name-value
- * mappings and types. The two compared instances may be
- * equivalent even if they represent different implementations of
- * {@link CompositeData}.
- *
- * @param obj the object to compare for equality.
- * @return true if <code>obj</code> is equal to <code>this</code>.
- */
- boolean equals(Object obj);
-
- /**
- * Retrieves the value for the specified key.
- *
- * @param key the key whose value should be returned.
- * @return the matching value.
- * @throws IllegalArgumentException if the key is <code>null</code>
- * or the empty string.
- * @throws InvalidKeyException if the key does not exist.
- */
- Object get(String key);
-
- /**
- * Returns the appropriate value for each key in the given array,
- * using the same ordering.
- *
- * @param keys the keys whose values should be returned.
- * @return the matching values.
- * @throws IllegalArgumentException if one of the keys is
- * <code>null</code> or the
- * empty string.
- * @throws InvalidKeyException if one of the keys does not exist.
- */
- Object[] getAll(String[] keys);
-
- /**
- * Returns the composite type which corresponds to this instance
- * of {@link CompositeData}.
- *
- * @return the composite type for this instance.
- */
- CompositeType getCompositeType();
-
- /**
- * Returns the hash code of this instance. The hash code is
- * computed as the sum of the hash codes of all the values plus
- * the hash code of the composite type. As equality comparisons
- * take place using this same information, this ensures that
- * the property, <code>e1.equals(e2)</code> implies
- * <code>e1.hashCode() == e2.hashCode(), holds for any pair
- * of instances, <code>e1</code> and <code>e2</code>.
- *
- * @return the hash code of this {@link CompositeData}.
- * @see Object#equals(Object)
- */
- int hashCode();
-
- /**
- * Returns a textual representation of this instance. The
- * exact format is left up to the implementation, but it
- * should contain the name of the implementing class,
- * the name of the type and a mapping of the form
- * <code>key=value</code> for each pair of key and value.
- *
- * @return a {@link java.lang.String} representation of the
- * object.
- */
- String toString();
-
- /**
- * Returns a read-only collection of the values associated with
- * this instance. The values are sorted using the lexicographic
- * ordering of the corresponding keys.
- *
- * @return the values of this instance.
- */
- Collection<?> values();
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/CompositeDataInvocationHandler.java b/libjava/classpath/javax/management/openmbean/CompositeDataInvocationHandler.java
deleted file mode 100644
index 4f10f6e..0000000
--- a/libjava/classpath/javax/management/openmbean/CompositeDataInvocationHandler.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/* CompositeDataInvocationHandler.java - Pseudo-accessors for CompositeData.
- Copyright (C) 2007 Free Software Foundation
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-
-/**
- * <p>
- * Provides an {@link java.lang.reflect.InvocationHandler} which
- * implements a series of accessor methods (those beginning with
- * {@code "get"} or {@code "is"}) using the content of a
- * {@link CompositeData} object. An instance of {@link CompositeData}
- * consists of a series of key-value mappings. This handler assumes
- * these keys to be the names of attributes, and thus provides
- * accessor methods by returning the associated value.
- * </p>
- * <p>
- * As an example, consider the following interface:
- * </p>
- * <pre>
- * public interface Person
- * {
- * public String getName();
- * public Date getBirthday();
- * }
- * </pre>
- * <p>
- * This specifies two accessor methods for retrieving the attributes,
- * {@code name} and {@code birthday}. An implementation of this interface
- * can be provided by creating an instance of this class, using a
- * {@link CompositeData} object with appropriate key-value mappings
- * (e.g. "name" => "Fred", "birthday" => 30/06/1974), and then passing
- * that to {@link java.lang.reflect.Proxy#newProxyInstance} along with
- * the interface itself. The invocation handler implements the methods
- * by calling {@link CompositeData#get(String)} with the appropriate key.
- * </p>
- * <p>
- * The attribute name is derived by taking the remainder of the method
- * name following {@code "get"}. If the first letter of this substring
- * is uppercase, then two attempts are made to retrieve the attribute
- * from the {@link CompositeData} instance: one using the original substring,
- * and one with the first letter changed to its lower-case equivalent.
- * If the first letter is lowercase, only the exact substring is used.
- * </p>
- * <p>
- * An {@link Object#equals(Object)} implementation is provided. This returns
- * true if the argument is a proxy with a {@link CompositeDataInvocationHandler}
- * using an equivalent {@link CompositeData} instance. {@link Object#hashCode()}
- * is also defined so as to match this implementation and give equivalent instances
- * the same hashcode.
- * </p>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.6
- */
-public class CompositeDataInvocationHandler
- implements InvocationHandler
-{
-
- /**
- * The {@link CompositeData} providing the key-value mappings.
- */
- private CompositeData data;
-
- /**
- * Constructs a new {@link CompositeDataInvocationHandler}
- * with the specified {@link CompositeData} instance.
- *
- * @param data the {@link CompositeData} instance to use.
- * @throws IllegalArgumentException if {@code data} is {@code null}.
- */
- public CompositeDataInvocationHandler(CompositeData data)
- {
- if (data == null)
- throw new IllegalArgumentException("The CompositeData instance " +
- "must be non-null.");
- this.data = data;
- }
-
- /**
- * Returns the {@link CompositeData} instance which provides
- * the key-value mappings for this instance. This is never
- * {@code null}.
- *
- * @return the {@link CompositeData} instance.
- */
- public CompositeData getCompositeData()
- {
- return data;
- }
-
- /**
- * Called by the proxy class whenever a method is called. The
- * handler only deals with accessor methods (beginning with
- * {@code "get"} or {@code "is"}), {@code equals}, and
- * {@code "hashCode"}. Accessor methods are implemented by
- * returning the appropriate value from the {@link CompositeData}
- * instance, while {@code equals} and {@code hashCode} allow
- * two proxies with a {@link CompositeDataInvocationHandler} using
- * the same {@link CompositeData} instance to be classified
- * as equivalent.
- *
- * @param proxy the proxy on which the method was called.
- * @param method the method which was called.
- * @param args the arguments supplied to the method.
- * @return the return value from the method.
- * @throws Throwable if an exception is thrown in the process.
- */
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable
- {
- String mName = method.getName();
- if (mName.equals("equals"))
- {
- if (args[0] instanceof Proxy)
- {
- InvocationHandler h = Proxy.getInvocationHandler(args[0]);
- if (h instanceof CompositeDataInvocationHandler)
- return data.equals(((CompositeDataInvocationHandler)
- h).getCompositeData());
- }
- return false;
- }
- if (mName.equals("hashCode"))
- {
- return data.hashCode();
- }
- String attrib = null;
- if (mName.startsWith("get"))
- attrib = mName.substring(3);
- else if (mName.startsWith("is"))
- attrib = mName.substring(2);
- if (attrib == null)
- throw new NoSuchMethodException(mName + " is not an accessor.");
- if (!data.containsKey(attrib))
- {
- if (Character.isLowerCase(attrib.charAt(0)))
- throw new NoSuchMethodException("The attribute " +
- attrib + " is not available " +
- "in the given CompositeData " +
- "object");
- attrib = Character.toLowerCase(attrib.charAt(0))
- + attrib.substring(1);
- if (!data.containsKey(attrib))
- throw new NoSuchMethodException("The attribute " +
- attrib + " is not available " +
- "in the given CompositeData " +
- "object");
- }
- return data.get(attrib);
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/CompositeDataSupport.java b/libjava/classpath/javax/management/openmbean/CompositeDataSupport.java
deleted file mode 100644
index 2cc6f40..0000000
--- a/libjava/classpath/javax/management/openmbean/CompositeDataSupport.java
+++ /dev/null
@@ -1,345 +0,0 @@
-/* CompositeData.java -- A composite data structure implementation.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.io.Serializable;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-/**
- * Provides an implementation of the {@link CompositeData}
- * interface.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class CompositeDataSupport
- implements CompositeData, Serializable
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 8003518976613702244L;
-
- /**
- * Mapping of field names to values.
- *
- * @serial the map of field names to values.
- */
- private SortedMap<String, Object> contents;
-
- /**
- * The composite type which represents this composite data instance.
- *
- * @serial the type information for this instance.
- */
- private CompositeType compositeType;
-
- /**
- * Constructs a new {@link CompositeDataSupport} instance with the
- * specified type using field names and values from the supplied map.
- * The keys of the map become the field names, while the values
- * become the values of each respective field. This constructor simply
- * calls the other constructor, with the two arrays formed using the
- * keys and values of this map, respectively. Thus, the input parameters
- * given should conform to the same requirements given there (i.e. no
- * null values or empty strings).
- *
- * @param type the composite type of this composite data structure.
- * @param items a mapping of field names to values. This should match
- * the mappings given by the type (i.e. for each mapping
- * in the type, there should be a corresponding field name
- * with a value of the correct type).
- * @throws IllegalArgumentException if the type, the map or any of the keys
- * or values in the map are <code>null</code>,
- * or if any key from the map is an empty
- * string.
- * @throws OpenDataException if a mismatch occurs between the map and the
- * field name/type specification given by the
- * {@link CompositeType} instance. This may be
- * due to the two having a different size, a
- * mismatch between keys or an incorrectly typed
- * value.
- * @throws ArrayStoreException if one of the keys is not a
- * {@link java.lang.String} (thus calling a failure
- * in converting the keys to an array of strings).
- */
- public CompositeDataSupport(CompositeType type, Map<String, ?> items)
- throws OpenDataException
- {
- this(type,
- items.keySet().toArray(new String[items.size()]),
- items.values().toArray());
- }
-
- /**
- * Constructs a new {@link CompositeDataSupport} instance with the
- * specified type using the supplied arrays of field names and
- * values. Neither the type, the two arrays or any elements of the
- * arrays may be <code>null</code>. The {@link java.lang.String}s
- * within the <code>names</code> array must be non-empty. The
- * arrays must match in size and order, as each element of the
- * <code>names</code> array is matched against the corresponding
- * value in the <code>values</code> array. Internally, the two are
- * stored in a map, lexographically ordered using the field names.
- * The data given should also conform to the description of the
- * instance given by the {@link CompositeType} instance supplied.
- *
- * @param type the composite type of this composite data structure.
- * @param names the field names.
- * @param values the corresponding values of the fields.
- * @throws IllegalArgumentException if the type, the arrays or any of the keys
- * or values in the arrays are <code>null</code>,
- * or if any key from <code>names</code> is
- * an empty string. This also occurs if the
- * arrays differ in length.
- * @throws OpenDataException if a mismatch occurs between the arrays and the
- * field name/type specification given by the
- * {@link CompositeType} instance. This may be
- * due to a differing number of field names, a
- * mismatch between names or an incorrectly typed
- * value.
- */
- public CompositeDataSupport(CompositeType type, String[] names, Object[] values)
- throws OpenDataException
- {
- if (type == null)
- throw new IllegalArgumentException("The given composite type is null.");
- compositeType = type;
- if (names == null)
- throw new IllegalArgumentException("The names array is null.");
- if (values == null)
- throw new IllegalArgumentException("The values array is null.");
- if (names.length != values.length)
- throw new IllegalArgumentException("The sizes of the arrays differ.");
- Set<String> typeKeys = type.keySet();
- if (typeKeys.size() != names.length)
- throw new OpenDataException("The number of field names does not match " +
- "the type description.");
- contents = new TreeMap<String, Object>();
- for (int a = 0; a < names.length; ++a)
- {
- if (names[a] == null)
- throw new IllegalArgumentException("Element " + a + " of the names " +
- "array is null.");
- if (names[a].length() == 0)
- throw new IllegalArgumentException("Element " + a + " of the names " +
- "array is an empty string.");
- if (values[a] == null)
- throw new IllegalArgumentException("Element " + a + " of the values " +
- "array is null.");
- if (!(typeKeys.contains(names[a])))
- throw new OpenDataException("The name, " + names[a] + ", is not a " +
- "field in the given type description.");
- if (!(type.getType(names[a]).isValue(values[a])))
- throw new OpenDataException("The value, " + values[a] + ", is not a " +
- "valid value for the " + names[a] + " field.");
- contents.put(names[a], values[a]);
- }
- }
-
- /**
- * Returns true if this {@link CompositeData} instance contains
- * the specified key. This method always returns false for
- * an input key equal to <code>null</code> or the empty string.
- *
- * @param key the key to find in the structure.
- * @return true if the key exists.
- */
- public boolean containsKey(String key)
- {
- if (key == null || key.length() == 0)
- return false;
- else
- return contents.containsKey(key);
- }
-
- /**
- * Returns true if this {@link CompositeData} instance has
- * a value equal to that supplied.
- *
- * @param value the value to look for.
- * @return true if the value exists.
- */
- public boolean containsValue(Object value)
- {
- return contents.containsValue(value);
- }
-
-
- /**
- * Compares the specified object with this object for equality.
- * The object is judged equivalent if it is non-null, and also
- * an instance of {@link CompositeData} with the same name-value
- * mappings and types. The two compared instances may be
- * equivalent even if they represent different implementations of
- * {@link CompositeData}.
- *
- * @param obj the object to compare for equality.
- * @return true if <code>obj</code> is equal to <code>this</code>.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof CompositeData))
- return false;
- CompositeData data = (CompositeData) obj;
- if (!(data.getCompositeType().equals(compositeType)))
- return false;
- for (String key : contents.keySet())
- {
- if (!(data.containsKey(key)))
- return false;
- if (!(data.get(key).equals(contents.get(key))))
- return false;
- }
- return true;
- }
-
- /**
- * Retrieves the value for the specified key.
- *
- * @param key the key whose value should be returned.
- * @return the matching value.
- * @throws IllegalArgumentException if the key is <code>null</code>
- * or the empty string.
- * @throws InvalidKeyException if the key does not exist.
- */
- public Object get(String key)
- {
- if (key == null)
- throw new IllegalArgumentException("The supplied key is null.");
- if (key.length() == 0)
- throw new IllegalArgumentException("The supplied key is the empty string.");
- if (!(contents.containsKey(key)))
- throw new InvalidKeyException("The supplied key does not exist.");
- return contents.get(key);
- }
-
- /**
- * Returns the appropriate value for each key in the given array,
- * using the same ordering.
- *
- * @param keys the keys whose values should be returned.
- * @return the matching values.
- * @throws IllegalArgumentException if one of the keys is
- * <code>null</code> or the
- * empty string.
- * @throws InvalidKeyException if one of the keys does not exist.
- */
- public Object[] getAll(String[] keys)
- {
- Object[] values = new Object[keys.length];
- for (int a = 0; a < keys.length; ++a)
- values[a] = get(keys[a]);
- return values;
- }
-
-
- /**
- * Returns the composite type which corresponds to this instance
- * of {@link CompositeData}.
- *
- * @return the composite type for this instance.
- */
- public CompositeType getCompositeType()
- {
- return compositeType;
- }
-
- /**
- * Returns the hash code of this instance. The hash code is
- * computed as the sum of the hash codes of all the values plus
- * the hash code of the composite type. As equality comparisons
- * take place using this same information, this should ensure that
- * the property, <code>e1.equals(e2)</code> implies
- * <code>e1.hashCode() == e2.hashCode(), holds for any pair
- * of instances, <code>e1</code> and <code>e2</code>. However,
- * this relies on the other instance implementing the
- * <code>hashCode</code> method correctly, if it is not an
- * instance of {@link CompositeDataSupport}.
- *
- * @return the hash code of this {@link CompositeData}.
- * @see Object#equals(Object)
- */
- public int hashCode()
- {
- int code = compositeType.hashCode();
- for (Object o : contents.values())
- code += o.hashCode();
- return code;
- }
-
-
- /**
- * Returns a textual representation of this instance. The
- * exact format is left up to the implementation, but it
- * should contain the name of the implementing class,
- * the name of the type and a mapping of the form
- * <code>key=value</code> for each pair of key and value.
- *
- * @return a {@link java.lang.String} representation of the
- * object.
- */
- public String toString()
- {
- return getClass().getName() +
- "[compositeType=" + compositeType +
- ",contents=" + contents +
- "]";
- }
-
- /**
- * Returns a read-only collection of the values associated with
- * this instance. The values are sorted using the lexicographic
- * ordering of the corresponding keys.
- *
- * @return the values of this instance.
- */
- public Collection<?> values()
- {
- return Collections.unmodifiableCollection(contents.values());
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/CompositeType.java b/libjava/classpath/javax/management/openmbean/CompositeType.java
deleted file mode 100644
index e36fed1..0000000
--- a/libjava/classpath/javax/management/openmbean/CompositeType.java
+++ /dev/null
@@ -1,320 +0,0 @@
-/* CompositeType.java -- Type descriptor for CompositeData instances.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-
-/**
- * The open type descriptor for instances of the
- * {@link CompositeData} class.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class CompositeType
- extends OpenType<CompositeData>
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -5366242454346948798L;
-
- /**
- * A map of item names to their descriptions.
- */
- private TreeMap<String,String> nameToDescription;
-
- /**
- * A map of item names to their types.
- */
- private TreeMap<String,OpenType<?>> nameToType;
-
- /**
- * The hash code of this instance.
- */
- private transient Integer hashCode;
-
- /**
- * The <code>toString()</code> result of this instance.
- */
- private transient String string;
-
- /**
- * <p>
- * Constructs a new {@link CompositeType} instance for the given
- * type name with the specified field names, descriptions and types.
- * All parameters, and the elements of the array parameters, must be
- * non-null and {@link java.lang.String} values must be something other
- * than the empty string. The arrays must be non-empty, and be of
- * equal size.
- * </p>
- * <p>
- * The result of <code>CompositeData.class.getName()</code> is adopted
- * as the class name (see {@link OpenType}) and changes to the array
- * elements following construction of the {@link CompositeType} instance
- * will <strong>not</strong> affect the values used by the instance.
- * The field names are sorted in to ascending alphanumeric order internally,
- * and so ordering can not be used to differentiate between two instances.
- * </p>
- *
- * @param name the name of this composite type.
- * @param desc a description of this composite type.
- * @param names the names of each field within the composite type.
- * @param descs the descriptions of each field within the composite type.
- * @param types the types of each field within the composite type.
- * @throws IllegalArgumentException if any validity constraint listed above
- * is broken.
- * @throws OpenDataException if duplicate item names are provided. Item names
- * are case-sensitive, but whitespace is removed
- * before comparison.
- */
- public CompositeType(String name, String desc, String[] names,
- String[] descs, OpenType<?>[] types)
- throws OpenDataException
- {
- super(CompositeData.class.getName(), name, desc);
- if (names.length == 0
- || names.length != descs.length
- || names.length != types.length)
- throw new IllegalArgumentException("Arrays must be non-empty " +
- "and of equal size.");
- nameToDescription = new TreeMap<String,String>();
- for (int a = 0; a < names.length; ++a)
- {
- if (names[a] == null)
- throw new IllegalArgumentException("Name " + a + " is null.");
- if (descs[a] == null)
- throw new IllegalArgumentException("Description " + a +
- " is null.");
- String fieldName = names[a].trim();
- if (fieldName.length() == 0)
- throw new IllegalArgumentException("Name " + a + " is " +
- "the empty string.");
- if (descs[a].length() == 0)
- throw new IllegalArgumentException("Description " + a + " is " +
- "the empty string.");
- if (nameToDescription.containsKey(fieldName))
- throw new OpenDataException(fieldName + " appears more " +
- "than once.");
- nameToDescription.put(fieldName, descs[a]);
- }
- nameToType = new TreeMap<String,OpenType<?>>();
- for (int a = 0; a < names.length; ++a)
- nameToType.put(names[a].trim(), types[a]);
- }
-
- /**
- * Returns true if this composite data type has a field
- * with the given name.
- *
- * @param name the name of the field to check for.
- * @return true if a field of that name exists.
- */
- public boolean containsKey(String name)
- {
- return nameToDescription.containsKey(name);
- }
-
- /**
- * <p>
- * Compares this composite data type with another object
- * for equality. The objects are judged to be equal if:
- * </p>
- * <ul>
- * <li><code>obj</code> is not null.</li>
- * <li><code>obj</code> is an instance of
- * {@link CompositeType}.</li>
- * <li>The type names are equal.</li>
- * <li>The fields and their types match.</li>
- * </ul>
- *
- * @param obj the object to compare with.
- * @return true if the conditions above hold.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof CompositeType))
- return false;
- CompositeType ctype = (CompositeType) obj;
- if (!(ctype.getTypeName().equals(getTypeName())))
- return false;
- Set<String> keys = keySet();
- if (!(ctype.keySet().equals(keys)))
- return false;
- for (String key : keys)
- {
- if (!(ctype.getType(key).equals(getType(key))))
- return false;
- }
- return true;
- }
-
- /**
- * Returns the description for the given field name,
- * or <code>null</code> if the field name does not
- * exist within this composite data type.
- *
- * @param name the name of the field whose description
- * should be returned.
- * @return the description, or <code>null</code> if the
- * field doesn't exist.
- */
- public String getDescription(String name)
- {
- return nameToDescription.get(name);
- }
-
- /**
- * Returns the type for the given field name,
- * or <code>null</code> if the field name does not
- * exist within this composite data type.
- *
- * @param name the name of the field whose type
- * should be returned.
- * @return the type, or <code>null</code> if the
- * field doesn't exist.
- */
- public OpenType<?> getType(String name)
- {
- return nameToType.get(name);
- }
-
- /**
- * <p>
- * Returns the hash code of the composite data type.
- * This is computed as the sum of the hash codes of
- * each field name and its type, together with the hash
- * code of the type name. These are the same elements
- * of the type that are compared as part of the
- * {@link #equals(java.lang.Object)} method, thus ensuring
- * that the hashcode is compatible with the equality
- * test.
- * </p>
- * <p>
- * As instances of this class are immutable, the hash code
- * is computed just once for each instance and reused
- * throughout its life.
- * </p>
- *
- * @return the hash code of this instance.
- */
- public int hashCode()
- {
- if (hashCode == null)
- {
- int elementTotal = 0;
- for (Map.Entry<String,OpenType<?>> entry : nameToType.entrySet())
- {
- elementTotal += (entry.getKey().hashCode() +
- entry.getValue().hashCode());
- }
- hashCode = Integer.valueOf(elementTotal
- + getTypeName().hashCode());
- }
- return hashCode.intValue();
- }
-
- /**
- * Returns true if the specified object is a member of this
- * composite type. The object is judged to be so if it is
- * an instance of {@link CompositeData} with an equivalent
- * type, according to the definition of
- * {@link #equals(java.lang.Object)} for {@link CompositeType}.
- *
- * @param obj the object to test for membership.
- * @return true if the object is a member of this type.
- */
- public boolean isValue(Object obj)
- {
- if (obj instanceof CompositeData)
- {
- CompositeData data = (CompositeData) obj;
- return equals(data.getCompositeType());
- }
- return false;
- }
-
- /**
- * Returns an unmodifiable {@link java.util.Set}-based
- * view of the field names that form part of this
- * {@link CompositeType} instance. The names are stored
- * in ascending alphanumeric order.
- *
- * @return a unmodifiable set containing the field
- * name {@link java.lang.String}s.
- */
- public Set<String> keySet()
- {
- return Collections.unmodifiableSet(nameToDescription.keySet());
- }
-
- /**
- * <p>
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.CompositeType</code>)
- * and each element of the instance which is relevant to
- * the definition of {@link equals(java.lang.Object)} and
- * {@link hashCode()} (i.e. the type name, and the name
- * and type of each field).
- * </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=" + getTypeName()
- + ", fields=" + nameToType
- + "]";
- return string;
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/InvalidKeyException.java b/libjava/classpath/javax/management/openmbean/InvalidKeyException.java
deleted file mode 100644
index e9458ba..0000000
--- a/libjava/classpath/javax/management/openmbean/InvalidKeyException.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/* InvalidKeyException.java -- Thrown by an invalid composite/tabular key.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-/**
- * Thrown when an invalid key (a field name or row index) is
- * passed to a method of the {@link CompositeData} or
- * {@link TabularData} classes.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class InvalidKeyException
- extends IllegalArgumentException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 4224269443946322062L;
-
- /**
- * Constructs a new <code>InvalidKeyException</code>.
- */
- public InvalidKeyException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>InvalidKeyException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public InvalidKeyException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/InvalidOpenTypeException.java b/libjava/classpath/javax/management/openmbean/InvalidOpenTypeException.java
deleted file mode 100644
index b4f49ba..0000000
--- a/libjava/classpath/javax/management/openmbean/InvalidOpenTypeException.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/* InvalidOpenTypeException.java -- Thrown by an invalid open type.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-/**
- * Thrown when a open data value has an erroneous open
- * type.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class InvalidOpenTypeException
- extends IllegalArgumentException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -2837312755412327534L;
-
- /**
- * Constructs a new <code>InvalidOpenTypeException</code>.
- */
- public InvalidOpenTypeException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>InvalidOpenTypeException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public InvalidOpenTypeException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/KeyAlreadyExistsException.java b/libjava/classpath/javax/management/openmbean/KeyAlreadyExistsException.java
deleted file mode 100644
index 69b22c4..0000000
--- a/libjava/classpath/javax/management/openmbean/KeyAlreadyExistsException.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/* KeyAlreadyExistsException.java -- Thrown when a key clashes with another.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-/**
- * Thrown when a key (a field name or row index) is passed to a method
- * of the {@link CompositeData} or {@link TabularData} classes and it
- * is found to already be in use.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class KeyAlreadyExistsException
- extends IllegalArgumentException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 1845183636745282866L;
-
- /**
- * Constructs a new <code>KeyAlreadyExistsException</code>.
- */
- public KeyAlreadyExistsException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>KeyAlreadyExistsException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public KeyAlreadyExistsException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/OpenDataException.java b/libjava/classpath/javax/management/openmbean/OpenDataException.java
deleted file mode 100644
index 5e2a0b7..0000000
--- a/libjava/classpath/javax/management/openmbean/OpenDataException.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/* OpenDataException.java -- Thrown by invalid open bean data.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import javax.management.JMException;
-
-/**
- * Thrown when an instance of one of the open types, open
- * data objects or open metadata information objects could
- * not be created due to invalid construction parameters.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class OpenDataException
- extends JMException
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 8346311255433349870L;
-
- /**
- * Constructs a new <code>OpenDataException</code>.
- */
- public OpenDataException()
- {
- super();
- }
-
- /**
- * Constructs a new <code>OpenDataException</code>
- * with the specified message.
- *
- * @param message the error message to give to the user.
- */
- public OpenDataException(String message)
- {
- super(message);
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/OpenMBeanAttributeInfo.java b/libjava/classpath/javax/management/openmbean/OpenMBeanAttributeInfo.java
deleted file mode 100644
index d521306..0000000
--- a/libjava/classpath/javax/management/openmbean/OpenMBeanAttributeInfo.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/* OpenMBeanAttributeInfo.java -- Open typed info about an attribute.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-/**
- * Describes an attribute associated with an open management bean.
- * This interface includes those methods specified by {@link
- * javax.management.MBeanAttributeInfo}, so implementations should
- * extend this class.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface OpenMBeanAttributeInfo
- extends OpenMBeanParameterInfo
-{
-
- /**
- * Compares this attribute with the supplied object. This returns
- * true iff the object is an instance of {@link OpenMBeanAttributeInfo}
- * with an equal name and open type, the same default, minimum,
- * maximum and legal values and the same access properties
- * ({@link #isIs()}, {@link #isReadable()}, {@link #isWritable()}).
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link OpenMBeanParameterInfo}
- * instance,
- * <code>name.equals(object.getName())</code>,
- * <code>openType.equals(object.getOpenType())</code>,
- * <code>defaultValue.equals(object.getDefaultValue())</code>,
- * <code>minValue.equals(object.getMinValue())</code>,
- * <code>maxValue.equals(object.getMaxValue())</code>,
- * <code>legalValues.equals(object.getLegalValues())</code>,
- * <code>is == object.isIs()</code>,
- * <code>isRead == object.isReadable()</code>,
- * and <code>isWrite == object.isWritable()</code>.
- */
- boolean equals(Object obj);
-
- /**
- * Returns the hashcode of the attribute information as the sum of
- * the hashcodes of the name, open type, default value, maximum
- * value, minimum value, the set of legal values and the access
- * properties.
- *
- * @return the hashcode of the attribute information.
- */
- int hashCode();
-
- /**
- * Returns true if the accessor method of this attribute
- * is of the form <code>isXXX</code>.
- *
- * @return true if the accessor takes the form <code>isXXX</code>.
- */
- boolean isIs();
-
- /**
- * Returns true if value of this attribute can be read.
- *
- * @return true if the value of the attribute can be read.
- */
- boolean isReadable();
-
- /**
- * Returns true if the value of this attribute can be changed.
- *
- * @return true if the value of the attribute can be changed.
- */
- boolean isWritable();
-
- /**
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.OpenMBeanAttributeInfo</code>)
- * along with the name, open type, default, minimum, maximum
- * and legal values of the parameter and the access permissions
- * ({@link #isIs()}, {@link #isReadable()}, {@link #isWritable()}).
- *
- * @return a @link{java.lang.String} instance representing
- * the instance in textual form.
- */
- String toString();
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java b/libjava/classpath/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java
deleted file mode 100644
index 098f72e..0000000
--- a/libjava/classpath/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java
+++ /dev/null
@@ -1,547 +0,0 @@
-/* OpenMBeanAttributeInfoSupport.java -- Open typed info about an attribute.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.management.MBeanAttributeInfo;
-
-/**
- * Describes an attribute of an open management bean.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class OpenMBeanAttributeInfoSupport
- extends MBeanAttributeInfo
- implements OpenMBeanAttributeInfo
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -4867215622149721849L;
-
- /**
- * The open type of the attribute.
- */
- private OpenType<?> openType;
-
- /**
- * The default value of the attribute (may be <code>null</code>).
- */
- private Object defaultValue;
-
- /**
- * The possible legal values of the attribute (may be <code>null</code>).
- */
- private Set<?> legalValues;
-
- /**
- * The minimum value of the attribute (may be <code>null</code>).
- */
- private Comparable<?> minValue;
-
- /**
- * The maximum value of the attribute (may be <code>null</code>).
- */
- private Comparable<?> maxValue;
-
- /**
- * The hash code of this instance.
- */
- private transient Integer hashCode;
-
- /**
- * The <code>toString()</code> result of this instance.
- */
- private transient String string;
-
- /**
- * Constructs a new {@link OpenMBeanAttributeInfo} using the
- * specified name, description, open type and access properties.
- * The name, description and open type may not be <code>null</code>
- * and the name and description may not be equal to the empty
- * string.
- *
- * @param name the name of the attribute.
- * @param desc a description of the attribute.
- * @param type the open type of the attribute.
- * @param isReadable true if the attribute's value can be read.
- * @param isWritable true if the attribute's value can be changed.
- * @param isIs true if the attribute uses an accessor of the form isXXX.
- * @throws IllegalArgumentException if the name, description or
- * open type are <code>null</code>
- * or the name or description are
- * the empty string.
- */
- public OpenMBeanAttributeInfoSupport(String name, String desc, OpenType<?> type,
- boolean isReadable, boolean isWritable,
- boolean isIs)
- {
- super(name, type == null ? null : type.getClassName(), desc, isReadable,
- isWritable, isIs);
- if (name == null)
- throw new IllegalArgumentException("The name may not be null.");
- if (desc == null)
- throw new IllegalArgumentException("The description may not be null.");
- if (type == null)
- throw new IllegalArgumentException("The type may not be null.");
- if (name.length() == 0)
- throw new IllegalArgumentException("The name may not be the empty string.");
- if (desc.length() == 0)
- throw new IllegalArgumentException("The description may not be the " +
- "empty string.");
- }
-
- /**
- * Constructs a new {@link OpenMBeanAttributeInfo} using the
- * specified name, description, open type and default value. The
- * name, description and open type cannot be <code>null</code> and
- * the name and description may not be equal to the empty string.
- * The default value may be <code>null</code>. If non-null, it must
- * be a valid value of the given open type. Default values are not
- * applicable to the open types, {@link ArrayType} and {@link
- * TabularType}.
- *
- * @param name the name of the attribute.
- * @param desc a description of the attribute.
- * @param type the open type of the attribute.
- * @param isReadable true if the attribute's value can be read.
- * @param isWritable true if the attribute's value can be changed.
- * @param isIs true if the attribute uses an accessor of the form isXXX.
- * @param defaultValue the default value of the attribute.
- * @throws IllegalArgumentException if the name, description or
- * open type are <code>null</code>
- * or the name or description are
- * the empty string.
- * @throws OpenDataException if <code>defaultValue<code> is non-null
- * and is either not a value of the given
- * open type or the open type is an instance
- * of {@link ArrayType} or {@link TabularType}.
- */
- public <T> OpenMBeanAttributeInfoSupport(String name, String desc, OpenType<T> type,
- boolean isReadable, boolean isWritable,
- boolean isIs, T defaultValue)
- throws OpenDataException
- {
- this(name, desc, type, isReadable, isWritable, isIs, defaultValue, null);
- }
-
- /**
- * <p>
- * Constructs a new {@link OpenMBeanAttributeInfo} using the
- * specified name, description, open type, access properties,
- * default, maximum and minimum values. The name, description
- * and open type cannot be <code>null</code> and the name and
- * description may not be equal to the empty string. The
- * default, maximum and minimum values may be <code>null</code>.
- * The following conditions apply when the attributes mentioned
- * are non-null:
- * </p>
- * <ul>
- * <li>The values must be valid values for the given open type.</li>
- * <li>Default values are not applicable to the open types, {@link
- * ArrayType} and {@link TabularType}.</li>
- * <li>The minimum value must be smaller than or equal to the maximum value
- * (literally, <code>minValue.compareTo(maxValue) <= 0</code>.</li>
- * <li>The minimum value must be smaller than or equal to the default value
- * (literally, <code>minValue.compareTo(defaultValue) <= 0</code>.</li>
- * <li>The default value must be smaller than or equal to the maximum value
- * (literally, <code>defaultValue.compareTo(maxValue) <= 0</code>.</li>
- * </ul>
- *
- * @param name the name of the attribute.
- * @param desc a description of the attribute.
- * @param type the open type of the attribute.
- * @param isReadable true if the attribute's value can be read.
- * @param isWritable true if the attribute's value can be changed.
- * @param isIs true if the attribute uses an accessor of the form isXXX.
- * @param defaultValue the default value of the attribute, or <code>null</code>.
- * @param minimumValue the minimum value of the attribute, or <code>null</code>.
- * @param maximumValue the maximum value of the attribute, or <code>null</code>.
- * @throws IllegalArgumentException if the name, description or
- * open type are <code>null</code>
- * or the name or description are
- * the empty string.
- * @throws OpenDataException if any condition in the list above is broken.
- */
- @SuppressWarnings("unchecked")
- public <T> OpenMBeanAttributeInfoSupport(String name, String desc, OpenType<T> type,
- boolean isReadable, boolean isWritable,
- boolean isIs, T defaultValue,
- Comparable<T> minimumValue,
- Comparable<T> maximumValue)
- throws OpenDataException
- {
- this(name, desc, type, isReadable, isWritable, isIs);
- if (defaultValue != null && !(type.isValue(defaultValue)))
- throw new OpenDataException("The default value is not a member of the " +
- "open type given.");
- if (minimumValue != null && !(type.isValue(minimumValue)))
- throw new OpenDataException("The minimum value is not a member of the " +
- "open type given.");
- if (maximumValue != null && !(type.isValue(maximumValue)))
- throw new OpenDataException("The maximum value is not a member of the " +
- "open type given.");
- if (defaultValue != null && (type instanceof ArrayType ||
- type instanceof TabularType))
- throw new OpenDataException("Default values are not applicable for " +
- "array or tabular types.");
- if (minimumValue != null && maximumValue != null
- && minimumValue.compareTo((T) maximumValue) > 0)
- throw new OpenDataException("The minimum value is greater than the " +
- "maximum.");
- if (minimumValue != null && defaultValue != null
- && minimumValue.compareTo(defaultValue) > 0)
- throw new OpenDataException("The minimum value is greater than the " +
- "default.");
- if (defaultValue != null && maximumValue != null
- && maximumValue.compareTo(defaultValue) < 0)
- throw new OpenDataException("The default value is greater than the " +
- "maximum.");
-
- openType = type;
- this.defaultValue = defaultValue;
- minValue = minimumValue;
- maxValue = maximumValue;
- }
-
- /**
- * <p>
- * Constructs a new {@link OpenMBeanAttributeInfo} using the
- * specified name, description, open type, access properties, default
- * value and set of legal values. The name, description and open type
- * cannot be <code>null</code> and the name and description may not be
- * equal to the empty string. The default, maximum and minimum values
- * may be <code>null</code>. The following conditions apply when the
- * attributes mentioned are non-null:
- * </p>
- * <ul>
- * <li>The default value and each of the legal values must be a valid
- * value for the given open type.</li>
- * <li>Default and legal values are not applicable to the open types, {@link
- * ArrayType} and {@link TabularType}.</li>
- * <li>The default value is not in the set of legal values.</li>
- * </ul>
- * <p>
- * The legal values are copied from the array into a unmodifiable set,
- * so future modifications to the array have no effect.
- * </p>
- *
- * @param name the name of the attribute.
- * @param desc a description of the attribute.
- * @param type the open type of the attribute.
- * @param isReadable true if the attribute's value can be read.
- * @param isWritable true if the attribute's value can be changed.
- * @param isIs true if the attribute uses an accessor of the form isXXX.
- * @param defaultValue the default value of the attribute, or <code>null</code>.
- * @param legalValues the legal values of the attribute. May be
- * <code>null</code> or an empty array.
- * @throws IllegalArgumentException if the name, description or
- * open type are <code>null</code>
- * or the name or description are
- * the empty string.
- * @throws OpenDataException if any condition in the list above is broken.
- */
- public <T> OpenMBeanAttributeInfoSupport(String name, String desc, OpenType<T> type,
- boolean isReadable, boolean isWritable,
- boolean isIs, T defaultValue,
- T[] legalValues)
- throws OpenDataException
- {
- this(name, desc, type, isReadable, isWritable, isIs);
- if (defaultValue != null && !(type.isValue(defaultValue)))
- throw new OpenDataException("The default value is not a member of the " +
- "open type given.");
- if (defaultValue != null && (type instanceof ArrayType ||
- type instanceof TabularType))
- throw new OpenDataException("Default values are not applicable for " +
- "array or tabular types.");
- if (legalValues != null && (type instanceof ArrayType ||
- type instanceof TabularType))
- throw new OpenDataException("Legal values are not applicable for " +
- "array or tabular types.");
- if (legalValues != null && legalValues.length > 0)
- {
- Set<T> lv = new HashSet<T>(legalValues.length);
- for (int a = 0; a < legalValues.length; ++a)
- {
- if (legalValues[a] != null &&
- !(type.isValue(legalValues[a])))
- throw new OpenDataException("The legal value, "
- + legalValues[a] +
- "is not a member of the " +
- "open type given.");
- lv.add(legalValues[a]);
- }
- if (defaultValue != null && !(lv.contains(defaultValue)))
- throw new OpenDataException("The default value is not in the set " +
- "of legal values.");
- this.legalValues = Collections.unmodifiableSet(lv);
- }
- openType = type;
- this.defaultValue = defaultValue;
- }
-
- /**
- * Compares this attribute with the supplied object. This returns
- * true iff the object is an instance of {@link OpenMBeanAttributeInfo}
- * with an equal name and open type and the same default, minimum,
- * maximum and legal values and the same access properties.
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link OpenMBeanAttributeInfo}
- * instance,
- * <code>name.equals(object.getName())</code>,
- * <code>openType.equals(object.getOpenType())</code>,
- * <code>isRead == object.isReadable()</code>,
- * <code>isWrite == object.isWritable()</code>,
- * <code>isIs == object.isIs()</code>,
- * <code>defaultValue.equals(object.getDefaultValue())</code>,
- * <code>minValue.equals(object.getMinValue())</code>,
- * <code>maxValue.equals(object.getMaxValue())</code>,
- * and <code>legalValues.equals(object.getLegalValues())</code>.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof OpenMBeanAttributeInfo))
- return false;
- OpenMBeanAttributeInfo o = (OpenMBeanAttributeInfo) obj;
- return getName().equals(o.getName()) &&
- openType.equals(o.getOpenType()) &&
- isReadable() == o.isReadable() &&
- isWritable() == o.isWritable() &&
- isIs() == o.isIs() &&
- (defaultValue == null ? o.getDefaultValue() == null :
- defaultValue.equals(o.getDefaultValue())) &&
- (minValue == null ? o.getMinValue() == null :
- minValue.equals(o.getMinValue())) &&
- (maxValue == null ? o.getMaxValue() == null :
- maxValue.equals(o.getMaxValue())) &&
- (legalValues == null ? o.getLegalValues() == null :
- legalValues.equals(o.getLegalValues()));
- }
-
- /**
- * Returns the default value of this attribute, or <code>null</code>
- * if there is no default value.
- *
- * @return the default value of the attribute, or <code>null</code>
- * if there is no default.
- */
- public Object getDefaultValue()
- {
- return defaultValue;
- }
-
- /**
- * Returns a {@link java.util.Set} enumerating the legal values
- * of this attribute, or <code>null</code> if no such limited
- * set exists for this attribute.
- *
- * @return a set of legal values, or <code>null</code> if no such
- * set exists.
- */
- public Set<?> getLegalValues()
- {
- return legalValues;
- }
-
- /**
- * Returns the maximum value of this attribute, or <code>null</code>
- * if there is no maximum.
- *
- * @return the maximum value, or <code>null</code> if none exists.
- */
- public Comparable<?> getMaxValue()
- {
- return maxValue;
- }
-
- /**
- * Returns the minimum value of this attribute, or <code>null</code>
- * if there is no minimum.
- *
- * @return the minimum value, or <code>null</code> if none exists.
- */
- public Comparable<?> getMinValue()
- {
- return minValue;
- }
-
- /**
- * Returns the open type instance which represents the type of this
- * attribute.
- *
- * @return the open type of this attribute.
- */
- public OpenType<?> getOpenType()
- {
- return openType;
- }
-
- /**
- * Returns true if this attribute has a default value
- * (i.e. the value is non-null).
- *
- * @return true if this attribute has a default.
- */
- public boolean hasDefaultValue()
- {
- return defaultValue != null;
- }
-
- /**
- * <p>
- * Returns the hashcode of the attribute information as the sum of
- * the hashcodes of the name, open type, default value, maximum
- * value, minimum value and the set of legal values.
- * </p>
- * <p>
- * As instances of this class are immutable, the hash code
- * is computed just once for each instance and reused
- * throughout its life.
- * </p>
- *
- * @return the hashcode of the attribute information.
- */
- public int hashCode()
- {
- if (hashCode == null)
- hashCode = Integer.valueOf(getName().hashCode() +
- openType.hashCode() +
- Boolean.valueOf(isReadable()).hashCode() +
- (2 *
- Boolean.valueOf(isWritable()).hashCode()) +
- (4 * Boolean.valueOf(isIs()).hashCode()) +
- (defaultValue == null ? 0 :
- defaultValue.hashCode()) +
- (minValue == null ? 0 :
- minValue.hashCode()) +
- (maxValue == null ? 0 :
- maxValue.hashCode()) +
- (legalValues == null ? 0 :
- legalValues.hashCode()));
- return hashCode.intValue();
- }
-
- /**
- * Returns true if there is a set of legal values for this
- * attribute (i.e. the value is non-null).
- *
- * @return true if a set of legal values exists for this
- * attribute.
- */
- public boolean hasLegalValues()
- {
- return legalValues != null;
- }
-
- /**
- * Returns true if there is a maximum value for this attribute
- * (i.e. the value is non-null).
- *
- * @return true if a maximum value exists for this attribute.
- */
- public boolean hasMaxValue()
- {
- return maxValue != null;
- }
-
- /**
- * Returns true if there is a minimum value for this attribute.
- * (i.e. the value is non-null).
- *
- * @return true if a minimum value exists for this attribute.
- */
- public boolean hasMinValue()
- {
- return minValue != null;
- }
-
- /**
- * Returns true if the specified object is a valid value for
- * this attribute.
- *
- * @param obj the object to test.
- * @return true if <code>obj</code> is a valid value for this
- * attribute.
- */
- public boolean isValue(Object obj)
- {
- return openType.isValue(obj);
- }
-
- /**
- * <p>
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.OpenMBeanAttributeInfo</code>)
- * along with the name, open type, access properties, default,
- * minimum, maximum and legal values of the attribute.
- * </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=" + getName()
- + ",openType=" + openType
- + ",isReadable=" + isReadable()
- + ",isWritable=" + isWritable()
- + ",isIs=" + isIs()
- + ",defaultValue=" + defaultValue
- + ",minValue=" + minValue
- + ",maxValue=" + maxValue
- + ",legalValues=" + legalValues
- + "]";
- return string;
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/OpenMBeanConstructorInfo.java b/libjava/classpath/javax/management/openmbean/OpenMBeanConstructorInfo.java
deleted file mode 100644
index 5bccdb6..0000000
--- a/libjava/classpath/javax/management/openmbean/OpenMBeanConstructorInfo.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/* OpenMBeanConstructorInfo.java -- Open typed info about a constructor.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import javax.management.MBeanParameterInfo;
-
-/**
- * Describes a constructor for an open management bean.
- * This interface includes those methods specified by {@link
- * javax.management.MBeanConstructorInfo}, so implementations should
- * extend this class. The {@link #getSignature()} method should
- * return an array containing instances of {@link OpenMBeanParameterInfo}.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface OpenMBeanConstructorInfo
-{
-
- /**
- * Compares this attribute with the supplied object. This returns
- * true iff the object is an instance of {@link OpenMBeanConstructorInfo}
- * with an equal name and signature.
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link OpenMBeanParameterInfo}
- * instance,
- * <code>name.equals(object.getName())</code>,
- * and <code>signature.equals(object.getSignature())</code>.
- */
- boolean equals(Object obj);
-
- /**
- * Returns a description of this constructor.
- *
- * @return a human-readable description.
- */
- String getDescription();
-
- /**
- * Returns the name of this constructor.
- *
- * @return the name of the constructor.
- */
- String getName();
-
- /**
- * Returns the constructor's signature, in the form of
- * information on each parameter. Each parameter is
- * described by an instance of {@link OpenMBeanParameterInfo}.
- *
- * @return an array of {@link OpenMBeanParameterInfo} objects,
- * describing the constructor parameters.
- */
- MBeanParameterInfo[] getSignature();
-
- /**
- * Returns the hashcode of the constructor information as the sum of
- * the hashcodes of the name and signature (calculated by
- * <code>java.util.Arrays.asList(signature).hashCode()</code>).
- *
- * @return the hashcode of the constructor information.
- */
- int hashCode();
-
- /**
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.OpenMBeanConstructorInfo</code>)
- * along with the name and signature.
- *
- * @return a @link{java.lang.String} instance representing
- * the instance in textual form.
- */
- String toString();
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/OpenMBeanConstructorInfoSupport.java b/libjava/classpath/javax/management/openmbean/OpenMBeanConstructorInfoSupport.java
deleted file mode 100644
index c187d5d..0000000
--- a/libjava/classpath/javax/management/openmbean/OpenMBeanConstructorInfoSupport.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/* OpenMBeanConstructorInfoSupport.java -- Open typed info about an constructor.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.util.Arrays;
-
-import javax.management.MBeanConstructorInfo;
-import javax.management.MBeanParameterInfo;
-
-/**
- * Describes a constructor for an open management bean.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class OpenMBeanConstructorInfoSupport
- extends MBeanConstructorInfo
- implements OpenMBeanConstructorInfo
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -4400441579007477003L;
-
- /**
- * The hash code of this instance.
- */
- private transient Integer hashCode;
-
- /**
- * The <code>toString()</code> result of this instance.
- */
- private transient String string;
-
- /**
- * Constructs a @link{OpenMBeanConstructorInfo} with the specified
- * name, description and parameter information. A <code>null</code>
- * value for the parameter information is the same as passing in
- * an empty array. Neither the name nor the description may be
- * null or equal to the empty string. A copy of the parameter array
- * is taken, so later changes have no effect.
- *
- * @param name the name of the constructor.
- * @param desc a description of the constructor.
- * @param sig the signature of the constructor, as a series
- * of {@link MBeanParameterInfo} objects, one for
- * each parameter.
- * @throws IllegalArgumentException if the name or description is
- * either <code>null</code>
- * or the empty string.
- * @throws ArrayStoreException if the members of the signature array
- * are not assignable to
- * {@link javax.management.MBeanParameterInfo}
- */
- public OpenMBeanConstructorInfoSupport(String name, String desc,
- OpenMBeanParameterInfo[] sig)
- {
- super(name, desc, (MBeanParameterInfo[]) sig);
- if (name == null)
- throw new IllegalArgumentException("The name may not be null.");
- if (desc == null)
- throw new IllegalArgumentException("The description may not be null.");
- if (name.length() == 0)
- throw new IllegalArgumentException("The name may not be the empty string.");
- if (desc.length() == 0)
- throw new IllegalArgumentException("The description may not be the " +
- "empty string.");
- }
-
- /**
- * Compares this attribute with the supplied object. This returns
- * true iff the object is an instance of {@link OpenMBeanConstructorInfo}
- * with an equal name and signature.
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link OpenMBeanParameterInfo}
- * instance,
- * <code>name.equals(object.getName())</code>,
- * and <code>signature.equals(object.getSignature())</code>.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof OpenMBeanConstructorInfo))
- return false;
- OpenMBeanConstructorInfo o = (OpenMBeanConstructorInfo) obj;
- return getName().equals(o.getName()) &&
- getSignature().equals(o.getSignature());
- }
-
- /**
- * <p>
- * Returns the hashcode of the constructor information as the sum of
- * the hashcodes of the name and signature (calculated by
- * <code>java.util.Arrays.asList(signature).hashCode()</code>).
- * </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 the hashcode of the constructor information.
- */
- public int hashCode()
- {
- if (hashCode == null)
- hashCode = Integer.valueOf(getName().hashCode() +
- Arrays.asList(getSignature()).hashCode());
- return hashCode.intValue();
- }
-
- /**
- * <p>
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.OpenMBeanConstructorInfo</code>)
- * along with the name and signature.
- * </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=" + getName()
- + ",signature=" + Arrays.toString(getSignature())
- + "]";
- return string;
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/OpenMBeanInfo.java b/libjava/classpath/javax/management/openmbean/OpenMBeanInfo.java
deleted file mode 100644
index 98da260..0000000
--- a/libjava/classpath/javax/management/openmbean/OpenMBeanInfo.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/* OpenMBeanInfo.java -- Open typed info about a management bean.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import javax.management.MBeanAttributeInfo;
-import javax.management.MBeanConstructorInfo;
-import javax.management.MBeanNotificationInfo;
-import javax.management.MBeanOperationInfo;
-
-/**
- * Describes an open management bean. Open management beans are
- * management beans where {@link
- * javax.management.DynamicMBean#getMBeanInfo()} returns an
- * implementation of this interface. This interface includes those
- * methods specified by {@link javax.management.MBeanInfo},
- * so implementations should extend this class. Each method
- * which returns an array of one of the <code>MBeanXXXInfo</code>
- * classes should return an array containing instances
- * of the equivalent open version (<code>OpenMBeanXXXInfo</code>).
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface OpenMBeanInfo
-{
-
- /**
- * Compares this attribute with the supplied object. This returns
- * true iff the object is an instance of {@link OpenMBeanInfo}
- * with the same class name and equal instances of the info classes.
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link OpenMBeanInfo}
- * instance,
- * <code>className.equals(object.getClassName())</code>
- * and each info class has an equal in the other object.
- */
- boolean equals(Object obj);
-
- /**
- * Returns descriptions of each of the attributes provided by this
- * management bean. The elements should be implementations of the
- * {@link OpenMBeanAttributeInfo} class.
- *
- * @return an array of {@link OpenMBeanAttributeInfo} objects,
- * representing the attributes emitted by this
- * management bean.
- */
- MBeanAttributeInfo[] getAttributes();
-
- /**
- * Returns the class name of the management bean.
- *
- * @return the bean's class name.
- */
- String getClassName();
-
- /**
- * Returns descriptions of each of the constructors provided by this
- * management bean. The elements should be implementations of the
- * {@link OpenMBeanConstructorInfo} class.
- *
- * @return an array of {@link OpenMBeanConstructorInfo} objects,
- * representing the constructors emitted by this
- * management bean.
- */
- MBeanConstructorInfo[] getConstructors();
-
- /**
- * Returns a description of this operation.
- *
- * @return a human-readable description.
- */
- String getDescription();
-
- /**
- * Returns descriptions of each of the notifications provided by this
- * management bean. The elements should be implementations of the
- * {@link OpenMBeanNotificationInfo} class.
- *
- * @return an array of {@link OpenMBeanNotificationInfo} objects,
- * representing the notifications emitted by this
- * management bean.
- */
- MBeanNotificationInfo[] getNotifications();
-
- /**
- * Returns descriptions of each of the operations provided by this
- * management bean. The elements should be implementations of the
- * {@link OpenMBeanOperationInfo} class.
- *
- * @return an array of {@link OpenMBeanOperationInfo} objects,
- * representing the operations emitted by this
- * management bean.
- */
- MBeanOperationInfo[] getOperations();
-
- /**
- * Returns the hashcode of the bean information as the sum of the
- * hashcodes of the class name and each array (calculated using
- * java.util.HashSet(<code>java.util.Arrays.asList(signature)).hashCode()</code>).
- *
- * @return the hashcode of the bean information.
- */
- int hashCode();
-
- /**
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.OpenMBeanInfo</code>)
- * along with the class name and textual representations
- * of each array.
- *
- * @return a @link{java.lang.String} instance representing
- * the instance in textual form.
- */
- String toString();
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/OpenMBeanInfoSupport.java b/libjava/classpath/javax/management/openmbean/OpenMBeanInfoSupport.java
deleted file mode 100644
index c335d75..0000000
--- a/libjava/classpath/javax/management/openmbean/OpenMBeanInfoSupport.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/* OpenMBeanInfoSupport.java -- Open typed info about a bean.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.util.Arrays;
-import java.util.HashSet;
-
-import javax.management.MBeanInfo;
-import javax.management.MBeanAttributeInfo;
-import javax.management.MBeanConstructorInfo;
-import javax.management.MBeanNotificationInfo;
-import javax.management.MBeanOperationInfo;
-
-/**
- * Describes an open management bean.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class OpenMBeanInfoSupport
- extends MBeanInfo
- implements OpenMBeanInfo
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 4349395935420511492L;
-
- /**
- * The hash code of this instance.
- */
- private transient Integer hashCode;
-
- /**
- * The <code>toString()</code> result of this instance.
- */
- private transient String string;
-
- /**
- * Constructs a new {@link OpenMBeanInfo} using the supplied
- * class name and description with the given attributes,
- * operations, constructors and notifications. The class
- * name does not have to actually specify a valid class that
- * can be loaded by the MBean server or class loader; it merely
- * has to be a syntactically correct class name. Any of the
- * arrays may be <code>null</code>; this will be treated as if
- * an empty array was supplied. A copy of the arrays is
- * taken, so later changes have no effect.
- *
- * @param name the name of the class this instance describes.
- * @param desc a description of the bean.
- * @param attribs the attribute descriptions for the bean,
- * or <code>null</code>.
- * @param cons the constructor descriptions for the bean,
- * or <code>null</code>.
- * @param ops the operation descriptions for the bean,
- * or <code>null</code>.
- * @param notifs the notification descriptions for the bean,
- * or <code>null</code>.
- * @throws ArrayStoreException if a members of an array
- * is not assignable to the equivalent
- * <code>MBeanXXXInfo</code> class.
- */
- public OpenMBeanInfoSupport(String name, String desc,
- OpenMBeanAttributeInfo[] attribs,
- OpenMBeanConstructorInfo[] cons,
- OpenMBeanOperationInfo[] ops,
- MBeanNotificationInfo[] notifs)
- {
- super(name, desc, (MBeanAttributeInfo[]) attribs,
- (MBeanConstructorInfo[]) cons,
- (MBeanOperationInfo[]) ops,
- notifs);
- }
-
- /**
- * Compares this attribute with the supplied object. This returns
- * true iff the object is an instance of {@link OpenMBeanInfo}
- * with the same class name and equal instances of the info classes.
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link OpenMBeanInfo}
- * instance,
- * <code>className.equals(object.getClassName())</code>
- * and each info class has an equal in the other object.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof OpenMBeanInfo))
- return false;
- OpenMBeanInfo o = (OpenMBeanInfo) obj;
- return getClassName().equals(o.getClassName()) &&
- getAttributes().equals(o.getAttributes()) &&
- getConstructors().equals(o.getConstructors()) &&
- getNotifications().equals(o.getNotifications()) &&
- getOperations().equals(o.getOperations());
- }
-
- /**
- * <p>
- * Returns the hashcode of the bean information as the sum of the
- * hashcodes of the class name and each array (calculated using
- * java.util.HashSet(<code>java.util.Arrays.asList(signature)).hashCode()</code>).
- * </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 the hashcode of the bean information.
- */
- public int hashCode()
- {
- if (hashCode == null)
- hashCode =
- Integer.valueOf(getClassName().hashCode() +
- new HashSet<MBeanAttributeInfo>(Arrays.asList(getAttributes())).hashCode() +
- new HashSet<MBeanConstructorInfo>(Arrays.asList(getConstructors())).hashCode() +
- new HashSet<MBeanNotificationInfo>(Arrays.asList(getNotifications())).hashCode() +
- new HashSet<MBeanOperationInfo>(Arrays.asList(getOperations())).hashCode());
- return hashCode.intValue();
- }
-
- /**
- * <p>
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.OpenMBeanInfo</code>)
- * along with the class name and textual representations
- * of each array.
- * </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()
- + "[className=" + getClassName()
- + ",attributes=" + Arrays.toString(getAttributes())
- + ",constructors=" + Arrays.toString(getConstructors())
- + ",notifications=" + Arrays.toString(getNotifications())
- + ",operations=" + Arrays.toString(getOperations())
- + "]";
- return string;
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/OpenMBeanOperationInfo.java b/libjava/classpath/javax/management/openmbean/OpenMBeanOperationInfo.java
deleted file mode 100644
index 3b5bf92..0000000
--- a/libjava/classpath/javax/management/openmbean/OpenMBeanOperationInfo.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/* OpenMBeanOperationInfo.java -- Open typed info about a operation.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import javax.management.MBeanParameterInfo;
-
-/**
- * Describes a operation for an open management bean.
- * This interface includes those methods specified by {@link
- * javax.management.MBeanOperationInfo}, so implementations should
- * extend this class. The {@link #getSignature()} method should
- * return an array containing instances of {@link OpenMBeanParameterInfo}.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface OpenMBeanOperationInfo
-{
-
- /**
- * Compares this attribute with the supplied object. This returns
- * true iff the object is an instance of {@link OpenMBeanOperationInfo}
- * with an equal name, signature, open return type and impact.
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link OpenMBeanParameterInfo}
- * instance,
- * <code>name.equals(object.getName())</code>,
- * <code>signature.equals(object.getSignature())</code>,
- * <code>returnOpenType.equals(object.getReturnOpenType())</code>,
- * and <code>impact == object.getImpact()</code>.
- */
- boolean equals(Object obj);
-
- /**
- * Returns a description of this operation.
- *
- * @return a human-readable description.
- */
- String getDescription();
-
- /**
- * <p>
- * Returns the impact of performing this operation.
- * The value is equal to one of the following:
- * </p>
- * <ol>
- * <li>{@link javax.management.MBeanOperationInfo#INFO}
- * &mdash; the method just returns
- * information (akin to an accessor).</li>
- * <li>{@link javax.management.MBeanOperationInfo#ACTION}
- * the method just alters the state of the bean, without
- * returning a value (akin to a mutator).</li>
- * <li>{@link javax.management.MBeanOperationInfo#ACTION_INFO}
- * the method both makes state changes and returns a value.</li>
- * <li>{@link javax.management.MBeanOperationInfo#UNKNOWN}
- * the behaviour of the operation is unknown.</li>
- * </ol>
- *
- * @return the impact of performing the operation.
- */
- int getImpact();
-
- /**
- * Returns the name of this operation.
- *
- * @return the name of the operation.
- */
- String getName();
-
- /**
- * Returns the open type instance which represents the type of the
- * return value.
- *
- * @return the open type of the return value.
- */
- OpenType<?> getReturnOpenType();
-
- /**
- * Returns the return type of the operation, as the class
- * name. This should be identical to
- * <code>getReturnOpenType.getClassName()</code>.
- *
- * @return the return type.
- */
- String getReturnType();
-
- /**
- * Returns the operation's signature, in the form of
- * information on each parameter. Each parameter is
- * described by an instance of {@link OpenMBeanParameterInfo}.
- *
- * @return an array of {@link OpenMBeanParameterInfo} objects,
- * describing the operation parameters.
- */
- MBeanParameterInfo[] getSignature();
-
- /**
- * Returns the hashcode of the operation information as the sum of
- * the hashcodes of the name, open return type, impact and signature
- * (calculated by
- * <code>java.util.Arrays.asList(signature).hashCode()</code>).
- *
- * @return the hashcode of the operation information.
- */
- int hashCode();
-
- /**
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.OpenMBeanOperationInfo</code>)
- * along with the name, signature, open return type and impact.
- *
- * @return a @link{java.lang.String} instance representing
- * the instance in textual form.
- */
- String toString();
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/OpenMBeanOperationInfoSupport.java b/libjava/classpath/javax/management/openmbean/OpenMBeanOperationInfoSupport.java
deleted file mode 100644
index 992df34..0000000
--- a/libjava/classpath/javax/management/openmbean/OpenMBeanOperationInfoSupport.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/* OpenMBeanOperationInfoSupport.java -- Open typed info about an operation.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.util.Arrays;
-
-import javax.management.MBeanOperationInfo;
-import javax.management.MBeanParameterInfo;
-
-/**
- * Describes a operation for an open management bean.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class OpenMBeanOperationInfoSupport
- extends MBeanOperationInfo
- implements OpenMBeanOperationInfo
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 4996859732565369366L;
-
- /**
- * The open type representing the return value.
- */
- private OpenType<?> returnOpenType;
-
- /**
- * The hash code of this instance.
- */
- private transient Integer hashCode;
-
- /**
- * The <code>toString()</code> result of this instance.
- */
- private transient String string;
-
- /**
- * Constructs a @link{OpenMBeanOperationInfo} with the specified name,
- * description, parameter information, open return type and impact. A
- * <code>null</code> value for the parameter information is the same
- * as passing in an empty array. A copy of the parameter array is
- * taken, so later changes have no effect. The name and the
- * description may not be equal to the empty string, and neither
- * the name, description nor the open return type may be
- * <code>null</code>. The value of <code>impact</code> must be
- * one of the four valid values
- * ({@link javax.management.MBeanOperationInfo#INFO},
- * {@link javax.management.MBeanOperationInfo#ACTION},
- * {@link javax.management.MBeanOperationInfo#ACTION_INFO} and
- * {@link javax.management.MBeanOperationInfo#UNKNOWN}).
- *
- *
- * @param name the name of the constructor.
- * @param desc a description of the attribute.
- * @param sig the signature of the method, as a series
- * of {@link MBeanParameterInfo} objects, one for
- * each parameter.
- * @param type the open return type of the method.
- * @param impact the impact of performing the operation.
- * @throws IllegalArgumentException if the name, description or
- * open return type is <code>null</code>,
- * the name or description are equal to
- * the empty string, or the impact factor
- * is not one of the values enumerated
- * above.
- * @throws ArrayStoreException if the members of the signature array
- * are not assignable to
- * {@link javax.management.MBeanParameterInfo}
- */
- public OpenMBeanOperationInfoSupport(String name, String desc,
- OpenMBeanParameterInfo[] sig,
- OpenType<?> type, int impact)
- {
- super(name, desc, (MBeanParameterInfo[]) sig,
- type == null ? null : type.getClassName(), impact);
- if (name == null)
- throw new IllegalArgumentException("The name may not be null.");
- if (desc == null)
- throw new IllegalArgumentException("The description may not be null.");
- if (type == null)
- throw new IllegalArgumentException("The type may not be null.");
- if (name.length() == 0)
- throw new IllegalArgumentException("The name may not be the empty string.");
- if (desc.length() == 0)
- throw new IllegalArgumentException("The description may not be the " +
- "empty string.");
- if (impact != ACTION && impact != INFO &&
- impact != ACTION_INFO && impact != UNKNOWN)
- throw new IllegalArgumentException("The impact factor is an invalid value.");
- returnOpenType = type;
- }
-
- /**
- * Compares this attribute with the supplied object. This returns
- * true iff the object is an instance of {@link OpenMBeanOperationInfo}
- * with an equal name, signature, open return type and impact.
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link OpenMBeanParameterInfo}
- * instance,
- * <code>name.equals(object.getName())</code>,
- * <code>signature.equals(object.getSignature())</code>,
- * <code>returnOpenType.equals(object.getReturnOpenType())</code>,
- * and <code>impact == object.getImpact()</code>.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof OpenMBeanOperationInfo))
- return false;
- OpenMBeanOperationInfo o = (OpenMBeanOperationInfo) obj;
- return getName().equals(o.getName()) &&
- getSignature().equals(o.getSignature()) &&
- returnOpenType.equals(o.getReturnOpenType()) &&
- getImpact() == o.getImpact();
- }
-
- /**
- * Returns the open type instance which represents the type of the
- * return value.
- *
- * @return the open type of the return value.
- */
- public OpenType<?> getReturnOpenType()
- {
- return returnOpenType;
- }
-
- /**
- * <p>
- * Returns the hashcode of the operation information as the sum of
- * the hashcodes of the name, open return type, impact and signature
- * (calculated by
- * <code>java.util.Arrays.asList(signature).hashCode()</code>).
- * </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 the hashcode of the operation information.
- */
- public int hashCode()
- {
- if (hashCode == null)
- hashCode = Integer.valueOf(getName().hashCode() +
- returnOpenType.hashCode() +
- Integer.valueOf(getImpact()).hashCode() +
- Arrays.asList(getSignature()).hashCode());
- return hashCode.intValue();
- }
-
- /**
- * <p>
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.OpenMBeanOperationInfo</code>)
- * along with the name, signature, open return type and impact.
- * </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 (getImpact())
- {
- 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";
- }
- string = getClass().getName()
- + "[name=" + getName()
- + ",signature=" + Arrays.toString(getSignature())
- + ",returnOpenType=" + returnOpenType
- + ",impact=" + impactString
- + "]";
- }
- return string;
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/OpenMBeanParameterInfo.java b/libjava/classpath/javax/management/openmbean/OpenMBeanParameterInfo.java
deleted file mode 100644
index 0869a68..0000000
--- a/libjava/classpath/javax/management/openmbean/OpenMBeanParameterInfo.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/* OpenMBeanParameterInfo.java -- Open typed info about a parameter.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.util.Set;
-
-/**
- * Describes the parameters of a constructor or operation associated
- * with an open management bean. This interface includes those methods
- * specified by {@link javax.management.MBeanParameterInfo}, so
- * implementations should extend this class.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface OpenMBeanParameterInfo
-{
-
- /**
- * Compares this parameter with the supplied object. This returns
- * true iff the object is an instance of {@link OpenMBeanParameterInfo}
- * with an equal name and open type and the same default, minimum,
- * maximum and legal values.
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link OpenMBeanParameterInfo}
- * instance,
- * <code>name.equals(object.getName())</code>,
- * <code>openType.equals(object.getOpenType())</code>,
- * <code>defaultValue.equals(object.getDefaultValue())</code>,
- * <code>minValue.equals(object.getMinValue())</code>,
- * <code>maxValue.equals(object.getMaxValue())</code>,
- * and <code>legalValues.equals(object.getLegalValues())</code>.
- */
- boolean equals(Object obj);
-
- /**
- * Returns the default value of this parameter, or <code>null</code>
- * if there is no default value.
- *
- * @return the default value of the parameter, or <code>null</code>
- * if there is no default.
- */
- Object getDefaultValue();
-
- /**
- * Returns a description of this parameter.
- *
- * @return a human-readable description.
- */
- String getDescription();
-
- /**
- * Returns a {@link java.util.Set} enumerating the legal values
- * of this parameter, or <code>null</code> if no such limited
- * set exists for this parameter.
- *
- * @return a set of legal values, or <code>null</code> if no such
- * set exists.
- */
- Set<?> getLegalValues();
-
- /**
- * Returns the maximum value of this parameter, or <code>null</code>
- * if there is no maximum.
- *
- * @return the maximum value, or <code>null</code> if none exists.
- */
- Comparable<?> getMaxValue();
-
- /**
- * Returns the minimum value of this parameter, or <code>null</code>
- * if there is no minimum.
- *
- * @return the minimum value, or <code>null</code> if none exists.
- */
- Comparable<?> getMinValue();
-
- /**
- * Returns the name of this parameter.
- *
- * @return the name of the parameter.
- */
- String getName();
-
- /**
- * Returns the open type instance which represents the type of this
- * parameter.
- *
- * @return the open type of this parameter.
- */
- OpenType<?> getOpenType();
-
- /**
- * Returns true if this parameter has a default value.
- *
- * @return true if this parameter has a default.
- */
- boolean hasDefaultValue();
-
- /**
- * Returns the hashcode of the parameter information as the sum of
- * the hashcodes of the name, open type, default value, maximum
- * value, minimum value and the set of legal values.
- *
- * @return the hashcode of the parameter information.
- */
- int hashCode();
-
- /**
- * Returns true if there is a set of legal values for this
- * parameter.
- *
- * @return true if a set of legal values exists for this
- * parameter.
- */
- boolean hasLegalValues();
-
- /**
- * Returns true if there is a maximum value for this parameter.
- *
- * @return true if a maximum value exists for this parameter.
- */
- boolean hasMaxValue();
-
- /**
- * Returns true if there is a minimum value for this parameter.
- *
- * @return true if a minimum value exists for this parameter.
- */
- boolean hasMinValue();
-
- /**
- * Returns true if the specified object is a valid value for
- * this parameter.
- *
- * @param obj the object to test.
- * @return true if <code>obj</code> is a valid value for this
- * parameter.
- */
- boolean isValue(Object obj);
-
- /**
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.OpenMBeanParameterInfo</code>)
- * along with the name, open type, default, minimum, maximum
- * and legal values of the parameter.
- *
- * @return a @link{java.lang.String} instance representing
- * the instance in textual form.
- */
- String toString();
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/OpenMBeanParameterInfoSupport.java b/libjava/classpath/javax/management/openmbean/OpenMBeanParameterInfoSupport.java
deleted file mode 100644
index 78ad1c5..0000000
--- a/libjava/classpath/javax/management/openmbean/OpenMBeanParameterInfoSupport.java
+++ /dev/null
@@ -1,512 +0,0 @@
-/* OpenMBeanParameterInfoSupport.java -- Open typed info about a parameter.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.management.MBeanParameterInfo;
-
-/**
- * Describes the parameters of a constructor or operation associated
- * with an open management bean.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class OpenMBeanParameterInfoSupport
- extends MBeanParameterInfo
- implements OpenMBeanParameterInfo
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -7235016873758443122L;
-
- /**
- * The open type of the parameter.
- */
- private OpenType<?> openType;
-
- /**
- * The default value of the parameter (may be <code>null</code>).
- */
- private Object defaultValue;
-
- /**
- * The possible legal values of the parameter (may be <code>null</code>).
- */
- private Set<?> legalValues;
-
- /**
- * The minimum value of the parameter (may be <code>null</code>).
- */
- private Comparable<?> minValue;
-
- /**
- * The maximum value of the parameter (may be <code>null</code>).
- */
- private Comparable<?> maxValue;
-
- /**
- * The hash code of this instance.
- */
- private transient Integer hashCode;
-
- /**
- * The <code>toString()</code> result of this instance.
- */
- private transient String string;
-
- /**
- * Constructs a new {@link OpenMBeanParameterInfo} using the specified
- * name, description and open type. None of these values may be
- * <code>null</code> and the name and description may not be equal
- * to the empty string.
- *
- * @param name the name of the parameter.
- * @param desc a description of the parameter.
- * @param type the open type of the parameter.
- * @throws IllegalArgumentException if the name, description or
- * open type are <code>null</code>
- * or the name or description are
- * the empty string.
- */
- public OpenMBeanParameterInfoSupport(String name, String desc, OpenType<?> type)
- {
- super(name, type == null ? null : type.getClassName(), desc);
- if (name == null)
- throw new IllegalArgumentException("The name may not be null.");
- if (desc == null)
- throw new IllegalArgumentException("The description may not be null.");
- if (type == null)
- throw new IllegalArgumentException("The type may not be null.");
- if (name.length() == 0)
- throw new IllegalArgumentException("The name may not be the empty string.");
- if (desc.length() == 0)
- throw new IllegalArgumentException("The description may not be the " +
- "empty string.");
- openType = type;
- }
-
- /**
- * Constructs a new {@link OpenMBeanParameterInfo} using the
- * specified name, description, open type and default value. The
- * name, description and open type cannot be <code>null</code> and
- * the name and description may not be equal to the empty string.
- * The default value may be <code>null</code>. If non-null, it must
- * be a valid value of the given open type. Default values are not
- * applicable to the open types, {@link ArrayType} and {@link
- * TabularType}.
- *
- * @param name the name of the parameter.
- * @param desc a description of the parameter.
- * @param type the open type of the parameter.
- * @param defaultValue the default value of the parameter.
- * @throws IllegalArgumentException if the name, description or
- * open type are <code>null</code>
- * or the name or description are
- * the empty string.
- * @throws OpenDataException if <code>defaultValue<code> is non-null
- * and is either not a value of the given
- * open type or the open type is an instance
- * of {@link ArrayType} or {@link TabularType}.
- */
- public <T> OpenMBeanParameterInfoSupport(String name, String desc, OpenType<T> type,
- T defaultValue)
- throws OpenDataException
- {
- this(name, desc, type, defaultValue, null);
- }
-
- /**
- * <p>
- * Constructs a new {@link OpenMBeanParameterInfo} using the
- * specified name, description, open type, default, maximum and
- * minimum values. The name, description and open type cannot be
- * <code>null</code> and the name and description may not be equal
- * to the empty string. The default, maximum and minimum values may
- * be <code>null</code>. The following conditions apply when the
- * parameters mentioned are non-null:
- * </p>
- * <ul>
- * <li>The values must be valid values for the given open type.</li>
- * <li>Default values are not applicable to the open types, {@link
- * ArrayType} and {@link TabularType}.</li>
- * <li>The minimum value must be smaller than or equal to the maximum value
- * (literally, <code>minValue.compareTo(maxValue) <= 0</code>.</li>
- * <li>The minimum value must be smaller than or equal to the default value
- * (literally, <code>minValue.compareTo(defaultValue) <= 0</code>.</li>
- * <li>The default value must be smaller than or equal to the maximum value
- * (literally, <code>defaultValue.compareTo(maxValue) <= 0</code>.</li>
- * </ul>
- *
- * @param name the name of the parameter.
- * @param desc a description of the parameter.
- * @param type the open type of the parameter.
- * @param defaultValue the default value of the parameter, or <code>null</code>.
- * @param minimumValue the minimum value of the parameter, or <code>null</code>.
- * @param maximumValue the maximum value of the parameter, or <code>null</code>.
- * @throws IllegalArgumentException if the name, description or
- * open type are <code>null</code>
- * or the name or description are
- * the empty string.
- * @throws OpenDataException if any condition in the list above is broken.
- */
- @SuppressWarnings("unchecked")
- public <T> OpenMBeanParameterInfoSupport(String name, String desc, OpenType<T> type,
- T defaultValue, Comparable<T> minimumValue,
- Comparable<T> maximumValue)
- throws OpenDataException
- {
- this(name, desc, type);
- if (defaultValue != null && !(type.isValue(defaultValue)))
- throw new OpenDataException("The default value is not a member of the " +
- "open type given.");
- if (minimumValue != null && !(type.isValue(minimumValue)))
- throw new OpenDataException("The minimum value is not a member of the " +
- "open type given.");
- if (maximumValue != null && !(type.isValue(maximumValue)))
- throw new OpenDataException("The maximum value is not a member of the " +
- "open type given.");
- if (defaultValue != null && (type instanceof ArrayType ||
- type instanceof TabularType))
- throw new OpenDataException("Default values are not applicable for " +
- "array or tabular types.");
- if (minimumValue != null && maximumValue != null
- && minimumValue.compareTo((T) maximumValue) > 0)
- throw new OpenDataException("The minimum value is greater than the " +
- "maximum.");
- if (minimumValue != null && defaultValue != null
- && minimumValue.compareTo(defaultValue) > 0)
- throw new OpenDataException("The minimum value is greater than the " +
- "default.");
- if (defaultValue != null && maximumValue != null
- && maximumValue.compareTo(defaultValue) < 0)
- throw new OpenDataException("The default value is greater than the " +
- "maximum.");
-
- this.defaultValue = defaultValue;
- minValue = minimumValue;
- maxValue = maximumValue;
- }
-
- /**
- * <p>
- * Constructs a new {@link OpenMBeanParameterInfo} using the
- * specified name, description, open type, default value and
- * set of legal values. The name, description and open type cannot be
- * <code>null</code> and the name and description may not be equal
- * to the empty string. The default, maximum and minimum values may
- * be <code>null</code>. The following conditions apply when the
- * parameters mentioned are non-null:
- * </p>
- * <ul>
- * <li>The default value and each of the legal values must be a valid
- * value for the given open type.</li>
- * <li>Default and legal values are not applicable to the open types, {@link
- * ArrayType} and {@link TabularType}.</li>
- * <li>The default value is not in the set of legal values.</li>
- * </ul>
- * <p>
- * The legal values are copied from the array into a unmodifiable set,
- * so future modifications to the array have no effect.
- * </p>
- *
- * @param name the name of the parameter.
- * @param desc a description of the parameter.
- * @param type the open type of the parameter.
- * @param defaultValue the default value of the parameter, or <code>null</code>.
- * @param legalValues the legal values of the parameter. May be
- * <code>null</code> or an empty array.
- * @throws IllegalArgumentException if the name, description or
- * open type are <code>null</code>
- * or the name or description are
- * the empty string.
- * @throws OpenDataException if any condition in the list above is broken.
- */
- public <T> OpenMBeanParameterInfoSupport(String name, String desc, OpenType<T> type,
- T defaultValue, T[] legalValues)
- throws OpenDataException
- {
- this(name, desc, type);
- if (defaultValue != null && !(type.isValue(defaultValue)))
- throw new OpenDataException("The default value is not a member of the " +
- "open type given.");
- if (defaultValue != null && (type instanceof ArrayType ||
- type instanceof TabularType))
- throw new OpenDataException("Default values are not applicable for " +
- "array or tabular types.");
- if (legalValues != null && (type instanceof ArrayType ||
- type instanceof TabularType))
- throw new OpenDataException("Legal values are not applicable for " +
- "array or tabular types.");
- if (legalValues != null && legalValues.length > 0)
- {
- Set<T> lv = new HashSet<T>(legalValues.length);
- for (int a = 0; a < legalValues.length; ++a)
- {
- if (legalValues[a] != null &&
- !(type.isValue(legalValues[a])))
- throw new OpenDataException("The legal value, "
- + legalValues[a] +
- "is not a member of the " +
- "open type given.");
- lv.add(legalValues[a]);
- }
- if (defaultValue != null && !(lv.contains(defaultValue)))
- throw new OpenDataException("The default value is not in the set " +
- "of legal values.");
- this.legalValues = Collections.unmodifiableSet(lv);
- }
- this.defaultValue = defaultValue;
- }
-
- /**
- * Compares this parameter with the supplied object. This returns
- * true iff the object is an instance of {@link OpenMBeanParameterInfo}
- * with an equal name and open type and the same default, minimum,
- * maximum and legal values.
- *
- * @param obj the object to compare.
- * @return true if the object is a {@link OpenMBeanParameterInfo}
- * instance,
- * <code>name.equals(object.getName())</code>,
- * <code>openType.equals(object.getOpenType())</code>,
- * <code>defaultValue.equals(object.getDefaultValue())</code>,
- * <code>minValue.equals(object.getMinValue())</code>,
- * <code>maxValue.equals(object.getMaxValue())</code>,
- * and <code>legalValues.equals(object.getLegalValues())</code>.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof OpenMBeanParameterInfo))
- return false;
- OpenMBeanParameterInfo o = (OpenMBeanParameterInfo) obj;
- return getName().equals(o.getName()) &&
- openType.equals(o.getOpenType()) &&
- (defaultValue == null ? o.getDefaultValue() == null :
- defaultValue.equals(o.getDefaultValue())) &&
- (minValue == null ? o.getMinValue() == null :
- minValue.equals(o.getMinValue())) &&
- (maxValue == null ? o.getMaxValue() == null :
- maxValue.equals(o.getMaxValue())) &&
- (legalValues == null ? o.getLegalValues() == null :
- legalValues.equals(o.getLegalValues()));
- }
-
- /**
- * Returns the default value of this parameter, or <code>null</code>
- * if there is no default value.
- *
- * @return the default value of the parameter, or <code>null</code>
- * if there is no default.
- */
- public Object getDefaultValue()
- {
- return defaultValue;
- }
-
- /**
- * Returns a {@link java.util.Set} enumerating the legal values
- * of this parameter, or <code>null</code> if no such limited
- * set exists for this parameter.
- *
- * @return a set of legal values, or <code>null</code> if no such
- * set exists.
- */
- public Set<?> getLegalValues()
- {
- return legalValues;
- }
-
- /**
- * Returns the maximum value of this parameter, or <code>null</code>
- * if there is no maximum.
- *
- * @return the maximum value, or <code>null</code> if none exists.
- */
- public Comparable<?> getMaxValue()
- {
- return maxValue;
- }
-
- /**
- * Returns the minimum value of this parameter, or <code>null</code>
- * if there is no minimum.
- *
- * @return the minimum value, or <code>null</code> if none exists.
- */
- public Comparable<?> getMinValue()
- {
- return minValue;
- }
-
- /**
- * Returns the open type instance which represents the type of this
- * parameter.
- *
- * @return the open type of this parameter.
- */
- public OpenType<?> getOpenType()
- {
- return openType;
- }
-
- /**
- * Returns true if this parameter has a default value
- * (i.e. the value is non-null).
- *
- * @return true if this parameter has a default.
- */
- public boolean hasDefaultValue()
- {
- return defaultValue != null;
- }
-
- /**
- * <p>
- * Returns the hashcode of the parameter information as the sum of
- * the hashcodes of the name, open type, default value, maximum
- * value, minimum value and the set of legal values.
- * </p>
- * <p>
- * As instances of this class are immutable, the hash code
- * is computed just once for each instance and reused
- * throughout its life.
- * </p>
- *
- * @return the hashcode of the parameter information.
- */
- public int hashCode()
- {
- if (hashCode == null)
- hashCode = Integer.valueOf(getName().hashCode() +
- openType.hashCode() +
- (defaultValue == null ? 0 :
- defaultValue.hashCode()) +
- (minValue == null ? 0 :
- minValue.hashCode()) +
- (maxValue == null ? 0 :
- maxValue.hashCode()) +
- (legalValues == null ? 0 :
- legalValues.hashCode()));
- return hashCode.intValue();
- }
-
- /**
- * Returns true if there is a set of legal values for this
- * parameter (i.e. the value is non-null).
- *
- * @return true if a set of legal values exists for this
- * parameter.
- */
- public boolean hasLegalValues()
- {
- return legalValues != null;
- }
-
- /**
- * Returns true if there is a maximum value for this parameter
- * (i.e. the value is non-null).
- *
- * @return true if a maximum value exists for this parameter.
- */
- public boolean hasMaxValue()
- {
- return maxValue != null;
- }
-
- /**
- * Returns true if there is a minimum value for this parameter.
- * (i.e. the value is non-null).
- *
- * @return true if a minimum value exists for this parameter.
- */
- public boolean hasMinValue()
- {
- return minValue != null;
- }
-
- /**
- * Returns true if the specified object is a valid value for
- * this parameter.
- *
- * @param obj the object to test.
- * @return true if <code>obj</code> is a valid value for this
- * parameter.
- */
- public boolean isValue(Object obj)
- {
- return openType.isValue(obj);
- }
-
- /**
- * <p>
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.OpenMBeanParameterInfo</code>)
- * along with the name, open type, default, minimum, maximum
- * and legal values 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)
- string = getClass().getName()
- + "[name=" + getName()
- + ",openType=" + openType
- + ",defaultValue=" + defaultValue
- + ",minValue=" + minValue
- + ",maxValue=" + maxValue
- + ",legalValues=" + legalValues
- + "]";
- return string;
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/OpenType.java b/libjava/classpath/javax/management/openmbean/OpenType.java
deleted file mode 100644
index d8abc7c..0000000
--- a/libjava/classpath/javax/management/openmbean/OpenType.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/* OpenType.java -- Superclass of all open types.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.io.Serializable;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * The superclass of all open types, which describe the
- * applicable data values for open MBeans. An open type
- * is defined by its name and description, and the name
- * of the Java class it maps to.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public abstract class OpenType<T>
- implements Serializable
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = -9195195325186646468L;
-
- /**
- * The name of the Java class this type represents.
- */
- private String className;
-
- /**
- * The name of this type.
- */
- private String typeName;
-
- /**
- * A description of this type.
- */
- private String description;
-
- /**
- * An array which defines the set of Java types which can be
- * used as open types. Note that each type is also available
- * in array form, possibly with multiple dimensions.
- *
- * @deprecated Use {@link ALLOWED_CLASSNAMES_LIST} instead.
- */
- @Deprecated
- public static final String[] ALLOWED_CLASSNAMES = {
- "java.lang.Void",
- "java.lang.Boolean",
- "java.lang.Character",
- "java.lang.Byte",
- "java.lang.Short",
- "java.lang.Integer",
- "java.lang.Long",
- "java.lang.Float",
- "java.lang.Double",
- "java.lang.String",
- "java.math.BigDecimal",
- "java.math.BigInteger",
- "java.util.Date",
- "javax.management.ObjectName",
- CompositeData.class.getName(),
- TabularData.class.getName()
- };
-
- /**
- * A list which defines the set of Java types that may be
- * used as open types. Note that each type is also available
- * in array form, possibly with multiple dimensions.
- */
- public static final List<String> ALLOWED_CLASSNAMES_LIST =
- Arrays.asList(ALLOWED_CLASSNAMES);
-
- /**
- * Constructs a new {@link OpenType} for the specified class
- * with the given name and description. The name of the class
- * must be taken from the list of {@link ALLOWED_CLASSNAMES}.
- * Arrays are implictly included in this, and follow the usual
- * syntax of {@link java.lang.Class#getName()} with the name
- * preceded by n instances of '[' (where n is the number of
- * dimensions) and an L. The name and description can not be
- * <code>null</code> or the empty string.
- *
- * @param className the name of the Java class this type
- * represents.
- * @param name the name of the type.
- * @param desc the description of the type.
- * @throws IllegalArgumentException if either of <code>name</code>
- * or <code>desc</code> are
- * <code>null</code> or the empty
- * string.
- * @throws OpenDataException if the class name does not reference
- * a listed class (from @{link ALLOWED_CLASSNAMES})
- */
- protected OpenType(String className, String name, String desc)
- throws OpenDataException
- {
- if (name == null || name.equals(""))
- throw new IllegalArgumentException("The name can not be null " +
- "or the empty string.");
- if (desc == null || desc.equals(""))
- throw new IllegalArgumentException("The description can not " +
- "be null or the empty string.");
- Class<?> type;
- try
- {
- type = Class.forName(className);
- }
- catch (ClassNotFoundException e)
- {
- throw (OpenDataException) new OpenDataException("The class name, " + className +
- ", is unavailable.").initCause(e);
- }
- while (type.isArray())
- type = type.getComponentType();
- if (!(type.isPrimitive() || ALLOWED_CLASSNAMES_LIST.contains(type.getName())))
- throw new OpenDataException("The class name, " + className +
- ", does not specify a valid open type.");
- this.className = className;
- typeName = name;
- description = desc;
- }
-
- /**
- * Performs an equality test on this object and the one specified.
- *
- * @param obj the object to test against this one.
- * @return true if the two objects are equivalent.
- * @see java.lang.Object#hashCode()
- */
- public abstract boolean equals(Object obj);
-
- /**
- * Returns the name of the Java class this type represents. This must
- * be one of the {@link ALLOWED_CLASSNAMES} or an array of one of them.
- * The specification of arrays follows the standard set by
- * {@link java.lang.Class#getName()} i.e. the name is the class name
- * preceded by n instances of '[' and an 'L', where n is number of
- * dimensions used by the array.
- *
- * @return the class name.
- */
- public String getClassName()
- {
- return className;
- }
-
- /**
- * Returns a description of this open type.
- *
- * @return the description.
- */
- public String getDescription()
- {
- return description;
- }
-
- /**
- * Returns the name of this open type.
- *
- * @return the type name.
- */
- public String getTypeName()
- {
- return typeName;
- }
-
- /**
- * Returns a hash code for this open type. The hash code
- * should be consistent with the {@link equals()} method.
- * Thus, it should continue to return the same value while
- * the values used by the {@link equals()} method remain
- * the same, and should return different hash codes for
- * objects which are judged to be different using the
- * {@link equals()} method.
- *
- * @return the hash code of this instance.
- */
- public abstract int hashCode();
-
- /**
- * Returns true if this open type represents an array type.
- *
- * @return true if this open type represents an array type.
- */
- public boolean isArray()
- {
- return className.startsWith("[");
- }
-
- /**
- * Returns true if the specified object is a member of this
- * type.
- *
- * @param obj the object to test for membership.
- * @return true if the object is a member of this type.
- */
- public abstract boolean isValue(Object obj);
-
- /**
- * Returns a textual representation of this type.
- *
- * @return a {@link java.lang.String} representation of this
- * type.
- */
- public abstract String toString();
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/SimpleType.java b/libjava/classpath/javax/management/openmbean/SimpleType.java
deleted file mode 100644
index 81b991b..0000000
--- a/libjava/classpath/javax/management/openmbean/SimpleType.java
+++ /dev/null
@@ -1,350 +0,0 @@
-/* SimpleType.java -- Open type descriptor for the base types.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.io.InvalidObjectException;
-import java.io.ObjectStreamException;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-import java.util.Date;
-
-import javax.management.ObjectName;
-
-/**
- * The open type descriptor for data values that are members
- * of one of the simple types (such as an integer or a string).
- * The other open types ({@link ArrayType}, {@link CompositeType},
- * {@link TabularType}) are constructed from one or more of these
- * types. The simple types are formed from a small subset of
- * basic Java types. As a result, the valid instances of this
- * class are predefined, and no constructor is given for creating
- * new instances.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public final class SimpleType<T>
- extends OpenType<T>
-{
-
- /**
- * The {@link SimpleType} representation of
- * <code>java.math.BigDecimal</code>.
- */
- public static final SimpleType<BigDecimal> BIGDECIMAL;
-
- /**
- * The {@link SimpleType} representation of
- * <code>java.math.BigInteger</code>.
- */
- public static final SimpleType<BigInteger> BIGINTEGER;
-
- /**
- * The {@link SimpleType} representation of
- * <code>java.lang.Boolean</code>.
- */
- public static final SimpleType<Boolean> BOOLEAN;
-
- /**
- * The {@link SimpleType} representation of
- * <code>java.lang.Byte</code>.
- */
- public static final SimpleType<Byte> BYTE;
-
- /**
- * The {@link SimpleType} representation of
- * <code>java.lang.Character</code>.
- */
- public static final SimpleType<Character> CHARACTER;
-
- /**
- * The {@link SimpleType} representation of
- * <code>java.util.Date</code>.
- */
- public static final SimpleType<Date> DATE;
-
- /**
- * The {@link SimpleType} representation of
- * <code>java.lang.Double</code>.
- */
- public static final SimpleType<Double> DOUBLE;
-
- /**
- * The {@link SimpleType} representation of
- * <code>java.lang.Float</code>.
- */
- public static final SimpleType<Float> FLOAT;
-
- /**
- * The {@link SimpleType} representation of
- * <code>java.lang.Integer</code>.
- */
- public static final SimpleType<Integer> INTEGER;
-
- /**
- * The {@link SimpleType} representation of
- * <code>java.lang.Long</code>.
- */
- public static final SimpleType<Long> LONG;
-
- /**
- * The {@link SimpleType} representation of
- * <code>javax.management.ObjectName</code>.
- */
- public static final SimpleType<ObjectName> OBJECTNAME;
-
-
- /**
- * The {@link SimpleType} representation of
- * <code>java.lang.Short</code>.
- */
- public static final SimpleType<Short> SHORT;
-
- /**
- * The {@link SimpleType} representation of
- * <code>java.lang.String</code>.
- */
- public static final SimpleType<String> STRING;
-
- /**
- * The {@link SimpleType} representation of
- * <code>java.lang.Void</code>.
- */
- public static final SimpleType<Void> VOID;
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 2215577471957694503L;
-
- /**
- * The hash code of this instance.
- */
- private transient Integer hashCode;
-
- /**
- * The <code>toString()</code> result of this instance.
- */
- private transient String string;
-
- /**
- * Static construction of the {@link SimpleType} instances.
- */
- static
- {
- try
- {
- BIGDECIMAL = new SimpleType<BigDecimal>("java.math.BigDecimal");
- BIGINTEGER = new SimpleType<BigInteger>("java.math.BigInteger");
- BOOLEAN = new SimpleType<Boolean>("java.lang.Boolean");
- BYTE = new SimpleType<Byte>("java.lang.Byte");
- CHARACTER = new SimpleType<Character>("java.lang.Character");
- DATE = new SimpleType<Date>("java.util.Date");
- DOUBLE = new SimpleType<Double>("java.lang.Double");
- FLOAT = new SimpleType<Float>("java.lang.Float");
- INTEGER = new SimpleType<Integer>("java.lang.Integer");
- LONG = new SimpleType<Long>("java.lang.Long");
- OBJECTNAME =
- new SimpleType<ObjectName>("javax.management.ObjectName");
- SHORT = new SimpleType<Short>("java.lang.Short");
- STRING = new SimpleType<String>("java.lang.String");
- VOID = new SimpleType<Void>("java.lang.Void");
- }
- catch (OpenDataException e)
- {
- /* In normal circumstances, this shouldn't be possible. */
- throw new IllegalStateException("A invalid class name " +
- "was passed to the SimpleType " +
- "constructor.", e);
- }
- }
-
- /**
- * Constructs a new {@link SimpleType} instance for the given
- * class name. The class name is also used as the type name
- * and description of the {@link OpenType} instance.
- *
- * @param name the name of the class this instance should
- * represent.
- * @throws OpenDataException if somehow the constructor of the
- * superclass is passed an invalid
- * class name.
- */
- private SimpleType(String name)
- throws OpenDataException
- {
- super(name, name, name);
- }
-
- /**
- * <p>
- * Compares this simple data type with another object
- * for equality. The objects are judged to be equal if:
- * </p>
- * <ul>
- * <li><code>obj</code> is not null.</li>
- * <li><code>obj</code> is an instance of
- * {@link SimpleType}.</li>
- * <li>The class names are equal.</li>
- * </ul>
- *
- * @param obj the object to compare with.
- * @return true if the conditions above hold.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof SimpleType))
- return false;
- SimpleType<?> sType = (SimpleType<?>) obj;
- return sType.getClassName().equals(getClassName());
- }
-
- /**
- * <p>
- * Returns the hash code of the simple data type.
- * This is simply the hash code of the class name,
- * which is the same element of the type compared
- * as part of the
- * {@link #equals(java.lang.Object)} method, thus ensuring
- * that the hashcode is compatible with the equality
- * test.
- * </p>
- * <p>
- * As instances of this class are immutable, the hash code
- * is computed just once for each instance and reused
- * throughout its life.
- * </p>
- *
- * @return the hash code of this instance.
- */
- public int hashCode()
- {
- if (hashCode == null)
- hashCode = Integer.valueOf(getClassName().hashCode());
- return hashCode.intValue();
- }
-
- /**
- * Returns true if the specified object is a member of this
- * simple type. The object is judged to be so if it is
- * non-null and its class name is the same as that returned
- * by {@link SimpleType#getClassName()}.
- *
- * @param obj the object to test for membership.
- * @return true if the object is a member of this type.
- */
- public boolean isValue(Object obj)
- {
- if (obj == null)
- return false;
- return obj.getClass().getName().equals(getClassName());
- }
-
- /**
- * Replaces instances of this class read from an
- * {@link java.io.ObjectInputStream} with one of the predefined
- * values. This ensures that each existing instance of
- * this class is one of these unique instances.
- *
- * @return the replacement object.
- * @throws ObjectStreamException if the object can not be
- * resolved.
- */
- public Object readResolve()
- throws ObjectStreamException
- {
- if (equals(BIGDECIMAL))
- return BIGDECIMAL;
- if (equals(BIGINTEGER))
- return BIGINTEGER;
- if (equals(BOOLEAN))
- return BOOLEAN;
- if (equals(BYTE))
- return BYTE;
- if (equals(CHARACTER))
- return CHARACTER;
- if (equals(DATE))
- return DATE;
- if (equals(DOUBLE))
- return DOUBLE;
- if (equals(FLOAT))
- return FLOAT;
- if (equals(INTEGER))
- return INTEGER;
- if (equals(LONG))
- return LONG;
- if (equals(OBJECTNAME))
- return OBJECTNAME;
- if (equals(SHORT))
- return SHORT;
- if (equals(STRING))
- return STRING;
- if (equals(VOID))
- return VOID;
- throw new InvalidObjectException("Invalid simple type instance " +
- "deserialized.");
- }
-
- /**
- * <p>
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.SimpleType</code>)
- * and the name of the class the type represents.
- * </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=" + getClassName()
- + "]";
- return string;
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/TabularData.java b/libjava/classpath/javax/management/openmbean/TabularData.java
deleted file mode 100644
index 8bceae8..0000000
--- a/libjava/classpath/javax/management/openmbean/TabularData.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/* TabularData.java -- Tables of composite data structures.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.util.Collection;
-import java.util.Set;
-
-/**
- * Provides an interface to a specific type of composite
- * data structure, where keys (the columns) map to the
- * {@link CompositeData} objects that form the rows of
- * the table.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface TabularData
-{
-
- /**
- * Calculates the index the specified {@link CompositeData} value
- * would have, if it was to be added to this {@link TabularData}
- * instance. This method includes a check that the type of the
- * given value is the same as the row type of this instance, but not
- * a check for existing instances of the given value. The value
- * must also not be <code>null</code>. Possible indices are
- * returned by the {@link TabularType#getIndexNames()} method of
- * this instance's tabular type. The returned indices are the
- * values of the fields in the supplied {@link CompositeData}
- * instance that match the names given in the {@link TabularType}.
- *
- * @param val the {@link CompositeData} value whose index should
- * be calculated.
- * @return the index the value would take on, if it were to be added.
- * @throws NullPointerException if the value is <code>null</code>.
- * @throws InvalidOpenTypeException if the value does not match the
- * row type of this instance.
- */
- Object[] calculateIndex(CompositeData val);
-
- /**
- * Removes all {@link CompositeData} values from the table.
- */
- void clear();
-
- /**
- * Returns true iff this instance of the {@link TabularData} class
- * contains a {@link CompositeData} value at the specified index.
- * In any other circumstance, including if the given key
- * is <code>null</code> or of the incorrect type, according to
- * the {@link TabularType} of this instance, this method returns
- * false.
- *
- * @param key the key to test for.
- * @return true if the key maps to a {@link CompositeData} value.
- */
- boolean containsKey(Object[] key);
-
- /**
- * Returns true iff this instance of the {@link TabularData} class
- * contains the specified {@link CompositeData} value.
- * In any other circumstance, including if the given value
- * is <code>null</code> or of the incorrect type, according to
- * the {@link TabularType} of this instance, this method returns
- * false.
- *
- * @param val the value to test for.
- * @return true if the value exists.
- */
- boolean containsValue(CompositeData val);
-
- /**
- * Compares the specified object with this object for equality.
- * The object is judged equivalent if it is non-null, and also
- * an instance of {@link TabularData} with the same row type,
- * and {@link CompositeData} values. The two compared instances may
- * be equivalent even if they represent different implementations
- * of {@link TabularData}.
- *
- * @param obj the object to compare for equality.
- * @return true if <code>obj</code> is equal to <code>this</code>.
- */
- boolean equals(Object obj);
-
- /**
- * Retrieves the {@link CompositeData} value for the specified
- * key, or <code>null</code> if no such mapping exists.
- *
- * @param key the key whose value should be returned.
- * @return the matching {@link CompositeData} value, or
- * <code>null</code> if one does not exist.
- * @throws NullPointerException if the key is <code>null</code>.
- * @throws InvalidKeyException if the key does not match
- * the {@link TabularType} of this
- * instance.
- */
- CompositeData get(Object[] key);
-
- /**
- * Returns the tabular type which corresponds to this instance
- * of {@link TabularData}.
- *
- * @return the tabular type for this instance.
- */
- TabularType getTabularType();
-
- /**
- * Returns the hash code of the composite data type. This is
- * computed as the sum of the hash codes of each value, together
- * with the hash code of the tabular type. These are the same
- * elements of the type that are compared as part of the {@link
- * #equals(java.lang.Object)} method, thus ensuring that the
- * hashcode is compatible with the equality test.
- *
- * @return the hash code of this instance.
- */
- int hashCode();
-
- /**
- * Returns true if this {@link TabularData} instance
- * contains no {@link CompositeData} values.
- *
- * @return true if the instance is devoid of rows.
- */
- boolean isEmpty();
-
- /**
- * Returns a {@link java.util.Set} view of the keys or
- * indices of this {@link TabularData} instance.
- *
- * @return a set containing the keys of this instance.
- */
- Set<?> keySet();
-
- /**
- * Adds the specified {@link CompositeData} value to the
- * table. The value must be non-null, of the same type
- * as the row type of this instance, and must not have
- * the same index as an existing value. The index is
- * calculated using the index names of the
- * {@link TabularType} for this instance.
- *
- * @param val the {@link CompositeData} value to add.
- * @throws NullPointerException if <code>val</code> is
- * <code>null</code>.
- * @throws InvalidOpenTypeException if the type of the
- * given value does not
- * match the row type.
- * @throws KeyAlreadyExistsException if the value has the
- * same calculated index
- * as an existing value.
- */
- void put(CompositeData val);
-
- /**
- * Adds each of the specified {@link CompositeData} values
- * to the table. Each element of the array must meet the
- * conditions given for the {@link #put(CompositeData)}
- * method. In addition, the index of each value in the
- * array must be distinct from the index of the other
- * values in the array, as well as from the existing values
- * in the table. The operation should be atomic; if one
- * value can not be added, then none of the values should
- * be. If the array is <code>null</code> or empty, the
- * method simply returns.
- *
- * @param vals the {@link CompositeData} values to add.
- * @throws NullPointerException if a value from the array is
- * <code>null</code>.
- * @throws InvalidOpenTypeException if the type of a
- * given value does not
- * match the row type.
- * @throws KeyAlreadyExistsException if a value has the
- * same calculated index
- * as an existing value or
- * of one of the other
- * specified values.
- */
- void putAll(CompositeData[] vals);
-
- /**
- * Removes the {@link CompositeData} value located at the
- * specified index. <code>null</code> is returned if the
- * value does not exist. Otherwise, the removed value is
- * returned.
- *
- * @param key the key of the value to remove.
- * @return the removed value, or <code>null</code> if
- * there is no value for the given key.
- * @throws NullPointerException if the key is <code>null</code>.
- * @throws InvalidOpenTypeException if the key does not match
- * the {@link TabularType} of this
- * instance.
- */
- CompositeData remove(Object[] key);
-
- /**
- * Returns the number of {@link CompositeData} values or rows
- * in the table.
- *
- * @return the number of rows in the table.
- */
- int size();
-
- /**
- * Returns a textual representation of this instance. The
- * exact format is left up to the implementation, but it
- * should contain the name of the implementing class and
- * the tabular type.
- *
- * @return a {@link java.lang.String} representation of the
- * object.
- */
- String toString();
-
- /**
- * Returns the values associated with this instance.
- *
- * @return the values of this instance.
- */
- Collection<?> values();
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/TabularDataSupport.java b/libjava/classpath/javax/management/openmbean/TabularDataSupport.java
deleted file mode 100644
index e2da1b4..0000000
--- a/libjava/classpath/javax/management/openmbean/TabularDataSupport.java
+++ /dev/null
@@ -1,648 +0,0 @@
-/* TabularDataSupport.java -- Tables of composite data structures.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.io.Serializable;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Provides an implementation of the {@link TabularData}
- * interface using a {@link java.util.HashMap}.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class TabularDataSupport
- implements TabularData, Serializable, Cloneable, Map<Object,Object>
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 5720150593236309827L;
-
- /**
- * Mapping of rows to column values.
- *
- * @serial the map of rows to column values.
- */
- private HashMap<Object,Object> dataMap;
-
- /**
- * The tabular type which represents this tabular data instance.
- *
- * @serial the type information for this instance.
- */
- private TabularType tabularType;
-
- /**
- * Constructs a new empty {@link TabularDataSupport} with the
- * specified type. The type may not be null. This constructor
- * simply calls the other, with the default initial capacity of
- * <code>101</code> and default load factor of <code>0.75</code>.
- *
- * @param type the tabular type of this tabular data instance.
- * @throws IllegalArgumentException if <code>type</code> is
- * <code>null</code>.
- */
- public TabularDataSupport(TabularType type)
- {
- this(type, 101, 0.75f);
- }
-
- /**
- * Constructs a new empty {@link TabularDataSupport} with the
- * specified type and the supplied initial capacity and load factor
- * being used for the underlying {@link java.util.HashMap}. The
- * type may not be null and the initial capacity and load factor
- * must be positive.
- *
- * @param type the tabular type of this tabular data instance.
- * @param cap the initial capacity of the underlying map.
- * @param lf the load factor of the underlying map.
- * @throws IllegalArgumentException if <code>type</code> is
- * <code>null</code>, or
- * <code>cap</code> or
- * <code>lf</code> are
- * negative.
- */
- public TabularDataSupport(TabularType type, int cap, float lf)
- {
- if (type == null)
- throw new IllegalArgumentException("The type may not be null.");
- tabularType = type;
- dataMap = new HashMap<Object,Object>(cap, lf);
- }
-
- /**
- * Calculates the index the specified {@link CompositeData} value
- * would have, if it was to be added to this {@link TabularData}
- * instance. This method includes a check that the type of the
- * given value is the same as the row type of this instance, but not
- * a check for existing instances of the given value. The value
- * must also not be <code>null</code>. Possible indices are
- * selected by the {@link TabularType#getIndexNames()} method of
- * this instance's tabular type. The returned indices are the
- * values of the fields in the supplied {@link CompositeData}
- * instance that match the names given in the {@link TabularType}.
- *
- * @param val the {@link CompositeData} value whose index should
- * be calculated.
- * @return the index the value would take on, if it were to be added.
- * @throws NullPointerException if the value is <code>null</code>.
- * @throws InvalidOpenTypeException if the value does not match the
- * row type of this instance.
- */
- public Object[] calculateIndex(CompositeData val)
- {
- if (!(val.getCompositeType().equals(tabularType.getRowType())))
- throw new InvalidOpenTypeException("The type of the given value " +
- "does not match the row type " +
- "of this instance.");
- List<String> indexNames = tabularType.getIndexNames();
- List<String> matchingIndicies = new ArrayList<String>(indexNames.size());
- for (String name : indexNames)
- matchingIndicies.add(val.get(name).toString());
- return matchingIndicies.toArray();
- }
-
- /**
- * Removes all {@link CompositeData} values from the table.
- */
- public void clear()
- {
- dataMap.clear();
- }
-
- /**
- * Returns a shallow clone of the information, as obtained by the
- * {@link Object} implementation of {@link Object#clone()}. The map
- * is also cloned, but it still references the same objects.
- *
- * @return a shallow clone of this {@link TabularDataSupport}.
- */
- @SuppressWarnings("unchecked")
- public Object clone()
- {
- TabularDataSupport clone = null;
- try
- {
- clone = (TabularDataSupport) super.clone();
- clone.setMap((HashMap<Object,Object>) dataMap.clone());
- }
- catch (CloneNotSupportedException e)
- {
- /* This won't happen as we implement Cloneable */
- }
- return clone;
- }
-
- /**
- * Returns true iff this instance of the {@link TabularData} class
- * contains a {@link CompositeData} value at the specified index.
- * The method returns <code>false</code> if the given key can
- * not be cast to an {@link java.lang.Object} array; otherwise
- * it returns the result of {@link #containsKey(java.lang.Object[])}.
- *
- *
- * @param key the key to test for.
- * @return true if the key maps to a {@link CompositeData} value.
- */
- public boolean containsKey(Object key)
- {
- if (key instanceof Object[])
- return containsKey((Object[]) key);
- else
- return false;
- }
-
- /**
- * Returns true iff this instance of the {@link TabularData} class
- * contains a {@link CompositeData} value at the specified index.
- * In any other circumstance, including if the given key
- * is <code>null</code> or of the incorrect type, according to
- * the {@link TabularType} of this instance, this method returns
- * false.
- *
- * @param key the key to test for.
- * @return true if the key maps to a {@link CompositeData} value.
- */
- public boolean containsKey(Object[] key)
- {
- if (key == null)
- return false;
- if (!(isKeyValid(key)))
- return false;
- return dataMap.containsKey(key);
- }
-
- /**
- * Returns true iff this instance of the {@link TabularData} class
- * contains the specified {@link CompositeData} value. If the given
- * value is not an instance of {@link CompositeData}, this method
- * simply returns false.
- *
- * @param val the value to test for.
- * @return true if the value exists.
- */
- public boolean containsValue(Object val)
- {
- if (val instanceof CompositeData)
- return containsValue((CompositeData) val);
- else
- return false;
- }
-
- /**
- * Returns true iff this instance of the {@link TabularData} class
- * contains the specified {@link CompositeData} value.
- * In any other circumstance, including if the given value
- * is <code>null</code> or of the incorrect type, according to
- * the {@link TabularType} of this instance, this method returns
- * false.
- *
- * @param val the value to test for.
- * @return true if the value exists.
- */
- public boolean containsValue(CompositeData val)
- {
- if (val == null)
- return false;
- if (!(val.getCompositeType().equals(tabularType.getRowType())))
- return false;
- return dataMap.containsValue(val);
- }
-
- /**
- * <p>
- * Returns a set view of the mappings in this Map. Each element in the
- * set is a Map.Entry. The set is backed by the map, so that changes in
- * one show up in the other. Modifications made while an iterator is
- * in progress cause undefined behavior. If the set supports removal,
- * these methods remove the underlying mapping from the map:
- * <code>Iterator.remove</code>, <code>Set.remove</code>,
- * <code>removeAll</code>, <code>retainAll</code>, and <code>clear</code>.
- * Element addition, via <code>add</code> or <code>addAll</code>, is
- * not supported via this set.
- * </p>
- * <p>
- * <strong>Note</strong>: using the
- * {@link java.util.Map.Entry#setValue(Object) will cause corruption of
- * the index to row mappings.
- * </p>
- *
- * @return the set view of all mapping entries
- * @see java.util.Map.Entry
- */
- public Set<Map.Entry<Object,Object>> entrySet()
- {
- return dataMap.entrySet();
- }
-
- /**
- * Compares the specified object with this object for equality.
- * The object is judged equivalent if it is non-null, and also
- * an instance of {@link TabularData} with the same row type,
- * and {@link CompositeData} values. The two compared instances may
- * be equivalent even if they represent different implementations
- * of {@link TabularData}.
- *
- * @param obj the object to compare for equality.
- * @return true if <code>obj</code> is equal to <code>this</code>.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof TabularData))
- return false;
- TabularData data = (TabularData) obj;
- return tabularType.equals(data.getTabularType()) &&
- dataMap.values().equals(data.values());
- }
-
- /**
- * Retrieves the value for the specified key by simply
- * calling <code>get((Object[]) key)</code>.
- *
- * @param key the key whose value should be returned.
- * @return the matching {@link CompositeData} value, or
- * <code>null</code> if one does not exist.
- * @throws NullPointerException if the key is <code>null</code>.
- * @throws ClassCastException if the key is not an instance
- * of <code>Object[]</code>.
- * @throws InvalidKeyException if the key does not match
- * the {@link TabularType} of this
- * instance.
- */
- public Object get(Object key)
- {
- return get((Object[]) key);
- }
-
- /**
- * Retrieves the {@link CompositeData} value for the specified
- * key, or <code>null</code> if no such mapping exists.
- *
- * @param key the key whose value should be returned.
- * @return the matching {@link CompositeData} value, or
- * <code>null</code> if one does not exist.
- * @throws NullPointerException if the key is <code>null</code>.
- * @throws InvalidKeyException if the key does not match
- * the {@link TabularType} of this
- * instance.
- */
- public CompositeData get(Object[] key)
- {
- if (!(isKeyValid(key)))
- throw new InvalidKeyException("The key does not match the " +
- "tabular type of this instance.");
- return (CompositeData) dataMap.get(key);
- }
-
- /**
- * Returns the tabular type which corresponds to this instance
- * of {@link TabularData}.
- *
- * @return the tabular type for this instance.
- */
- public TabularType getTabularType()
- {
- return tabularType;
- }
-
- /**
- * Returns the hash code of the composite data type. This is
- * computed as the sum of the hash codes of each value, together
- * with the hash code of the tabular type. These are the same
- * elements of the type that are compared as part of the {@link
- * #equals(java.lang.Object)} method, thus ensuring that the
- * hashcode is compatible with the equality test.
- *
- * @return the hash code of this instance.
- */
- public int hashCode()
- {
- return tabularType.hashCode() + dataMap.values().hashCode();
- }
-
- /**
- * Returns true if this {@link TabularData} instance
- * contains no {@link CompositeData} values.
- *
- * @return true if the instance is devoid of rows.
- */
- public boolean isEmpty()
- {
- return dataMap.isEmpty();
- }
-
- /**
- * Returns true if the given key is valid for the
- * @link{TabularType} of this instance.
- *
- * @return true if the key is valid.
- * @throws NullPointerException if <code>key</code>
- * is null.
- */
- private boolean isKeyValid(Object[] key)
- {
- Iterator<String> it = tabularType.getIndexNames().iterator();
- CompositeType rowType = tabularType.getRowType();
- for (int a = 0; it.hasNext(); ++a)
- {
- OpenType<?> type = rowType.getType(it.next());
- if (!(type.isValue(key[a])))
- return false;
- }
- return true;
- }
-
- /**
- * Returns a set view of the keys in this Map. The set is backed by the
- * map, so that changes in one show up in the other. Modifications made
- * while an iterator is in progress cause undefined behavior. If the set
- * supports removal, these methods remove the underlying mapping from
- * the map: <code>Iterator.remove</code>, <code>Set.remove</code>,
- * <code>removeAll</code>, <code>retainAll</code>, and <code>clear</code>.
- * Element addition, via <code>add</code> or <code>addAll</code>, is
- * not supported via this set.
- *
- * @return the set view of all keys
- */
- public Set<Object> keySet()
- {
- return dataMap.keySet();
- }
-
- /**
- * Adds the specified {@link CompositeData} value to the
- * table. The value must be non-null, of the same type
- * as the row type of this instance, and must not have
- * the same index as an existing value. The index is
- * calculated using the index names of the
- * {@link TabularType} for this instance.
- *
- * @param val the {@link CompositeData} value to add.
- * @throws NullPointerException if <code>val</code> is
- * <code>null</code>.
- * @throws InvalidOpenTypeException if the type of the
- * given value does not
- * match the row type.
- * @throws KeyAlreadyExistsException if the value has the
- * same calculated index
- * as an existing value.
- */
- public void put(CompositeData val)
- {
- Object[] key = calculateIndex(val);
- if (dataMap.containsKey(key))
- throw new KeyAlreadyExistsException("A value with this index " +
- "already exists.");
- dataMap.put(key, val);
- }
-
- /**
- * Adds the specified {@link CompositeData} value to the
- * table, ignoring the supplied key, by simply calling
- * <code>put((CompositeData) val)</code>.
- *
- * @param key ignored.
- * @param val the {@link CompositeData} value to add.
- * @return the {@link CompositeData} value.
- * @throws NullPointerException if <code>val</code> is
- * <code>null</code>.
- * @throws InvalidOpenTypeException if the type of the
- * given value does not
- * match the row type.
- * @throws KeyAlreadyExistsException if the value has the
- * same calculated index
- * as an existing value.
- */
- public Object put(Object key, Object val)
- {
- put((CompositeData) val);
- return val;
- }
-
- /**
- * Adds each of the specified {@link CompositeData} values
- * to the table. Each element of the array must meet the
- * conditions given for the {@link #put(CompositeData)}
- * method. In addition, the index of each value in the
- * array must be distinct from the index of the other
- * values in the array, as well as from the existing values
- * in the table. The operation should be atomic; if one
- * value can not be added, then none of the values should
- * be. If the array is <code>null</code> or empty, the
- * method simply returns.
- *
- * @param vals the {@link CompositeData} values to add.
- * @throws NullPointerException if a value from the array is
- * <code>null</code>.
- * @throws InvalidOpenTypeException if the type of a
- * given value does not
- * match the row type.
- * @throws KeyAlreadyExistsException if a value has the
- * same calculated index
- * as an existing value or
- * of one of the other
- * specified values.
- */
- public void putAll(CompositeData[] vals)
- {
- if (vals == null || vals.length == 0)
- return;
- Map<Object,Object> mapToAdd = new HashMap<Object,Object>(vals.length);
- for (int a = 0; a < vals.length; ++a)
- {
- Object[] key = calculateIndex(vals[a]);
- if (dataMap.containsKey(key))
- throw new KeyAlreadyExistsException("Element " + a + ": A " +
- "value with this index " +
- "already exists.");
- mapToAdd.put(key, vals[a]);
- }
- dataMap.putAll(mapToAdd);
- }
-
- /**
- * Converts each value from the specified map to a member of an
- * array of {@link CompositeData} values and adds them using {@link
- * #put(CompositeData[])}, if possible. As in {@link
- * #put(Object,Object)}, the keys are simply ignored. This method
- * is useful for adding the {@link CompositeData} values from a
- * different {@link TabularData} instance, which uses the same
- * {@link TabularType} but a different selection of index names, to
- * this one. If the map is <code>null</code> or empty, the method
- * simply returns.
- *
- * @param m the map to add. Only the values are used and must
- * all be instances of {@link CompositeData}.
- * @throws NullPointerException if a value from the map is
- * <code>null</code>.
- * @throws ClassCastException if a value from the map is not
- * an instance of {@link CompositeData}.
- * @throws InvalidOpenTypeException if the type of the
- * given value does not
- * match the row type.
- * @throws KeyAlreadyExistsException if the value has the
- * same calculated index
- * as an existing value or
- * of one of the other
- * specified values.
- */
- public void putAll(Map<?,?> m)
- {
- if (m == null || m.size() == 0)
- return;
- Collection<?> vals = m.values();
- CompositeData[] data = new CompositeData[vals.size()];
- Iterator<?> it = vals.iterator();
- for (int a = 0; it.hasNext(); ++a)
- {
- data[a] = (CompositeData) it.next();
- }
- putAll(data);
- }
-
- /**
- * Removes the value for the specified key by simply
- * calling <code>remove((Object[]) key)</code>.
- *
- * @param key the key whose value should be removed.
- * @return the removed value, or <code>null</code> if
- * there is no value for the given key.
- * @throws NullPointerException if the key is <code>null</code>.
- * @throws ClassCastException if the key is not an instance
- * of <code>Object[]</code>.
- * @throws InvalidOpenTypeException if the key does not match
- * the {@link TabularType} of this
- * instance.
- */
- public Object remove(Object key)
- {
- return remove((Object[]) key);
- }
-
- /**
- * Removes the {@link CompositeData} value located at the
- * specified index. <code>null</code> is returned if the
- * value does not exist. Otherwise, the removed value is
- * returned.
- *
- * @param key the key of the value to remove.
- * @return the removed value, or <code>null</code> if
- * there is no value for the given key.
- * @throws NullPointerException if the key is <code>null</code>.
- * @throws InvalidOpenTypeException if the key does not match
- * the {@link TabularType} of this
- * instance.
- */
- public CompositeData remove(Object[] key)
- {
- if (!(isKeyValid(key)))
- throw new InvalidKeyException("The key does not match the " +
- "tabular type of this instance.");
- return (CompositeData) dataMap.remove(key);
- }
-
- /**
- * Private method to set the internal {@link java.util.Map}
- * instance (used in cloning).
- *
- * @param map the new map used.
- */
- private void setMap(HashMap<Object,Object> map)
- {
- dataMap = map;
- }
-
- /**
- * Returns the number of {@link CompositeData} values or rows
- * in the table.
- *
- * @return the number of rows in the table.
- */
- public int size()
- {
- return dataMap.size();
- }
-
- /**
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.TabularDataSupport</code>)
- * and the result of calling <code>toString()</code> on the
- * tabular type and underlying hash map instance.
- *
- * @return a {@link java.lang.String} representation of the
- * object.
- */
- public String toString()
- {
- return getClass().getName()
- + "[tabularType=" + tabularType
- + ",dataMap=" + dataMap
- + "]";
- }
-
- /**
- * Returns a collection (or bag) view of the values in this Map. The
- * collection is backed by the map, so that changes in one show up in
- * the other. Modifications made while an iterator is in progress cause
- * undefined behavior. If the collection supports removal, these methods
- * remove the underlying mapping from the map: <code>Iterator.remove</code>,
- * <code>Collection.remove</code>, <code>removeAll</code>,
- * <code>retainAll</code>, and <code>clear</code>. Element addition, via
- * <code>add</code> or <code>addAll</code>, is not supported via this
- * collection.
- *
- * @return the collection view of all values
- */
- public Collection<Object> values()
- {
- return dataMap.values();
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/TabularType.java b/libjava/classpath/javax/management/openmbean/TabularType.java
deleted file mode 100644
index 5ea220701..0000000
--- a/libjava/classpath/javax/management/openmbean/TabularType.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/* TabularType.java -- Type descriptor for TabularData instances.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.openmbean;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * The open type descriptor for instances of the
- * {@link TabularData} class.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class TabularType
- extends OpenType<TabularData>
-{
-
- /**
- * Compatible with JDK 1.5
- */
- private static final long serialVersionUID = 6554071860220659261L;
-
- /**
- * The composite type used by the rows of the table.
- */
- private CompositeType rowType;
-
- /**
- * The list of index names, which form the columns of the table.
- * They are retained in the order given by the user, and is
- * unmodifiable.
- */
- private List<String> indexNames;
-
- /**
- * The hash code of this instance.
- */
- private transient Integer hashCode;
-
- /**
- * The <code>toString()</code> result of this instance.
- */
- private transient String string;
-
- /**
- * <p>
- * Constructs a new {@link TabularType} instance for the given
- * type name, description, row type and index names. All parameters
- * (including the individual elements of the array of index names)
- * must be non-null and those that are of type {@link java.lang.String}
- * must be non-empty. The array of index names must also be non-empty.
- * </p>
- * <p>
- * The result of <code>TabularData.class.getName()</code> is adopted
- * as the class name (see {@link OpenType}). The ordering of the array
- * elements is relevant in determining the indicies of the values in the
- * table, and thus in the use of the
- * {@link TabularData#get(java.lang.Object[])} and
- * {@link TabularData#remove(java.lang.Object[])} methods of the
- * {@link TabularData} class.
- * </p>
- *
- * @param name the name of this tabular type.
- * @param desc a description of this tabular type.
- * @param rowType the type of the rows of the table.
- * @param indexNames the names used to index the rows within the table.
- * @throws IllegalArgumentException if any validity constraint listed above
- * is broken.
- * @throws OpenDataException if an index name does not match a corresponding
- * name in the given row type.
- */
- public TabularType(String name, String desc, CompositeType rowType,
- String[] indexNames)
- throws OpenDataException
- {
- super(TabularData.class.getName(), name, desc);
- if (rowType == null)
- throw new IllegalArgumentException("A null row type was given.");
- for (int a = 0; a < indexNames.length; ++a)
- {
- if (indexNames[a] == null)
- throw new IllegalArgumentException("Name " + a +
- " is null.");
- if (indexNames[a].length() == 0)
- throw new IllegalArgumentException("Name " + a +
- " is the empty string.");
- if (!(rowType.containsKey(indexNames[a])))
- throw new OpenDataException("No matching key for " +
- indexNames[a] + " was found in " +
- "the supplied row type.");
- }
- this.rowType = rowType;
- this.indexNames = Collections.unmodifiableList(Arrays.asList(indexNames));
- }
-
- /**
- * <p>
- * Compares this tabular data type with another object
- * for equality. The objects are judged to be equal if:
- * </p>
- * <ul>
- * <li><code>obj</code> is not null.</li>
- * <li><code>obj</code> is an instance of
- * {@link TabularType}.</li>
- * <li>The type names are equal.</li>
- * <li>The row types are equal.</li>
- * <li>The index names are equal and in the same order.</li>
- * </ul>
- *
- * @param obj the object to compare with.
- * @return true if the conditions above hold.
- */
- public boolean equals(Object obj)
- {
- if (!(obj instanceof TabularType))
- return false;
- TabularType ttype = (TabularType) obj;
- return (ttype.getTypeName().equals(getTypeName())
- && (ttype.getRowType().equals(getRowType()))
- && (ttype.getIndexNames().equals(getIndexNames())));
- }
-
- /**
- * Returns an unmodifiable list containing the index names.
- * The ordering of these names is used to determine the indicies
- * of the {@link CompositeData} values, and is retained from that
- * used in the call to this object's constructor.
- *
- * @return an unmodifiable list of the index names used by this
- * tabular data structure.
- */
- public List<String> getIndexNames()
- {
- return indexNames;
- }
-
- /**
- * Returns the type of the rows used by this tabular data structure.
- *
- * @return the row type.
- */
- public CompositeType getRowType()
- {
- return rowType;
- }
-
- /**
- * <p>
- * Returns the hash code of the tabular data type.
- * This is computed as the sum of the hash codes of the
- * index names together with the hash code of the type
- * name and row type. These are the same elements
- * of the type that are compared as part of the
- * {@link #equals(java.lang.Object)} method, thus ensuring
- * that the hashcode is compatible with the equality
- * test.
- * </p>
- * <p>
- * As instances of this class are immutable, the hash code
- * is computed just once for each instance and reused
- * throughout its life.
- * </p>
- *
- * @return the hash code of this instance.
- */
- public int hashCode()
- {
- if (hashCode == null)
- {
- int elementTotal = 0;
- for (String s : indexNames)
- elementTotal += s.hashCode();
- hashCode = Integer.valueOf(elementTotal
- + getTypeName().hashCode()
- + rowType.hashCode());
- }
- return hashCode.intValue();
- }
-
- /**
- * Returns true if the specified object is a member of this
- * tabular type. The object is judged to be so if it is
- * an instance of {@link TabularData} with an equivalent
- * type, according to the definition of
- * {@link #equals(java.lang.Object)} for {@link TabularType}.
- *
- * @param obj the object to test for membership.
- * @return true if the object is a member of this type.
- */
- public boolean isValue(Object obj)
- {
- if (obj instanceof TabularData)
- {
- TabularData data = (TabularData) obj;
- return equals(data.getTabularType());
- }
- return false;
- }
-
- /**
- * <p>
- * Returns a textual representation of this instance. This
- * is constructed using the class name
- * (<code>javax.management.openmbean.TabularType</code>)
- * and each element of the instance which is relevant to
- * the definition of {@link equals(java.lang.Object)} and
- * {@link hashCode()} (i.e. the type name, the row type
- * and the index names).
- * </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=" + getTypeName()
- + ", rowType=" + rowType
- + ", indexNames=" + indexNames
- + "]";
- return string;
- }
-
-}
diff --git a/libjava/classpath/javax/management/openmbean/package.html b/libjava/classpath/javax/management/openmbean/package.html
deleted file mode 100644
index d915007..0000000
--- a/libjava/classpath/javax/management/openmbean/package.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<!-- package.html - describes classes in java.lang.management package.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. -->
-
-<html>
-<head><title>GNU Classpath - javax.management.openmbean</title></head>
-
-<body>
-
-<p>
-Provides the data types and descriptor classes for the
-<emph>Open MBean</emph>s. Open MBeans are provided in
-order to aid interoperability with non-Java management
-systems. Unlike normal MBeans, which make use of any
-Java data type, Open MBeans use a restricted set of types
-which can then be mapped over remote connections, including
-to non-Java systems.
-</p>
-<p>
-Normal MBeans are described using an instance of
-{@link javax.management.MBeanInfo} with appropriate representations
-of the attributes, constructors and operators associated with
-the bean. Open MBeans are described in the same way, but by
-using subtypes of these entities, which type the bean data using
-instances of {@link javax.management.openmbean.OpenType}. Open
-types differ from Java types, and are explicitly specified in order
-to obtain interoperability with other systems.
-</p>
-</body>
-</html>
diff --git a/libjava/classpath/javax/management/package.html b/libjava/classpath/javax/management/package.html
deleted file mode 100644
index 3543eec..0000000
--- a/libjava/classpath/javax/management/package.html
+++ /dev/null
@@ -1,197 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<!-- package.html - describes classes in javax.management package.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. -->
-
-<html>
-<head><title>GNU Classpath - javax.management</title></head>
-
-<body>
-
-<p>
-Provides the core classes for the Java Management Extensions (JMX). This API
-builds on the notion of Java beans by providing a layer of abstraction between
-the beans themselves and the method of accessing them. Instead of being accessed
-directly, management beans or <strong>MBeans</strong> are usually accessed via
-a management server (an implementation of the @see MBeanServer interface). Thus,
-the bean itself may be a simple Java object or it may be something
-more complicated (for example, the server may map from Java to SNMP). The server may
-also retrieve the bean from some remote location rather than using a local object.
-</p>
-<p>
-Management beans are usually used for monitoring and/or configuration
-of a particular entity. For example, the platform management beans
-found in the @see java.lang.management package allow the user
-to obtain information about the operating system, current memory usage, etc.
-as well as turning on and off certain additional facilities. To this end,
-an MBean consists of:
-</p>
-<ul>
-<li><emph>attributes</emph> that may be read and/or written to.</li>
-<li><emph>operations</emph> which may be performed.</li>
-<li><emph>notifications</emph> that may emitted by the bean and listened for by users.</li>
-</ul>
-<p>
-The most common type of management bean is the @see StandardMBean, A standard MBean
-relies on the naming patterns established by the JavaBeans framework; the value of an
-attribute <code>name</code> is retrieved by an accessor method named <code>getName</code>
-and changed by a mutator method called <code>setName</code>. If the mutator is absent,
-the attribute is read only. Naming is also used to associate the implementation of a
-bean with its interface; an bean <code>Person</code> is assumed to be an implementation
-of the interface <code>PersonMBean</code> (and vice versa). To avoid these naming constraints,
-the @see StandardMBean class may be used.
-</p>
-<p>
-<h2>Types of Beans</h2>
-<p>
-The @see StandardMBean class is one example of a @see DynamicMBean where the attributes and
-operations of the bean are provided dynamically via the methods provided. With the
-@see StandardMBean class, this simply means that the class uses reflection to access the
-appropriate methods of the bean implementation. In a more complex scenario, the bean's
-data could be supplied from a file or over the network.
-</p>
-<p>
-Once we start talking about accessing beans over network and platform boundaries, we run
-in to the issue of how to deal with the types utilised by these beans. Simple types, such
-as numbers and strings, are usually fine but more complex types need special treatment.
-An <emph>Open MBean</emph> is one that only uses a specific set of types defined in the
-@see javax.management.openmbean package, allowing both sides of a remote connection to provide
-this subset of types and thus interact. An @see MXBean goes a stage further, and defines
-a method whereby a normal Java MBean may become an Open MBean by performing a defined mapping
-on the types of the bean. For example, a @see java.util.List or @see java.util.Set of a
-particular type becomes an array of the same type.
-</p>
-<h2>Accessing Beans</h2>
-<p>
-Although beans can be accessed like normal objects, the normal way of accessing them is
-via an @see MBeanServer. This provides the abstraction from the bean's implementation to
-a set of attributes, operations and notifications. The server identifies each bean via
-an @see ObjectName. This name is unique to a particular bean and is used to identify the
-bean when retrieving the value of an attribute or invoking an operation. Essentially, most
-methods provided by the server are the same as those provided by the @see DynamicMBean
-interface, except that each takes this additional @link ObjectName parameter to identify the
-bean being accessed.
-</p>
-<p>
-The @see MBeanServerFactory keeps track of the current MBean servers in use and allows new
-ones to be created. A special @see MBeanServer instance, called the <emph>platform MBean
-server</emph>, is created when the Java virtual machine is started and a reference to this
-may be obtained from the @see ManagementFactory using
-@see ManagementFactory#getPlatformMBeanServer(). This primarily exists for the purpose of
-creating and registering the platform MBeans, described in @see java.lang.management, which
-provide access to information about the underlying operating system, memory usage, the behaviour
-of the garbage collector, etc. but is equally suitable for creating and registering your own
-beans. Alternatively, a server instance may be obtained from the @see MBeanServerFactory.
-</p>
-<p>
-A bean obtains an @link ObjectName by registering with the server. This operation can be
-performed either by passing an existing instance to the @see MBeanServer#registerMBean method
-or by using the @see MBeanServer#createMBean method to simultaneously create the bean and
-register it with the server. During the registration process, the bean may perform some
-arbitrary behaviour if it implements the @link MBeanRegistration interface. The same is
-true when unregistering a bean.
-</p>
-<p>
-To actually access the attributes and operations of a bean via the server, we use code
-like the following:
-</p>
-<pre>
-// First we obtain the platform MBean server which has the platform MBeans registered
-MBeanServer server = ManagementFactory.getPlatformMBeanServer();
-// We also need the object name of the memory bean so we can address it
-ObjectName name = new ObjectName(ManagementFactory.MEMORY_MXBEAN_NAME);
-// Next we obtain the value of the 'verbose' attribute
-// What actually happens here is that the server invokes the 'isVerbose' method of
-// the MemoryMXBean
-boolean verbose = server.getAttribute(name, "verbose");
-// We can also set the value of verbose. Again the server is actually performing
-// a setVerbose(val) on the bean but we don't need to know this.
-Attribute attrib = new Attribute("verbose", true);
-server.setAttribute(name, attrib);
-// We can also invoke the 'gc' operation which calls the garbage collector.
-server.invoke(name, "gc", new Object[]{}, new String[]{});
-</pre>
-<p>
-As noted above, the server is simply making basic method calls on the object using
-reflection. However, the server provides a layer of abstraction which means that something
-more complicated could actually be going on. The lines above are equally applicable, for
-example, if <code>server</code> is instead an @see MBeanServerConnection connecting us
-to a distant computer.
-</p>
-<p>
-This rather hideous code can be simplified back into simple method calls on an object,
-so that we get the best of both worlds. This is achieved using a <emph>MBean proxy</emph>:
-<pre>
-MBeanServer server = ManagementFactory.getPlatformMBeanServer();
-ObjectName name = new ObjectName(ManagementFactory.MEMORY_MXBEAN_NAME);
-MemoryMXBean bean = JMX.newMBeanProxy(server, name, MemoryMXBean.class);
-boolean verbose = bean.isVerbose();
-bean.setVerbose(true);
-bean.gc();
-</pre>
-<p>
-See how much simpler the operations are? The proxy handles the task of translating the method
-calls into appropriate invocations of methods on the server, simplifying the code for the user.
-</p>
-<p>
-Finally, we have assumed in the code above that the @see ObjectName of the bean is known.
-If this is not the case, then the server's database can be searched. The @see Query class
-provides appropriate operators (e.g. boolean (and,or), value comparison (&gt;, &lt;)) for
-building up relatively complex queries. Once constructed, a query may be passed to either
-the @see MBeanServer#queryNames or @see MBeanServer#queryMBeans to obtain an appropriate
-set of @see ObjectName or MBean instances.
-</p>
-<h2>Notifications</h2>
-<p>
-MBeans also have the capability to emit events. Beans which do so implement either the
-@see NotificationBroadcaster or @see NotificationEmitter interface (the difference between
-the two is simply the existence of a better removal method in the newer
-@see NotificationEmitter interface, which otherwise extends @see NotificationBroadcaster),
-usually by extending the @see NotificationBroadcasterSupport class. As is usual with event
-handling, other classes may <emph>signup</emph> to receive events via the
-@see NotificationListener interface. The signup process can include registering a filter
-(an implementation of @see NotificationFilter) so that only certain events reach the
-listener and others are discarded.
-</p>
-<h2>Remote Access</h2>
-<p>
-The subpackage @see javax.management.remote provides facilities to access remote MBean
-servers. This consists of a <emph>connector</emph> framework which abstracts the method
-of accessing remote servers from the actual implementation, so that the same method is
-used to connect to a remote server, regardless of how it is accessed.
-</p>
-</body>
-</html>
diff --git a/libjava/classpath/javax/management/remote/NotificationResult.java b/libjava/classpath/javax/management/remote/NotificationResult.java
deleted file mode 100644
index 09945f0..0000000
--- a/libjava/classpath/javax/management/remote/NotificationResult.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/* NotificationResult.java -- Wrapper for a series of buffered notifications.
- Copyright (C) 2008 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.remote;
-
-import java.io.Serializable;
-
-/**
- * <p>
- * Wraps the result of a query for buffered notifications. In a remote
- * scenario, it may be more practical for the server to buffer individual
- * notifications from its beans and then return them in bulk on request.
- * This class contains the notifications returned by such a request.
- * </p>
- * <p>
- * It consists of a series of {@link Notification} and identifier pairs,
- * wrapped in a {@link TargetedNotification} object. The identifiers
- * serve to pair up the notification with the listener that requested
- * it. Two positive numbers are also included: the first sequence number
- * used by the returned notifications, and the sequence number of the
- * notification which will be returned by the next query. The first
- * sequence number may be greater than the next sequence number if some
- * notifications have been lost.
- * </p>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class NotificationResult
- implements Serializable
-{
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = 1191800228721395279L;
-
- /**
- * The sequence number of the first notification.
- */
- private long earliestSequenceNumber;
-
- /**
- * The sequence number of the next notification to be
- * returned by a future query.
- */
- private long nextSequenceNumber;
-
- /**
- * The pairs of notifications and identifiers returned
- * by the query.
- */
- private TargetedNotification[] targetedNotifications;
-
- /**
- * Constructs a new {@link NotificationResult} using the specified
- * sequence numbers and the supplied array of notification pairs.
- *
- * @param startSeqNumber the sequence number of the first notification
- * being returned.
- * @param nextSeqNumber the sequence numbr of the next notification
- * that will be returned from a future query.
- * @param notifications the notification and identifier pairs. This
- * may be empty.
- * @throws IllegalArgumentException if a sequence number is negative
- * or <code>notifications</code> is
- * <code>null</code>.
- */
- public NotificationResult(long startSeqNumber, long nextSeqNumber,
- TargetedNotification[] notifications)
- {
- if (startSeqNumber < 0)
- throw new IllegalArgumentException("Starting sequence number is " +
- "less than 0.");
- if (nextSeqNumber < 0)
- throw new IllegalArgumentException("Next sequence number is " +
- "less than 0.");
- if (notifications == null)
- throw new IllegalArgumentException("The array of notifications is null.");
- earliestSequenceNumber = startSeqNumber;
- nextSequenceNumber = nextSeqNumber;
- targetedNotifications = notifications;
- }
-
- /**
- * Returns the sequence number of the earliest notification
- * in the buffer.
- *
- * @return the sequence number of the earliest notification.
- */
- public long getEarliestSequenceNumber()
- {
- return earliestSequenceNumber;
- }
-
- /**
- * Returns the sequence number of the next notification to
- * be returned by a future query.
- *
- * @return the sequence number of the next notification.
- */
- public long getNextSequenceNumber()
- {
- return nextSequenceNumber;
- }
-
- /**
- * Returns the notification and identifier pairs returned
- * by the query.
- *
- * @return the notification and identifier pairs.
- */
- public TargetedNotification[] getTargetedNotifications()
- {
- return targetedNotifications;
- }
-
- /**
- * Returns a textual representation of the object.
- *
- * @return a textual representation.
- */
- public String toString()
- {
- return getClass().getName() +
- "[earliestSequenceNumber=" + earliestSequenceNumber +
- ",nextSequenceNumber=" + nextSequenceNumber +
- ",targetedNotifications=" + targetedNotifications +
- "]";
- }
-
-}
diff --git a/libjava/classpath/javax/management/remote/TargetedNotification.java b/libjava/classpath/javax/management/remote/TargetedNotification.java
deleted file mode 100644
index 0724618..0000000
--- a/libjava/classpath/javax/management/remote/TargetedNotification.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/* TargetedNotificaton.java -- Wrapper for a notification and identifier pair.
- Copyright (C) 2008 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.remote;
-
-import java.io.Serializable;
-
-import javax.management.Notification;
-
-/**
- * Wraps a notification with an identifier that specifies
- * the listener which received it.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public class TargetedNotification
- implements Serializable
-{
-
- /**
- * Compatible with JDK 1.6
- */
- private static final long serialVersionUID = 7676132089779300926L;
-
- /**
- * The notification that was recieved by the listener.
- */
- private Notification notif;
-
- /**
- * The identifier for the listener that received the notification;
- */
- private Integer id;
-
- /**
- * Constructs a new {@link TargetedNotification} which connects
- * the supplied notification with the specified identifier. The
- * identifier matches one of those returned by a previous call
- * to add a new notification listener.
- *
- * @param notif the notification.
- * @param id the identifier of the listener that received the
- * notification.
- * @throws IllegalArgumentException if either argument is
- * <code>null</code>.
- */
- public TargetedNotification(Notification notif, Integer id)
- {
- if (notif == null)
- throw new IllegalArgumentException("The notification is null.");
- if (id == null)
- throw new IllegalArgumentException("The identifier is null.");
- this.notif = notif;
- this.id = id;
- }
-
- /**
- * Returns the notification.
- *
- * @return the notification.
- */
- public Notification getNotification()
- {
- return notif;
- }
-
- /**
- * Returns the identifier for the listener
- * which received the notification.
- *
- * @return the identifier.
- */
- public Integer getListenerID()
- {
- return id;
- }
-
- /**
- * Returns a textual representation of the object.
- *
- * @return a textual representation.
- */
- public String toString()
- {
- return getClass().getName() +
- "[notif=" + notif +
- ",id=" + id +
- "]";
- }
-
-}
diff --git a/libjava/classpath/javax/management/remote/package.html b/libjava/classpath/javax/management/remote/package.html
deleted file mode 100644
index f1d469f..0000000
--- a/libjava/classpath/javax/management/remote/package.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<!-- package.html - describes classes in javax.management.remote package.
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. -->
-
-<html>
-<head><title>GNU Classpath - javax.management.remote</title></head>
-
-<body>
-
-<p>
-Provides a framework for accessing remote MBean servers. The JMX
-remote API introduces the notion of a <emph>connector</emph>. On
-the server side, the connector wraps the MBean server, processing
-calls from remote clients. The client sends its requests via
-a connector which is responsible for transmitting the request
-to the server.
-</p>
-</body>
-</html>
diff --git a/libjava/classpath/javax/management/remote/rmi/RMIConnection.java b/libjava/classpath/javax/management/remote/rmi/RMIConnection.java
deleted file mode 100644
index edf8c89..0000000
--- a/libjava/classpath/javax/management/remote/rmi/RMIConnection.java
+++ /dev/null
@@ -1,1161 +0,0 @@
-/* RMIConnection.java -- RMI object representing a MBean server connection.
- Copyright (C) 2007, 2008 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.remote.rmi;
-
-import java.io.Closeable;
-import java.io.IOException;
-
-import java.rmi.MarshalledObject;
-import java.rmi.Remote;
-
-import java.util.Set;
-
-import javax.management.AttributeList;
-import javax.management.AttributeNotFoundException;
-import javax.management.InstanceAlreadyExistsException;
-import javax.management.InstanceNotFoundException;
-import javax.management.IntrospectionException;
-import javax.management.InvalidAttributeValueException;
-import javax.management.ListenerNotFoundException;
-import javax.management.MBeanInfo;
-import javax.management.MBeanException;
-import javax.management.MBeanRegistrationException;
-import javax.management.NotCompliantMBeanException;
-import javax.management.ObjectInstance;
-import javax.management.ObjectName;
-import javax.management.ReflectionException;
-
-import javax.management.remote.NotificationResult;
-
-import javax.security.auth.Subject;
-
-/**
- * <p>
- * RMI interface for forwarding requests to a remote
- * {@link javax.management.MBeanServer}. This interface
- * parallels the {@link javax.management.MBeanServerConnection}
- * interface, providing a way of invoking those methods using
- * the RMI protocol. When a client wishes to call a method
- * of an MBean server using RMI, the method is called on the stub
- * on the client side, which serializes the object parameters
- * and sends them to the server where they are deserialized and
- * an implementation of this interface forwards them to the
- * appropriate MBean server. Return values follow the same
- * process, only in reverse. Each client obtains its own
- * implementation of this interface from an {@link RMIServer}
- * instance.
- * </p>
- * <p>
- * Implementations of this interface do more than simply
- * forward requests directly to the server. The arguments
- * of the server methods are wrapped in {@link MarshalledObject}
- * instances, so that the correct classloader can be used to
- * deserialize the arguments. When a method is called, the
- * implementation must first retrieve the appropriate classloader
- * and then use it to deserialize the marshalled object. Unless
- * explicitly specified in the documentation for the method,
- * a parameter of the type {@link MarshalledObject} or an array
- * of that type should not be {@code null}.
- * </p>
- * <p>
- * Security is also handled by this interface, as the methods
- * use an additional {@link javax.security.auth.Subject} parameter
- * for role delegation.
- * </p>
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface RMIConnection
- extends Closeable, Remote
-{
-
- /**
- * Handles {@link
- * MBeanServerConnection#addNotificationListener(ObjectName,
- * ObjectName, NotificationFilter, Object)} by
- * registering the supplied listener with the specified management
- * bean. Notifications emitted by the management bean are forwarded
- * to the listener via the server, which will convert any MBean
- * references in the source to portable {@link ObjectName}
- * instances. The notification is otherwise unchanged. The filter
- * and handback object are wrapped in a {@link MarshalledObject}
- * so that they are deserialised using the bean's classloader.
- *
- * @param name the name of the management bean with which the listener
- * should be registered.
- * @param listener the listener which will handle notifications from
- * the bean.
- * @param filter a wrapper containing a filter to apply to incoming
- * notifications, or <code>null</code> if no filtering
- * should be applied.
- * @param passback a wrapper containing an object to be passed to the
- * listener when a notification is emitted.
- * @param delegationSubject a {@link javax.security.auth.Subject} instance
- * containing the delegation principles or
- * {@code null} if authentication is used.
- * @throws InstanceNotFoundException if the name of the management bean
- * could not be resolved.
- * @throws RuntimeOperationsException if the bean associated with the given
- * object name is not a
- * {@link NotificationListener}. This
- * exception wraps an
- * {@link IllegalArgumentException}.
- * @throws SecurityException if the client or delegated subject (if any)
- * does not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #removeNotificationListener(ObjectName, ObjectName,
- * javax.security.auth.Subject)
- * @see #removeNotificationListener(ObjectName, ObjectName,
- * java.rmi.MarshalledObject,
- * java.rmi.MarshalledObject,
- * javax.security.auth.Subject)
- * @see #removeNotificationListeners(ObjectName, Integer[],
- * javax.security.auth.Subject)
- * @see NotificationBroadcaster#addNotificationListener(NotificationListener,
- * NotificationFilter,
- * Object)
- */
- @SuppressWarnings("rawtypes")
- void addNotificationListener(ObjectName name, ObjectName listener,
- MarshalledObject filter, MarshalledObject passback,
- Subject delegationSubject)
- throws InstanceNotFoundException, IOException;
-
- /**
- * Handles {@link
- * MBeanServerConnection#addNotificationListener(ObjectName,
- * NotificationListener, NotificationFilter, Object)} by
- * registering for notifications from the specified management
- * beans. The array of filters is assumed to be aligned with
- * the array of bean names, so that the notifications from each
- * bean are matched against the appropriate filter (or left as
- * is if the filter is {@code null}. Notifications emitted by
- * the management beans are forwarded to a local listener created
- * by this method, via the server, which converts any MBean
- * references in the source to portable {@link ObjectName}
- * instances. The notification is otherwise unchanged.
- * </p>
- * <p>
- * This local listener buffers the notifications for retrieval by
- * {@link #fetchNotifications(long,int,long). This method returns
- * an array of listener identifiers which aligns with the supplied
- * array of beans so that the appropriate listener can be identified
- * by the client, which retains its own listener and handback object.
- * The filters are wrapped in {@link MarshalledObject}s so that they are
- * deserialised using the bean's classloader.
- * </p>
- *
- * @param names the names of the management bean whose notifications
- * should be recorded.
- * @param filters an array of wrappers containing filters to apply to
- * incoming notifications. An element may be <code>null</code>
- * if no filtering should be applied to a bean's notifications.
- * @param delegationSubjects an array of {@link javax.security.auth.Subject}
- * instances containing the delegation principles for
- * each listener. An element may be {@code null} if
- * authentication is used instead, or the entire
- * argument itself may be {@code null}. In the latter
- * case, this is treated as an array of {@code null}
- * values.
- * @return an array of integers which act as listener identifiers, so that
- * notifications retrieved from {@link #fetchNotifications(long,int,long)
- * can be matched to the beans they were emitted from. The array is
- * aligned against the array of beans supplied to this methods, so that
- * the identifier in position 0 represents the bean in position 0 of the
- * input array.
- * @throws IllegalArgumentException if the {@code names} or {@code filters} array
- * is {@code null}, the {@code names} array contains
- * a {@code null} value or the three arrays are not
- * of the same size.
- * @throws ClassCastException if an element of the {@code filters} array unmarshalls
- * as a non-null object that is not a {@link NotificationFilter}.
- * @throws InstanceNotFoundException if the name of one of the management beans
- * could not be resolved.
- * @throws SecurityException if, for one of the beans, the client or delegated subject
- * (if any) does not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #removeNotificationListener(ObjectName, ObjectName,
- * javax.security.auth.Subject)
- * @see #removeNotificationListener(ObjectName, ObjectName,
- * java.rmi.MarshalledObject,
- * java.rmi.MarshalledObject,
- * javax.security.auth.Subject)
- * @see #removeNotificationListeners(ObjectName, Integer[],
- * javax.security.auth.Subject)
- * @see NotificationBroadcaster#addNotificationListener(NotificationListener,
- * NotificationFilter,
- * Object)
- */
- @SuppressWarnings("rawtypes")
- Integer[] addNotificationListeners(ObjectName[] names, MarshalledObject[] filters,
- Subject[] delegationSubjects)
- throws InstanceNotFoundException, IOException;
-
- /**
- * Closes the connection and unexports the RMI object implementing this
- * interface. Following this call, future method calls to this instance
- * will fail.
- *
- * @throws IOException if there is an I/O error in transmitting the close
- * request via RMI, closing the connection, or unexporting
- * the RMI object.
- */
- void close()
- throws IOException;
-
- /**
- * <p>
- * Handles {@link
- * MBeanServerConnection#createMBean(String, ObjectName,
- * Object[], String[])}. The array of parameters is wrapped in
- * a {@link MarshalledObject} so that it is deserialised using the
- * bean's classloader.
- * </p>
- * <p>
- * Instantiates a new instance of the specified management bean
- * using the given constructor and registers it with the server
- * under the supplied name. The class is loaded using the
- * {@link javax.management.loading.ClassLoaderRepository default
- * loader repository} of the server.
- * </p>
- * <p>
- * If the name supplied is <code>null</code>, then the bean is
- * expected to implement the {@link MBeanRegistration} interface.
- * The {@link MBeanRegistration#preRegister preRegister} method
- * of this interface will be used to obtain the name in this case.
- * </p>
- *
- * @param className the class of the management bean, of which
- * an instance should be created.
- * @param name the name to register the new bean with. This may
- * be <code>null</code>.
- * @param params the parameters for the bean's constructor, encapsulated
- * in a {@link MarshalledObject}. If this parameter is
- * <code>null</code>, it will be judged equivalent to an
- * empty array.
- * @param sig the signature of the constructor to use. If this parameter
- * is <code>null</code>, it will be judged equivalent to an
- * empty array.
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return an {@link ObjectInstance} containing the {@link ObjectName}
- * and Java class name of the created instance.
- * @throws ReflectionException if an exception occurs in creating
- * an instance of the bean.
- * @throws InstanceAlreadyExistsException if a matching instance
- * already exists.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preRegister
- * method.
- * @throws MBeanException if the bean's constructor throws an exception.
- * @throws NotCompliantMBeanException if the created bean is not
- * compliant with the JMX specification.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> class name or object
- * name or if the object name is a pattern.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- @SuppressWarnings("rawtypes")
- ObjectInstance createMBean(String className, ObjectName name,
- MarshalledObject params, String[] sig,
- Subject delegationSubject)
- throws ReflectionException, InstanceAlreadyExistsException,
- MBeanRegistrationException, MBeanException,
- NotCompliantMBeanException, IOException;
-
- /**
- * <p>
- * Handles {@link
- * MBeanServerConnection#createMBean(String, ObjectName,
- * ObjectName, Object[], String[])}. The array of parameters is
- * wrapped in a {@link MarshalledObject} so that it is deserialised
- * using the bean's classloader.
- * </p>
- * <p>
- * Instantiates a new instance of the specified management bean
- * using the given constructor and registers it with the server
- * under the supplied name. The class is loaded using the
- * given class loader. If this argument is <code>null</code>,
- * then the same class loader as was used to load the server
- * is used.
- * </p>
- * <p>
- * If the name supplied is <code>null</code>, then the bean is
- * expected to implement the {@link MBeanRegistration} interface.
- * The {@link MBeanRegistration#preRegister preRegister} method
- * of this interface will be used to obtain the name in this case.
- * </p>
- *
- * @param className the class of the management bean, of which
- * an instance should be created.
- * @param name the name to register the new bean with. This may
- * be <code>null</code>.
- * @param loaderName the name of the class loader.
- * @param params the parameters for the bean's constructor, encapsulated
- * in a {@link MarshalledObject}. If this parameter is
- * <code>null</code>, it will be judged equivalent to an
- * empty array.
- * @param sig the signature of the constructor to use. If this parameter
- * is <code>null</code>, it will be judged equivalent to an
- * empty array.
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return an {@link ObjectInstance} containing the {@link ObjectName}
- * and Java class name of the created instance.
- * @throws ReflectionException if an exception occurs in creating
- * an instance of the bean.
- * @throws InstanceAlreadyExistsException if a matching instance
- * already exists.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preRegister
- * method.
- * @throws MBeanException if the bean's constructor throws an exception.
- * @throws NotCompliantMBeanException if the created bean is not
- * compliant with the JMX specification.
- * @throws InstanceNotFoundException if the specified class loader is not
- * registered with the server.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> class name or object
- * name or if the object name is a pattern.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- @SuppressWarnings("rawtypes")
- ObjectInstance createMBean(String className, ObjectName name,
- ObjectName loaderName, MarshalledObject params,
- String[] sig, Subject delegationSubject)
- throws ReflectionException, InstanceAlreadyExistsException,
- MBeanRegistrationException, MBeanException,
- NotCompliantMBeanException, InstanceNotFoundException,
- IOException;
-
- /**
- * <p>
- * Handles {@link
- * MBeanServerConnection#createMBean(String, ObjectName,
- * ObjectName)} by instantiating a new instance of the specified
- * management bean using the default constructor and registering
- * it with the server under the supplied name. The class is loaded
- * using the given class loader. If this argument is <code>null</code>,
- * then the same class loader as was used to load the server
- * is used.
- * </p>
- * <p>
- * If the name supplied is <code>null</code>, then the bean is
- * expected to implement the {@link MBeanRegistration} interface.
- * The {@link MBeanRegistration#preRegister preRegister} method
- * of this interface will be used to obtain the name in this case.
- * </p>
- * <p>
- * This method is equivalent to calling {@link
- * #createMBean(String, ObjectName, ObjectName, Object[], String)
- * <code>createMBean(className, name, loaderName, (Object[]) null,
- * (String) null)</code>} with <code>null</code> parameters
- * and signature.
- * </p>
- *
- * @param className the class of the management bean, of which
- * an instance should be created.
- * @param name the name to register the new bean with. This may
- * be <code>null</code>.
- * @param loaderName the name of the class loader.
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return an {@link ObjectInstance} containing the {@link ObjectName}
- * and Java class name of the created instance.
- * @throws ReflectionException if an exception occurs in creating
- * an instance of the bean.
- * @throws InstanceAlreadyExistsException if a matching instance
- * already exists.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preRegister
- * method.
- * @throws MBeanException if the bean's constructor throws an exception.
- * @throws NotCompliantMBeanException if the created bean is not
- * compliant with the JMX specification.
- * @throws InstanceNotFoundException if the specified class loader is not
- * registered with the server.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> class name or object
- * name or if the object name is a pattern.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #createMBean(String, ObjectName, ObjectName, MarshalledObject,
- * String[], Subject)
- */
- ObjectInstance createMBean(String className, ObjectName name,
- ObjectName loaderName, Subject delegationSubject)
- throws ReflectionException, InstanceAlreadyExistsException,
- MBeanRegistrationException, MBeanException,
- NotCompliantMBeanException, InstanceNotFoundException,
- IOException;
-
- /**
- * <p>
- * Handles {@link
- * MBeanServerConnection#createMBean(String, ObjectName)} by
- * instantiating a new instance of the specified management bean
- * using the default constructor and registering it with the server
- * under the supplied name. The class is loaded using the
- * {@link javax.management.loading.ClassLoaderRepository default
- * loader repository} of the server.
- * </p>
- * <p>
- * If the name supplied is <code>null</code>, then the bean is
- * expected to implement the {@link MBeanRegistration} interface.
- * The {@link MBeanRegistration#preRegister preRegister} method
- * of this interface will be used to obtain the name in this case.
- * </p>
- * <p>
- * This method is equivalent to calling {@link
- * #createMBean(String, ObjectName, Object[], String[])
- * <code>createMBean(className, name, (Object[]) null,
- * (String[]) null)</code>} with <code>null</code> parameters
- * and signature.
- * </p>
- *
- * @param className the class of the management bean, of which
- * an instance should be created.
- * @param name the name to register the new bean with. This may
- * be <code>null</code>.
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return an {@link ObjectInstance} containing the {@link ObjectName}
- * and Java class name of the created instance.
- * @throws ReflectionException if an exception occurs in creating
- * an instance of the bean.
- * @throws InstanceAlreadyExistsException if a matching instance
- * already exists.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preRegister
- * method.
- * @throws MBeanException if the bean's constructor throws an exception.
- * @throws NotCompliantMBeanException if the created bean is not
- * compliant with the JMX specification.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> class name or object
- * name or if the object name is a pattern.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #createMBean(String, ObjectName, MarshalledObject, String[], Subject)
- */
- ObjectInstance createMBean(String className, ObjectName name,
- Subject delegationSubject)
- throws ReflectionException, InstanceAlreadyExistsException,
- MBeanRegistrationException, MBeanException,
- NotCompliantMBeanException, IOException;
-
- /**
- * <p>
- * Retrieves any waiting notifications from the server. When notifications
- * are requested using the {@link #addNotificationListeners(ObjectName[],
- * MarshalledObject[], Subject[])} method, the server sets up an internal
- * listener to receive notifications from the bean and buffer them. When
- * this method is called, these buffered notifications can be retrieved.
- * </p>
- * <p>
- * The blocking behaviour of this method depends on the timeout value specified.
- * If there are no waiting notifications in the buffer, a value of 0 will cause
- * the method to return immediately. Conversely, if the value is
- * {@link Long#MAX_VALUE}, then it will wait indefinitely until a notification
- * arrives. For any other value, it waits until a notification arrives or the
- * number of milliseconds specified by the timeout value is exceeded. The
- * behaviour for a negative timeout value is undefined.
- * </p>
- * <p>
- * For a notification to be returned, the following criteria must be fulfilled:
- * </p>
- * <ul>
- * <li>the client must have previously requested notifications from at least
- * one bean</li>
- * <li>a bean from which notifications have been requested must have emitted
- * a notification since the last call to this method</li>
- * <li>the emitted notification must pass through any filters established
- * when notifications were requested</li>
- * <li>the sequence number of the notification must be greater than or equal
- * to the specified sequence number (if non-negative)</li>
- * </ul>
- *
- * @param sequenceNumber the sequence number of each notification returned
- * must be greater than or equal to this value. If
- * the number is negative, this is interpreted as
- * meaning the sequence number of the next notification
- * and so all notifications are allowed through.
- * @param maxNotifications the maximum number of notifications to return.
- * This does not include any duplicates so the
- * number of actual notifications returned may
- * be larger.
- * @param timeout the number of milliseconds to wait for a notification
- * if the buffer is empty. <code>0</code> causes the
- * method to return immediately even if there are no
- * notifications available (non-blocking behaviour) while
- * a value of {@link Long#MAX_VALUE} causes it to wait
- * indefinitely (blocking behaviour). The response to
- * a negative value is undefined.
- * @return a {@link NotificationResult} object containing the buffered
- * notifications.
- * @throws IOException if an I/O error occurs.
- */
- NotificationResult fetchNotifications(long sequenceNumber,
- int maxNotifications,
- long timeout)
- throws IOException;
-
- /**
- * Handles {@link
- * MBeanServerConnection#getAttribute(ObjectName, String)},
- * returning the value of the supplied attribute from the specified
- * management bean.
- *
- * @param bean the bean to retrieve the value from.
- * @param name the name of the attribute to retrieve.
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return the value of the attribute.
- * @throws AttributeNotFoundException if the attribute could not be
- * accessed from the bean.
- * @throws MBeanException if the management bean's accessor throws
- * an exception.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ReflectionException if an exception was thrown in trying
- * to invoke the bean's accessor.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean or attribute
- * name.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see DynamicMBean#getAttribute(String)
- */
- Object getAttribute(ObjectName bean, String name, Subject delegationSubject)
- throws MBeanException, AttributeNotFoundException,
- InstanceNotFoundException, ReflectionException,
- IOException;
-
- /**
- * Handles {@link
- * MBeanServerConnection#getAttribute(ObjectName, String)},
- * returning the values of the named attributes from the specified
- * management bean.
- *
- * @param bean the bean to retrieve the value from.
- * @param names the names of the attributes to retrieve.
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return the values of the attributes.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ReflectionException if an exception was thrown in trying
- * to invoke the bean's accessor.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean or attribute
- * name.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see DynamicMBean#getAttributes(String[])
- */
- AttributeList getAttributes(ObjectName bean, String[] names,
- Subject delegationSubject)
- throws InstanceNotFoundException, ReflectionException,
- IOException;
-
- /**
- * Returns the unique identifier for this connection to the RMI
- * server.
- *
- * @return the connection ID.
- * @throws IOException if an I/O error occurred.
- */
- String getConnectionId()
- throws IOException;
-
- /**
- * Handles {@link
- * MBeanServerConnection#getDefaultDomain()} by returning the default
- * domain this server applies to beans that have no specified domain.
- *
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return the default domain.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- String getDefaultDomain(Subject delegationSubject)
- throws IOException;
-
- /**
- * Handles {@link
- * MBeanServerConnection#getDomains()} by returning an array
- * containing all the domains used by beans registered with
- * this server. The ordering of the array is undefined.
- *
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return the list of domains.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see ObjectName#getDomain()
- */
- String[] getDomains(Subject delegationSubject)
- throws IOException;
-
- /**
- * Handles {@link
- * MBeanServerConnection#getMBeanCount()} by returning the number of
- * management beans registered with this server.
- *
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return the number of registered beans.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- Integer getMBeanCount(Subject delegationSubject)
- throws IOException;
-
- /**
- * Handles {@link
- * MBeanServerConnection#getMBeanInfo(ObjectName)} by returning
- * information on the given management bean.
- *
- * @param name the name of the management bean.
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return an instance of {@link MBeanInfo} for the bean.
- * @throws IntrospectionException if an exception occurs in examining
- * the bean.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ReflectionException if an exception occurs when trying
- * to invoke {@link DynamicMBean#getMBeanInfo()}
- * on the bean.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see DynamicMBean#getMBeanInfo()
- */
- MBeanInfo getMBeanInfo(ObjectName name, Subject delegationSubject)
- throws InstanceNotFoundException, IntrospectionException,
- ReflectionException, IOException;
-
- /**
- * Handles {@link
- * MBeanServerConnection#getObjectInstance(ObjectName)} by returning
- * the {@link ObjectInstance} created for the specified management
- * bean on registration.
- *
- * @param name the name of the bean.
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return the corresponding {@link ObjectInstance} instance.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #createMBean(String, ObjectName, Subject)
- */
- ObjectInstance getObjectInstance(ObjectName name, Subject delegationSubject)
- throws InstanceNotFoundException, IOException;
-
- /**
- * <p>
- * Handles {@link
- * MBeanServerConnection#invoke(ObjectName, String, Object[],
- * String[])}. The array of parameters is wrapped in a
- * {@link MarshalledObject} so that it is deserialised
- * using the bean's classloader.
- * </p>
- * <p>
- * Invokes the supplied operation on the specified management
- * bean. The class objects specified in the signature are loaded
- * using the same class loader as was used for the management bean.
- *
- * @param bean the management bean whose operation should be invoked.
- * @param name the name of the operation to invoke.
- * @param params the parameters for the bean's constructor, encapsulated
- * in a {@link MarshalledObject}. If this parameter is
- * <code>null</code>, it will be judged equivalent to an
- * empty array.
- * @param sig the signature of the constructor to use. If this parameter
- * is <code>null</code>, it will be judged equivalent to an
- * empty array. The class objects will be loaded using the
- * bean's classloader.
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return the return value of the method.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws MBeanException if the method invoked throws an exception.
- * @throws ReflectionException if an exception is thrown in invoking the
- * method.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see DynamicMBean#invoke(String, Object[], String[])
- */
- @SuppressWarnings("rawtypes")
- Object invoke(ObjectName bean, String name, MarshalledObject params,
- String[] sig, Subject delegationSubject)
- throws InstanceNotFoundException, MBeanException,
- ReflectionException, IOException;
-
- /**
- * <p>
- * Handles {@link
- * MBeanServerConnection#isInstanceOf(ObjectName, String) by
- * returning true if the specified management bean is an instance
- * of the supplied class.
- * </p>
- * <p>
- * A bean, B, is an instance of a class, C, if either of the following
- * conditions holds:
- * </p>
- * <ul>
- * <li>The class name in B's {@link MBeanInfo} is equal to the supplied
- * name.</li>
- * <li>Both the class of B and C were loaded by the same class loader,
- * and B is assignable to C.</li>
- * </ul>
- *
- * @param name the name of the management bean.
- * @param className the name of the class to test if <code>name</code> is
- * an instance of.
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return true if either B is directly an instance of the named class,
- * or B is assignable to the class, given that both it and B's
- * current class were loaded using the same class loader.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- boolean isInstanceOf(ObjectName name, String className,
- Subject delegationSubject)
- throws InstanceNotFoundException, IOException;
-
- /**
- * Handles {@link
- * MBeanServerConnection#isRegistered(ObjectName) by returning
- * true if the specified management bean is registered with
- * the server.
- *
- * @param name the name of the management bean.
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return true if the bean is registered.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean name.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- boolean isRegistered(ObjectName name, Subject delegationSubject)
- throws IOException;
-
- /**
- * <p>
- * Handles {@link
- * MBeanServerConnection#queryMBeans(ObjectName, QueryExp)}.
- * The query expression is wrapped in a {@link MarshalledObject}
- * so that it is deserialised using the bean's classloader.
- * </p>
- * <p>
- * Returns a set of {@link ObjectInstance}s matching the specified
- * criteria. The full set of beans registered with the server
- * are passed through two filters:
- * </p>
- * <ol>
- * <li>Pattern matching is performed using the supplied
- * {@link ObjectName}.</li>
- * <li>The supplied query expression is applied.</li>
- * </ol>
- * <p>
- * If both the object name and the query expression are <code>null</code>,
- * or the object name has no domain and no key properties,
- * no filtering will be performed and all beans are returned.
- * </p>
- *
- * @param name an {@link ObjectName} to use as a filter.
- * @param query a query expression to apply to each of the beans that match
- * the given object name, encapsulated in a
- * {@link MarshalledObject}. If a <code>null</code> value is
- * encapsulated, then the beans will only be filtered using
- * pattern matching on the supplied {@link ObjectName}.
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return a set of {@link ObjectInstance}s matching the filtered beans.
- * This is empty if no beans survived the filters.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- */
- @SuppressWarnings("rawtypes")
- Set<ObjectInstance> queryMBeans(ObjectName name, MarshalledObject query,
- Subject delegationSubject)
- throws IOException;
-
- /**
- * <p>
- * Handles {@link
- * MBeanServerConnection#queryNames(ObjectName, QueryExp)}.
- * The query expression is wrapped in a {@link MarshalledObject}
- * so that it is deserialised using the bean's classloader.
- * </p>
- * <p>
- * Returns a set of {@link ObjectName}s matching the specified
- * criteria. The full set of beans registered with the server
- * are passed through two filters:
- * </p>
- * <ol>
- * <li>Pattern matching is performed using the supplied
- * {@link ObjectName}.</li>
- * <li>The supplied query expression is applied.</li>
- * </ol>
- * <p>
- * If both the object name and the query expression are <code>null</code>,
- * or the object name has no domain and no key properties,
- * no filtering will be performed and all beans are returned.
- * </p>
- *
- * @param name an {@link ObjectName} to use as a filter.
- * @param query a query expression to apply to each of the beans that match
- * the given object name, encapsulated in a
- * {@link MarshalledObject}. If a <code>null</code> value is
- * encapsulated, then the beans will only be filtered using
- * pattern matching on the supplied {@link ObjectName}.
- * @param delegationSubject an instance of {@link javax.security.auth.Subject}
- * containing the delegation principles. This may be
- * {@code null} is authentication is used instead.
- * @return a set of {@link ObjectName}s matching the filtered beans.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- @SuppressWarnings("rawtypes")
- Set<ObjectName> queryNames(ObjectName name, MarshalledObject query,
- Subject delegationSubject)
- throws IOException;
-
- /**
- * <p>
- * Handles {@link
- * MBeanServerConnection#removeNotificationListener(ObjectName,
- * ObjectName, NotificationFilter, Object)}. Both the filter and
- * the handback object are wrapped in a {@link MarshalledObject}
- * so that they are deserialised using the bean's classloader.
- * </p>
- * <p>
- * Removes the specified listener from the list of recipients
- * of notifications from the supplied bean. Only the first instance with
- * the supplied filter and passback object is removed.
- * <code>null</code> is used as a valid value for these parameters,
- * rather than as a way to remove all registration instances for
- * the specified listener; for this behaviour instead, see
- * {@link #removeNotificationListener(ObjectName, NotificationListener)}.
- * </p>
- *
- * @param name the name of the management bean from which the
- * listener should be removed.
- * @param listener the listener to remove.
- * @param filter a wrapper containing the filter of the listener
- * to remove.
- * @param passback a wrapper containing the handback object of the
- * listener to remove.
- * @param delegationSubject a {@link javax.security.auth.Subject} instance
- * containing the delegation principles or
- * {@code null} if authentication is used.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with the bean.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #addNotificationListener(ObjectName, NotificationListener,
- * MarshalledObject, MarshalledObject, Subject)
- * @see NotificationEmitter#removeNotificationListener(NotificationListener,
- * NotificationFilter,
- * Object)
- */
- @SuppressWarnings("rawtypes")
- void removeNotificationListener(ObjectName name,
- ObjectName listener,
- MarshalledObject filter,
- MarshalledObject passback,
- Subject delegationSubject)
- throws InstanceNotFoundException, ListenerNotFoundException,
- IOException;
-
- /**
- * Handles {@link
- * MBeanServerConnection#removeNotificationListener(ObjectName,
- * ObjectName)} by removing the specified listener from the list
- * of recipients of notifications from the supplied bean. This
- * includes all combinations of filters and passback objects
- * registered for this listener. For more specific removal of
- * listeners, see {@link #removeNotificationListener(ObjectName,
- * ObjectName,MarshalledObject,MarshalledObject,Subject)}
- *
- * @param name the name of the management bean from which the
- * listener should be removed.
- * @param listener the name of the listener to remove.
- * @param delegationSubject a {@link javax.security.auth.Subject} instance
- * containing the delegation principles or
- * {@code null} if authentication is used.
- * @throws InstanceNotFoundException if a name doesn't match a registered
- * bean.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with the bean.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #addNotificationListener(ObjectName, NotificationListener,
- * MarshalledObject, MarshalledObject, Subject)
- * @see NotificationBroadcaster#removeNotificationListener(NotificationListener)
- */
- void removeNotificationListener(ObjectName name, ObjectName listener,
- Subject delegationSubject)
- throws InstanceNotFoundException, ListenerNotFoundException,
- IOException;
-
- /**
- * Removes one or more {@link NotificationListener}s from the specified
- * management bean. This method corresponds to
- * {@link #addNotificationListeners(ObjectName[], MarshalledObject[],
- * Subject)} and provides a different way of handling
- * MBeanServerConnection#removeNotificationListener(ObjectName,
- * ObjectName)} and
- * {@link MBeanServerConnection#removeNotificationListener(ObjectName,
- * ObjectName, NotificationFilter, Object)} by using the integer
- * identifiers provided by the
- * {@link #addNotificationListeners(ObjectName[], MarshalledObject[],
- * Subject)} method to select the listeners to remove.
- *
- * @param name the name of the management bean from which the
- * listeners should be removed.
- * @param listenerIds the identifiers of the listeners to remove.
- * @param delegationSubject a {@link javax.security.auth.Subject} instance
- * containing the delegation principles or
- * {@code null} if authentication is used.
- * @throws InstanceNotFoundException if a name doesn't match a registered
- * bean.
- * @throws ListenerNotFoundException if the specified listener
- * is not registered with the bean.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @throws IllegalArgumentException if either <code>name</code>,
- * <code>listenerIds</code> or an element
- * of <code>listenerIds</code>
- * is <code>null</code>.
- * @see #addNotificationListeners(ObjectName[], MarshalledObject[], Subject)
- */
- void removeNotificationListeners(ObjectName name, Integer[] listenerIds,
- Subject delegationSubject)
- throws InstanceNotFoundException, ListenerNotFoundException,
- IOException;
-
- /**
- * Handles {@link
- * MBeanServerConnection#setAttribute(ObjectName, Attribute)}
- * by setting the value of the specified attribute of the supplied
- * management bean. The attribute is wrapped in a
- * {@link MarshalledObject} so that it is deserialised using the
- * bean's classloader.
- *
- * @param name the name of the management bean.
- * @param attribute the attribute to set, encapsulated in a
- * {@link MarshalledObject}.
- * @param delegationSubject a {@link javax.security.auth.Subject} instance
- * containing the delegation principles or
- * {@code null} if authentication is used.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws AttributeNotFoundException if the attribute does not
- * correspond to an attribute
- * of the bean.
- * @throws InvalidAttributeValueException if the value is invalid
- * for this particular
- * attribute of the bean.
- * @throws MBeanException if setting the attribute causes
- * the bean to throw an exception (which
- * becomes the cause of this exception).
- * @throws ReflectionException if an exception occurred in trying
- * to use the reflection interface
- * to lookup the attribute. The
- * thrown exception is the cause of
- * this exception.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean or attribute
- * name.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #getAttribute(ObjectName, String, Subject)
- * @see javax.management.DynamicMBean#setAttribute(Attribute)
- */
- @SuppressWarnings("rawtypes")
- void setAttribute(ObjectName name, MarshalledObject attribute,
- Subject delegationSubject)
- throws InstanceNotFoundException, AttributeNotFoundException,
- InvalidAttributeValueException, MBeanException,
- ReflectionException, IOException;
-
- /**
- * Handles {@link
- * MBeanServerConnection#setAttributes(ObjectName, AttributeList)}
- * by setting the value of each of the specified attributes
- * of the supplied management bean to that specified by
- * the {@link Attribute} object. The returned list contains
- * the attributes that were set and their new values.
- * The attribute list is wrapped in a {@link MarshalledObject} so
- * that it is deserialised using the bean's classloader.
- *
- * @param name the name of the management bean.
- * @param attributes the attributes to set, encapsulated in a
- * {@link MarshalledObject}.
- * @param delegationSubject a {@link javax.security.auth.Subject} instance
- * containing the delegation principles or
- * {@code null} if authentication is used.
- * @return a list of the changed attributes.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws ReflectionException if an exception occurred in trying
- * to use the reflection interface
- * to lookup the attribute. The
- * thrown exception is the cause of
- * this exception.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean or attribute
- * list.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- * @see #getAttributes(ObjectName, String[])
- * @see DynamicMBean#setAttributes(AttributeList)
- */
- @SuppressWarnings("rawtypes")
- AttributeList setAttributes(ObjectName name, MarshalledObject attributes,
- Subject delegationSubject)
- throws InstanceNotFoundException, ReflectionException,
- IOException;
-
- /**
- * Handles {@link
- * MBeanServerConnection#unregisterMBean(ObjectName)} by unregistering
- * the specified management bean. Following this operation,
- * the bean instance is no longer accessible from the server via this
- * name. Prior to unregistering the bean, the
- * {@link MBeanRegistration#preDeregister()} method will be called if
- * the bean implements the {@link MBeanRegistration} interface.
- *
- * @param name the name of the management bean.
- * @param delegationSubject a {@link javax.security.auth.Subject} instance
- * containing the delegation principles or
- * {@code null} if authentication is used.
- * @throws InstanceNotFoundException if the bean can not be found.
- * @throws MBeanRegistrationException if an exception occurs in
- * calling the preDeregister
- * method.
- * @throws RuntimeOperationsException if an {@link IllegalArgumentException}
- * is thrown by the server due to a
- * <code>null</code> bean name or a
- * request being made to unregister the
- * {@link MBeanServerDelegate} bean.
- * @throws SecurityException if the client or delegated subject (if any) does
- * not have permission to invoke this operation.
- * @throws IOException if an I/O error occurred in communicating with
- * the bean server.
- */
- void unregisterMBean(ObjectName name, Subject delegationSubject)
- throws InstanceNotFoundException, MBeanRegistrationException,
- IOException;
-
-}
diff --git a/libjava/classpath/javax/management/remote/rmi/RMIServer.java b/libjava/classpath/javax/management/remote/rmi/RMIServer.java
deleted file mode 100644
index d862372..0000000
--- a/libjava/classpath/javax/management/remote/rmi/RMIServer.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/* RMIServer.java -- RMI object for connecting to an RMI JMX connector.
- Copyright (C) 2007 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-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.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package javax.management.remote.rmi;
-
-import java.io.IOException;
-
-import java.rmi.Remote;
-import java.rmi.RemoteException;
-
-/**
- * RMI interface for obtaining an instance of an
- * {@link RMIConnection}. An implementation of this
- * interface exists for each RMI connector.
- *
- * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
- * @since 1.5
- */
-public interface RMIServer
- extends Remote
-{
-
- /**
- * Returns the version of the RMI connection protocol used
- * by this server. The returned string takes the form of
- * <emph>protocol-version implementation-name</emph> where
- * <emph>protocol-version</emph> is a series of two or more
- * non-negative integers, separated by a decimal point (.)
- * (currently {@code 1.0}) and <emph>implementation-name</emph>
- * is the string {@code "GNU Classpath"} followed by the version
- * of GNU Classpath in use.
- *
- * @return the string specified above.
- * @throws RemoteException if there is a problem with the transfer
- * of the string via RMI.
- */
- String getVersion()
- throws RemoteException;
-
- /**
- * Constructs and returns a new RMI connection using the specified
- * authentication credentials. Each client calls this method to
- * obtain a connection to the server.
- *
- * @param credentials a user-defined object passed to the server
- * to authenticate the client. May be {@code null}.
- * @return the new connection.
- * @throws IOException if the new connection can not be created or
- * exported, or an error occurs in the RMI transmission.
- * @throws SecurityException if the client could not be authenticated
- * correctly using the supplied credientials.
- */
- RMIConnection newClient(Object credentials)
- throws IOException;
-}