<Swing Dev> [11][JDK-8196673] JFileChooser throws InvalidPathException when changing to directory with added space
Semyon Sadetsky
semyon.sadetsky at oracle.com
Thu Feb 22 17:52:00 UTC 2018
I have to repeat my question: How this may help to fix the regression?
Will it be possible to change to directory with trailing space after the
fix?
--Semyon
On 02/22/2018 08:48 AM, Krishna Addepalli wrote:
>
> Hi Semyon,
>
> While browsing through the api for File, I found the
> “getCanonicalPath” function, which returns the OS specific path as per
> the documentation:
>
> Returns the canonical pathname string of this abstract pathname.
>
> A canonical pathname is both absolute and unique. The precise
> definition of canonical form is system-dependent. This method first
> converts this pathname to absolute form if necessary, as if by
> invoking the getAbsolutePath()
> <https://docs.oracle.com/javase/7/docs/api/java/io/File.html#getAbsolutePath%28%29> method,
> and then maps it to its unique form in a system-dependent way. This
> typically involves removing redundant names such as "." and ".." from
> the pathname, resolving symbolic links (on UNIX platforms), and
> converting drive letters to a standard case (on Microsoft Windows
> platforms).
>
> Every pathname that denotes an existing file or directory has a unique
> canonical form. Every pathname that denotes a nonexistent file or
> directory also has a unique canonical form. The canonical form of the
> pathname of a nonexistent file or directory may be different from the
> canonical form of the same pathname after the file or directory is
> created. Similarly, the canonical form of the pathname of an existing
> file or directory may be different from the canonical form of the same
> pathname after the file or directory is deleted.
>
> Here is the link:
> https://docs.oracle.com/javase/7/docs/api/java/io/File.html#getCanonicalPath()
> <https://docs.oracle.com/javase/7/docs/api/java/io/File.html#getCanonicalPath%28%29>
>
> On Windows, this is removing the extra spaces in the path, so seemed
> like a good function with minimal changes.
>
> Thanks,
>
> Krishna
>
> *From:*Semyon Sadetsky
> *Sent:* Thursday, February 22, 2018 9:56 PM
> *To:* Krishna Addepalli <krishna.addepalli at oracle.com>; Philip Race
> <philip.race 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
>
> Hi Krishna,
>
> I didn't get how your last version may fix the issue. Can you clarify?
>
> My suggestion was to move Files.exists(...) to
> ShellFolderManager.createShellFolder() so in Widows the FNF will be
> caused by the native shell. Thus NIO can be avoided on Windows. I
> didn't test this but it should fix the bug scenario on a first glance.
>
> --Semyon
>
> On 02/22/2018 04:29 AM, Krishna Addepalli wrote:
>
> Hi Semyon,
>
> Thanks for the suggestion. I have made changes accordingly, and
> here is the new webrev:
>
> http://cr.openjdk.java.net/~kaddepalli/8196673/webrev01
> <http://cr.openjdk.java.net/%7Ekaddepalli/8196673/webrev01>
>
> Krishna
>
> *From:*Semyon Sadetsky
> *Sent:* Thursday, February 22, 2018 5:34 AM
> *To:* Krishna Addepalli <krishna.addepalli at oracle.com>
> <mailto:krishna.addepalli at oracle.com>; Philip Race
> <philip.race at oracle.com> <mailto:philip.race at oracle.com>;
> swing-dev at openjdk.java.net <mailto:swing-dev at openjdk.java.net>
> *Subject:* Re: <Swing Dev> [11][JDK-8196673] JFileChooser throws
> InvalidPathException when changing to directory with added space
>
> On 2/21/18 11:08 AM, Krishna Addepalli wrote:
>
> Hi Semyon,
>
> I can raise a bug, but Sergey suggested that nio is being used
> because of following fix:
>
> > in jdk9 nio api is used because of the fix for:
>
> >
> http://mail.openjdk.java.net/pipermail/jdk9-dev/2016-September/004953.
>
> > html
>
> > we should not break it.
>
> This is what I meant above. It should be fixed differently without
> usage of NIO.
> I think Files.exists() may be omitted when ShellFolder is queried
> by Windows shell API. The FNF exception could be thrown when null
> is returned.
>
> --Semyon
>
>
> @Sergey, could you post the correct link to the mail, since
> that link is not working?
>
> Hence, I have made the fix which simply trims the path on
> Windows, and doesnot alter the string on other platforms.
>
> Thanks,
>
> Krishna
>
> *From:*Semyon Sadetsky
> *Sent:* Tuesday, February 20, 2018 10:39 PM
> *To:* Krishna Addepalli <krishna.addepalli at oracle.com>
> <mailto:krishna.addepalli at oracle.com>; Philip Race
> <philip.race at oracle.com> <mailto:philip.race at oracle.com>;
> swing-dev at openjdk.java.net <mailto:swing-dev at openjdk.java.net>
> *Subject:* Re: <Swing Dev> [11][JDK-8196673] JFileChooser
> throws InvalidPathException when changing to directory with
> added space
>
> On 02/20/2018 07:35 AM, Krishna Addepalli wrote:
>
> I have added the necessary information to the bug.
>
> As for Sergey’s question, the native file dialog also
> trims the strings before creating/selecting a file/folder.
>
> So, now I’m not clear if we are going ahead with the fix
> or raise a new bug against nio, and wait for them to fix it?
>
> Phil, Semyon could you suggest?
>
> I suggest to file the bug against NIO and try to re-fix the
> 7067885 in a different way without usage of NIO.
>
> --Semyon
>
>
>
> Thanks,
>
> Krishna
>
> *From:*Semyon Sadetsky
> *Sent:* Saturday, February 17, 2018 1:03 AM
> *To:* Phil Race <philip.race at oracle.com>
> <mailto:philip.race at oracle.com>; Krishna Addepalli
> <krishna.addepalli at oracle.com>
> <mailto:krishna.addepalli at oracle.com>;
> swing-dev at openjdk.java.net <mailto:swing-dev at openjdk.java.net>
> *Subject:* Re: <Swing Dev> [11][JDK-8196673] JFileChooser
> throws InvalidPathException when changing to directory
> with added space
>
> On 02/16/2018 10:36 AM, Phil Race wrote:
>
> Seems that was about 20 emails ago in another off-list
> thread about this bug.
> It hasn't been posted to this list or added to the bug
> evaluation as far as I can see.
> Add that and the links to the evaluation, not just here.
>
> Since nio did already close 6578565 as not an issue I
> doubt it will be re-considered
> despite the points Semyon raises about other use cases
> for nio.
>
> At least we should try to file a new bug against NIO. They
> might be confused by Windows documentation because default
> meaning of "shell" on Linux is not the same as on Windows.
>
> --Semyon
>
>
>
>
> So the closest to whatever 8 was doing is fine.
> Sergey asked what the native FileDialog does and that
> is likely worth checking
> and including in the bug evaluation .. which probably
> should be updated to
> explain the problem better. It is the shell + UI that
> does not support it, not the
> windows OS.
>
> I find it irksome we have so many tests that directly
> use sun.awt.shell.ShellFolder
> but that is another issue ..
>
> -phil.
>
> On 02/16/2018 10:18 AM, Krishna Addepalli wrote:
>
> Hi Phil,
>
> “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 :-)”
>
>
>
>
>
> I did provide a standalone program, that
> reproduces the exact exception reported in the
> bug. Just repeating it here again for reference:
>
> import java.nio.file.Paths;
>
> public class PathExceptionBug {
>
> public static void main(String args[]) throws
> Exception {
>
> Paths.get("C:\\testspace ");
>
> }
>
> }
>
> When Sergey pointed out the bug(JDK-6578565), and
> suggested that NIO may close it, then we discussed
> about fixing it in our code, instead of assigning
> it to them.
>
> Thanks,
>
> Krishna
>
> *From:*Phil Race
> *Sent:* Friday, February 16, 2018 10:38 PM
> *To:* Krishna Addepalli
> <krishna.addepalli at oracle.com>
> <mailto:krishna.addepalli at oracle.com>; Semyon
> Sadetsky <semyon.sadetsky at oracle.com>
> <mailto:semyon.sadetsky at oracle.com>;
> swing-dev at openjdk.java.net
> <mailto:swing-dev at openjdk.java.net>
> *Subject:* Re: <Swing Dev> [11][JDK-8196673]
> JFileChooser throws InvalidPathException when
> changing to directory with added space
>
> 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
> <krishna.addepalli at oracle.com>
> <mailto:krishna.addepalli at oracle.com>;
> swing-dev at openjdk.java.net
> <mailto: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:
> http://cr.openjdk.java.net/~kaddepalli/8196673/webrev00
> <http://cr.openjdk.java.net/%7Ekaddepalli/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/20180222/4f33a540/attachment.html>
More information about the swing-dev
mailing list