This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 217377
Collapse All | Expand All

(-)core.startup/manifest.mf (-1 / +1 lines)
Lines 3-7 Link Here
3
OpenIDE-Module-Localizing-Bundle: org/netbeans/core/startup/Bundle.properties
3
OpenIDE-Module-Localizing-Bundle: org/netbeans/core/startup/Bundle.properties
4
OpenIDE-Module-Layer: org/netbeans/core/startup/layer.xml
4
OpenIDE-Module-Layer: org/netbeans/core/startup/layer.xml
5
OpenIDE-Module-Provides: org.openide.modules.InstalledFileLocator
5
OpenIDE-Module-Provides: org.openide.modules.InstalledFileLocator
6
OpenIDE-Module-Specification-Version: 1.41
6
OpenIDE-Module-Specification-Version: 1.42
7
7
(-)core.startup/nbproject/project.xml (-1 / +1 lines)
Lines 79-85 Link Here
79
                    <build-prerequisite/>
79
                    <build-prerequisite/>
80
                    <compile-dependency/>
80
                    <compile-dependency/>
81
                    <run-dependency>
81
                    <run-dependency>
82
                        <specification-version>8.25</specification-version>
82
                        <specification-version>8.27</specification-version>
83
                    </run-dependency>
83
                    </run-dependency>
84
                </dependency>
84
                </dependency>
85
                <dependency>
85
                <dependency>
(-)core.startup/src/org/netbeans/core/startup/preferences/PreferencesProviderImpl.java (-2 / +4 lines)
Lines 53-59 Link Here
53
 */
53
 */
54
@ServiceProvider(service=org.openide.util.NbPreferences.Provider.class)
54
@ServiceProvider(service=org.openide.util.NbPreferences.Provider.class)
55
public class PreferencesProviderImpl implements org.openide.util.NbPreferences.Provider {
55
public class PreferencesProviderImpl implements org.openide.util.NbPreferences.Provider {
56
    public Preferences preferencesForModule(Class cls) {
56
    @Override
57
    public Preferences preferencesForModule(Preferences root, Class cls) {
57
        String absolutePath = null;
58
        String absolutePath = null;
58
        // Could use Modules.getDefault().ownerOf(cls) but this would initialize
59
        // Could use Modules.getDefault().ownerOf(cls) but this would initialize
59
        // module system which may be undesirable in general. Fix might be to
60
        // module system which may be undesirable in general. Fix might be to
Lines 67-75 Link Here
67
            absolutePath = cls.getName().replaceFirst("(^|\\.)[^.]+$", "");//NOI18N
68
            absolutePath = cls.getName().replaceFirst("(^|\\.)[^.]+$", "");//NOI18N
68
        }
69
        }
69
        assert absolutePath != null;        
70
        assert absolutePath != null;        
70
        return preferencesRoot().node(absolutePath.replace('.','/'));//NOI18N
71
        return root.node(absolutePath.replace('.','/'));//NOI18N
71
    }
72
    }
72
    
73
    
74
    @Override
73
    public Preferences preferencesRoot() {
75
    public Preferences preferencesRoot() {
74
        return NbPreferences.userRootImpl();
76
        return NbPreferences.userRootImpl();
75
    }
77
    }
(-)core.startup/test/unit/src/org/netbeans/core/startup/preferences/PreferencesProviderImplTest.java (-1 / +1 lines)
Lines 60-66 Link Here
60
     */
60
     */
61
    public void testPreferencesForModule() {
61
    public void testPreferencesForModule() {
62
        PreferencesProviderImpl instance = new PreferencesProviderImpl();        
62
        PreferencesProviderImpl instance = new PreferencesProviderImpl();        
63
        Preferences result = instance.preferencesForModule(getClass());
63
        Preferences result = instance.preferencesForModule(instance.preferencesRoot(), getClass());
64
        assertNotNull(result);
64
        assertNotNull(result);
65
        assertTrue(NbPreferences.class.isAssignableFrom(result.getClass()));
65
        assertTrue(NbPreferences.class.isAssignableFrom(result.getClass()));
66
        assertEquals(result.absolutePath(),"/"+getClass().getPackage().getName().replace('.','/'));
66
        assertEquals(result.absolutePath(),"/"+getClass().getPackage().getName().replace('.','/'));
(-)openide.util/apichanges.xml (+16 lines)
Lines 51-56 Link Here
51
    <apidef name="actions">Actions API</apidef>
51
    <apidef name="actions">Actions API</apidef>
52
</apidefs>
52
</apidefs>
53
<changes>
53
<changes>
54
    <change id="NBPreferences.forModule2">
55
        <api name="util"/>
56
        <summary>UNC-safe File / URI interconversion</summary>
57
        <version major="8" minor="27"/>
58
        <date year="2012" month="31" day="9"/>
59
        <author login="mkleint"/>
60
        <description>
61
            <p>
62
                <code>NbPreferences</code> gets new method <code>forModule(Preferences, Class)</code>
63
                to be able to create a module based subtree even for non-root nodes..
64
            </p>
65
        </description>
66
        <class package="org.openide.util" name="NbPreferences"/>
67
        <issue number="217377"/>
68
    </change>
69
    
54
    <change id="File.URI">
70
    <change id="File.URI">
55
        <api name="util"/>
71
        <api name="util"/>
56
        <summary>UNC-safe File / URI interconversion</summary>
72
        <summary>UNC-safe File / URI interconversion</summary>
(-)openide.util/manifest.mf (-1 / +1 lines)
Lines 1-5 Link Here
1
Manifest-Version: 1.0
1
Manifest-Version: 1.0
2
OpenIDE-Module: org.openide.util
2
OpenIDE-Module: org.openide.util
3
OpenIDE-Module-Localizing-Bundle: org/openide/util/Bundle.properties
3
OpenIDE-Module-Localizing-Bundle: org/openide/util/Bundle.properties
4
OpenIDE-Module-Specification-Version: 8.26
4
OpenIDE-Module-Specification-Version: 8.27
5
5
(-)openide.util/src/org/openide/util/NbPreferences.java (-5 / +37 lines)
Lines 64-81 Link Here
64
     * Returns user preference node . {@link Preferences#absolutePath} of such
64
     * Returns user preference node . {@link Preferences#absolutePath} of such
65
     * a node depends whether class provided as a parameter was loaded as a part of any module
65
     * a node depends whether class provided as a parameter was loaded as a part of any module
66
     * or not. If so, then absolute path corresponds to slashified code name base of module.
66
     * or not. If so, then absolute path corresponds to slashified code name base of module.
67
     * If not, then absolute path corresponds to class's package.
67
     * If not, then absolute path corresponds to class's package. Equals to <code>Preferences.forModule(Preferences.root(), cls)</code>
68
     *
68
     *
69
     * @param cls the class for which a user preference node is desired.
69
     * @param cls the class for which a user preference node is desired.
70
     * @return the user preference node
70
     * @return the user preference node
71
     */
71
     */
72
    public static Preferences forModule(Class cls) {
72
    public static Preferences forModule(Class cls) {
73
        return forModule(root(), cls);
74
    }
75
    
76
    /**
77
     * Returns user preference node . {@link Preferences#absolutePath} of such
78
     * a node depends whether class provided as a parameter was loaded as a part of any module
79
     * or not. If so, then absolute path corresponds to slashified code name base of module.
80
     * If not, then absolute path corresponds to class's package.
81
     *
82
     * @param root the reference point, base Preferences node.
83
     * @param cls the class for which a user preference node is desired.
84
     * @return the user preference node
85
     * @since 8.27
86
     */
87
    public static Preferences forModule(Preferences root, Class cls) {
73
          if (PREFS_IMPL == null) {
88
          if (PREFS_IMPL == null) {
74
                PREFS_IMPL = getPreferencesProvider();
89
                PREFS_IMPL = getPreferencesProvider();
75
          }
90
          }
76
          return PREFS_IMPL.preferencesForModule(cls);
91
          return PREFS_IMPL.preferencesForModule(root, cls);
77
    }
92
    }
78
    
93
    
94
    
79
    /**
95
    /**
80
     * Returns the root preference node.
96
     * Returns the root preference node.
81
     *
97
     *
Lines 92-104 Link Here
92
        Provider retval = Lookup.getDefault().lookup(Provider.class);
108
        Provider retval = Lookup.getDefault().lookup(Provider.class);
93
        if (retval == null) {
109
        if (retval == null) {
94
             retval = new Provider() {
110
             retval = new Provider() {
95
                  public Preferences preferencesForModule(Class cls) {
111
            
96
                       return Preferences.userNodeForPackage(cls);
112
                 @Override
113
                  public Preferences preferencesForModule(Preferences root, Class cls) {
114
                       return root.node(nodeName(cls));
97
                  }
115
                  }
98
116
117
                 @Override
99
                  public Preferences preferencesRoot() {
118
                  public Preferences preferencesRoot() {
100
                       return Preferences.userRoot();
119
                       return Preferences.userRoot();
101
                  }                         
120
                  }                         
121
                 private String nodeName(Class c) {
122
                     if (c.isArray()) {
123
                         throw new IllegalArgumentException(
124
                                 "Arrays have no associated preferences node.");
125
                     }
126
                     String className = c.getName();
127
                     int pkgEndIndex = className.lastIndexOf('.');
128
                     if (pkgEndIndex < 0) {
129
                         return "/<unnamed>";
130
                     }
131
                     String packageName = className.substring(0, pkgEndIndex);
132
                     return "/" + packageName.replace('.', '/');
133
                 }
102
             };
134
             };
103
             // Avoided warning in case it is set 
135
             // Avoided warning in case it is set 
104
             //(e.g. from NbTestCase - org.netbeans.junit.internal.MemoryPreferencesFactory).
136
             //(e.g. from NbTestCase - org.netbeans.junit.internal.MemoryPreferencesFactory).
Lines 127-133 Link Here
127
         * @param cls the class for which a user preference node is desired.
159
         * @param cls the class for which a user preference node is desired.
128
         * @return the user preference node
160
         * @return the user preference node
129
         */
161
         */
130
        Preferences preferencesForModule(Class cls);
162
        Preferences preferencesForModule(Preferences root, Class cls);
131
        /**
163
        /**
132
         * Returns the root preference node.
164
         * Returns the root preference node.
133
         *
165
         *

Return to bug 217377