View Javadoc
1   /*
2    * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4    *
5    * This code is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU General Public License version 2 only, as
7    * published by the Free Software Foundation.  Oracle designates this
8    * particular file as subject to the "Classpath" exception as provided
9    * by Oracle in the LICENSE file that accompanied this code.
10   *
11   * This code is distributed in the hope that it will be useful, but WITHOUT
12   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14   * version 2 for more details (a copy is included in the LICENSE file that
15   * accompanied this code).
16   *
17   * You should have received a copy of the GNU General Public License version
18   * 2 along with this work; if not, write to the Free Software Foundation,
19   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20   *
21   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22   * or visit www.oracle.com if you need additional information or have any
23   * questions.
24   */
25  
26  package javax.management;
27  
28  
29  // java import
30  import java.io.Serializable;
31  
32  
33  /**
34   * Represents an MBean attribute by associating its name with its value.
35   * The MBean server and other objects use this class to get and set attributes values.
36   *
37   * @since 1.5
38   */
39  public class Attribute implements Serializable   {
40  
41      /* Serial version */
42      private static final long serialVersionUID = 2484220110589082382L;
43  
44      /**
45       * @serial Attribute name.
46       */
47      private String name;
48  
49      /**
50       * @serial Attribute value
51       */
52      private Object value= null;
53  
54  
55      /**
56       * Constructs an Attribute object which associates the given attribute name with the given value.
57       *
58       * @param name A String containing the name of the attribute to be created. Cannot be null.
59       * @param value The Object which is assigned to the attribute. This object must be of the same type as the attribute.
60       *
61       */
62      public Attribute(String name, Object value) {
63  
64          if (name == null) {
65              throw new RuntimeOperationsException(new IllegalArgumentException("Attribute name cannot be null "));
66          }
67  
68          this.name = name;
69          this.value = value;
70      }
71  
72  
73      /**
74       * Returns a String containing the  name of the attribute.
75       *
76       * @return the name of the attribute.
77       */
78      public String getName()  {
79          return name;
80      }
81  
82      /**
83       * Returns an Object that is the value of this attribute.
84       *
85       * @return the value of the attribute.
86       */
87      public Object getValue()  {
88          return value;
89      }
90  
91      /**
92       * Compares the current Attribute Object with another Attribute Object.
93       *
94       * @param object  The Attribute that the current Attribute is to be compared with.
95       *
96       * @return  True if the two Attribute objects are equal, otherwise false.
97       */
98  
99  
100     public boolean equals(Object object)  {
101         if (!(object instanceof Attribute)) {
102             return false;
103         }
104         Attribute val = (Attribute) object;
105 
106         if (value == null) {
107             if (val.getValue() == null) {
108                 return name.equals(val.getName());
109             } else {
110                 return false;
111             }
112         }
113 
114         return ((name.equals(val.getName())) &&
115                 (value.equals(val.getValue())));
116     }
117 
118     /**
119      * Returns a hash code value for this attribute.
120      *
121      * @return a hash code value for this attribute.
122      */
123     public int hashCode() {
124         return name.hashCode() ^ (value == null ? 0 : value.hashCode());
125     }
126 
127     /**
128      * Returns a String object representing this Attribute's value. The format of this
129      * string is not specified, but users can expect that two Attributes return the
130      * same string if and only if they are equal.
131      */
132     public String toString() {
133         return getName() + " = " + getValue();
134     }
135  }