- /*
 - * @(#)ObjectInstance.java 4.21 04/03/18
 - *
 - * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
 - * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 - */
 - package javax.management;
 - // java import
 - import java.io.Serializable;
 - // RI import
 - import javax.management.ObjectName;
 - /**
 - * Used to represent the object name of an MBean and its class name.
 - * If the MBean is a Dynamic MBean the class name should be retrieved from
 - * the <CODE>MBeanInfo</CODE> it provides.
 - *
 - * @since 1.5
 - */
 - public class ObjectInstance implements Serializable {
 - /* Serial version */
 - private static final long serialVersionUID = -4099952623687795850L;
 - /**
 - * @serial Object name.
 - */
 - private ObjectName name;
 - /**
 - * @serial Class name.
 - */
 - private String className;
 - /**
 - * Allows an object instance to be created given a string representation of
 - * an object name and the full class name, including the package name.
 - *
 - * @param objectName A string representation of the object name.
 - * @param className The full class name, including the package
 - * name, of the object instance. If the MBean is a Dynamic MBean
 - * the class name corresponds to its {@link
 - * DynamicMBean#getMBeanInfo()
 - * getMBeanInfo()}<code>.getClassName()</code>.
 - *
 - * @exception MalformedObjectNameException The string passed as a
 - * parameter does not have the right format.
 - *
 - */
 - public ObjectInstance(String objectName, String className)
 - throws MalformedObjectNameException {
 - this(new ObjectName(objectName), className);
 - }
 - /**
 - * Allows an object instance to be created given an object name and
 - * the full class name, including the package name.
 - *
 - * @param objectName The object name.
 - * @param className The full class name, including the package
 - * name, of the object instance. If the MBean is a Dynamic MBean
 - * the class name corresponds to its {@link
 - * DynamicMBean#getMBeanInfo()
 - * getMBeanInfo()}<code>.getClassName()</code>.
 - * If the MBean is a Dynamic MBean the class name should be retrieved
 - * from the <CODE>MBeanInfo</CODE> it provides.
 - *
 - */
 - public ObjectInstance(ObjectName objectName, String className) {
 - if (objectName.isPattern()) {
 - final IllegalArgumentException iae =
 - new IllegalArgumentException("Invalid name->"+
 - objectName.toString());
 - throw new RuntimeOperationsException(iae);
 - }
 - this.name= objectName;
 - this.className= className;
 - }
 - /**
 - * Compares the current object instance with another object instance.
 - *
 - * @param object The object instance that the current object instance is
 - * to be compared with.
 - *
 - * @return True if the two object instances are equal, otherwise false.
 - */
 - public boolean equals(Object object) {
 - if (!(object instanceof ObjectInstance)) {
 - return false;
 - }
 - ObjectInstance val = (ObjectInstance) object;
 - if (! name.equals(val.getObjectName())) return false;
 - if (className == null)
 - return (val.getClassName() == null);
 - return className.equals(val.getClassName());
 - }
 - public int hashCode() {
 - final int classHash = ((className==null)?0:className.hashCode());
 - return name.hashCode() ^ classHash;
 - }
 - /**
 - * Returns the object name part.
 - *
 - * @return the object name.
 - */
 - public ObjectName getObjectName() {
 - return name;
 - }
 - /**
 - * Returns the class part.
 - *
 - * @return the class name.
 - */
 - public String getClassName() {
 - return className;
 - }
 - }