You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by nd...@apache.org on 2009/01/02 03:52:35 UTC
svn commit: r730659 [1/4] - in
/harmony/enhanced/classlib/trunk/modules/prefs/src:
main/java/java/util/prefs/ test/java/org/apache/harmony/prefs/tests/
test/java/org/apache/harmony/prefs/tests/java/util/prefs/
Author: ndbeyer
Date: Thu Jan 1 18:52:34 2009
New Revision: 730659
URL: http://svn.apache.org/viewvc?rev=730659&view=rev
Log:
format code, replace tabs with spaces - no functional changes
Modified:
harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/BackingStoreException.java
harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/FilePreferencesImpl.java
harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/InvalidPreferencesFormatException.java
harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/NodeChangeEvent.java
harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/NodeChangeListener.java
harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferenceChangeEvent.java
harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferenceChangeListener.java
harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/Preferences.java
harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferencesFactory.java
harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/RegistryPreferencesFactoryImpl.java
harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/RegistryPreferencesImpl.java
harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/XMLParser.java
harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/AllTests.java
harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/AbstractPreferencesTest.java
harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/AllTests.java
harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/FilePreferencesImplTest.java
harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/InvalidPreferencesFormatExceptionTest.java
harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/MockAbstractPreferences.java
harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/MockPreferencesFactory.java
harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/MockSecurityManager.java
harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/NodeChangeListenerTest.java
harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/PreferenceChangeEventTest.java
harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/PreferenceChangeListenerTest.java
harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/PreferencesFactoryTest.java
harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/PreferencesTest.java
Modified: harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/BackingStoreException.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/BackingStoreException.java?rev=730659&r1=730658&r2=730659&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/BackingStoreException.java (original)
+++ harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/BackingStoreException.java Thu Jan 1 18:52:34 2009
@@ -17,7 +17,6 @@
package java.util.prefs;
-
/**
* An exception to indicate that some error was encountered while accessing
* the backing store.
@@ -25,29 +24,26 @@
* @since 1.4
*/
public class BackingStoreException extends Exception {
-
+
private static final long serialVersionUID = 859796500401108469L;
-
- /**
- * Constructs a new <code>BackingStoreException</code> instance using an
- * exception message.
- *
- * @param s the exception message.
- */
- public BackingStoreException (String s) {
- super(s);
- }
- /**
- * Constructs a new <code>BackingStoreException</code> instance using a
- * nested <code>Throwable</code> instance.
- *
- * @param t the nested <code>Throwable</code> instance.
- */
- public BackingStoreException (Throwable t) {
- super(t);
- }
+ /**
+ * Constructs a new <code>BackingStoreException</code> instance using an
+ * exception message.
+ *
+ * @param s the exception message.
+ */
+ public BackingStoreException (String s) {
+ super(s);
+ }
+
+ /**
+ * Constructs a new <code>BackingStoreException</code> instance using a
+ * nested <code>Throwable</code> instance.
+ *
+ * @param t the nested <code>Throwable</code> instance.
+ */
+ public BackingStoreException (Throwable t) {
+ super(t);
+ }
}
-
-
-
Modified: harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/FilePreferencesImpl.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/FilePreferencesImpl.java?rev=730659&r1=730658&r2=730659&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/FilePreferencesImpl.java (original)
+++ harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/FilePreferencesImpl.java Thu Jan 1 18:52:34 2009
@@ -97,7 +97,7 @@
* Constructors
* --------------------------------------------------------------
*/
-
+
/**
* Construct root <code>FilePreferencesImpl</code> instance, construct
* user root if userNode is true, system root otherwise
@@ -108,7 +108,7 @@
path = userNode ? USER_HOME : SYSTEM_HOME;
initPrefs();
}
-
+
/**
* Construct a prefs using given parent and given name
*/
@@ -132,16 +132,16 @@
@Override
protected String[] childrenNamesSpi() throws BackingStoreException {
String[] names = AccessController
- .doPrivileged(new PrivilegedAction<String[]>() {
- public String[] run() {
- return dir.list(new FilenameFilter() {
- public boolean accept(File parent, String name) {
- return new File(path + File.separator + name).isDirectory();
- }
- });
-
+ .doPrivileged(new PrivilegedAction<String[]>() {
+ public String[] run() {
+ return dir.list(new FilenameFilter() {
+ public boolean accept(File parent, String name) {
+ return new File(path + File.separator + name).isDirectory();
}
});
+
+ }
+ });
if (null == names) {// file is not a directory, exception case
// prefs.3=Cannot get children names for {0}!
throw new BackingStoreException(
Modified: harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/InvalidPreferencesFormatException.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/InvalidPreferencesFormatException.java?rev=730659&r1=730658&r2=730659&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/InvalidPreferencesFormatException.java (original)
+++ harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/InvalidPreferencesFormatException.java Thu Jan 1 18:52:34 2009
@@ -27,40 +27,37 @@
* @since 1.4
*/
public class InvalidPreferencesFormatException extends Exception {
-
- private static final long serialVersionUID = -791715184232119669L;
-
- /**
- * Constructs a new <code>InvalidPreferencesFormatException</code> instance using an
- * exception message.
- *
- * @param s the exception message.
- */
- public InvalidPreferencesFormatException (String s) {
- super(s);
- }
-
- /**
- * Constructs a new <code>InvalidPreferencesFormatException</code> instance using a
- * exception message and a nested <code>Throwable</code> instance.
- *
- * @param s the exception message.
- * @param t the nested <code>Throwable</code> instance.
- */
- public InvalidPreferencesFormatException (String s, Throwable t) {
- super(s,t);
- }
- /**
- * Constructs a new <code>InvalidPreferencesFormatException</code> instance using a
- * nested <code>Throwable</code> instance.
- *
- * @param t the nested <code>Throwable</code> instance.
- */
- public InvalidPreferencesFormatException (Throwable t) {
- super(t);
- }
-}
+ private static final long serialVersionUID = -791715184232119669L;
+ /**
+ * Constructs a new <code>InvalidPreferencesFormatException</code> instance using an
+ * exception message.
+ *
+ * @param s the exception message.
+ */
+ public InvalidPreferencesFormatException (String s) {
+ super(s);
+ }
+ /**
+ * Constructs a new <code>InvalidPreferencesFormatException</code> instance using a
+ * exception message and a nested <code>Throwable</code> instance.
+ *
+ * @param s the exception message.
+ * @param t the nested <code>Throwable</code> instance.
+ */
+ public InvalidPreferencesFormatException (String s, Throwable t) {
+ super(s,t);
+ }
+ /**
+ * Constructs a new <code>InvalidPreferencesFormatException</code> instance using a
+ * nested <code>Throwable</code> instance.
+ *
+ * @param t the nested <code>Throwable</code> instance.
+ */
+ public InvalidPreferencesFormatException (Throwable t) {
+ super(t);
+ }
+}
Modified: harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/NodeChangeEvent.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/NodeChangeEvent.java?rev=730659&r1=730658&r2=730659&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/NodeChangeEvent.java (original)
+++ harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/NodeChangeEvent.java Thu Jan 1 18:52:34 2009
@@ -14,7 +14,6 @@
* limitations under the License.
*/
-
package java.util.prefs;
import java.io.Serializable;
@@ -37,61 +36,56 @@
* @since 1.4
*/
public class NodeChangeEvent extends EventObject implements Serializable {
-
+
private static final long serialVersionUID = 8068949086596572957L;
-
+
private final Preferences parent;
private final Preferences child;
-
+
/**
* Construct a new <code>NodeChangeEvent</code> instance.
*
- * @param p the <code>Preferences</code> instance that this event happened,
- * this object is considered as event's source.
- * @param c the child <code>Preferences</code> instance that was added
- * or deleted.
+ * @param p the <code>Preferences</code> instance that this event happened, this object is
+ * considered as event's source.
+ * @param c the child <code>Preferences</code> instance that was added or deleted.
+ */
+ public NodeChangeEvent (Preferences p, Preferences c) {
+ super(p);
+ parent = p;
+ child = c;
+ }
+
+ /**
+ * Get the <code>Preferences</code> instance that this event happened.
+ *
+ * @return the <code>Preferences</code> instance that this event happened.
*/
- public NodeChangeEvent (Preferences p, Preferences c) {
- super(p);
- parent = p;
- child = c;
- }
-
- /**
- * Get the <code>Preferences</code> instance that this event happened.
- *
- * @return the <code>Preferences</code> instance that this event happened.
- */
- public Preferences getParent() {
- return parent;
- }
-
- /**
- * Get the child <code>Preferences</code> node that was added or removed.
- *
- * @return the child <code>Preferences</code> node that was added or removed.
- */
- public Preferences getChild() {
- return child;
- }
-
- /*
+ public Preferences getParent() {
+ return parent;
+ }
+
+ /**
+ * Get the child <code>Preferences</code> node that was added or removed.
+ *
+ * @return the child <code>Preferences</code> node that was added or removed.
+ */
+ public Preferences getChild() {
+ return child;
+ }
+
+ /**
* This method always throws a <code>NotSerializableException</code>, because
* this object cannot be serialized,
*/
- private void writeObject (ObjectOutputStream out) throws IOException {
- throw new NotSerializableException();
- }
-
- /*
+ private void writeObject (ObjectOutputStream out) throws IOException {
+ throw new NotSerializableException();
+ }
+
+ /**
* This method always throws a <code>NotSerializableException</code>, because
* this object cannot be serialized,
*/
- private void readObject (ObjectInputStream in) throws IOException, ClassNotFoundException {
- throw new NotSerializableException();
- }
+ private void readObject (ObjectInputStream in) throws IOException, ClassNotFoundException {
+ throw new NotSerializableException();
+ }
}
-
-
-
-
Modified: harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/NodeChangeListener.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/NodeChangeListener.java?rev=730659&r1=730658&r2=730659&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/NodeChangeListener.java (original)
+++ harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/NodeChangeListener.java Thu Jan 1 18:52:34 2009
@@ -14,7 +14,6 @@
* limitations under the License.
*/
-
package java.util.prefs;
import java.util.EventListener;
@@ -30,20 +29,17 @@
* @since 1.4
*/
public interface NodeChangeListener extends EventListener {
- /**
- * This method gets called whenever a child is added to a node.
- *
- * @param e Node change event.
- */
- public void childAdded (NodeChangeEvent e);
-
- /**
- * This method gets called whenever a child is removed from a node.
- *
- * @param e Node change event.
- */
- public void childRemoved (NodeChangeEvent e);
+ /**
+ * This method gets called whenever a child is added to a node.
+ *
+ * @param e Node change event.
+ */
+ public void childAdded (NodeChangeEvent e);
+
+ /**
+ * This method gets called whenever a child is removed from a node.
+ *
+ * @param e Node change event.
+ */
+ public void childRemoved (NodeChangeEvent e);
}
-
-
-
Modified: harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferenceChangeEvent.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferenceChangeEvent.java?rev=730659&r1=730658&r2=730659&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferenceChangeEvent.java (original)
+++ harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferenceChangeEvent.java Thu Jan 1 18:52:34 2009
@@ -14,7 +14,6 @@
* limitations under the License.
*/
-
package java.util.prefs;
import java.io.IOException;
@@ -40,7 +39,7 @@
public class PreferenceChangeEvent extends EventObject implements Serializable {
private static final long serialVersionUID = 793724513368024975L;
-
+
private final Preferences node;
private final String key;
@@ -50,11 +49,11 @@
/**
* Construct a new <code>PreferenceChangeEvent</code> instance.
*
- * @param p the <code>Preferences</code> instance that this event happened,
- * this object is considered as event's source.
- * @param k the changed preference's key
- * @param v the new value of the changed preference, this value can be null,
- * which means the preference is removed.
+ * @param p the <code>Preferences</code> instance that this event happened, this object is
+ * considered as event's source.
+ * @param k the changed preference's key
+ * @param v the new value of the changed preference, this value can be null, which means the
+ * preference is removed.
*/
public PreferenceChangeEvent(Preferences p, String k, String v) {
super(p);
@@ -92,7 +91,7 @@
return node;
}
- /*
+ /**
* This method always throws a <code>NotSerializableException</code>, because
* this object cannot be serialized,
*/
@@ -100,7 +99,7 @@
throw new NotSerializableException();
}
- /*
+ /**
* This method always throws a <code>NotSerializableException</code>, because
* this object cannot be serialized,
*/
@@ -108,5 +107,3 @@
throw new NotSerializableException();
}
}
-
-
Modified: harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferenceChangeListener.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferenceChangeListener.java?rev=730659&r1=730658&r2=730659&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferenceChangeListener.java (original)
+++ harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferenceChangeListener.java Thu Jan 1 18:52:34 2009
@@ -14,7 +14,6 @@
* limitations under the License.
*/
-
package java.util.prefs;
import java.util.EventListener;
@@ -30,16 +29,12 @@
* @since 1.4
*/
public interface PreferenceChangeListener extends EventListener {
-
+
/**
- * This method gets invoked whenever some preference is added, deleted or
- * updated.
+ * This method gets invoked whenever some preference is added, deleted or updated.
*
- * @param pce the event instance which describes the changed Preferences
- * instance and preferences value.
+ * @param pce the event instance which describes the changed Preferences instance and
+ * preferences value.
*/
- void preferenceChange (PreferenceChangeEvent pce);
+ void preferenceChange (PreferenceChangeEvent pce);
}
-
-
-
Modified: harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/Preferences.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/Preferences.java?rev=730659&r1=730658&r2=730659&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/Preferences.java (original)
+++ harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/Preferences.java Thu Jan 1 18:52:34 2009
@@ -89,33 +89,26 @@
* @since 1.4
*/
public abstract class Preferences {
-
- /*
- * ---------------------------------------------------------
- * Class fields
- * ---------------------------------------------------------
- */
-
- /**
- * Maximum size in characters of preferences key
- */
- public static final int MAX_KEY_LENGTH = 80;
-
- /**
- * Maximum size in characters of preferences name
- */
- public static final int MAX_NAME_LENGTH = 80;
-
- /**
- * Maximum size in characters of preferences value
- */
- public static final int MAX_VALUE_LENGTH = 8192;
-
- //permission
- private static final RuntimePermission PREFS_PERM = new RuntimePermission("preferences"); //$NON-NLS-1$
-
+ /**
+ * Maximum size in characters of preferences key
+ */
+ public static final int MAX_KEY_LENGTH = 80;
+
+ /**
+ * Maximum size in characters of preferences name
+ */
+ public static final int MAX_NAME_LENGTH = 80;
+
+ /**
+ * Maximum size in characters of preferences value
+ */
+ public static final int MAX_VALUE_LENGTH = 8192;
+
+ //permission
+ private static final RuntimePermission PREFS_PERM = new RuntimePermission("preferences"); //$NON-NLS-1$
+
//factory used to get user/system prefs root
- private static final PreferencesFactory factory;
+ private static final PreferencesFactory factory;
// default provider factory name for Windows
private static final String DEFAULT_FACTORY_NAME_WIN = "java.util.prefs.RegistryPreferencesFactoryImpl"; //$NON-NLS-1$
@@ -123,11 +116,6 @@
// default provider factory name for Unix
private static final String DEFAULT_FACTORY_NAME_UNIX = "java.util.prefs.FilePreferencesFactoryImpl"; //$NON-NLS-1$
- /**
- * ---------------------------------------------------------
- * Class initializer
- * ---------------------------------------------------------
- */
static {
String factoryClassName = AccessController.doPrivileged(new PrivilegedAction<String>() {
public String run() {
@@ -165,710 +153,608 @@
}
}
- /*
- * ---------------------------------------------------------
- * Constructors
- * ---------------------------------------------------------
- */
-
- /**
- * Default constructor, for use by subclasses only.
- */
- protected Preferences() {
+ /**
+ * Default constructor, for use by subclasses only.
+ */
+ protected Preferences() {
super();
- }
-
- /*
- * ---------------------------------------------------------
- * Methods
- * ---------------------------------------------------------
- */
-
- /**
- * Get this preference node's absolute path string.
- *
- * @return this preference node's absolute path string.
- */
- public abstract String absolutePath();
-
- /**
- * Return names of all children of this node, or empty string if this node
- * has no children.
- *
- * @return names of all children of this node
- * @throws BackingStoreException
- * if backing store is unavailable or causes operation failure
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract String[] childrenNames() throws BackingStoreException;
-
- /**
- * Remove all preferences of this node.
- *
- * @throws BackingStoreException
- * if backing store is unavailable or causes operation failure
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void clear() throws BackingStoreException;
-
- /**
- * Export all preferences of this node to the given output stream in XML
- * document.
- * <p>
- * This XML document has the following DOCTYPE declaration:
- * <pre>
- * <!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd"></pre>
- * And the UTF-8 encoding will be used. Please note that this node is not
- * thread-safe, which is an exception of this class.
- * </p>
- * @param ostream
- * the output stream to export the XML
- * @throws IOException
- * if export operation caused an <code>IOException</code>
- * @throws BackingStoreException
- * if backing store is unavailable or causes operation failure
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void exportNode (OutputStream ostream) throws IOException, BackingStoreException;
-
- /**
- * Export all preferences of this node and its all descendants to the given
- * output stream in XML document.
- * <p>
- * This XML document has the following DOCTYPE declaration:
- * <pre>
- * <!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd"></pre> *
- * And the UTF-8 encoding will be used. Please note that this node is not
- * thread-safe, which is an exception of this class.
- * </p>
- * @param ostream
- * the output stream to export the XML
- * @throws IOException
- * if export operation caused an <code>IOException</code>
- * @throws BackingStoreException
- * if backing store is unavailable or causes operation failure
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void exportSubtree (OutputStream ostream) throws IOException, BackingStoreException;
-
- /**
- * Force the updates to this node and its descendants to the backing store.
- * <p>
- * If this node has been removed, then the invocation of this method only
- * flush this node without descendants.
- * </p>
- * @throws BackingStoreException
- * if backing store is unavailable or causes operation failure
- */
- public abstract void flush() throws BackingStoreException;
-
- /**
- * Return the string value mapped to the given key, or default value if no
- * value is mapped or backing store is unavailable.
- * <p>
- * Some implementations may store default values in backing stores. In this case,
- * if there is no value mapped to the given key, the stored default value is
- * returned.
- * </p>
- *
- * @param key the preference key
- * @param deflt the default value, which will be returned if no value is
- * mapped to the given key or backing store unavailable
- * @return the preference value mapped to the given key, or default value if
- * no value is mapped or backing store unavailable
- * @throws IllegalStateException
- * if this node has been removed
- * @throws NullPointerException
- * if parameter key is null
- */
- public abstract String get (String key, String deflt);
-
- /**
- * Return the boolean value mapped to the given key, or default value if no
- * value is mapped, backing store is unavailable, or the value is invalid.
- * <p>
- * The valid value is string equals "true", which represents true, or "false",
- * which represents false, case is ignored.
- * </p>
- * <p>
- * Some implementations may store default values in backing stores. In this case,
- * if there is no value mapped to the given key, the stored default value is
- * returned.
- * </p>
- *
- * @param key the preference key
- * @param deflt the default value, which will be returned if no value is
- * mapped to the given key, backing store unavailable or value
- * is invalid
- * @return the boolean value mapped to the given key, or default value if
- * no value is mapped, backing store unavailable or value is invalid
- * @throws IllegalStateException
- * if this node has been removed
- * @throws NullPointerException
- * if parameter key is null
- */
- public abstract boolean getBoolean (String key, boolean deflt);
-
- /**
- * Return the byte array value mapped to the given key, or default value if no
- * value is mapped, backing store is unavailable, or the value is invalid string.
- * <p>
- * The valid value string is Base64 encoded binary data. The Base64 encoding
- * is as defined in <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>,
- * section 6.8.
- * </p>
- * <p>
- * Some implementations may store default values in backing stores. In this case,
- * if there is no value mapped to the given key, the stored default value is
- * returned.
- * </p>
- *
- * @param key the preference key
- * @param deflt the default value, which will be returned if no value is
- * mapped to the given key, backing store unavailable or value
- * is invalid
- * @return the byte array value mapped to the given key, or default value if
- * no value is mapped, backing store unavailable or value is invalid
- * @throws IllegalStateException
- * if this node has been removed
- * @throws NullPointerException
- * if parameter key is null
- */
- public abstract byte[] getByteArray (String key, byte[] deflt);
-
- /**
- * Return the double value mapped to the given key, or default value if no
- * value is mapped, backing store is unavailable, or the value is invalid string.
- * <p>
- * The valid value string can be converted to double number by
- * {@link Double#parseDouble(String) Double.parseDouble(String)}.
- * </p>
- * <p>
- * Some implementations may store default values in backing stores. In this case,
- * if there is no value mapped to the given key, the stored default value is
- * returned.
- * </p>
- *
- * @param key the preference key
- * @param deflt the default value, which will be returned if no value is
- * mapped to the given key, backing store unavailable or value
- * is invalid
- * @return the double value mapped to the given key, or default value if
- * no value is mapped, backing store unavailable or value is invalid
- * @throws IllegalStateException
- * if this node has been removed
- * @throws NullPointerException
- * if parameter key is null
- */
- public abstract double getDouble (String key, double deflt);
-
- /**
- * Return the float value mapped to the given key, or default value if no
- * value is mapped, backing store is unavailable, or the value is invalid string.
- * <p>
- * The valid value string can be converted to float number by
- * {@link Float#parseFloat(String) Float.parseFloat(String)}.
- * </p>
- * <p>
- * Some implementations may store default values in backing stores. In this case,
- * if there is no value mapped to the given key, the stored default value is
- * returned.
- * </p>
- *
- * @param key the preference key
- * @param deflt the default value, which will be returned if no value is
- * mapped to the given key, backing store unavailable or value
- * is invalid
- * @return the float value mapped to the given key, or default value if
- * no value is mapped, backing store unavailable or value is invalid
- * @throws IllegalStateException
- * if this node has been removed
- * @throws NullPointerException
- * if parameter key is null
- */
- public abstract float getFloat (String key, float deflt);
-
- /**
- * Return the float value mapped to the given key, or default value if no
- * value is mapped, backing store is unavailable, or the value is invalid string.
- * <p>
- * The valid value string can be converted to integer by
- * {@link Integer#parseInt(String) Integer.parseInt(String)}.
- * </p>
- * <p>
- * Some implementations may store default values in backing stores. In this case,
- * if there is no value mapped to the given key, the stored default value is
- * returned.
- * </p>
- *
- * @param key the preference key
- * @param deflt the default value, which will be returned if no value is
- * mapped to the given key, backing store unavailable or value
- * is invalid
- * @return the integer value mapped to the given key, or default value if
- * no value is mapped, backing store unavailable or value is invalid
- * @throws IllegalStateException
- * if this node has been removed
- * @throws NullPointerException
- * if parameter key is null
- */
- public abstract int getInt (String key, int deflt);
-
- /**
- * Return the long value mapped to the given key, or default value if no
- * value is mapped, backing store is unavailable, or the value is invalid string.
- * <p>
- * The valid value string can be converted to long integer by
- * {@link Long#parseLong(String) Long.parseLong(String)}.
- * </p>
- * <p>
- * Some implementations may store default values in backing stores. In this case,
- * if there is no value mapped to the given key, the stored default value is
- * returned.
- * </p>
- *
- * @param key the preference key
- * @param deflt the default value, which will be returned if no value is
- * mapped to the given key, backing store unavailable or value
- * is invalid
- * @return the long value mapped to the given key, or default value if
- * no value is mapped, backing store unavailable or value is invalid
- * @throws IllegalStateException
- * if this node has been removed
- * @throws NullPointerException
- * if parameter key is null
- */
- public abstract long getLong (String key, long deflt);
-
- /**
- * Import all preferences from the given input stream in XML document.
- * <p>
- * This XML document has the following DOCTYPE declaration:
- * <pre>
- * <!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd"></pre> *
- * Please note that this node is not thread-safe, which is an exception of
- * this class.
- * </p>
- *
- * @param istream
- * the given input stream to read data
- * @throws InvalidPreferencesFormatException
- * if the data read from given input stream is not valid XML
- * document
- * @throws IOException
- * if import operation caused an <code>IOException</code>
- * @throws SecurityException
- * if <code>RuntimePermission("preferences")</code> is denied
- * by a <code>SecurityManager</code>
- */
- public static void importPreferences (InputStream istream) throws InvalidPreferencesFormatException, IOException {
- checkSecurity();
- if(null == istream){
+ }
+
+ /**
+ * Get this preference node's absolute path string.
+ *
+ * @return this preference node's absolute path string.
+ */
+ public abstract String absolutePath();
+
+ /**
+ * Return names of all children of this node, or empty string if this node has no children.
+ *
+ * @return names of all children of this node
+ * @throws BackingStoreException if backing store is unavailable or causes operation failure
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract String[] childrenNames() throws BackingStoreException;
+
+ /**
+ * Remove all preferences of this node.
+ *
+ * @throws BackingStoreException if backing store is unavailable or causes operation failure
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void clear() throws BackingStoreException;
+
+ /**
+ * Export all preferences of this node to the given output stream in XML document.
+ * <p>
+ * This XML document has the following DOCTYPE declaration:
+ *
+ * <pre>
+ * <!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
+ * </pre>
+ *
+ * And the UTF-8 encoding will be used. Please note that this node is not thread-safe, which is
+ * an exception of this class.
+ * </p>
+ *
+ * @param ostream the output stream to export the XML
+ * @throws IOException if export operation caused an <code>IOException</code>
+ * @throws BackingStoreException if backing store is unavailable or causes operation failure
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void exportNode(OutputStream ostream) throws IOException, BackingStoreException;
+
+ /**
+ * Export all preferences of this node and its all descendants to the given output stream in XML
+ * document.
+ * <p>
+ * This XML document has the following DOCTYPE declaration:
+ *
+ * <pre>
+ * <!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
+ * </pre>
+ *
+ * And the UTF-8 encoding will be used. Please note that this node is not thread-safe, which is
+ * an exception of this class.
+ * </p>
+ *
+ * @param ostream the output stream to export the XML
+ * @throws IOException if export operation caused an <code>IOException</code>
+ * @throws BackingStoreException if backing store is unavailable or causes operation failure
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void exportSubtree(OutputStream ostream) throws IOException,
+ BackingStoreException;
+
+ /**
+ * Force the updates to this node and its descendants to the backing store.
+ * <p>
+ * If this node has been removed, then the invocation of this method only flush this node
+ * without descendants.
+ * </p>
+ *
+ * @throws BackingStoreException if backing store is unavailable or causes operation failure
+ */
+ public abstract void flush() throws BackingStoreException;
+
+ /**
+ * Return the string value mapped to the given key, or default value if no value is mapped or
+ * backing store is unavailable.
+ * <p>
+ * Some implementations may store default values in backing stores. In this case, if there is no
+ * value mapped to the given key, the stored default value is returned.
+ * </p>
+ *
+ * @param key the preference key
+ * @param deflt the default value, which will be returned if no value is mapped to the given key
+ * or backing store unavailable
+ * @return the preference value mapped to the given key, or default value if no value is mapped
+ * or backing store unavailable
+ * @throws IllegalStateException if this node has been removed
+ * @throws NullPointerException if parameter key is null
+ */
+ public abstract String get(String key, String deflt);
+
+ /**
+ * Return the boolean value mapped to the given key, or default value if no value is mapped,
+ * backing store is unavailable, or the value is invalid.
+ * <p>
+ * The valid value is string equals "true", which represents true, or "false", which represents
+ * false, case is ignored.
+ * </p>
+ * <p>
+ * Some implementations may store default values in backing stores. In this case, if there is no
+ * value mapped to the given key, the stored default value is returned.
+ * </p>
+ *
+ * @param key the preference key
+ * @param deflt the default value, which will be returned if no value is mapped to the given
+ * key, backing store unavailable or value is invalid
+ * @return the boolean value mapped to the given key, or default value if no value is mapped,
+ * backing store unavailable or value is invalid
+ * @throws IllegalStateException if this node has been removed
+ * @throws NullPointerException if parameter key is null
+ */
+ public abstract boolean getBoolean(String key, boolean deflt);
+
+ /**
+ * Return the byte array value mapped to the given key, or default value if no value is mapped,
+ * backing store is unavailable, or the value is invalid string.
+ * <p>
+ * The valid value string is Base64 encoded binary data. The Base64 encoding is as defined in <a
+ * href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>, section 6.8.
+ * </p>
+ * <p>
+ * Some implementations may store default values in backing stores. In this case, if there is no
+ * value mapped to the given key, the stored default value is returned.
+ * </p>
+ *
+ * @param key the preference key
+ * @param deflt the default value, which will be returned if no value is mapped to the given
+ * key, backing store unavailable or value is invalid
+ * @return the byte array value mapped to the given key, or default value if no value is mapped,
+ * backing store unavailable or value is invalid
+ * @throws IllegalStateException if this node has been removed
+ * @throws NullPointerException if parameter key is null
+ */
+ public abstract byte[] getByteArray(String key, byte[] deflt);
+
+ /**
+ * Return the double value mapped to the given key, or default value if no value is mapped,
+ * backing store is unavailable, or the value is invalid string.
+ * <p>
+ * The valid value string can be converted to double number by
+ * {@link Double#parseDouble(String) Double.parseDouble(String)}.
+ * </p>
+ * <p>
+ * Some implementations may store default values in backing stores. In this case, if there is no
+ * value mapped to the given key, the stored default value is returned.
+ * </p>
+ *
+ * @param key the preference key
+ * @param deflt the default value, which will be returned if no value is mapped to the given
+ * key, backing store unavailable or value is invalid
+ * @return the double value mapped to the given key, or default value if no value is mapped,
+ * backing store unavailable or value is invalid
+ * @throws IllegalStateException if this node has been removed
+ * @throws NullPointerException if parameter key is null
+ */
+ public abstract double getDouble(String key, double deflt);
+
+ /**
+ * Return the float value mapped to the given key, or default value if no value is mapped,
+ * backing store is unavailable, or the value is invalid string.
+ * <p>
+ * The valid value string can be converted to float number by {@link Float#parseFloat(String)
+ * Float.parseFloat(String)}.
+ * </p>
+ * <p>
+ * Some implementations may store default values in backing stores. In this case, if there is no
+ * value mapped to the given key, the stored default value is returned.
+ * </p>
+ *
+ * @param key the preference key
+ * @param deflt the default value, which will be returned if no value is mapped to the given
+ * key, backing store unavailable or value is invalid
+ * @return the float value mapped to the given key, or default value if no value is mapped,
+ * backing store unavailable or value is invalid
+ * @throws IllegalStateException if this node has been removed
+ * @throws NullPointerException if parameter key is null
+ */
+ public abstract float getFloat(String key, float deflt);
+
+ /**
+ * Return the float value mapped to the given key, or default value if no value is mapped,
+ * backing store is unavailable, or the value is invalid string.
+ * <p>
+ * The valid value string can be converted to integer by {@link Integer#parseInt(String)
+ * Integer.parseInt(String)}.
+ * </p>
+ * <p>
+ * Some implementations may store default values in backing stores. In this case, if there is no
+ * value mapped to the given key, the stored default value is returned.
+ * </p>
+ *
+ * @param key the preference key
+ * @param deflt the default value, which will be returned if no value is mapped to the given
+ * key, backing store unavailable or value is invalid
+ * @return the integer value mapped to the given key, or default value if no value is mapped,
+ * backing store unavailable or value is invalid
+ * @throws IllegalStateException if this node has been removed
+ * @throws NullPointerException if parameter key is null
+ */
+ public abstract int getInt(String key, int deflt);
+
+ /**
+ * Return the long value mapped to the given key, or default value if no value is mapped,
+ * backing store is unavailable, or the value is invalid string.
+ * <p>
+ * The valid value string can be converted to long integer by {@link Long#parseLong(String)
+ * Long.parseLong(String)}.
+ * </p>
+ * <p>
+ * Some implementations may store default values in backing stores. In this case, if there is no
+ * value mapped to the given key, the stored default value is returned.
+ * </p>
+ *
+ * @param key the preference key
+ * @param deflt the default value, which will be returned if no value is mapped to the given
+ * key, backing store unavailable or value is invalid
+ * @return the long value mapped to the given key, or default value if no value is mapped,
+ * backing store unavailable or value is invalid
+ * @throws IllegalStateException if this node has been removed
+ * @throws NullPointerException if parameter key is null
+ */
+ public abstract long getLong(String key, long deflt);
+
+ /**
+ * Import all preferences from the given input stream in XML document.
+ * <p>
+ * This XML document has the following DOCTYPE declaration:
+ *
+ * <pre>
+ * <!DOCTYPE preferences SYSTEM "http://java.sun.com/dtd/preferences.dtd">
+ * </pre>
+ *
+ * Please note that this node is not thread-safe, which is an exception of this class.
+ * </p>
+ *
+ * @param istream the given input stream to read data
+ * @throws InvalidPreferencesFormatException if the data read from given input stream is not
+ * valid XML document
+ * @throws IOException if import operation caused an <code>IOException</code>
+ * @throws SecurityException if <code>RuntimePermission("preferences")</code> is denied by a
+ * <code>SecurityManager</code>
+ */
+ public static void importPreferences (InputStream istream) throws InvalidPreferencesFormatException, IOException {
+ checkSecurity();
+ if(null == istream){
// prefs.0=Inputstream cannot be null\!
- throw new MalformedURLException(Messages.getString("prefs.0")); //$NON-NLS-1$
- }
- XMLParser.importPrefs(istream);
- }
-
- /**
- * Return true if this is a user preferences, false if this is a system
- * preferences
- *
- * @return true if this is a user preferences, false if this is a
- * system preferences
- */
- public abstract boolean isUserNode();
-
- /**
- * Return all preferences keys stored in this node, or empty array if no
- * key is found.
- *
- * @return all preferences keys in this node
- * @throws BackingStoreException
- * if backing store is unavailable or causes operation failure
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract String[] keys() throws BackingStoreException;
-
- /**
- * Return name of this node.
- *
- * @return the name of this node
- */
- public abstract String name();
-
- /**
- * Return the preferences node with the given path name. The path name can
- * be relative or absolute. The dictated preferences and its ancestors will
- * be created if they do not exist.
- * <p>
- * The path is treated as relative to this node if it doesn't start with
- * slash, or as absolute otherwise.</p>
- *
- * @param path the path name of dictated preferences
- * @return the dictated preferences node
- * @throws IllegalStateException
- * if this node has been removed.
- * @throws IllegalArgumentException
- * if the path name is invalid.
- * @throws NullPointerException
- * if given path is null.
- */
- public abstract Preferences node (String path);
-
- /**
- * Return the preferences node with the given path name. The path is treated
- * as relative to this node if it doesn't start with slash, or as absolute
- * otherwise.
- * <p>
- * Please note that if this node has been removed, invocation of this node
- * will throw <code>IllegalStateException</code> except the given path is
- * empty string, which will return false.
- * </p>
- *
- * @param path the path name of dictated preferences
- * @return true if the dictated preferences node exists
- * @throws IllegalStateException
- * if this node has been removed and the path is not empty string.
- * @throws IllegalArgumentException
- * if the path name is invalid.
- * @throws NullPointerException
- * if given path is null.
- * @throws BackingStoreException
- * if backing store is unavailable or causes operation failure
- */
- public abstract boolean nodeExists (String path) throws BackingStoreException;
-
- /**
- * Return the parent preferences node of this node, or null if this node is root.
- *
- * @return the parent preferences node of this node.
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract Preferences parent();
-
- /**
- * Add new preferences to this node using given key and value, or update
- * value if preferences with given key has already existed.
- *
- * @param key the preferences key to be added or be updated
- * @param value the preferences value for the given key
- * @throws NullPointerException
- * if the given key or value is null
- * @throws IllegalArgumentException
- * if the given key's length is bigger than
- * <code>MAX_KEY_LENGTH</code>, or the value's length is bigger
- * than <code>MAX_VALUE_LENGTH</code>
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void put (String key, String value);
-
- /**
- * Add new preferences to this node using given key and string form of given
- * value, or update value if preferences with given key has already existed.
- *
- * @param key the preferences key to be added or be updated
- * @param value the preferences value for the given key
- * @throws NullPointerException
- * if the given key is null
- * @throws IllegalArgumentException
- * if the given key's length is bigger than
- * <code>MAX_KEY_LENGTH</code>
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void putBoolean (String key, boolean value);
-
- /**
- * Add new preferences to this node using given key and string form of given
- * value, or update value if preferences with given key has already existed.
- * <p>
- * The string form of value is the Base64 encoded binary data of the given
- * byte array. The Base64 encoding is as defined in
- * <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>, section 6.8.</p>
- *
- * @param key the preferences key to be added or be updated
- * @param value the preferences value for the given key
- * @throws NullPointerException
- * if the given key or value is null
- * @throws IllegalArgumentException
- * if the given key's length is bigger than
- * <code>MAX_KEY_LENGTH</code> or value's length is bigger than
- * three quarters of <code>MAX_KEY_LENGTH</code>
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void putByteArray (String key, byte[] value);
-
- /**
- * Add new preferences to this node using given key and string form of given
- * value, or update value if preferences with given key has already existed.
- * <p>
- * The string form of given value is the result of invoking
- * {@link Double#toString(double) Double.toString(double)}</p>
- *
- * @param key the preferences key to be added or be updated
- * @param value the preferences value for the given key
- * @throws NullPointerException
- * if the given key is null
- * @throws IllegalArgumentException
- * if the given key's length is bigger than
- * <code>MAX_KEY_LENGTH</code>
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void putDouble (String key, double value);
-
- /**
- * Add new preferences to this node using given key and string form of given
- * value, or update value if preferences with given key has already existed.
- * <p>
- * The string form of given value is the result of invoking
- * {@link Float#toString(float) Float.toString(float)}</p>
- *
- * @param key the preferences key to be added or be updated
- * @param value the preferences value for the given key
- * @throws NullPointerException
- * if the given key is null
- * @throws IllegalArgumentException
- * if the given key's length is bigger than
- * <code>MAX_KEY_LENGTH</code>
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void putFloat (String key, float value);
-
- /**
- * Add new preferences to this node using given key and string form of given
- * value, or update value if preferences with given key has already existed.
- * <p>
- * The string form of given value is the result of invoking
- * {@link Integer#toString(int) Integer.toString(int)}</p>
- *
- * @param key the preferences key to be added or be updated
- * @param value the preferences value for the given key
- * @throws NullPointerException
- * if the given key is null
- * @throws IllegalArgumentException
- * if the given key's length is bigger than
- * <code>MAX_KEY_LENGTH</code>
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void putInt (String key, int value);
-
- /**
- * Add new preferences to this node using given key and string form of given
- * value, or update value if preferences with given key has already existed.
- * <p>
- * The string form of given value is the result of invoking
- * {@link Long#toString(long) Long.toString(long)}</p>
- *
- * @param key the preferences key to be added or be updated
- * @param value the preferences value for the given key
- * @throws NullPointerException
- * if the given key is null
- * @throws IllegalArgumentException
- * if the given key's length is bigger than
- * <code>MAX_KEY_LENGTH</code>
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void putLong (String key, long value);
-
- /**
- * Remove the preferences mapped to the given key from this node.
- *
- * @param key the given preferences key to removed
- * @throws NullPointerException
- * if the given key is null
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void remove (String key);
-
- /**
- * Remove this preferences node and its all descendants. The removal maybe
- * won't be persisted until the <code>flush()</code> method is invoked.
- *
- * @throws BackingStoreException
- * if backing store is unavailable or causes operation failure
- * @throws IllegalStateException
- * if this node has been removed
- * @throws UnsupportedOperationException
- * if this is a root node
- */
- public abstract void removeNode() throws BackingStoreException;
-
- /**
- * Register an <code>NodeChangeListener</code> instance for this node, which
- * will receive <code>NodeChangeEvent</code>. <code>NodeChangeEvent</code> will
- * be produced when direct child node is added to or removed from this node.
- *
- * @param ncl the given listener to be registered
- * @throws NullPointerException
- * if the given listener is null
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void addNodeChangeListener (NodeChangeListener ncl);
-
- /**
- * Register an <code>PreferenceChangeListener</code> instance for this node, which
- * will receive <code>PreferenceChangeEvent</code>. <code>PreferenceChangeEvent</code> will
- * be produced when preference is added to, removed from or updated for this node.
- *
- * @param pcl the given listener to be registered
- * @throws NullPointerException
- * if the given listener is null
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void addPreferenceChangeListener (PreferenceChangeListener pcl);
-
- /**
- * Remove the given <code>NodeChangeListener</code> instance from this node.
- *
- * @param ncl the given listener to be removed
- * @throws IllegalArgumentException
- * if the given listener
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void removeNodeChangeListener (NodeChangeListener ncl);
-
- /**
- * Remove the given <code>PreferenceChangeListener</code> instance from this node.
- *
- * @param pcl the given listener to be removed
- * @throws IllegalArgumentException
- * if the given listener
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void removePreferenceChangeListener (PreferenceChangeListener pcl);
-
- /**
- * Synchronize this preferences node and its descendants' data with the back
- * end preferences store. The changes of back end should be reflect by this
- * node and its descendants, meanwhile, the changes of this node and descendants
- * should be persisted.
- *
- * @throws BackingStoreException
- * if backing store is unavailable or causes operation failure
- * @throws IllegalStateException
- * if this node has been removed
- */
- public abstract void sync() throws BackingStoreException;
-
- /**
- * Return the system preference node for the package of given class. The
- * absolute path of the returned node is one slash followed by the given
- * class's full package name with replacing each period ('.') with slash.
- * For example, the preference's associated with class <code>Object<code>
+ throw new MalformedURLException(Messages.getString("prefs.0")); //$NON-NLS-1$
+ }
+ XMLParser.importPrefs(istream);
+ }
+
+ /**
+ * Return true if this is a user preferences, false if this is a system preferences
+ *
+ * @return true if this is a user preferences, false if this is a system preferences
+ */
+ public abstract boolean isUserNode();
+
+ /**
+ * Return all preferences keys stored in this node, or empty array if no key is found.
+ *
+ * @return all preferences keys in this node
+ * @throws BackingStoreException if backing store is unavailable or causes operation failure
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract String[] keys() throws BackingStoreException;
+
+ /**
+ * Return name of this node.
+ *
+ * @return the name of this node
+ */
+ public abstract String name();
+
+ /**
+ * Return the preferences node with the given path name. The path name can be relative or
+ * absolute. The dictated preferences and its ancestors will be created if they do not exist.
+ * <p>
+ * The path is treated as relative to this node if it doesn't start with slash, or as absolute
+ * otherwise.
+ * </p>
+ *
+ * @param path the path name of dictated preferences
+ * @return the dictated preferences node
+ * @throws IllegalStateException if this node has been removed.
+ * @throws IllegalArgumentException if the path name is invalid.
+ * @throws NullPointerException if given path is null.
+ */
+ public abstract Preferences node(String path);
+
+ /**
+ * Return the preferences node with the given path name. The path is treated as relative to this
+ * node if it doesn't start with slash, or as absolute otherwise.
+ * <p>
+ * Please note that if this node has been removed, invocation of this node will throw
+ * <code>IllegalStateException</code> except the given path is empty string, which will return
+ * false.
+ * </p>
+ *
+ * @param path the path name of dictated preferences
+ * @return true if the dictated preferences node exists
+ * @throws IllegalStateException if this node has been removed and the path is not empty string.
+ * @throws IllegalArgumentException if the path name is invalid.
+ * @throws NullPointerException if given path is null.
+ * @throws BackingStoreException if backing store is unavailable or causes operation failure
+ */
+ public abstract boolean nodeExists(String path) throws BackingStoreException;
+
+ /**
+ * Return the parent preferences node of this node, or null if this node is root.
+ *
+ * @return the parent preferences node of this node.
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract Preferences parent();
+
+ /**
+ * Add new preferences to this node using given key and value, or update value if preferences
+ * with given key has already existed.
+ *
+ * @param key the preferences key to be added or be updated
+ * @param value the preferences value for the given key
+ * @throws NullPointerException if the given key or value is null
+ * @throws IllegalArgumentException if the given key's length is bigger than
+ * <code>MAX_KEY_LENGTH</code>, or the value's length is bigger than
+ * <code>MAX_VALUE_LENGTH</code>
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void put(String key, String value);
+
+ /**
+ * Add new preferences to this node using given key and string form of given value, or update
+ * value if preferences with given key has already existed.
+ *
+ * @param key the preferences key to be added or be updated
+ * @param value the preferences value for the given key
+ * @throws NullPointerException if the given key is null
+ * @throws IllegalArgumentException if the given key's length is bigger than
+ * <code>MAX_KEY_LENGTH</code>
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void putBoolean(String key, boolean value);
+
+ /**
+ * Add new preferences to this node using given key and string form of given value, or update
+ * value if preferences with given key has already existed.
+ * <p>
+ * The string form of value is the Base64 encoded binary data of the given byte array. The
+ * Base64 encoding is as defined in <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>,
+ * section 6.8.
+ * </p>
+ *
+ * @param key the preferences key to be added or be updated
+ * @param value the preferences value for the given key
+ * @throws NullPointerException if the given key or value is null
+ * @throws IllegalArgumentException if the given key's length is bigger than
+ * <code>MAX_KEY_LENGTH</code> or value's length is bigger than three quarters of
+ * <code>MAX_KEY_LENGTH</code>
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void putByteArray(String key, byte[] value);
+
+ /**
+ * Add new preferences to this node using given key and string form of given value, or update
+ * value if preferences with given key has already existed.
+ * <p>
+ * The string form of given value is the result of invoking {@link Double#toString(double)
+ * Double.toString(double)}
+ * </p>
+ *
+ * @param key the preferences key to be added or be updated
+ * @param value the preferences value for the given key
+ * @throws NullPointerException if the given key is null
+ * @throws IllegalArgumentException if the given key's length is bigger than
+ * <code>MAX_KEY_LENGTH</code>
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void putDouble(String key, double value);
+
+ /**
+ * Add new preferences to this node using given key and string form of given value, or update
+ * value if preferences with given key has already existed.
+ * <p>
+ * The string form of given value is the result of invoking {@link Float#toString(float)
+ * Float.toString(float)}
+ * </p>
+ *
+ * @param key the preferences key to be added or be updated
+ * @param value the preferences value for the given key
+ * @throws NullPointerException if the given key is null
+ * @throws IllegalArgumentException if the given key's length is bigger than
+ * <code>MAX_KEY_LENGTH</code>
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void putFloat(String key, float value);
+
+ /**
+ * Add new preferences to this node using given key and string form of given value, or update
+ * value if preferences with given key has already existed.
+ * <p>
+ * The string form of given value is the result of invoking {@link Integer#toString(int)
+ * Integer.toString(int)}
+ * </p>
+ *
+ * @param key the preferences key to be added or be updated
+ * @param value the preferences value for the given key
+ * @throws NullPointerException if the given key is null
+ * @throws IllegalArgumentException if the given key's length is bigger than
+ * <code>MAX_KEY_LENGTH</code>
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void putInt(String key, int value);
+
+ /**
+ * Add new preferences to this node using given key and string form of given value, or update
+ * value if preferences with given key has already existed.
+ * <p>
+ * The string form of given value is the result of invoking {@link Long#toString(long)
+ * Long.toString(long)}
+ * </p>
+ *
+ * @param key the preferences key to be added or be updated
+ * @param value the preferences value for the given key
+ * @throws NullPointerException if the given key is null
+ * @throws IllegalArgumentException if the given key's length is bigger than
+ * <code>MAX_KEY_LENGTH</code>
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void putLong(String key, long value);
+
+ /**
+ * Remove the preferences mapped to the given key from this node.
+ *
+ * @param key the given preferences key to removed
+ * @throws NullPointerException if the given key is null
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void remove(String key);
+
+ /**
+ * Remove this preferences node and its all descendants. The removal maybe won't be persisted
+ * until the <code>flush()</code> method is invoked.
+ *
+ * @throws BackingStoreException if backing store is unavailable or causes operation failure
+ * @throws IllegalStateException if this node has been removed
+ * @throws UnsupportedOperationException if this is a root node
+ */
+ public abstract void removeNode() throws BackingStoreException;
+
+ /**
+ * Register an <code>NodeChangeListener</code> instance for this node, which will receive
+ * <code>NodeChangeEvent</code>. <code>NodeChangeEvent</code> will be produced when direct child
+ * node is added to or removed from this node.
+ *
+ * @param ncl the given listener to be registered
+ * @throws NullPointerException if the given listener is null
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void addNodeChangeListener(NodeChangeListener ncl);
+
+ /**
+ * Register an <code>PreferenceChangeListener</code> instance for this node, which will receive
+ * <code>PreferenceChangeEvent</code>. <code>PreferenceChangeEvent</code> will be produced when
+ * preference is added to, removed from or updated for this node.
+ *
+ * @param pcl the given listener to be registered
+ * @throws NullPointerException if the given listener is null
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void addPreferenceChangeListener (PreferenceChangeListener pcl);
+
+ /**
+ * Remove the given <code>NodeChangeListener</code> instance from this node.
+ *
+ * @param ncl the given listener to be removed
+ * @throws IllegalArgumentException if the given listener
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void removeNodeChangeListener (NodeChangeListener ncl);
+
+ /**
+ * Remove the given <code>PreferenceChangeListener</code> instance from this node.
+ *
+ * @param pcl the given listener to be removed
+ * @throws IllegalArgumentException if the given listener
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void removePreferenceChangeListener (PreferenceChangeListener pcl);
+
+ /**
+ * Synchronize this preferences node and its descendants' data with the back end preferences
+ * store. The changes of back end should be reflect by this node and its descendants, meanwhile,
+ * the changes of this node and descendants should be persisted.
+ *
+ * @throws BackingStoreException if backing store is unavailable or causes operation failure
+ * @throws IllegalStateException if this node has been removed
+ */
+ public abstract void sync() throws BackingStoreException;
+
+ /**
+ * <p>Return the system preference node for the package of given class. The absolute path of the
+ * returned node is one slash followed by the given class's full package name with replacing
+ * each period ('.') with slash. For example, the preference's associated with class
+ * <code>Object<code>
* has absolute path like "/java/lang". As a special case, the unnamed
- * package is associated with preference node "/<unnamed>".
+ * package is associated with preference node "/<unnamed>".</p>
*
- * This method will create node and its ancestors if needed, and the new
- * created nodes maybe won't be persisted until the <code>flush()</code>
- * is invoked.
- *
- * @param c the given class
- * @return the system preference node for the package of given class.
- * @throws NullPointerException
- * if the given class is null
- * @throws SecurityException
- * if <code>RuntimePermission("preferences")</code> is denied
- * by a <code>SecurityManager</code>
- */
- public static Preferences systemNodeForPackage (Class<?> c) {
- checkSecurity();
- return factory.systemRoot().node(getNodeName(c));
- }
-
- /**
- * Return the root node for system preference hierarchy.
- *
- * @return the root node for system preference hierarchy
- * @throws SecurityException
- * if <code>RuntimePermission("preferences")</code> is denied
- * by a <code>SecurityManager</code>
- */
- public static Preferences systemRoot() {
- checkSecurity();
- return factory.systemRoot();
- }
-
- //check the RuntimePermission("preferences")
+ * <p>This method will create node and its ancestors if needed, and the new
+ * created nodes maybe won't be persisted until the <code>flush()</code> is invoked.</p>
+ *
+ * @param c the given class
+ * @return the system preference node for the package of given class.
+ * @throws NullPointerException if the given class is null
+ * @throws SecurityException if <code>RuntimePermission("preferences")</code> is denied by a
+ * <code>SecurityManager</code>
+ */
+ public static Preferences systemNodeForPackage (Class<?> c) {
+ checkSecurity();
+ return factory.systemRoot().node(getNodeName(c));
+ }
+
+ /**
+ * Return the root node for system preference hierarchy.
+ *
+ * @return the root node for system preference hierarchy
+ * @throws SecurityException if <code>RuntimePermission("preferences")</code> is denied by a
+ * <code>SecurityManager</code>
+ */
+ public static Preferences systemRoot() {
+ checkSecurity();
+ return factory.systemRoot();
+ }
+
+ //check the RuntimePermission("preferences")
private static void checkSecurity() {
SecurityManager manager = System.getSecurityManager();
if(null != manager){
manager.checkPermission(PREFS_PERM);
}
-
+
}
/**
- * Return the user preference node for the package of given class. The
- * absolute path of the returned node is one slash followed by the given
- * class's full package name with replacing each period ('.') with slash.
- * For example, the preference's associated with class <code>Object<code>
+ * <p>Return the user preference node for the package of given class. The absolute path of the
+ * returned node is one slash followed by the given class's full package name with replacing
+ * each period ('.') with slash. For example, the preference's associated with class
+ * <code>Object<code>
* has absolute path like "/java/lang". As a special case, the unnamed
- * package is associated with preference node "/<unnamed>".
+ * package is associated with preference node "/<unnamed>".</p>
*
- * This method will create node and its ancestors if needed, and the new
- * created nodes maybe won't be persisted until the <code>flush()</code>
- * is invoked.
- *
- * @param c the given class
- * @return the user preference node for the package of given class.
- * @throws NullPointerException
- * if the given class is null
- * @throws SecurityException
- * if <code>RuntimePermission("preferences")</code> is denied
- * by a <code>SecurityManager</code>
- */
- public static Preferences userNodeForPackage (Class<?> c) {
- checkSecurity();
- return factory.userRoot().node(getNodeName(c));
- }
-
- //parse node's absolute path from class instance
- private static String getNodeName(Class<?> c){
- Package p = c.getPackage();
- if(null == p){
- return "/<unnamed>"; //$NON-NLS-1$
- }
- return "/"+p.getName().replace('.', '/'); //$NON-NLS-1$
- }
-
- /**
- * Return the root node for user preference hierarchy.
- *
- * @return the root node for user preference hierarchy
- * @throws SecurityException
- * if <code>RuntimePermission("preferences")</code> is denied
- * by a <code>SecurityManager</code>
- */
- public static Preferences userRoot() {
- checkSecurity();
- return factory.userRoot();
- }
-
- /**
- * Return a string description of this node. The format is "User/System
- * Preference Node: " followed by this node's absolute path.
- *
- * @return a string description of this node
- *
- */
- @Override
+ * <p>This method will create node and its ancestors if needed, and the new
+ * created nodes maybe won't be persisted until the <code>flush()</code> is invoked.</p>
+ *
+ * @param c the given class
+ * @return the user preference node for the package of given class.
+ * @throws NullPointerException if the given class is null
+ * @throws SecurityException if <code>RuntimePermission("preferences")</code> is denied by a
+ * <code>SecurityManager</code>
+ */
+ public static Preferences userNodeForPackage (Class<?> c) {
+ checkSecurity();
+ return factory.userRoot().node(getNodeName(c));
+ }
+
+ //parse node's absolute path from class instance
+ private static String getNodeName(Class<?> c){
+ Package p = c.getPackage();
+ if(null == p){
+ return "/<unnamed>"; //$NON-NLS-1$
+ }
+ return "/"+p.getName().replace('.', '/'); //$NON-NLS-1$
+ }
+
+ /**
+ * Return the root node for user preference hierarchy.
+ *
+ * @return the root node for user preference hierarchy
+ * @throws SecurityException if <code>RuntimePermission("preferences")</code> is denied by a
+ * <code>SecurityManager</code>
+ */
+ public static Preferences userRoot() {
+ checkSecurity();
+ return factory.userRoot();
+ }
+
+ /**
+ * Return a string description of this node. The format is "User/System
+ * Preference Node: " followed by this node's absolute path.
+ *
+ * @return a string description of this node
+ */
+ @Override
public abstract String toString();
}
Modified: harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferencesFactory.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferencesFactory.java?rev=730659&r1=730658&r2=730659&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferencesFactory.java (original)
+++ harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/PreferencesFactory.java Thu Jan 1 18:52:34 2009
@@ -14,35 +14,29 @@
* limitations under the License.
*/
-
package java.util.prefs;
/**
- * This interface is used by {@link Preferences} class
- * as factory class to create Preferences instance. This interface can be implemented
- * and installed to replace the default preferences implementation.
+ * This interface is used by {@link Preferences} class as factory class to create Preferences
+ * instance. This interface can be implemented and installed to replace the default preferences
+ * implementation.
*
* @see java.util.prefs.Preferences
*
* @since 1.4
*/
public interface PreferencesFactory {
- /**
- * Returns the root of the preferences hierarchy for the calling user
- * context.
- *
- * @return The user root preferences node.
- */
- Preferences userRoot();
-
- /**
- * Returns the root of the system preferences hierarchy.
- *
- * @return The root of the system preferences hierarchy.
- */
- Preferences systemRoot();
+ /**
+ * Returns the root of the preferences hierarchy for the calling user context.
+ *
+ * @return The user root preferences node.
+ */
+ Preferences userRoot();
+
+ /**
+ * Returns the root of the system preferences hierarchy.
+ *
+ * @return The root of the system preferences hierarchy.
+ */
+ Preferences systemRoot();
}
-
-
-
-
Modified: harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/RegistryPreferencesFactoryImpl.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/RegistryPreferencesFactoryImpl.java?rev=730659&r1=730658&r2=730659&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/RegistryPreferencesFactoryImpl.java (original)
+++ harmony/enhanced/classlib/trunk/modules/prefs/src/main/java/java/util/prefs/RegistryPreferencesFactoryImpl.java Thu Jan 1 18:52:34 2009
@@ -20,20 +20,20 @@
import java.util.prefs.PreferencesFactory;
/**
- * Default implementation of <code>PreferencesFactory</code> for windows
- * platform, using windows Registry as back end.
+ * Default implementation of <code>PreferencesFactory</code> for windows platform, using windows
+ * Registry as back end.
*
* @since 1.4
*/
class RegistryPreferencesFactoryImpl implements PreferencesFactory {
- //user root preferences
+ // user root preferences
private static final Preferences USER_ROOT = new RegistryPreferencesImpl(true);
- //system root preferences
+ // system root preferences
private static final Preferences SYSTEM_ROOT = new RegistryPreferencesImpl(false);
-
+
public RegistryPreferencesFactoryImpl() {
- super();
+ super();
}
public Preferences userRoot() {
@@ -44,7 +44,3 @@
return SYSTEM_ROOT;
}
}
-
-
-
-