On Fri, 30 Sep 2022 10:57:37 GMT, Tejesh R <t...@openjdk.org> wrote:

>> When a custom `FileView` is used and folder traversal is restricted to a 
>> particular directory NPE occurs when user tries to traverse/select other 
>> folders except traversable folder. This is caused because when user selects 
>> folder other than traversable, the traversal is rejected and hence no file 
>> is selected as `currentDirectory` of `JFileChooser`. When user tries to 
>> access the restricted folder second time, previous selected file check is 
>> failing because of NPE since `getFileChooser().getCurrentDirectory();` is 
>> null. To fix the issue, NPE check is added.
>
> Tejesh R has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Updated based on review comments

You say that the current directory in `JFileChooser` gets set to `null` because 
of forbidden navigation to a folder which is not traversable. You avoid the NPE 
by a null-check.

However, you should prevent the current directory to be set to `null`. If 
navigation is not allowed, the current directory should remain unchanged 
_instead of being reset to `null`_.

src/java.desktop/share/classes/javax/swing/plaf/metal/MetalFileChooserUI.java 
line 1271:

> 1269:             File curDir = getFileChooser().getCurrentDirectory();
> 1270: 
> 1271:             if (curDir != null && !curDir.equals(f)) {

If `f` is always not null, you can you use `!f.equals(curDir)`.

test/jdk/javax/swing/JFileChooser/FileViewNPETest.java line 84:

> 82:         String path = "";
> 83:         if (Platform.isWindows()) {
> 84:             path = "C:" + File.separator + "temp";

It's rare but possible that Windows is installed not on `C:` drive.

test/jdk/javax/swing/JFileChooser/FileViewNPETest.java line 114:

> 112:         } else {
> 113:             return false;
> 114:         }

I can be simplified to:
Suggestion:

        return ((filePath != null) && (filePath.isDirectory())
                && filePath.getAbsolutePath().startsWith(basePath));

I'm not insisting though.

-------------

PR: https://git.openjdk.org/jdk/pull/10485

Reply via email to