- java.lang.Object
-
- javax.management.openmbean.TabularDataSupport
-
- All Implemented Interfaces:
Serializable
,Cloneable
,Map<Object,Object>
,TabularData
public class TabularDataSupport extends Object implements TabularData, Map<Object,Object>, Cloneable, Serializable
TheTabularDataSupport
class is the open data class which implements theTabularData
and theMap
interfaces, and which is internally based on a hash map data structure.- Since:
- 1.5
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description TabularDataSupport(TabularType tabularType)
Creates an emptyTabularDataSupport
instance whose open-type is tabularType, and whose underlyingHashMap
has a default initial capacity (101) and default load factor (0.75).TabularDataSupport(TabularType tabularType, int initialCapacity, float loadFactor)
Creates an emptyTabularDataSupport
instance whose open-type is tabularType, and whose underlyingHashMap
has the specified initial capacity and load factor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Object[]
calculateIndex(CompositeData value)
Calculates the index that would be used in thisTabularData
instance to refer to the specified composite data value parameter if it were added to this instance.void
clear()
Removes all rows from thisTabularDataSupport
instance.Object
clone()
Returns a clone of thisTabularDataSupport
instance: the clone is obtained by callingsuper.clone()
, and then cloning the underlying map.boolean
containsKey(Object key)
Returnstrue
if and only if thisTabularData
instance contains aCompositeData
value (ie a row) whose index is the specified key.boolean
containsKey(Object[] key)
Returnstrue
if and only if thisTabularData
instance contains aCompositeData
value (ie a row) whose index is the specified key.boolean
containsValue(Object value)
Returnstrue
if and only if thisTabularData
instance contains the specified value.boolean
containsValue(CompositeData value)
Returnstrue
if and only if thisTabularData
instance contains the specifiedCompositeData
value.Set<Map.Entry<Object,Object>>
entrySet()
Returns a collection view of the index to row mappings contained in thisTabularDataSupport
instance.boolean
equals(Object obj)
Compares the specified obj parameter with thisTabularDataSupport
instance for equality.Object
get(Object key)
This method simply callsget((Object[]) key)
.CompositeData
get(Object[] key)
Returns theCompositeData
value whose index is key, ornull
if there is no value mapping to key, in thisTabularData
instance.TabularType
getTabularType()
Returns the tabular type describing thisTabularData
instance.int
hashCode()
Returns the hash code value for thisTabularDataSupport
instance.boolean
isEmpty()
Returnstrue
if thisTabularDataSupport
instance contains no rows.Set<Object>
keySet()
Returns a set view of the keys contained in the underlying map of thisTabularDataSupport
instance used to index the rows.Object
put(Object key, Object value)
This method simply callsput((CompositeData) value)
and therefore ignores its key parameter which can benull
.void
put(CompositeData value)
Adds value to thisTabularData
instance.void
putAll(Map<?,?> t)
Add all the values contained in the specified map t to thisTabularData
instance.void
putAll(CompositeData[] values)
Add all the elements in values to thisTabularData
instance.Object
remove(Object key)
This method simply callsremove((Object[]) key)
.CompositeData
remove(Object[] key)
Removes theCompositeData
value whose index is key from thisTabularData
instance, and returns the removed value, or returnsnull
if there is no value whose index is key.int
size()
Returns the number of rows in thisTabularDataSupport
instance.String
toString()
Returns a string representation of thisTabularDataSupport
instance.Collection<Object>
values()
Returns a collection view of the rows contained in thisTabularDataSupport
instance.-
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, entry, forEach, getOrDefault, merge, of, of, of, of, of, of, of, of, of, of, of, ofEntries, putIfAbsent, remove, replace, replace, replaceAll
-
-
-
-
Constructor Detail
-
TabularDataSupport
public TabularDataSupport(TabularType tabularType)
Creates an emptyTabularDataSupport
instance whose open-type is tabularType, and whose underlyingHashMap
has a default initial capacity (101) and default load factor (0.75).This constructor simply calls
this(tabularType, 101, 0.75f);
- Parameters:
tabularType
- the tabular type describing thisTabularData
instance; cannot be null.- Throws:
IllegalArgumentException
- if the tabular type is null.
-
TabularDataSupport
public TabularDataSupport(TabularType tabularType, int initialCapacity, float loadFactor)
Creates an emptyTabularDataSupport
instance whose open-type is tabularType, and whose underlyingHashMap
has the specified initial capacity and load factor.- Parameters:
tabularType
- the tabular type describing thisTabularData
instance; cannot be null.initialCapacity
- the initial capacity of the HashMap.loadFactor
- the load factor of the HashMap- Throws:
IllegalArgumentException
- if the initial capacity is less than zero, or the load factor is nonpositive, or the tabular type is null.
-
-
Method Detail
-
getTabularType
public TabularType getTabularType()
Returns the tabular type describing thisTabularData
instance.- Specified by:
getTabularType
in interfaceTabularData
- Returns:
- the tabular type.
-
calculateIndex
public Object[] calculateIndex(CompositeData value)
Calculates the index that would be used in thisTabularData
instance to refer to the specified composite data value parameter if it were added to this instance. This method checks for the type validity of the specified value, but does not check if the calculated index is already used to refer to a value in thisTabularData
instance.- Specified by:
calculateIndex
in interfaceTabularData
- Parameters:
value
- the composite data value whose index in thisTabularData
instance is to be calculated; must be of the same composite type as this instance's row type; must not be null.- Returns:
- the index that the specified value would have in this
TabularData
instance. - Throws:
NullPointerException
- if value isnull
.InvalidOpenTypeException
- if value does not conform to thisTabularData
instance's row type definition.
-
containsKey
public boolean containsKey(Object key)
Returnstrue
if and only if thisTabularData
instance contains aCompositeData
value (ie a row) whose index is the specified key. If key cannot be cast to a one dimension array of Object instances, this method simply returnsfalse
; otherwise it returns the result of the call tothis.containsKey((Object[]) key)
.- Specified by:
containsKey
in interfaceMap<Object,Object>
- Parameters:
key
- the index value whose presence in thisTabularData
instance is to be tested.- Returns:
true
if thisTabularData
indexes a row value with the specified key.
-
containsKey
public boolean containsKey(Object[] key)
Returnstrue
if and only if thisTabularData
instance contains aCompositeData
value (ie a row) whose index is the specified key. If key isnull
or does not conform to thisTabularData
instance'sTabularType
definition, this method simply returnsfalse
.- Specified by:
containsKey
in interfaceTabularData
- Parameters:
key
- the index value whose presence in thisTabularData
instance is to be tested.- Returns:
true
if thisTabularData
indexes a row value with the specified key.
-
containsValue
public boolean containsValue(CompositeData value)
Returnstrue
if and only if thisTabularData
instance contains the specifiedCompositeData
value. If value isnull
or does not conform to thisTabularData
instance's row type definition, this method simply returnsfalse
.- Specified by:
containsValue
in interfaceTabularData
- Parameters:
value
- the row value whose presence in thisTabularData
instance is to be tested.- Returns:
true
if thisTabularData
instance contains the specified row value.
-
containsValue
public boolean containsValue(Object value)
Returnstrue
if and only if thisTabularData
instance contains the specified value.- Specified by:
containsValue
in interfaceMap<Object,Object>
- Parameters:
value
- the row value whose presence in thisTabularData
instance is to be tested.- Returns:
true
if thisTabularData
instance contains the specified row value.
-
get
public Object get(Object key)
This method simply callsget((Object[]) key)
.- Specified by:
get
in interfaceMap<Object,Object>
- Parameters:
key
- the key whose associated value is to be returned- Returns:
- the value to which the specified key is mapped, or
null
if this map contains no mapping for the key - Throws:
NullPointerException
- if the key isnull
ClassCastException
- if the key is not of the typeObject[]
InvalidKeyException
- if the key does not conform to thisTabularData
instance'sTabularType
definition
-
get
public CompositeData get(Object[] key)
Returns theCompositeData
value whose index is key, ornull
if there is no value mapping to key, in thisTabularData
instance.- Specified by:
get
in interfaceTabularData
- Parameters:
key
- the index of the value to get in thisTabularData
instance; must be valid with thisTabularData
instance's row type definition; must not be null.- Returns:
- the value corresponding to key.
- Throws:
NullPointerException
- if the key isnull
InvalidKeyException
- if the key does not conform to thisTabularData
instance'sTabularType
type definition.
-
put
public Object put(Object key, Object value)
This method simply callsput((CompositeData) value)
and therefore ignores its key parameter which can benull
.- Specified by:
put
in interfaceMap<Object,Object>
- Parameters:
key
- an ignored parameter.value
- theCompositeData
to put.- Returns:
- the value which is put
- Throws:
NullPointerException
- if the value isnull
ClassCastException
- if the value is not of the typeCompositeData
InvalidOpenTypeException
- if the value does not conform to thisTabularData
instance'sTabularType
definitionKeyAlreadyExistsException
- if the key for the value parameter, calculated according to thisTabularData
instance'sTabularType
definition already maps to an existing value
-
put
public void put(CompositeData value)
Description copied from interface:TabularData
Adds value to thisTabularData
instance. The composite type of value must be the same as this instance's row type (ie the composite type returned bythis.getTabularType().
), and there must not already be an existing value in thisgetRowType()
TabularData
instance whose index is the same as the one calculated for the value to be added. The index for value is calculated according to thisTabularData
instance'sTabularType
definition (seeTabularType.
).getIndexNames()
- Specified by:
put
in interfaceTabularData
- Parameters:
value
- the composite data value to be added as a new row to thisTabularData
instance; must be of the same composite type as this instance's row type; must not be null.
-
remove
public Object remove(Object key)
This method simply callsremove((Object[]) key)
.- Specified by:
remove
in interfaceMap<Object,Object>
- Parameters:
key
- anObject[]
representing the key to remove.- Returns:
- previous value associated with specified key, or
null
if there was no mapping for key. - Throws:
NullPointerException
- if the key isnull
ClassCastException
- if the key is not of the typeObject[]
InvalidKeyException
- if the key does not conform to thisTabularData
instance'sTabularType
definition
-
remove
public CompositeData remove(Object[] key)
Removes theCompositeData
value whose index is key from thisTabularData
instance, and returns the removed value, or returnsnull
if there is no value whose index is key.- Specified by:
remove
in interfaceTabularData
- Parameters:
key
- the index of the value to get in thisTabularData
instance; must be valid with thisTabularData
instance's row type definition; must not be null.- Returns:
- previous value associated with specified key, or
null
if there was no mapping for key. - Throws:
NullPointerException
- if the key isnull
InvalidKeyException
- if the key does not conform to thisTabularData
instance'sTabularType
definition
-
putAll
public void putAll(Map<?,?> t)
Add all the values contained in the specified map t to thisTabularData
instance. This method converts the collection of values contained in this map into an array ofCompositeData
values, if possible, and then call the methodputAll(CompositeData[])
. Note that the keys used in the specified map t are ignored. This method allows, for example to add the content of anotherTabularData
instance with the same row type (but possibly different index names) into this instance.- Specified by:
putAll
in interfaceMap<Object,Object>
- Parameters:
t
- the map whose values are to be added as new rows to thisTabularData
instance; if t isnull
or empty, this method returns without doing anything.- Throws:
NullPointerException
- if a value in t isnull
.ClassCastException
- if a value in t is not an instance ofCompositeData
.InvalidOpenTypeException
- if a value in t does not conform to thisTabularData
instance's row type definition.KeyAlreadyExistsException
- if the index for a value in t, calculated according to thisTabularData
instance'sTabularType
definition already maps to an existing value in this instance, or two values in t have the same index.
-
putAll
public void putAll(CompositeData[] values)
Add all the elements in values to thisTabularData
instance. If any element in values does not satisfy the constraints defined input
, or if any two elements in values have the same index calculated according to thisTabularData
instance'sTabularType
definition, then an exception describing the failure is thrown and no element of values is added, thus leaving thisTabularData
instance unchanged.- Specified by:
putAll
in interfaceTabularData
- Parameters:
values
- the array of composite data values to be added as new rows to thisTabularData
instance; if values isnull
or empty, this method returns without doing anything.- Throws:
NullPointerException
- if an element of values isnull
InvalidOpenTypeException
- if an element of values does not conform to thisTabularData
instance's row type definition (ie itsTabularType
definition)KeyAlreadyExistsException
- if the index for an element of values, calculated according to thisTabularData
instance'sTabularType
definition already maps to an existing value in this instance, or two elements of values have the same index
-
clear
public void clear()
Removes all rows from thisTabularDataSupport
instance.
-
size
public int size()
Returns the number of rows in thisTabularDataSupport
instance.
-
isEmpty
public boolean isEmpty()
Returnstrue
if thisTabularDataSupport
instance contains no rows.
-
keySet
public Set<Object> keySet()
Returns a set view of the keys contained in the underlying map of thisTabularDataSupport
instance used to index the rows. Each key contained in thisSet
is an unmodifiableList<?>
so the returned set view is aSet<List<?>>
but is declared as aSet<Object>
for compatibility reasons. The set is backed by the underlying map of thisTabularDataSupport
instance, so changes to theTabularDataSupport
instance are reflected in the set, and vice-versa. The set supports element removal, which removes the corresponding row from thisTabularDataSupport
instance, via theIterator.remove()
,Set.remove(java.lang.Object)
,Set.removeAll(java.util.Collection<?>)
,Set.retainAll(java.util.Collection<?>)
, andSet.clear()
operations. It does not support theSet.add(E)
orSet.addAll(java.util.Collection<? extends E>)
operations.
-
values
public Collection<Object> values()
Returns a collection view of the rows contained in thisTabularDataSupport
instance. The returnedCollection
is aCollection<CompositeData>
but is declared as aCollection<Object>
for compatibility reasons. The returned collection can be used to iterate over the values. The collection is backed by the underlying map, so changes to theTabularDataSupport
instance are reflected in the collection, and vice-versa. The collection supports element removal, which removes the corresponding index to row mapping from thisTabularDataSupport
instance, via theIterator.remove()
,Collection.remove(java.lang.Object)
,Collection.removeAll(java.util.Collection<?>)
,Collection.retainAll(java.util.Collection<?>)
, andCollection.clear()
operations. It does not support theCollection.add(E)
orCollection.addAll(java.util.Collection<? extends E>)
operations.
-
entrySet
public Set<Map.Entry<Object,Object>> entrySet()
Returns a collection view of the index to row mappings contained in thisTabularDataSupport
instance. Each element in the returned collection is aMap.Entry<List<?>,CompositeData>
but is declared as aMap.Entry<Object,Object>
for compatibility reasons. Each of the map entry keys is an unmodifiableList<?>
. The collection is backed by the underlying map of thisTabularDataSupport
instance, so changes to theTabularDataSupport
instance are reflected in the collection, and vice-versa. The collection supports element removal, which removes the corresponding mapping from the map, via theIterator.remove()
,Collection.remove(java.lang.Object)
,Collection.removeAll(java.util.Collection<?>)
,Collection.retainAll(java.util.Collection<?>)
, andCollection.clear()
operations. It does not support theCollection.add(E)
orCollection.addAll(java.util.Collection<? extends E>)
operations.IMPORTANT NOTICE: Do not use the
setValue
method of theMap.Entry
elements contained in the returned collection view. Doing so would corrupt the index to row mappings contained in thisTabularDataSupport
instance.
-
clone
public Object clone()
Returns a clone of thisTabularDataSupport
instance: the clone is obtained by callingsuper.clone()
, and then cloning the underlying map. Only a shallow clone of the underlying map is made, i.e. no cloning of the indexes and row values is made as they are immutable.
-
equals
public boolean equals(Object obj)
Compares the specified obj parameter with thisTabularDataSupport
instance for equality.Returns
true
if and only if all of the following statements are true:- obj is non null,
- obj also implements the
TabularData
interface, - their tabular types are equal
- their contents (ie all CompositeData values) are equal.
equals
method works properly for obj parameters which are different implementations of theTabularData
interface.
- Specified by:
equals
in interfaceMap<Object,Object>
- Specified by:
equals
in interfaceTabularData
- Overrides:
equals
in classObject
- Parameters:
obj
- the object to be compared for equality with thisTabularDataSupport
instance;- Returns:
true
if the specified object is equal to thisTabularDataSupport
instance.- See Also:
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
Returns the hash code value for thisTabularDataSupport
instance.The hash code of a
TabularDataSupport
instance is the sum of the hash codes of all elements of information used inequals
comparisons (ie: its tabular type and its content, where the content is defined as all the CompositeData values).This ensures that
t1.equals(t2)
implies thatt1.hashCode()==t2.hashCode()
for any twoTabularDataSupport
instancest1
andt2
, as required by the general contract of the methodObject.hashCode()
.However, note that another instance of a class implementing the
TabularData
interface may be equal to thisTabularDataSupport
instance as defined byequals(java.lang.Object)
, but may have a different hash code if it is calculated differently.- Specified by:
hashCode
in interfaceMap<Object,Object>
- Specified by:
hashCode
in interfaceTabularData
- Overrides:
hashCode
in classObject
- Returns:
- the hash code value for this
TabularDataSupport
instance - See Also:
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
toString
public String toString()
Returns a string representation of thisTabularDataSupport
instance.The string representation consists of the name of this class (ie
javax.management.openmbean.TabularDataSupport
), the string representation of the tabular type of this instance, and the string representation of the contents (ie list the key=value mappings as returned by a call todataMap.
toString()
).- Specified by:
toString
in interfaceTabularData
- Overrides:
toString
in classObject
- Returns:
- a string representation of this
TabularDataSupport
instance
-
-