On Tue, 4 Oct 2022 08:06:24 GMT, Tejesh R <[email protected]> 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:
>
> Test case update
Changes requested by aivanov (Reviewer).
test/jdk/javax/swing/JFileChooser/FileViewNPETest.java line 81:
> 79: passFailJFrame = new PassFailJFrame("Test Instructions",
> INSTRUCTIONS, 5L, 13, 40);
> 80: jfc = new JFileChooser();
> 81: String path = System.getProperty("user.home");
The test does not work for me on Windows. It starts with `user.home` as the
current folder as expected; when select `C:`, it goes to Desktop which is the
root of the Shell namespace.
I guess, you have to change it to `System.getProperty("user.home") +
File.separator + "Documents"` as you and I discussed. It'll make Desktop
unreachable.
On Linux, the test works correctly.
test/jdk/javax/swing/JFileChooser/FileViewNPETest.java line 97:
> 95:
> 96: class CustomFileView extends FileView {
> 97: private String basePath;
Suggestion:
private final String basePath;
test/jdk/javax/swing/JFileChooser/FileViewNPETest.java line 105:
> 103: public Boolean isTraversable(File filePath) {
> 104: return ((filePath != null) && (filePath.isDirectory())) &&
> 105: filePath.getAbsolutePath().startsWith(basePath);
Suggestion:
return ((filePath != null) && (filePath.isDirectory()))
&& filePath.getAbsolutePath().startsWith(basePath);
I prefer wrapping before the operator, it makes it clear that it's a
continuation line. Java Coding Style suggests wrapping this way.
-------------
PR: https://git.openjdk.org/jdk/pull/10485