blob: 3f7e78227c31f31e68eafa1bc24c3c37de8b2287 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 1999-2005 Sun Microsystems, Inc. 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. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26package javax.management;
27
28
29// java import
30import 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 */
39public 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 }