Constructor: |
public CompositeDataSupport(CompositeType compositeType,
Map<String, ?> items) throws OpenDataException {
this(makeMap(items), compositeType);
}
Constructs a CompositeDataSupport instance with the specified compositeType, whose item names and corresponding values
are given by the mappings in the map items.
This constructor converts the keys to a string array and the values to an object array and calls
CompositeDataSupport(javax.management.openmbean.CompositeType, java.lang.String[], java.lang.Object[]).
Parameters:
compositeType - the composite type of this composite data instance;
must not be null.
items - the mappings of all the item names to their values;
items must contain all the item names defined in compositeType;
must not be null or empty.
Throws:
IllegalArgumentException - compositeType is null, or
items is null or empty, or one of the keys in items is a null
or empty string.
OpenDataException - items' size differs from the
number of items defined in compositeType, or one of the
keys in items does not exist as an item name defined in
compositeType, or one of the values in items
is not a valid value for the corresponding item as defined in
compositeType.
ArrayStoreException - one or more keys in items is not of
the class java.lang.String.
|
public CompositeDataSupport(CompositeType compositeType,
String[] itemNames,
Object[] itemValues) throws OpenDataException {
this(makeMap(itemNames, itemValues), compositeType);
}
Constructs a CompositeDataSupport instance with the specified
compositeType, whose item values
are specified by itemValues[], in the same order as in
itemNames[].
As a CompositeType does not specify any order on its items,
the itemNames[] parameter is used
to specify the order in which the values are given in itemValues[].
The items contained in this CompositeDataSupport instance are
internally stored in a TreeMap,
thus sorted in ascending lexicographic order of their names, for faster
retrieval of individual item values.
The constructor checks that all the constraints listed below for each
parameter are satisfied,
and throws the appropriate exception if they are not.
Parameters:
compositeType - the composite type of this composite
data instance; must not be null.
itemNames - itemNames must list, in any order, all the
item names defined in compositeType; the order in which the
names are listed, is used to match values in itemValues[]; must
not be null or empty.
itemValues - the values of the items, listed in the same order as
their respective names in itemNames; each item value can be
null, but if it is non-null it must be a valid value for the open type
defined in compositeType for the corresponding item; must be of
the same size as itemNames; must not be null or empty.
Throws:
IllegalArgumentException - compositeType is null, or
itemNames[] or itemValues[] is null or empty, or one
of the elements in itemNames[] is a null or empty string, or
itemNames[] and itemValues[] are not of the same size.
OpenDataException - itemNames[] or
itemValues[]'s size differs from the number of items defined in
compositeType, or one of the elements in itemNames[]
does not exist as an item name defined in compositeType, or one
of the elements in itemValues[] is not a valid value for the
corresponding item as defined in compositeType.
|
Method from javax.management.openmbean.CompositeDataSupport Detail: |
public boolean containsKey(String key) {
if ( (key == null) || (key.trim().equals("")) ) {
return false;
}
return contents.containsKey(key);
}
Returns true if and only if this CompositeData instance contains
an item whose name is key.
If key is a null or empty String, this method simply returns false. |
public boolean containsValue(Object value) {
return contents.containsValue(value);
}
Returns true if and only if this CompositeData instance
contains an item
whose value is value. |
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
// if obj is not a CompositeData, return false
if (!(obj instanceof CompositeData)) {
return false;
}
CompositeData other = (CompositeData) obj;
// their compositeType should be equal
if (!this.getCompositeType().equals(other.getCompositeType()) ) {
return false;
}
if (contents.size() != other.values().size()) {
return false;
}
for (Map.Entry< String,Object > entry : contents.entrySet()) {
Object e1 = entry.getValue();
Object e2 = other.get(entry.getKey());
if (e1 == e2)
continue;
if (e1 == null)
return false;
boolean eq = e1.getClass().isArray() ?
Arrays.deepEquals(new Object[] {e1}, new Object[] {e2}) :
e1.equals(e2);
if (!eq)
return false;
}
// All tests for equality were successful
//
return true;
}
Compares the specified obj parameter with this
CompositeDataSupport instance for equality.
Returns true if and only if all of the following statements are true:
- obj is non null,
- obj also implements the
CompositeData interface,
- their composite types are equal
- their contents, i.e. (name, value) pairs are equal. If a value contained in
the content is an array, the value comparison is done as if by calling
the deepEquals method
for arrays of object reference types or the appropriate overloading of
{@code Arrays.equals(e1,e2)} for arrays of primitive types
This ensures that this equals method works properly for
obj parameters which are different implementations of the
CompositeData interface, with the restrictions mentioned in the
equals
method of the java.util.Collection interface. |
public Object get(String key) {
if ( (key == null) || (key.trim().equals("")) ) {
throw new IllegalArgumentException("Argument key cannot be a null or empty String.");
}
if ( ! contents.containsKey(key.trim())) {
throw new InvalidKeyException("Argument key=\""+ key.trim() +"\" is not an existing item name for this CompositeData instance.");
}
return contents.get(key.trim());
}
Returns the value of the item whose name is key. |
public Object[] getAll(String[] keys) {
if ( (keys == null) || (keys.length == 0) ) {
return new Object[0];
}
Object[] results = new Object[keys.length];
for (int i=0; i< keys.length; i++) {
results[i] = this.get(keys[i]);
}
return results;
}
Returns an array of the values of the items whose names are specified by
keys, in the same order as keys. |
public CompositeType getCompositeType() {
return compositeType;
}
Returns the composite type of this composite data instance. |
public int hashCode() {
int hashcode = compositeType.hashCode();
for (Object o : contents.values()) {
if (o instanceof Object[])
hashcode += Arrays.deepHashCode((Object[]) o);
else if (o instanceof byte[])
hashcode += Arrays.hashCode((byte[]) o);
else if (o instanceof short[])
hashcode += Arrays.hashCode((short[]) o);
else if (o instanceof int[])
hashcode += Arrays.hashCode((int[]) o);
else if (o instanceof long[])
hashcode += Arrays.hashCode((long[]) o);
else if (o instanceof char[])
hashcode += Arrays.hashCode((char[]) o);
else if (o instanceof float[])
hashcode += Arrays.hashCode((float[]) o);
else if (o instanceof double[])
hashcode += Arrays.hashCode((double[]) o);
else if (o instanceof boolean[])
hashcode += Arrays.hashCode((boolean[]) o);
else if (o != null)
hashcode += o.hashCode();
}
return hashcode;
}
Returns the hash code value for this CompositeDataSupport instance.
The hash code of a CompositeDataSupport instance is the sum of the hash codes
of all elements of information used in equals comparisons
(ie: its composite type and all the item values).
This ensures that t1.equals(t2) implies that t1.hashCode()==t2.hashCode()
for any two CompositeDataSupport instances t1 and t2 ,
as required by the general contract of the method
Object.hashCode() .
Each item value's hash code is added to the returned hash code.
If an item value is an array,
its hash code is obtained as if by calling the
deepHashCode method
for arrays of object reference types or the appropriate overloading
of {@code Arrays.hashCode(e)} for arrays of primitive types. |
public String toString() {
return new StringBuilder()
.append(this.getClass().getName())
.append("(compositeType=")
.append(compositeType.toString())
.append(",contents=")
.append(contentString())
.append(")")
.toString();
}
Returns a string representation of this CompositeDataSupport instance.
The string representation consists of the name of this class (ie javax.management.openmbean.CompositeDataSupport ),
the string representation of the composite type of this instance, and the string representation of the contents
(ie list the itemName=itemValue mappings). |
public Collection<?> values() {
return Collections.unmodifiableCollection(contents.values());
}
Returns an unmodifiable Collection view of the item values contained in this
CompositeData instance.
The returned collection's iterator will return the values in the ascending
lexicographic order of the corresponding
item names. |