java.util.prefs
public abstract class Preferences extends Object
There are two preference node trees, a system tree which can be accessed
by calling systemRoot()
containing system preferences usefull
for all users, and a user tree that can be accessed by calling
userRoot()
containing preferences that can differ between
different users. How different users are identified is implementation
depended. It can be determined by Thread, Access Control Context or Subject.
This implementation uses the "java.util.prefs.PreferencesFactory" system
property to find a class that implement PreferencesFactory
and initialized that class (if it has a public no arguments contructor)
to get at the actual system or user root. If the system property is not set,
or the class cannot be initialized it uses the default implementation
gnu.java.util.prefs.FileBasedFactory
.
Besides the two static method above to get the roots of the system and user
preference node trees there are also two convenience methods to access the
default preference node for a particular package an object is in. These are
userNodeForPackage()
and systemNodeForPackage()
.
Both methods take an Object as an argument so accessing preferences values
can be as easy as calling Preferences.userNodeForPackage(this)
.
Note that if a security manager is installed all static methods check for
RuntimePermission("preferences")
. But if this permission is
given to the code then it can access and change all (user) preference nodes
and entries. So you should be carefull not to store to sensitive information
or make security decissions based on preference values since there is no
more fine grained control over what preference values can be changed once
code has been given the correct runtime permission.
XXX
Since: 1.4
Field Summary | |
---|---|
static int | MAX_KEY_LENGTH Maximum entry key length. |
static int | MAX_NAME_LENGTH Maximum node name length. |
static int | MAX_VALUE_LENGTH Maximum entry value length. |
Constructor Summary | |
---|---|
protected | Preferences()
Creates a new Preferences node. |
Method Summary | |
---|---|
abstract String | absolutePath()
Returns the absolute path name of this preference node.
|
abstract void | addNodeChangeListener(NodeChangeListener listener) |
abstract void | addPreferenceChangeListener(PreferenceChangeListener listener) |
abstract String[] | childrenNames()
Returns all the direct sub nodes of this preferences node.
|
abstract void | clear()
Removes all entries from this preferences node. |
abstract void | exportNode(OutputStream os)
Export this node, but not its descendants, as XML to the
indicated output stream. |
abstract void | exportSubtree(OutputStream os)
Export this node and all its descendants as XML to the
indicated output stream. |
abstract void | flush()
Writes all preference changes on this and any subnode that have not
yet been written to the backing store. |
abstract String | get(String key, String defaultVal)
Returns the value associated with the key in this preferences node. |
abstract boolean | getBoolean(String key, boolean defaultVal)
Convenience method for getting the given entry as a boolean.
|
abstract byte[] | getByteArray(String key, byte[] defaultVal)
Convenience method for getting the given entry as a byte array.
|
abstract double | getDouble(String key, double defaultVal)
Convenience method for getting the given entry as a double.
|
abstract float | getFloat(String key, float defaultVal)
Convenience method for getting the given entry as a float.
|
abstract int | getInt(String key, int defaultVal)
Convenience method for getting the given entry as an integer.
|
abstract long | getLong(String key, long defaultVal)
Convenience method for getting the given entry as a long.
|
static void | importPreferences(InputStream is)
Import preferences from the given input stream. |
abstract boolean | isUserNode()
Returns true if this node comes from the user preferences tree, false
if it comes from the system preferences tree. |
abstract String[] | keys()
Returns an (possibly empty) array with all the keys of the preference
entries of this node.
|
abstract String | name()
Returns the name of this preferences node. |
abstract Preferences | node(String path)
Returns a sub node of this preferences node if the given path is
relative (does not start with a '/') or a sub node of the root
if the path is absolute (does start with a '/').
|
abstract boolean | nodeExists(String path)
Returns true if the node that the path points to exists in memory or
in the backing store. |
abstract Preferences | parent()
Returns the parent preferences node of this node or null if this is
the root of the preferences tree.
|
abstract void | put(String key, String value)
Sets the value of the given preferences entry for this node.
|
abstract void | putBoolean(String key, boolean value)
Convenience method for setting the given entry as a boolean.
|
abstract void | putByteArray(String key, byte[] value)
Convenience method for setting the given entry as an array of bytes.
|
abstract void | putDouble(String key, double value)
Convenience method for setting the given entry as a double.
|
abstract void | putFloat(String key, float value)
Convenience method for setting the given entry as a float.
|
abstract void | putInt(String key, int value)
Convenience method for setting the given entry as an integer.
|
abstract void | putLong(String key, long value)
Convenience method for setting the given entry as a long.
|
abstract void | remove(String key)
Removes the preferences entry from this preferences node.
|
abstract void | removeNode()
Removes this and all subnodes from the backing store and clears all
entries. |
abstract void | removeNodeChangeListener(NodeChangeListener listener) |
abstract void | removePreferenceChangeListener(PreferenceChangeListener listener) |
abstract void | sync()
Writes and reads all preference changes to and from this and any
subnodes. |
static Preferences | systemNodeForPackage(Class<?> c)
Returns the system preferences node for the package of a class.
|
static Preferences | systemRoot()
Returns the system preferences root node containing usefull preferences
for all users. |
abstract String | toString()
Returns the String given by
(isUserNode() ? |
static Preferences | userNodeForPackage(Class<?> c)
Returns the user preferences node for the package of a class.
|
static Preferences | userRoot()
Returns the user preferences root node containing preferences for the
the current user. |
Throws: BackingStoreException when the backing store cannot be reached IllegalStateException when this node has been removed
The result will be immediatly visible in this VM, but may not be immediatly written to the backing store.
Throws: BackingStoreException when the backing store cannot be reached IllegalStateException if this node has been removed
<!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
Parameters: os the output stream to which the XML is sent
Throws: BackingStoreException if preference data cannot be read IOException if an error occurs while writing the XML IllegalStateException if this node or an ancestor has been removed
<!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
Parameters: os the output stream to which the XML is sent
Throws: BackingStoreException if preference data cannot be read IOException if an error occurs while writing the XML IllegalStateException if this node or an ancestor has been removed
sync()
method to actually see the changes to the backing
store.
Throws: BackingStoreException when the backing store cannot be reached IllegalStateException if this node has been removed
Throws: IllegalArgumentException if key is larger then 80 characters IllegalStateException if this node has been removed NullPointerException if key is null
Throws: IllegalArgumentException if key is larger then 80 characters IllegalStateException if this node has been removed NullPointerException if key is null
Throws: IllegalArgumentException if key is larger then 80 characters IllegalStateException if this node has been removed NullPointerException if key is null
Double.parseDouble()
then that double is returned,
otherwise the given default double value is returned.
Throws: IllegalArgumentException if key is larger then 80 characters IllegalStateException if this node has been removed NullPointerException if key is null
Float.parseFloat()
then that float is returned,
otherwise the given default float value is returned.
Throws: IllegalArgumentException if key is larger then 80 characters IllegalStateException if this node has been removed NullPointerException if key is null
Integer.parseInt()
then that integer is returned,
otherwise the given default integer value is returned.
Throws: IllegalArgumentException if key is larger then 80 characters IllegalStateException if this node has been removed NullPointerException if key is null
Long.parseLong()
then that long is returned,
otherwise the given default long value is returned.
Throws: IllegalArgumentException if key is larger then 80 characters IllegalStateException if this node has been removed NullPointerException if key is null
Throws: IOException if there is an error while reading InvalidPreferencesFormatException if the XML is not properly formatted
Throws: BackingStoreException when the backing store cannot be reached IllegalStateException if this node has been removed
Throws: IllegalStateException if this node has been removed IllegalArgumentException if the path contains two or more consecutive '/' characters, ends with a '/' charactor and is not the string "/" (indicating the root node) or any name on the path is more then 80 characters long
Throws: BackingStoreException when the backing store cannot be reached IllegalStateException if this node has been removed and the path is not the empty string (indicating this node) IllegalArgumentException if the path contains two or more consecutive '/' characters, ends with a '/' charactor and is not the string "/" (indicating the root node) or any name on the path is more then 80 characters long
Throws: IllegalStateException if this node has been removed
The result will be immediatly visible in this VM, but may not be immediatly written to the backing store.
Throws: NullPointerException if either key or value are null IllegalArgumentException if either key or value are to large IllegalStateException when this node has been removed
Boolean.toString(value)
and then stored in the preference entry as that string.
Throws: NullPointerException if key is null IllegalArgumentException if the key length is to large IllegalStateException when this node has been removed
Note that a byte array encoded as a Base64 string will be about 1.3 times larger then the original length of the byte array, which means that the byte array may not be larger about 6 KB.
Throws: NullPointerException if either key or value are null IllegalArgumentException if either key or value are to large IllegalStateException when this node has been removed
Double.toString(double)
and then stored in the preference entry as that string.
Throws: NullPointerException if the key is null IllegalArgumentException if the key length is to large IllegalStateException when this node has been removed
Float.toString(float)
and then stored in the preference entry as that string.
Throws: NullPointerException if the key is null IllegalArgumentException if the key length is to large IllegalStateException when this node has been removed
Integer.toString(int)
and then stored in the preference entry as that string.
Throws: NullPointerException if the key is null IllegalArgumentException if the key length is to large IllegalStateException when this node has been removed
Long.toString(long)
and then stored in the preference entry as that string.
Throws: NullPointerException if the key is null IllegalArgumentException if the key length is to large IllegalStateException when this node has been removed
The result will be immediatly visible in this VM, but may not be immediatly written to the backing store.
Throws: NullPointerException if the key is null IllegalArgumentException if the key length is to large IllegalStateException when this node has been removed
InvalidStateException
),
even when a new node with the same path name is created this instance
will not be usable again. The root (system or user) may never be removed.
Note that according to the specification an implementation may delay
removal of the node from the backing store till the flush()
method is called. But the flush()
method may throw a
IllegalStateException
when the node has been removed.
So most implementations will actually remove the node and any subnodes
from the backing store immediatly.
Throws: BackingStoreException when the backing store cannot be reached IllegalStateException if this node has already been removed UnsupportedOperationException if this is a root node
Throws: BackingStoreException when the backing store cannot be reached IllegalStateException if this node has been removed
systemRoot().node(packageNodeName)
.
Parameters: c Object whose default system preference node is requested
Throws: SecurityException when a security manager is installed and
the caller does not have RuntimePermission("preferences")
.
UNKNOWN: system preferences node that should be used by class c
Returns: the root system preference node
Throws: SecurityException when a security manager is installed and
the caller does not have RuntimePermission("preferences")
.
(isUserNode() ? "User":"System") + " Preference Node: " + absolutePath()
userRoot().node(packageNodeName)
.
Parameters: c Object whose default userpreference node is requested
Throws: SecurityException when a security manager is installed and
the caller does not have RuntimePermission("preferences")
.
UNKNOWN: userpreferences node that should be used by class c
Returns: the root user preference node
Throws: SecurityException when a security manager is installed and
the caller does not have RuntimePermission("preferences")
.