<Swing Dev> [11][JDK-8196673] JFileChooser throws InvalidPathException when changing to directory with added space
Krishna Addepalli
krishna.addepalli at oracle.com
Fri Feb 16 18:31:05 UTC 2018
"It looks really odd that Java may create a directory but may not change to it. It also introduces compatibility problems with files created on other platforms, downloads, unpacked archives, etc. "
Semyon, could you clarify this. I mean, how can Java create a directory ending with space, when Windows does not allow it. As mentioned in the bug JDK-6578565, Win32 API CreateDirectoryW silently trims the trailing white spaces from a directory name, whereas the alternative API SHCreateDirectoryEXW produces an error if the path is illegal.
Thanks,
Krishna
From: Semyon Sadetsky
Sent: Friday, February 16, 2018 11:10 PM
To: Phil Race <philip.race at oracle.com>; Krishna Addepalli <krishna.addepalli at oracle.com>; swing-dev at openjdk.java.net
Subject: Re: <Swing Dev> [11][JDK-8196673] JFileChooser throws InvalidPathException when changing to directory with added space
I take a look at the 6578565. They said that windows specifies this in https://msdn.microsoft.com/en-US/library/aa365247.aspx. And this doc says:
"Do not end a file or directory name with a space or a period. Although the underlying file system may support such names, the Windows shell and user interface does not. However, it is acceptable to specify a period as the first character of a name. For example, ".temp"."
That means that only Windows shell doesn't support it. This may be not enough a justification since NIO works in headless mode as well. It is the client-libs that should take care about following the shell specs not core-libs. NIO should support spaces if underling OS supports it.
It looks really odd that Java may create a directory but may not change to it. It also introduces compatibility problems with files created on other platforms, downloads, unpacked archives, etc.
--Semyon
Do not end a file or directory name
Krishna Addepalli HYPERLINK "mailto:krishna.addepalli at oracle.com"<krishna.addepalli at oracle.com>
with a space or a period. Although the underlying file system may support such names, the Windows shell and user interface does not. However, it is acceptable to specify a period as the first character of a name. For example, ".temp".
On 02/16/2018 09:08 AM, Phil Race wrote:
Right, what I said was that perhaps nio is behaving as specified in this case.
If a standalone nio program can be written that shows nio contravening its spec.
then a bug should be raised against nio. I did not verify what the case is there ..
I just suggested that should be investigated.
Vagueness that it is an nio problem without pointing to why just makes me
have to investigate it myself to see why .. I'd prefer that the bug owner do that :-)
But otherwise (no nio bug) we'll have to deal with what nio specifies.
If we can fix it locally *and* file a bug against nio then that is also an issue.
Also nio may take a while to get to it ..
-phil
On 02/16/2018 08:56 AM, Krishna Addepalli wrote:
Hi Semyon,
I had a discussion with Sergey,Phil regarding this. While there was a similar bug filed against Core-libs (https://bugs.openjdk.java.net/browse/JDK-6578565) , it was closed out as not an issue.
I have checked it on Java8, and it behaves correctly on Windows - it trims the paths and then creates/selects the folder.
>From Java9 onwards, the InvalidPathException is thrown, since ShellFolder.java file uses nio to get the path, and the nio throws the exception as reported in the bug.
Phil suggested that, we should fix the bug at our level if we can, since nio may not consider this to be a problem at their level.
Hence this suggested fix.
Thanks,
Krishna
From: Semyon Sadetsky
Sent: Friday, February 16, 2018 10:04 PM
To: Krishna Addepalli HYPERLINK "mailto:krishna.addepalli at oracle.com"<krishna.addepalli at oracle.com>; HYPERLINK "mailto:swing-dev at openjdk.java.net"swing-dev at openjdk.java.net
Subject: Re: <Swing Dev> [11][JDK-8196673] JFileChooser throws InvalidPathException when changing to directory with added space
According to Pardeep Sharma comment the bug is reproducible since 6u45. Do you confirm this or it is a regression introduced in 9?
>From the stack trace it doesn't look as a client-libs issue but a NIO issue.
--Semyon
On 02/16/2018 04:40 AM, Krishna Addepalli wrote:
Hi Sergey, Phil
Please review a fix for JDK-8196673: https://bugs.openjdk.java.net/browse/JDK-8196673
Webrev: HYPERLINK "http://cr.openjdk.java.net/%7Ekaddepalli/8196673/webrev00"http://cr.openjdk.java.net/~kaddepalli/8196673/webrev00
The problem is in Java9 and later, when a directory path that contains leading/trailing space is provided, it throws an InvalidPathException. As per Phil's recommendation, I have added a simple fix, which will trim the path for Windows, whereas for other platforms, it keeps it as it is.
Thanks,
Krishna
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20180216/de7850cd/attachment.html>
More information about the swing-dev
mailing list