This adds the MBeanAttributeInfo class to javax.management
and its accompanying exception.

Changelog:

2006-07-24  Andrew John Hughes  <[EMAIL PROTECTED]>

        * javax/management/IntrospectionException.java,
        * javax/management/MBeanAttributeInfo.java:
        New files.
        * javax/management/MBeanNotificationInfo.java:
        Documentation cleanups.

-- 
Andrew :-)

Escape the Java Trap with GNU Classpath!
http://www.gnu.org/philosophy/java-trap.html
public class gcj extends Freedom implements Java { ... }
Index: javax/management/IntrospectionException.java
===================================================================
RCS file: javax/management/IntrospectionException.java
diff -N javax/management/IntrospectionException.java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ javax/management/IntrospectionException.java        24 Jul 2006 20:18:34 
-0000
@@ -0,0 +1,78 @@
+/* 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 ([EMAIL PROTECTED])
+ * @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);
+  }
+
+}
+
Index: javax/management/MBeanAttributeInfo.java
===================================================================
RCS file: javax/management/MBeanAttributeInfo.java
diff -N javax/management/MBeanAttributeInfo.java
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ javax/management/MBeanAttributeInfo.java    24 Jul 2006 20:18:34 -0000
@@ -0,0 +1,268 @@
+/* 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;
+
+/**
+ * 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 ([EMAIL PROTECTED])
+ * @since 1.5
+ */
+public class MBeanAttributeInfo
+  extends MBeanFeatureInfo
+  implements Cloneable
+{
+
+  /**
+   * 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 [EMAIL PROTECTED] 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)
+      {
+       attributeType = setter.getParameterTypes()[0].getName();
+       isRead = false;
+       is = false;
+      }
+    else
+      {
+       attributeType = getter.getReturnType().getName();
+       isRead = true;
+       is = getter.getName().startsWith("is");
+      }
+    if (setter != null)
+      isWrite = true;
+  }
+
+  /**
+   * Constructs a new [EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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
+   * [EMAIL PROTECTED] MBeanAttributeInfo}, [EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED] #isReadable()}, twice the hashcode
+   * of [EMAIL PROTECTED] #isWritable()} and four times the hashcode
+   * of [EMAIL PROTECTED] #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;
+  }
+
+}
Index: javax/management/MBeanNotificationInfo.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/javax/management/MBeanNotificationInfo.java,v
retrieving revision 1.1
diff -u -3 -p -u -r1.1 MBeanNotificationInfo.java
--- javax/management/MBeanNotificationInfo.java 16 Jul 2006 14:35:38 -0000      
1.1
+++ javax/management/MBeanNotificationInfo.java 24 Jul 2006 20:18:34 -0000
@@ -132,20 +132,19 @@ public class MBeanNotificationInfo
   }
 
   /**
-   * Compares this feature with the supplied object.  This
-   * returns true iff the object is an instance of
-   * [EMAIL PROTECTED] MBeanNotificationInfo}, [EMAIL PROTECTED] 
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).
+   * Compares this feature with the supplied object.  This returns
+   * true iff the object is an instance of [EMAIL PROTECTED]
+   * MBeanNotificationInfo}, [EMAIL PROTECTED] 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 [EMAIL PROTECTED] MBeanNotificationInfo}
    *         instance, 
    *         <code>name.equals(object.getName())</code>,
-   *         <code>description.equals(object.getDescription</code>
+   *         <code>description.equals(object.getDescription())</code>
    *         and the corresponding elements of the type arrays are
    *         equal.
    */
@@ -171,11 +170,11 @@ public class MBeanNotificationInfo
   }
 
   /**
-   * 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.
+   * 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.
    */
@@ -185,10 +184,9 @@ public class MBeanNotificationInfo
   }
 
   /**
-   * Returns the hashcode of the notification
-   * information as the sum of the hashcode of
-   * the superclass and the hashcode of the
-   * types array.
+   * 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.

Attachment: signature.asc
Description: Digital signature

Reply via email to