Run the following program using JDK 6 b102 on Unix after adding saxon8.jar (unpacked from http://prdownloads.sourceforge.net/saxon/saxonb8-8j.zip?download) to the classpath:
---%<---
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
public class IndentNumberBug {
public static void main(String[] args) throws BackingStoreException {
Preferences p = Preferences.userRoot().node("test/node");
p.removeNode();
p = Preferences.userRoot().node("test/node");
p.put("k", "v");
p.flush();
}
}
---%<---
You will see:
---%<---
Exception in thread "main" java.util.prefs.BackingStoreException: java.lang.IllegalArgumentException: Unknown attribute indent-number
at java.util.prefs.FileSystemPreferences$8.run(FileSystemPreferences.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.util.prefs.FileSystemPreferences.writeBackCache(FileSystemPreferences.java:600)
at java.util.prefs.FileSystemPreferences.syncSpiPrivileged(FileSystemPreferences.java:784)
at java.util.prefs.FileSystemPreferences.access$2300(FileSystemPreferences.java:33)
at java.util.prefs.FileSystemPreferences$13.run(FileSystemPreferences.java:754)
at java.security.AccessController.doPrivileged(Native Method)
at java.util.prefs.FileSystemPreferences.syncSpi(FileSystemPreferences.java:752)
at java.util.prefs.AbstractPreferences.sync2(AbstractPreferences.java:1317)
at java.util.prefs.AbstractPreferences.sync(AbstractPreferences.java:1308)
at java.util.prefs.FileSystemPreferences.sync(FileSystemPreferences.java:731)
at java.util.prefs.FileSystemPreferences.flush(FileSystemPreferences.java:807)
at IndentNumberBug.main(IndentNumberBug.java:9)
Caused by: java.lang.IllegalArgumentException: Unknown attribute indent-number
at net.sf.saxon.Configuration.setConfigurationProperty(Configuration.java:2260)
at net.sf.saxon.TransformerFactoryImpl.setAttribute(TransformerFactoryImpl.java:342)
at java.util.prefs.XmlSupport.writeDoc(XmlSupport.java:247)
at java.util.prefs.XmlSupport.exportMap(XmlSupport.java:333)
at java.util.prefs.FileSystemPreferences$8.run(FileSystemPreferences.java:607)
... 12 more
Oct 25, 2006 3:29:13 PM java.util.prefs.FileSystemPreferences syncWorld
WARNING: Couldn't flush user prefs: java.util.prefs.BackingStoreException: java.lang.IllegalArgumentException: Unknown attribute indent-number
---%<---
Worse, if you comment out the call to flush(), you get an unhelpful message (took me a while to track this down to its source!) and no stack trace:
---%<---
Oct 25, 2006 3:34:43 PM java.util.prefs.FileSystemPreferences syncWorld
WARNING: Couldn't flush user prefs: java.util.prefs.BackingStoreException: java.lang.IllegalArgumentException: Unknown attribute indent-number
---%<---
---%<---
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
public class IndentNumberBug {
public static void main(String[] args) throws BackingStoreException {
Preferences p = Preferences.userRoot().node("test/node");
p.removeNode();
p = Preferences.userRoot().node("test/node");
p.put("k", "v");
p.flush();
}
}
---%<---
You will see:
---%<---
Exception in thread "main" java.util.prefs.BackingStoreException: java.lang.IllegalArgumentException: Unknown attribute indent-number
at java.util.prefs.FileSystemPreferences$8.run(FileSystemPreferences.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.util.prefs.FileSystemPreferences.writeBackCache(FileSystemPreferences.java:600)
at java.util.prefs.FileSystemPreferences.syncSpiPrivileged(FileSystemPreferences.java:784)
at java.util.prefs.FileSystemPreferences.access$2300(FileSystemPreferences.java:33)
at java.util.prefs.FileSystemPreferences$13.run(FileSystemPreferences.java:754)
at java.security.AccessController.doPrivileged(Native Method)
at java.util.prefs.FileSystemPreferences.syncSpi(FileSystemPreferences.java:752)
at java.util.prefs.AbstractPreferences.sync2(AbstractPreferences.java:1317)
at java.util.prefs.AbstractPreferences.sync(AbstractPreferences.java:1308)
at java.util.prefs.FileSystemPreferences.sync(FileSystemPreferences.java:731)
at java.util.prefs.FileSystemPreferences.flush(FileSystemPreferences.java:807)
at IndentNumberBug.main(IndentNumberBug.java:9)
Caused by: java.lang.IllegalArgumentException: Unknown attribute indent-number
at net.sf.saxon.Configuration.setConfigurationProperty(Configuration.java:2260)
at net.sf.saxon.TransformerFactoryImpl.setAttribute(TransformerFactoryImpl.java:342)
at java.util.prefs.XmlSupport.writeDoc(XmlSupport.java:247)
at java.util.prefs.XmlSupport.exportMap(XmlSupport.java:333)
at java.util.prefs.FileSystemPreferences$8.run(FileSystemPreferences.java:607)
... 12 more
Oct 25, 2006 3:29:13 PM java.util.prefs.FileSystemPreferences syncWorld
WARNING: Couldn't flush user prefs: java.util.prefs.BackingStoreException: java.lang.IllegalArgumentException: Unknown attribute indent-number
---%<---
Worse, if you comment out the call to flush(), you get an unhelpful message (took me a while to track this down to its source!) and no stack trace:
---%<---
Oct 25, 2006 3:34:43 PM java.util.prefs.FileSystemPreferences syncWorld
WARNING: Couldn't flush user prefs: java.util.prefs.BackingStoreException: java.lang.IllegalArgumentException: Unknown attribute indent-number
---%<---
- duplicates
-
JDK-6396599 (prefs) Preferences sync fails if jaxp transform provider doesn't support indent-number
-
- Closed
-