public abstract class AbstractPreferences extends Object implements IPreferences, IPropertyChangeProvider
CHILD_ADDED, CHILD_REMOVED, VALUES_CLEARED| Constructor and Description |
|---|
AbstractPreferences()
Constructor.
|
AbstractPreferences(AbstractPreferences parent,
String name)
Constructor.
|
| Modifier and Type | Method and Description |
|---|---|
String |
absolutePath()
Returns this node's absolute path name.
|
protected void |
addNode(AbstractPreferences child)
Adds the given node.
|
void |
addPropertyChangeListener(PropertyChangeListener listener)
Add a change listener.
|
void |
addPropertyChangeListener(String propertyName,
PropertyChangeListener listener)
Add a change listener.
|
String[] |
childrenNames()
Returns the names of the children of this node.
|
void |
clear()
Removes all of the properties (key-value associations) in this node.
|
protected abstract AbstractPreferences |
createNode(AbstractPreferences parent,
String name)
Subclasses must implement this to return a new child node.
|
protected abstract Lock |
createReadLock()
Creates the appropriate read lock object.
|
protected abstract Lock |
createWriteLock()
Creates the appropriate write lock object.
|
protected boolean |
firePropertyChange(PropertyChangeEvent event)
Fires a change event.
|
protected boolean |
firePropertyChange(String propertyName,
Object oldValue,
Object newValue)
Fires an event if property changed.
|
void |
flush()
Forces any changes in the contents of this node and its descendants to
the persistent store.
|
String |
get(String key,
String def)
Returns the value associated with the specified
key in this
node. |
boolean |
getBoolean(String key,
boolean def)
Returns the
boolean value represented by the String
object associated with the specified key in this node. |
byte[] |
getByteArray(String key,
byte[] def)
Returns the
byte[] value represented by the String
object associated with the specified key in this node. |
double |
getDouble(String key,
double def)
Returns the
double value represented by the String
object associated with the specified key in this node. |
float |
getFloat(String key,
float def)
Returns the float
value represented by the String
object associated with the specified key in this node. |
int |
getInt(String key,
int def)
Returns the
int value represented by the String
object associated with the specified key in this node. |
long |
getLong(String key,
long def)
Returns the
long value represented by the String
object associated with the specified key in this node. |
protected abstract AbstractPreferencesService |
getPreferencesService()
Returns the preferences service.
|
Lock |
getReadLock()
Returns the readLock.
|
protected AbstractPreferences |
getRootNode()
Returns the root node of this node.
|
Lock |
getWriteLock()
Returns the writeLock.
|
protected boolean |
isAbsolute(String pathName)
Returns true when the given pathname is absolute to root node of this node.
|
protected boolean |
isRelative(String pathName)
Returns true when the given pathname is relative to this node.
|
protected boolean |
isRootNode()
Returns true when this is a root node.
|
String[] |
keys()
Returns all of the keys that have an associated value in this node.
|
String |
name()
Returns this node's name, relative to its parent.
|
IPreferences |
node(String pathName)
Returns a named
Preferences object (node), creating it and any
of its ancestors if they do not already exist. |
boolean |
nodeExists(String pathName)
Returns true if the named node exists.
|
IPreferences |
parent()
Returns the parent of this node, or
null if this is the root. |
void |
put(String key,
String value)
Associates the specified value with the specified key in this node.
|
void |
putBoolean(String key,
boolean value)
Associates a
String object representing the specified
boolean value with the specified key in this node. |
void |
putByteArray(String key,
byte[] value)
Associates a
String object representing the specified
byte[] with the specified key in this node. |
void |
putDouble(String key,
double value)
Associates a
String object representing the specified
double value with the specified key in this node. |
void |
putFloat(String key,
float value)
Associates a
String object representing the specified
float value with the specified key in this node. |
void |
putInt(String key,
int value)
Associates a
String object representing the specified
int value with the specified key in this node. |
void |
putLong(String key,
long value)
Associates a
String object representing the specified
long value with the specified key in this node. |
protected void |
readLock()
Aquires a read lock.
|
protected void |
readUnlock()
Releases a read lock.
|
void |
remove(String key)
Removes the value associated with the specified
key in this
node, if any. |
void |
removeNode()
Removes this node and all of its descendants, invalidating any properties
contained in the removed nodes.
|
protected void |
removeNode(AbstractPreferences child)
Removes the given node.
|
void |
removePropertyChangeListener(PropertyChangeListener listener)
Remove a change listener.
|
void |
removePropertyChangeListener(String propertyName,
PropertyChangeListener listener)
Remove a change listener.
|
void |
sync()
Ensures that future reads from this node and its descendants reflect any
changes that were committed to the persistent store (from any VM) prior
to the
sync invocation. |
protected void |
writeLock()
Aquires a write lock.
|
protected void |
writeUnlock()
Releases a write lock.
|
public AbstractPreferences()
public AbstractPreferences(AbstractPreferences parent, String name)
parent - the parent of this nodeprotected abstract Lock createReadLock()
protected abstract Lock createWriteLock()
public Lock getReadLock()
protected void readLock()
protected void readUnlock()
public Lock getWriteLock()
protected void writeLock()
protected void writeUnlock()
protected abstract AbstractPreferences createNode(AbstractPreferences parent, String name)
parent - the parent to be usedname - the name to be usedprotected void addNode(AbstractPreferences child)
flush() call to access
the node later).child - child to be addedprotected void removeNode(AbstractPreferences child)
flush() to see the result).child - child to be removedpublic void put(String key, String value)
put in interface IPreferenceskey - key with which the specified value is to be associated.value - value to be associated with the specified key.public String get(String key, String def)
key in this
node. Returns the specified default if there is no value associated with
the key, or the backing store is inaccessible.get in interface IPreferenceskey - key whose associated value is to be returned.def - the value to be returned in the event that this node has no
value associated with key or the backing store is
inaccessible.key, or def if
no value is associated with key.public void remove(String key)
key in this
node, if any.remove in interface IPreferenceskey - key whose mapping is to be removed from this node.IPreferences.get(String,String)public void clear()
throws BackingStoreException
clear in interface IPreferencesBackingStoreException - if this operation cannot be completed due
to a failure in the backing store, or inability to communicate
with it.IPreferences.remove(String)public void putInt(String key, int value)
String object representing the specified
int value with the specified key in this node. The
associated string is the one that would be returned if the int
value were passed to Integer.toString(int). This method is
intended for use in conjunction with IPreferences.getInt(java.lang.String, int) method.
Implementor's note: it is not necessary that the property value
be represented by a String object in the backing store. If the
backing store supports integer values, it is not unreasonable to use
them. This implementation detail is not visible through the
Preferences API, which allows the value to be read as an
int (with getInt or a String (with
get) type.
putInt in interface IPreferenceskey - key with which the string form of value is to be associated.value - value whose string form is to be associated with
key.IPreferences.getInt(String,int)public int getInt(String key, int def)
int value represented by the String
object associated with the specified key in this node. The
String object is converted to an int as by
Integer.parseInt(String). Returns the specified default if
there is no value associated with the key, the backing store
is inaccessible, or if Integer.parseInt(String) would throw a
NumberFormatException if the associated value were
passed. This method is intended for use in conjunction with the
IPreferences.putInt(java.lang.String, int) method.getInt in interface IPreferenceskey - key whose associated value is to be returned as an
int.def - the value to be returned in the event that this node has no
value associated with key or the associated value
cannot be interpreted as an int or the backing store is
inaccessible.int value represented by the String
object associated with key in this node, or
def if the associated value does not exist or cannot
be interpreted as an int type.IPreferences.putInt(String,int),
IPreferences.get(String,String)public void putLong(String key, long value)
String object representing the specified
long value with the specified key in this node. The
associated String object is the one that would be returned if
the long value were passed to Long.toString(long).
This method is intended for use in conjunction with the IPreferences.getLong(java.lang.String, long)
method.
Implementor's note: it is not necessary that the value
be represented by a String type in the backing store. If the
backing store supports long values, it is not unreasonable to
use them. This implementation detail is not visible through the Preferences API, which allows the value to be read as a
long (with getLong or a String (with
get) type.
putLong in interface IPreferenceskey - key with which the string form of value
is to be associated.value - value whose string form is to be associated with
key.IPreferences.getLong(String,long)public long getLong(String key, long def)
long value represented by the String
object associated with the specified key in this node. The
String object is converted to a long as by
Long.parseLong(String). Returns the specified default if
there is no value associated with the key, the backing store
is inaccessible, or if Long.parseLong(String) would throw a
NumberFormatException if the associated value were
passed. This method is intended for use in conjunction with the
IPreferences.putLong(java.lang.String, long) method.getLong in interface IPreferenceskey - key whose associated value is to be returned as a
long value.def - the value to be returned in the event that this node has no
value associated with key or the associated value
cannot be interpreted as a long type or the backing
store is inaccessible.long value represented by the String
object associated with key in this node, or
def if the associated value does not exist or cannot
be interpreted as a long type.IPreferences.putLong(String,long),
IPreferences.get(String,String)public void putBoolean(String key, boolean value)
String object representing the specified
boolean value with the specified key in this node. The
associated string is "true" if the value is true, and "false"
if it is false. This method is intended for use in
conjunction with the IPreferences.getBoolean(java.lang.String, boolean) method.
Implementor's note: it is not necessary that the value be
represented by a string in the backing store. If the backing store
supports boolean values, it is not unreasonable to use them.
This implementation detail is not visible through the Preferences
API, which allows the value to be read as a boolean
(with getBoolean) or a String (with get)
type.
putBoolean in interface IPreferenceskey - key with which the string form of value is to be
associated.value - value whose string form is to be associated with
key.IPreferences.getBoolean(String,boolean),
IPreferences.get(String,String)public boolean getBoolean(String key, boolean def)
boolean value represented by the String
object associated with the specified key in this node. Valid
strings are "true", which represents true, and "false", which
represents false. Case is ignored, so, for example, "TRUE"
and "False" are also valid. This method is intended for use in
conjunction with the IPreferences.putBoolean(java.lang.String, boolean) method.
Returns the specified default if there is no value associated with the
key, the backing store is inaccessible, or if the associated
value is something other than "true" or "false", ignoring case.
getBoolean in interface IPreferenceskey - key whose associated value is to be returned as a
boolean.def - the value to be returned in the event that this node has no
value associated with key or the associated value
cannot be interpreted as a boolean or the backing store
is inaccessible.boolean value represented by the String
object associated with key in this node, or
null if the associated value does not exist or cannot
be interpreted as a boolean.IPreferences.get(String,String),
IPreferences.putBoolean(String,boolean)public void putFloat(String key, float value)
String object representing the specified
float value with the specified key in this node.
The associated String object is the one that would be returned
if the float value were passed to
Float.toString(float). This method is intended for use in
conjunction with the IPreferences.getFloat(java.lang.String, float) method.
Implementor's note: it is not necessary that the value be
represented by a string in the backing store. If the backing store
supports float values, it is not unreasonable to use them.
This implementation detail is not visible through the Preferences
API, which allows the value to be read as a float (with
getFloat) or a String (with get) type.
putFloat in interface IPreferenceskey - key with which the string form of value is to be
associated.value - value whose string form is to be associated with
key.IPreferences.getFloat(String,float)public float getFloat(String key, float def)
value represented by the String
object associated with the specified key in this node. The
String object is converted to a float value as by
Float.parseFloat(String). Returns the specified default if
there is no value associated with the key, the backing store
is inaccessible, or if Float.parseFloat(String) would throw a
NumberFormatException if the associated value were passed.
This method is intended for use in conjunction with the IPreferences.putFloat(java.lang.String, float)
method.getFloat in interface IPreferenceskey - key whose associated value is to be returned as a
float value.def - the value to be returned in the event that this node has no
value associated with key or the associated value
cannot be interpreted as a float type or the backing
store is inaccessible.float value represented by the string associated
with key in this node, or def if the
associated value does not exist or cannot be interpreted as a
float type.IPreferences.putFloat(String,float),
IPreferences.get(String,String)public void putDouble(String key, double value)
String object representing the specified
double value with the specified key in this node.
The associated String object is the one that would be returned
if the double value were passed to
Double.toString(double). This method is intended for use in
conjunction with the IPreferences.getDouble(java.lang.String, double) method
Implementor's note: it is not necessary that the value be
represented by a string in the backing store. If the backing store
supports double values, it is not unreasonable to use them.
This implementation detail is not visible through the Preferences
API, which allows the value to be read as a double (with
getDouble) or a String (with get)
type.
putDouble in interface IPreferenceskey - key with which the string form of value is to be
associated.value - value whose string form is to be associated with
key.IPreferences.getDouble(String,double)public double getDouble(String key, double def)
double value represented by the String
object associated with the specified key in this node. The
String object is converted to a double value as by
Double.parseDouble(String). Returns the specified default if
there is no value associated with the key, the backing store
is inaccessible, or if Double.parseDouble(String) would throw
a NumberFormatException if the associated value were passed.
This method is intended for use in conjunction with the
IPreferences.putDouble(java.lang.String, double) method.getDouble in interface IPreferenceskey - key whose associated value is to be returned as a
double value.def - the value to be returned in the event that this node has no
value associated with key or the associated value
cannot be interpreted as a double type or the backing
store is inaccessible.double value represented by the String
object associated with key in this node, or
def if the associated value does not exist or cannot
be interpreted as a double type.IPreferences.putDouble(String,double),
IPreferences.get(String,String)public void putByteArray(String key, byte[] value)
String object representing the specified
byte[] with the specified key in this node. The
associated String object the Base64 encoding of the
byte[], as defined in RFC 2045 , Section 6.8,
with one minor change: the string will consist solely of characters from
the Base64 Alphabet ; it will not contain any newline characters.
This method is intended for use in conjunction with the
IPreferences.getByteArray(java.lang.String, byte[]) method.
Implementor's note: it is not necessary that the value be
represented by a String type in the backing store. If the
backing store supports byte[] values, it is not unreasonable
to use them. This implementation detail is not visible through the Preferences API, which allows the value to be read as an a
byte[] object (with getByteArray) or a
String object (with get).
putByteArray in interface IPreferenceskey - key with which the string form of value
is to be associated.value - value whose string form is to be associated with
key.IPreferences.getByteArray(String,byte[]),
IPreferences.get(String,String)public byte[] getByteArray(String key, byte[] def)
byte[] value represented by the String
object associated with the specified key in this node. Valid
String objects are Base64 encoded binary data, as
defined in RFC 2045 ,
Section 6.8, with one minor change: the string must consist solely of
characters from the Base64 Alphabet ; no newline characters or
extraneous characters are permitted. This method is intended for use in
conjunction with the IPreferences.putByteArray(java.lang.String, byte[]) method.
Returns the specified default if there is no value associated with the
key, the backing store is inaccessible, or if the associated
value is not a valid Base64 encoded byte array (as defined above).
getByteArray in interface IPreferenceskey - key whose associated value is to be returned as a
byte[] object.def - the value to be returned in the event that this node has no
value associated with key or the associated value
cannot be interpreted as a byte[] type, or the backing
store is inaccessible.byte[] value represented by the String
object associated with key in this node, or
def if the associated value does not exist or cannot
be interpreted as a byte[].IPreferences.get(String,String),
IPreferences.putByteArray(String,byte[])public String[] keys() throws BackingStoreException
null!)keys in interface IPreferencesBackingStoreException - if this operation cannot be completed due
to a failure in the backing store, or inability to communicate
with it.public String[] childrenNames() throws BackingStoreException
null!)childrenNames in interface IPreferencesBackingStoreException - if this operation cannot be completed due
to a failure in the backing store, or inability to communicate
with it.public IPreferences parent()
null if this is the root.parent in interface IPreferencesprotected boolean isRelative(String pathName)
pathName - name to be checkedtrue when path name is relative to this nodeprotected boolean isAbsolute(String pathName)
pathName - name to be checkedtrue when path name is absolute to root node of this nodeprotected boolean isRootNode()
true when this is a root nodeprotected AbstractPreferences getRootNode()
public IPreferences node(String pathName)
Preferences object (node), creating it and any
of its ancestors if they do not already exist. Accepts a relative or
absolute pathname. Absolute pathnames (which begin with '/')
are interpreted relative to the root of this node. Relative pathnames
(which begin with any character other than '/') are
interpreted relative to this node itself. The empty string ("")
is a valid relative pathname, referring to this node itself.
If the returned node did not exist prior to this call, this node and any
ancestors that were created by this call are not guaranteed to become
persistent until the flush method is called on the returned
node (or one of its descendants).
node in interface IPreferencespathName - the path name of the Preferences object to
return.Preferences object.IPreferences.flush()public boolean nodeExists(String pathName) throws BackingStoreException
'/') are
interpreted relative to the root of this node. Relative pathnames (which
begin with any character other than '/') are interpreted
relative to this node itself. The pathname "" is valid, and
refers to this node itself.
If this node (or an ancestor) has already been removed with the
IPreferences.removeNode() method, it is legal to invoke this method,
but only with the pathname ""; the invocation will return
false. Thus, the idiom p.nodeExists("") may be
used to test whether p has been removed.
nodeExists in interface IPreferencespathName - the path name of the node whose existence is to be
checked.BackingStoreException - if this operation cannot be completed due
to a failure in the backing store, or inability to communicate
with it.public void removeNode()
throws BackingStoreException
name(),absolutePath() or
nodeExists("") on the corresponding Preferences
instance will fail with an IllegalStateException. (The
methods defined on Object can still be invoked on a node after
it has been removed; they will not throw IllegalStateException.)
The removal is not guaranteed to be persistent until the flush
method is called on the parent of this node.
removeNode in interface IPreferencesBackingStoreException - if this operation cannot be completed due
to a failure in the backing store, or inability to communicate
with it.IPreferences.flush()public String name()
name in interface IPreferencespublic String absolutePath()
"/".
'/').
"." and ".." have no
special significance in path names.
absolutePath in interface IPreferencesprotected abstract AbstractPreferencesService getPreferencesService()
public void flush()
throws BackingStoreException
Once this method returns successfully, it is safe to assume that all changes made in the subtree rooted at this node prior to the method invocation have become permanent.
Implementations are free to flush changes into the persistent store at any time. They do not need to wait for this method to be called.
When a flush occurs on a newly created node, it is made persistent, as are any ancestors (and descendants) that have yet to be made persistent. Note however that any properties value changes in ancestors are not guaranteed to be made persistent.
flush in interface IPreferencesBackingStoreException - if this operation cannot be completed due
to a failure in the backing store, or inability to communicate
with it.IPreferences.sync()public void sync()
throws BackingStoreException
sync invocation. As a side-effect, forces any changes
in the contents of this node and its descendants to the persistent store,
as if the flush method had been invoked on this node.sync in interface IPreferencesBackingStoreException - if this operation cannot be completed due
to a failure in the backing store, or inability to communicate
with it.IPreferences.flush()public void addPropertyChangeListener(PropertyChangeListener listener)
addPropertyChangeListener in interface IPropertyChangeProviderlistener - the listener to be addedpublic void removePropertyChangeListener(PropertyChangeListener listener)
removePropertyChangeListener in interface IPropertyChangeProviderlistener - the listener to be removedpublic void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
addPropertyChangeListener in interface IPropertyChangeProviderpropertyName - the property name the listener will be registered forlistener - the listener to be addedpublic void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
removePropertyChangeListener in interface IPropertyChangeProviderpropertyName - the property name the listener will not listen for anymorelistener - the listener to be removedprotected boolean firePropertyChange(String propertyName, Object oldValue, Object newValue)
propertyName - name of propertyoldValue - old valuenewValue - new valuetrue when the event was fired (because values were not equal)protected boolean firePropertyChange(PropertyChangeEvent event)
event - event to be firedtrue when the event was fired (because values were not equal)Copyright © 2014. All rights reserved.