Yes, I messed up the class name. The problem is a combination of the URI
and URL classes not being fully compliant with RFCs they deem to cover,
which has been discussed exhaustively on the Apache HttpComponents list.
You can create URLs and URIs that are escaped and unescaped, and the Java
NIO file scheme handler requires unescaped URI paths, but the HTTP handler
requires escaped URIs. It's easy to get lost in it all but should have
enough tests, barely, to catch regressions now.

Gary


On Sun, Mar 28, 2021, 22:36 Bernd Eckenfels <e...@zusammenkunft.net> wrote:

> Hello,
>
> Have a question, wat makes the case special? What makes it illegal? is
> this a general problem with unicode characters, outside of BMP, or is it an
> illegal sequence or something else? What about latin9 euro sign for
> example? Do we need to document somewhere that only ascii is allowed?
>
> Could we use (or comment) the character with \u notation in the test
> source, so it stays ascii (just to be sure and also to make the byte
> sequence apparent)
>
> Finally, is the Test Class named wrong? (...Chart..)
>
> > public class FileObjectEscapeChartInPathTest {
> >     private static final String REL_PATH_GREAT =
> "src/test/resources/test-data/好.txt";
>
> Gruss
> Bernd
>
> --
> http://bernd.eckenfels.net
> ________________________________
> Von: ggreg...@apache.org <ggreg...@apache.org>
> Gesendet: Sonntag, März 28, 2021 11:31 PM
> An: comm...@commons.apache.org
> Betreff: [commons-vfs] branch master updated: IllegalArgumentException:
> Bad escape for Chinese characters in FileObject path #168.
>
> This is an automated email from the ASF dual-hosted git repository.
>
> ggregory pushed a commit to branch master
> in repository https://gitbox.apache.org/repos/asf/commons-vfs.git
>
>
> The following commit(s) were added to refs/heads/master by this push:
>      new 7c56b5a  IllegalArgumentException: Bad escape for Chinese
> characters in FileObject path #168.
> 7c56b5a is described below
>
> commit 7c56b5ab5e7826ddc443936d11145ee1be077e95
> Author: Gary Gregory <garydgreg...@gmail.com>
> AuthorDate: Sun Mar 28 17:31:40 2021 -0400
>
>     IllegalArgumentException: Bad escape for Chinese characters in
>     FileObject path #168.
> ---
>  commons-vfs2/src/main/java/org/apache/commons/vfs2/FileObject.java     |
> 2 +-
>  .../java/org/apache/commons/vfs2/FileObjectEscapeChartInPathTest.java  |
> 2 --
>  src/changes/changes.xml                                                |
> 3 +++
>  3 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git
> a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileObject.java
> b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileObject.java
> index fce79ac..1f5e2d2 100644
> --- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileObject.java
> +++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileObject.java
> @@ -307,7 +307,7 @@ public interface FileObject extends
> Comparable<FileObject>, Iterable<FileObject>
>       * @since 2.7.0
>       */
>      default URI getURI() {
> -        return URI.create(getName().getURI());
> +        return URI.create(URI.create(getName().getURI()).toASCIIString());
>      }
>
>      /**
> diff --git
> a/commons-vfs2/src/test/java/org/apache/commons/vfs2/FileObjectEscapeChartInPathTest.java
> b/commons-vfs2/src/test/java/org/apache/commons/vfs2/FileObjectEscapeChartInPathTest.java
> index 8419dcc..66ab4b3 100644
> ---
> a/commons-vfs2/src/test/java/org/apache/commons/vfs2/FileObjectEscapeChartInPathTest.java
> +++
> b/commons-vfs2/src/test/java/org/apache/commons/vfs2/FileObjectEscapeChartInPathTest.java
> @@ -34,10 +34,8 @@ import org.apache.commons.io.IOUtils;
>  import org.apache.commons.lang3.SystemUtils;
>  import org.apache.commons.lang3.function.FailableFunction;
>  import org.apache.commons.vfs2.impl.StandardFileSystemManager;
> -import org.junit.Ignore;
>  import org.junit.Test;
>
> -@Ignore
>  public class FileObjectEscapeChartInPathTest {
>
>      private static final String REL_PATH_GREAT =
> "src/test/resources/test-data/好.txt";
> diff --git a/src/changes/changes.xml b/src/changes/changes.xml
> index cac0154..56c4001 100644
> --- a/src/changes/changes.xml
> +++ b/src/changes/changes.xml
> @@ -56,6 +56,9 @@ The <action> type attribute can be add,update,fix,remove.
>        <action type="fix" dev="ggregory" due-to="Boris Petrov, Gary
> Gregory, Max Kellermann">
>          Fix NPE when closing a stream from a different thread #167. See
> also #166.
>        </action>
> +      <action type="fix" dev="ggregory" issue="VFS-798"
> due-to="XenoAmess, Gary Gregory">
> +        IllegalArgumentException: Bad escape for Chinese characters in
> FileObject path #168.
> +      </action>
>        <!-- UPDATES  -->
>        <action type="update" dev="ggregory" due-to="Arturo Bernal">
>          Replace construction of FileInputStream and FileOutputStream
> objects with Files NIO APIs. #164.
>

Reply via email to