"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.r...@oracle.com>; Krishna Addepalli 
<krishna.addepa...@oracle.com>; swing-dev@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.addepa...@oracle.com";<krishna.addepa...@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.addepa...@oracle.com";<krishna.addepa...@oracle.com>; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@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

 

 

 

Reply via email to