Represents the object name of an MBean, or a pattern that can match the names of several MBeans. Instances of this class are immutable.
An instance of this class can be used to represent:
An object name consists of two parts, the domain and the key properties.
The domain is a string of characters not including
the character colon (:
). It is recommended that the domain
should not contain the string "//
", which is reserved for future use.
If the domain includes at least one occurrence of the wildcard
characters asterisk (*
) or question mark
(?
), then the object name is a pattern. The asterisk
matches any sequence of zero or more characters, while the question
mark matches any single character.
If the domain is empty, it will be replaced in certain contexts by the default domain of the MBean server in which the ObjectName is used.
The key properties are an unordered set of keys and associated values.
Each key is a nonempty string of characters which may
not contain any of the characters comma (,
), equals
(=
), colon, asterisk, or question mark. The same key
may not occur twice in a given ObjectName.
Each value associated with a key is a string of characters that is either unquoted or quoted.
An unquoted value is a possibly empty string of characters which may not contain any of the characters comma, equals, colon, or quote.
If the unquoted value contains at least one occurrence of the wildcard characters asterisk or question mark, then the object name is a property value pattern. The asterisk matches any sequence of zero or more characters, while the question mark matches any single character.
A quoted value consists of a quote ("
),
followed by a possibly empty string of characters, followed by
another quote. Within the string of characters, the backslash
(\
) has a special meaning. It must be followed by
one of the following characters:
A quote may not appear inside a quoted value except immediately after an odd number of consecutive backslashes.
The quotes surrounding a quoted value, and any backslashes within that value, are considered to be part of the value.
If the quoted value contains at least one occurrence of the characters asterisk or question mark and they are not preceded by a backslash, then they are considered as wildcard characters and the object name is a property value pattern. The asterisk matches any sequence of zero or more characters, while the question mark matches any single character.
An ObjectName may be a property list pattern. In this case it may have zero or more keys and associated values. It matches a nonpattern ObjectName whose domain matches and that contains the same keys and associated values, as well as possibly other keys and values.
An ObjectName is a property value pattern when at least one of its quoted or unquoted key property values contains the wildcard characters asterisk or question mark as described above. In this case it has one or more keys and associated values, with at least one of the values containing wildcard characters. It matches a nonpattern ObjectName whose domain matches and that contains the same keys whose values match; if the property value pattern is also a property list pattern then the nonpattern ObjectName can contain other keys and values.
An ObjectName is a property pattern if it is either a property list pattern or a property value pattern or both.
An ObjectName is a pattern if its domain contains a wildcard or if the ObjectName is a property pattern.
If an ObjectName is not a pattern, it must contain at least one key with its associated value.
Examples of ObjectName patterns are:
*:type=Foo,name=Bar
to match names in any domain whose
exact set of keys is type=Foo,name=Bar
.d:type=Foo,name=Bar,*
to match names in the domain
d
that have the keys type=Foo,name=Bar
plus
zero or more other keys.*:type=Foo,name=Bar,*
to match names in any domain
that has the keys type=Foo,name=Bar
plus zero or
more other keys.d:type=F?o,name=Bar
will match e.g.
d:type=Foo,name=Bar
and d:type=Fro,name=Bar
.d:type=F*o,name=Bar
will match e.g.
d:type=Fo,name=Bar
and d:type=Frodo,name=Bar
.d:type=Foo,name="B*"
will match e.g.
d:type=Foo,name="Bling"
. Wildcards are recognized even
inside quotes, and like other special characters can be escaped
with \
.An ObjectName can be written as a String with the following elements in order:
:
).
A key property list written as a String is a comma-separated
list of elements. Each element is either an asterisk or a key
property. A key property consists of a key, an equals
(=
), and the associated value.
At most one element of a key property list may be an asterisk. If the key property list contains an asterisk element, the ObjectName is a property list pattern.
Spaces have no special significance in a String representing an ObjectName. For example, the String:
domain: key1 = value1 , key2 = value2represents an ObjectName with two keys. The name of each key contains six characters, of which the first and last are spaces. The value associated with the key
" key1 "
also begins and ends with a space.
In addition to the restrictions on characters spelt out above,
no part of an ObjectName may contain a newline character
('\n'
), whether the domain, a key, or a value, whether
quoted or unquoted. The newline character can be represented in a
quoted value with the sequence \n
.
The rules on special characters and quoting apply regardless of which constructor is used to make an ObjectName.
To avoid collisions between MBeans supplied by different
vendors, a useful convention is to begin the domain name with the
reverse DNS name of the organization that specifies the MBeans,
followed by a period and a string whose interpretation is
determined by that organization. For example, MBeans specified by
example.com
would have
domains such as com.example.MyDomain
. This is essentially
the same convention as for Java-language package names.
The serialVersionUID of this class is 1081892073854801359L
.
Implementation Note
The maximum allowed length of the domain name in this implementation
is Integer.MAX_VALUE/4
Modifier and Type | Class and Description |
---|---|
private static class | ObjectName.
Marker class for value pattern property. |
private static class | ObjectName.
A structure recording property structure and proposing minimal services |
Modifier and Type | Field and Description |
---|---|
private transient ObjectName. | _ca_array
An array of properties in the same seq order as canonical order |
private transient String | _canonicalName
a String containing the canonical name |
private transient int | _compressed_storage
This field encodes _domain_pattern, _property_list_pattern and _property_value_pattern booleans and _domain_length integer. |
private static final ObjectName. | _Empty_property_array
a shared empty array for empty property lists |
private transient ObjectName. | _kp_array
An array of properties in the same seq order as time creation |
private transient Map | _propertyList
The propertyList of built object name. |
private static boolean | |
private static final int | |
private static final int | |
private static final int | |
private static final ObjectStreamField[] | |
private static final long | |
private static final ObjectStreamField[] | |
private static final long | |
private static final int | |
private static final int | |
private static final ObjectStreamField[] | |
private static final long | |
public static final ObjectName | WILDCARD
Defines the wildcard "*:*" ObjectName. |
Access | Constructor and Description |
---|---|
public | ObjectName(String
A string representation of the object name. name)Construct an object name from the given string. |
public | ObjectName(String
The domain part of the object name. domain, String The attribute in the key property of the object name. key, String The value in the key property of the object name. value)Construct an object name with exactly one key property. |
public | ObjectName(String
The domain part of the object name. domain, Hashtable<String, String> A hash table containing one or more key
properties. The key of each entry in the table is the key of a
key property in the object name. The associated value in the
table is the associated value in the object name. table)Construct an object name with several key properties from a Hashtable. |
Modifier and Type | Method and Description |
---|---|
private Map | |
private void | addProperty(ObjectName.
Add passed property to the list at the given index for the passed key name |
public boolean | Returns: True ifname matches this ObjectName.The name of the MBean to compare to. name)Implements javax. Test whether this ObjectName, which may be a pattern, matches another ObjectName. |
private static void | |
private static boolean | Returns: true if the value is a pattern, otherwise false.Check if the supplied value is a valid value. |
public int | Returns: a negative integer, zero, or a positive integer as this ObjectName is less than, equal to, or greater than the specified ObjectName.the ObjectName to be compared. name)Implements java. Compares two ObjectName instances. |
private void | construct(String
A string representation of the name)ObjectName Initializes this |
private void | |
public boolean | Returns: True ifobject is an ObjectName whose
canonical form is equal to that of this ObjectName.The object name that the current object name is to be
compared with. object)Overrides java. Compares the current object name with another object name. |
public String | Returns: The canonical key property list string. This string is independent of whether the ObjectName is a pattern.Returns a string representation of the list of key properties, in which the key properties are sorted in lexical order. |
public String | Returns: The canonical form of the name.Returns the canonical form of the name; that is, a string representation where the properties are sorted in lexical order. |
public String | |
private int | |
public static ObjectName | Returns: an ObjectName corresponding to the given String.A string representation of the object name. name)Return an instance of ObjectName that can be used anywhere
an object obtained with |
public static ObjectName | Returns: an ObjectName corresponding to the given domain, key, and value.The domain part of the object name. domain, String The attribute in the key property of the object name. key, String The value in the key property of the object name. value)Return an instance of ObjectName that can be used anywhere
an object obtained with |
public static ObjectName | Returns: an ObjectName corresponding to the given domain and key mappings.The domain part of the object name. domain, Hashtable<String, String> A hash table containing one or more key
properties. The key of each entry in the table is the key of a
key property in the object name. The associated value in the
table is the associated value in the object name. table)Return an instance of ObjectName that can be used anywhere
an object obtained with |
public static ObjectName | Returns: an instance of ObjectName or a subclass that is known to have the same semantics. Ifname respects the
semantics of ObjectName, then the returned object is equal
(though not necessarily identical) to name .an instance of the ObjectName class or of a subclass name)Return an instance of ObjectName that can be used anywhere the given object can be used. |
public String | Returns: The value of the property, or null if there is no such property in this ObjectName.The property whose value is to be obtained. property)Obtains the value associated with a key in a key property. |
public Hashtable | |
public String | Returns: The key property list string. This string is independent of whether the ObjectName is a pattern.Returns a string representation of the list of key properties specified at creation time. |
private String | Returns: The key property list string. This string is independent of whether the ObjectName is a pattern.Returns the serialized string of the ObjectName. |
public int | |
private boolean | |
public boolean | Returns: True if the name is a domain pattern, otherwise false.Checks whether the object name is a pattern on the domain part. |
public boolean | Returns: True if the name is a pattern, otherwise false.Checks whether the object name is a pattern. |
public boolean | Returns: True if the name is a property list pattern, otherwise false.Checks whether the object name is a pattern on the key property list. |
public boolean | Returns: True if the name is a property pattern, otherwise false.Checks whether the object name is a pattern on the key properties. |
public boolean | Returns: True if the name is a property value pattern, otherwise false.Checks whether the object name is a pattern on the value part of at least one of the key properties. |
public boolean | Returns: True if the value associated with the given key property is a pattern, otherwise false.The property whose value is to be checked. property)Checks whether the value associated with a key in a key property is a pattern. |
private final boolean | |
private final boolean | |
private static int | Returns: The index following the last character of the key.The char array of the original string. s, final int index at which to begin parsing. startKey)Parse a key. |
private static int[] | Returns: The first element of the int array indicates the index following the last character of the value. The second element of the int array indicates that the value is a pattern when its value equals 1.The char array of the original string. s, final int index at which to begin parsing. startValue)Parse a value. |
public static String | |
private void | |
private void | setCanonicalName(char[] specified_chars, char[] canonical_chars, String[] keys, Map<String, ObjectName.
Sets the canonical name of receiver from input 'specified_chars' array, by filling 'canonical_chars' array with found 'nb-props' properties starting at position 'prop_index'. |
private void | |
private void | setDomainPattern(boolean
true if the domain name is a pattern,
false otherwiseMarks the object name as representing a pattern on the domain part. |
public void | setMBeanServer(MBeanServer
The MBean server on which the query is to be performed. mbs)Implements javax. Sets the MBean server on which the query is to be performed. |
private void | setPropertyListPattern(boolean
true if the key property list is a pattern,
false otherwiseMarks the object name as representing a pattern on the key property list. |
private void | setPropertyValuePattern(boolean
true if the value part of at least one of the
key properties is a pattern, false otherwiseMarks the object name as representing a pattern on the value part. |
public String | Returns: a string representation of this object name.Overrides java. Returns a string representation of the object name. |
public static String | |
private int | Returns: offset + #of chars writtenWrite a string representation of the list of key properties specified at creation time in the given array, starting at the specified offset. |
private void |
_ca_array | back to summary |
---|---|
private transient ObjectName. An array of properties in the same seq order as canonical order |
_canonicalName | back to summary |
---|---|
private transient String _canonicalName a String containing the canonical name |
_compressed_storage | back to summary |
---|---|
private transient int _compressed_storage This field encodes _domain_pattern, _property_list_pattern and _property_value_pattern booleans and _domain_length integer. The following masks can be used to extract the value: . |
_Empty_property_array | back to summary |
---|---|
private static final ObjectName. a shared empty array for empty property lists |
_kp_array | back to summary |
---|---|
private transient ObjectName. An array of properties in the same seq order as time creation |
_propertyList | back to summary |
---|---|
private transient Map<String, String> _propertyList The propertyList of built object name. Initialized lazily. Table that contains all the pairs (key,value) for this ObjectName. |
compat | back to summary |
---|---|
private static boolean compat |
DOMAIN_LENGTH_MASK | back to summary |
---|---|
private static final int DOMAIN_LENGTH_MASK |
DOMAIN_PATTERN | back to summary |
---|---|
private static final int DOMAIN_PATTERN |
FLAG_MASK | back to summary |
---|---|
private static final int FLAG_MASK |
newSerialPersistentFields | back to summary |
---|---|
private static final ObjectStreamField[] newSerialPersistentFields |
newSerialVersionUID | back to summary |
---|---|
private static final long newSerialVersionUID |
oldSerialPersistentFields | back to summary |
---|---|
private static final ObjectStreamField[] oldSerialPersistentFields |
oldSerialVersionUID | back to summary |
---|---|
private static final long oldSerialVersionUID |
PROPLIST_PATTERN | back to summary |
---|---|
private static final int PROPLIST_PATTERN |
PROPVAL_PATTERN | back to summary |
---|---|
private static final int PROPVAL_PATTERN |
serialPersistentFields | back to summary |
---|---|
private static final ObjectStreamField[] serialPersistentFields |
serialVersionUID | back to summary |
---|---|
private static final long serialVersionUID |
WILDCARD | back to summary |
---|---|
public static final ObjectName WILDCARD Defines the wildcard "*:*" ObjectName.
|
ObjectName | back to summary |
---|---|
public ObjectName(String name) throws MalformedObjectNameException Construct an object name from the given string.
|
ObjectName | back to summary |
---|---|
public ObjectName(String domain, String key, String value) throws MalformedObjectNameException Construct an object name with exactly one key property.
|
ObjectName | back to summary |
---|---|
public ObjectName(String domain, Hashtable<String, String> table) throws MalformedObjectNameException Construct an object name with several key properties from a Hashtable.
|
_getKeyPropertyList | back to summary |
---|---|
private Map Returns the key properties as a Map. The returned value is a Map in which each key is a key in the ObjectName's key property list and each value is the associated value. The returned value must not be modified. |
addProperty | back to summary |
---|---|
private void addProperty(ObjectName. Add passed property to the list at the given index for the passed key name |
apply | back to summary |
---|---|
public boolean apply(ObjectName name) Implements javax. Test whether this ObjectName, which may be a pattern,
matches another ObjectName. If
|
checkKey | back to summary |
---|---|
private static void checkKey(String key) throws MalformedObjectNameException Check if the supplied key is a valid key. |
checkValue | back to summary |
---|---|
private static boolean checkValue(String val) throws MalformedObjectNameException Check if the supplied value is a valid value.
|
compareTo | back to summary |
---|---|
public int compareTo(ObjectName name) Implements java. Compares two ObjectName instances. The ordering relation between ObjectNames is not completely specified but is intended to be such that a sorted list of ObjectNames will appear in an order that is convenient for a person to read. In particular, if the two ObjectName instances have different domains then their order is the lexicographical order of the domains. The ordering of the key property list remains unspecified. For example, the ObjectName instances below:
could be ordered as follows:
|
construct | back to summary |
---|---|
private void construct(String name) throws MalformedObjectNameException Initializes this
|
construct | back to summary |
---|---|
private void construct(String domain, Map<String, String> props) throws MalformedObjectNameException Construct an ObjectName from a domain and a Hashtable.
|
equals | back to summary |
---|---|
public boolean equals(Object object) Overrides java. Compares the current object name with another object name. Two
ObjectName instances are equal if and only if their canonical
forms are equal. The canonical form is the string described
for |
getCanonicalKeyPropertyListString | back to summary |
---|---|
public String getCanonicalKeyPropertyListString() Returns a string representation of the list of key properties,
in which the key properties are sorted in lexical order. This
is used in lexicographic comparisons performed in order to
select MBeans based on their key property list. Lexical order
is the order implied by
|
getCanonicalName | back to summary |
---|---|
public String getCanonicalName() Returns the canonical form of the name; that is, a string representation where the properties are sorted in lexical order. More precisely, the canonical form of the name is a String
consisting of the domain part, a colon
( The canonical key property list is the same string
as described for The pattern indication is:
|
getDomain | back to summary |
---|---|
public String getDomain() Returns the domain part.
|
getDomainLength | back to summary |
---|---|
private int getDomainLength() |
getInstance | back to summary |
---|---|
public static ObjectName getInstance(String name) throws MalformedObjectNameException, NullPointerException Return an instance of ObjectName that can be used anywhere
an object obtained with
|
getInstance | back to summary |
---|---|
public static ObjectName getInstance(String domain, String key, String value) throws MalformedObjectNameException Return an instance of ObjectName that can be used anywhere
an object obtained with
|
getInstance | back to summary |
---|---|
public static ObjectName getInstance(String domain, Hashtable<String, String> table) throws MalformedObjectNameException Return an instance of ObjectName that can be used anywhere
an object obtained with
|
getInstance | back to summary |
---|---|
public static ObjectName getInstance(ObjectName name) Return an instance of ObjectName that can be used anywhere
the given object can be used. The returned object may be of a
subclass of ObjectName. If The returned value may or may not be identical to
Since ObjectName is immutable, it is not usually useful to make a copy of an ObjectName. The principal use of this method is to guard against a malicious caller who might pass an instance of a subclass with surprising behavior to sensitive code. Such code can call this method to obtain an ObjectName that is known not to have surprising behavior.
|
getKeyProperty | back to summary |
---|---|
public String getKeyProperty(String property) Obtains the value associated with a key in a key property.
|
getKeyPropertyList | back to summary |
---|---|
public Hashtable Returns the key properties as a Hashtable. The returned value is a Hashtable in which each key is a key in the ObjectName's key property list and each value is the associated value. The returned value may be unmodifiable. If it is modifiable, changing it has no effect on this ObjectName. |
getKeyPropertyListString | back to summary |
---|---|
public String getKeyPropertyListString() Returns a string representation of the list of key
properties specified at creation time. If this ObjectName was
constructed with the constructor
|
getSerializedNameString | back to summary |
---|---|
private String getSerializedNameString() Returns the serialized string of the ObjectName.
properties specified at creation time. If this ObjectName was
constructed with the constructor
|
hashCode | back to summary |
---|---|
public int hashCode() Overrides java. Returns a hash code for this object name.
|
isDomain | back to summary |
---|---|
private boolean isDomain(String domain) Check if domain is a valid domain. Set _domain_pattern if appropriate. |
isDomainPattern | back to summary |
---|---|
public boolean isDomainPattern() Checks whether the object name is a pattern on the domain part.
|
isPattern | back to summary |
---|---|
public boolean isPattern() Checks whether the object name is a pattern. An object name is a pattern if its domain contains a wildcard or if the object name is a property pattern.
|
isPropertyListPattern | back to summary |
---|---|
public boolean isPropertyListPattern() Checks whether the object name is a pattern on the key property list. For example, "d:k=v,*" and "d:k=*,*" are key property list patterns whereas "d:k=*" is not.
|
isPropertyPattern | back to summary |
---|---|
public boolean isPropertyPattern() Checks whether the object name is a pattern on the key properties. An object name is a pattern on the key properties if it is a pattern on the key property list (e.g. "d:k=v,*") or on the property values (e.g. "d:k=*") or on both (e.g. "d:k=*,*").
|
isPropertyValuePattern | back to summary |
---|---|
public boolean isPropertyValuePattern() Checks whether the object name is a pattern on the value part of at least one of the key properties. For example, "d:k=*" and "d:k=*,*" are property value patterns whereas "d:k=v,*" is not.
|
isPropertyValuePattern | back to summary |
---|---|
public boolean isPropertyValuePattern(String property) Checks whether the value associated with a key in a key property is a pattern.
|
matchDomains | back to summary |
---|---|
private final boolean matchDomains(ObjectName name) |
matchKeys | back to summary |
---|---|
private final boolean matchKeys(ObjectName name) |
parseKey | back to summary |
---|---|
private static int parseKey(final char[] s, final int startKey) throws MalformedObjectNameException Parse a key. final int endKey=parseKey(s,startKey); key starts at startKey (included), and ends at endKey (excluded). If (startKey == endKey), then the key is empty.
|
parseValue | back to summary |
---|---|
private static int[] parseValue(final char[] s, final int startValue) throws MalformedObjectNameException Parse a value. final int endVal=parseValue(s,startVal); value starts at startVal (included), and ends at endVal (excluded). If (startVal == endVal), then the key is empty.
|
quote | back to summary |
---|---|
public static String quote(String s) Returns a quoted form of the given String, suitable for
inclusion in an ObjectName. The returned value can be used as
the value associated with a key in an ObjectName. The String
The returned value consists of a quote ('"'), a sequence of
characters corresponding to the characters of
|
readObject | back to summary |
---|---|
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException Deserializes an
|
setCanonicalName | back to summary |
---|---|
private void setCanonicalName(char[] specified_chars, char[] canonical_chars, String[] keys, Map<String, ObjectName. Sets the canonical name of receiver from input 'specified_chars' array, by filling 'canonical_chars' array with found 'nb-props' properties starting at position 'prop_index'. |
setDomainLength | back to summary |
---|---|
private void setDomainLength(int length) throws MalformedObjectNameException Validates and sets the domain length
|
setDomainPattern | back to summary |
---|---|
private void setDomainPattern(boolean value) Marks the object name as representing a pattern on the domain part.
|
setMBeanServer | back to summary |
---|---|
public void setMBeanServer(MBeanServer mbs) Implements javax. Doc from javax. Sets the MBean server on which the query is to be performed.
|
setPropertyListPattern | back to summary |
---|---|
private void setPropertyListPattern(boolean value) Marks the object name as representing a pattern on the key property list.
|
setPropertyValuePattern | back to summary |
---|---|
private void setPropertyValuePattern(boolean value) Marks the object name as representing a pattern on the value part.
|
toString | back to summary |
---|---|
public String toString() Overrides java. Returns a string representation of the object name. The format of this string is not specified, but users can expect that two ObjectNames return the same string if and only if they are equal. |
unquote | back to summary |
---|---|
public static String unquote(String q) Returns an unquoted form of the given String. If
These rules imply that there is a one-to-one mapping between quoted and unquoted forms.
|
writeKeyPropertyListString | back to summary |
---|---|
private int writeKeyPropertyListString(char[] canonicalChars, char[] data, int offset) Write a string representation of the list of key
properties specified at creation time in the given array, starting
at the specified offset. If this ObjectName was
constructed with the constructor
|
writeObject | back to summary |
---|---|
private void writeObject(ObjectOutputStream out) throws IOException Serializes an
|
Access | Constructor and Description |
---|---|
pack-priv |
PatternProperty | back to summary |
---|---|
pack-priv PatternProperty(int key_index, int key_length, int value_length) Constructor. |
Modifier and Type | Field and Description |
---|---|
pack-priv int | |
pack-priv int | |
pack-priv int |
Access | Constructor and Description |
---|---|
pack-priv |
Modifier and Type | Method and Description |
---|---|
pack-priv String | |
pack-priv String | |
pack-priv void |
_key_index | back to summary |
---|---|
pack-priv int _key_index |
_key_length | back to summary |
---|---|
pack-priv int _key_length |
_value_length | back to summary |
---|---|
pack-priv int _value_length |
Property | back to summary |
---|---|
pack-priv Property(int key_index, int key_length, int value_length) Constructor. |
getKeyString | back to summary |
---|---|
pack-priv String getKeyString(String name) Returns a key string for receiver key |
getValueString | back to summary |
---|---|
pack-priv String getValueString(String name) Returns a value string for receiver key |
setKeyIndex | back to summary |
---|---|
pack-priv void setKeyIndex(int key_index) Assigns the key index of property |