# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: /Users/mkleint/src/core-main # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: core.startup/manifest.mf --- core.startup/manifest.mf Base (BASE) +++ core.startup/manifest.mf Locally Modified (Based On LOCAL) @@ -3,5 +3,5 @@ OpenIDE-Module-Localizing-Bundle: org/netbeans/core/startup/Bundle.properties OpenIDE-Module-Layer: org/netbeans/core/startup/layer.xml OpenIDE-Module-Provides: org.openide.modules.InstalledFileLocator -OpenIDE-Module-Specification-Version: 1.41 +OpenIDE-Module-Specification-Version: 1.42 Index: core.startup/nbproject/project.xml --- core.startup/nbproject/project.xml Base (BASE) +++ core.startup/nbproject/project.xml Locally Modified (Based On LOCAL) @@ -79,7 +79,7 @@ - 8.25 + 8.27 Index: core.startup/src/org/netbeans/core/startup/preferences/PreferencesProviderImpl.java --- core.startup/src/org/netbeans/core/startup/preferences/PreferencesProviderImpl.java Base (BASE) +++ core.startup/src/org/netbeans/core/startup/preferences/PreferencesProviderImpl.java Locally Modified (Based On LOCAL) @@ -53,7 +53,8 @@ */ @ServiceProvider(service=org.openide.util.NbPreferences.Provider.class) public class PreferencesProviderImpl implements org.openide.util.NbPreferences.Provider { - public Preferences preferencesForModule(Class cls) { + @Override + public Preferences preferencesForModule(Preferences root, Class cls) { String absolutePath = null; // Could use Modules.getDefault().ownerOf(cls) but this would initialize // module system which may be undesirable in general. Fix might be to @@ -67,9 +68,10 @@ absolutePath = cls.getName().replaceFirst("(^|\\.)[^.]+$", "");//NOI18N } assert absolutePath != null; - return preferencesRoot().node(absolutePath.replace('.','/'));//NOI18N + return root.node(absolutePath.replace('.','/'));//NOI18N } + @Override public Preferences preferencesRoot() { return NbPreferences.userRootImpl(); } Index: core.startup/test/unit/src/org/netbeans/core/startup/preferences/PreferencesProviderImplTest.java --- core.startup/test/unit/src/org/netbeans/core/startup/preferences/PreferencesProviderImplTest.java Base (BASE) +++ core.startup/test/unit/src/org/netbeans/core/startup/preferences/PreferencesProviderImplTest.java Locally Modified (Based On LOCAL) @@ -60,7 +60,7 @@ */ public void testPreferencesForModule() { PreferencesProviderImpl instance = new PreferencesProviderImpl(); - Preferences result = instance.preferencesForModule(getClass()); + Preferences result = instance.preferencesForModule(instance.preferencesRoot(), getClass()); assertNotNull(result); assertTrue(NbPreferences.class.isAssignableFrom(result.getClass())); assertEquals(result.absolutePath(),"/"+getClass().getPackage().getName().replace('.','/')); Index: openide.util/apichanges.xml --- openide.util/apichanges.xml Base (BASE) +++ openide.util/apichanges.xml Locally Modified (Based On LOCAL) @@ -51,6 +51,22 @@ Actions API + + + UNC-safe File / URI interconversion + + + + +

+ NbPreferences gets new method forModule(Preferences, Class) + to be able to create a module based subtree even for non-root nodes.. +

+
+ + +
+ UNC-safe File / URI interconversion Index: openide.util/manifest.mf --- openide.util/manifest.mf Base (BASE) +++ openide.util/manifest.mf Locally Modified (Based On LOCAL) @@ -1,5 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.openide.util OpenIDE-Module-Localizing-Bundle: org/openide/util/Bundle.properties -OpenIDE-Module-Specification-Version: 8.26 +OpenIDE-Module-Specification-Version: 8.27 Index: openide.util/src/org/openide/util/NbPreferences.java --- openide.util/src/org/openide/util/NbPreferences.java Base (BASE) +++ openide.util/src/org/openide/util/NbPreferences.java Locally Modified (Based On LOCAL) @@ -64,18 +64,34 @@ * Returns user preference node . {@link Preferences#absolutePath} of such * a node depends whether class provided as a parameter was loaded as a part of any module * or not. If so, then absolute path corresponds to slashified code name base of module. - * If not, then absolute path corresponds to class's package. + * If not, then absolute path corresponds to class's package. Equals to Preferences.forModule(Preferences.root(), cls) * * @param cls the class for which a user preference node is desired. * @return the user preference node */ public static Preferences forModule(Class cls) { + return forModule(root(), cls); + } + + /** + * Returns user preference node . {@link Preferences#absolutePath} of such + * a node depends whether class provided as a parameter was loaded as a part of any module + * or not. If so, then absolute path corresponds to slashified code name base of module. + * If not, then absolute path corresponds to class's package. + * + * @param root the reference point, base Preferences node. + * @param cls the class for which a user preference node is desired. + * @return the user preference node + * @since 8.27 + */ + public static Preferences forModule(Preferences root, Class cls) { if (PREFS_IMPL == null) { PREFS_IMPL = getPreferencesProvider(); } - return PREFS_IMPL.preferencesForModule(cls); + return PREFS_IMPL.preferencesForModule(root, cls); } + /** * Returns the root preference node. * @@ -92,13 +108,29 @@ Provider retval = Lookup.getDefault().lookup(Provider.class); if (retval == null) { retval = new Provider() { - public Preferences preferencesForModule(Class cls) { - return Preferences.userNodeForPackage(cls); + + @Override + public Preferences preferencesForModule(Preferences root, Class cls) { + return root.node(nodeName(cls)); } + @Override public Preferences preferencesRoot() { return Preferences.userRoot(); } + private String nodeName(Class c) { + if (c.isArray()) { + throw new IllegalArgumentException( + "Arrays have no associated preferences node."); + } + String className = c.getName(); + int pkgEndIndex = className.lastIndexOf('.'); + if (pkgEndIndex < 0) { + return "/"; + } + String packageName = className.substring(0, pkgEndIndex); + return "/" + packageName.replace('.', '/'); + } }; // Avoided warning in case it is set //(e.g. from NbTestCase - org.netbeans.junit.internal.MemoryPreferencesFactory). @@ -127,7 +159,7 @@ * @param cls the class for which a user preference node is desired. * @return the user preference node */ - Preferences preferencesForModule(Class cls); + Preferences preferencesForModule(Preferences root, Class cls); /** * Returns the root preference node. *