Skip to content

Awkward chars (non-ascii non-reserved) do not map between rest and webdav #3665

Description

@hungerburg

There was discussion on the list; I compiled some lines curl usage, that show one issue - that names of resources are treated differently between rest and webdav interfaces. This is more a method to help diagnosing than a diagnosis. Yet, users reliably want the mapping to be true.

Notes:

  • Letter "м" is a cyrillic character, utf-8 %D0%BC, a small "m"
  • only an exist-db installation required, no extra files
  • two resources by the same name will be created
  • each servlet can only fetch its own creation
  • tested with snapshot of today's
# Webdav create a collection and add a resource
curl -v -u admin -X DELETE http://localhost:8080/exist/webdav/db/testuni
curl -v -u admin -X MKCOL http://localhost:8080/exist/webdav/db/testuni
curl -v -u admin http://localhost:8080/exist/webdav/db/testuni
curl -v -u admin -X PUT -H 'Content-Type: application/xml' -d '<text>WDAV Letter м.</text>' http://localhost:8080/exist/webdav/db/testuni/м.xml
curl -v -u admin http://localhost:8080/exist/webdav/db/testuni
curl -v -u admin http://localhost:8080/exist/webdav/db/testuni/%D0%BC.xml
# <text>WDAV Letter м.</text>
curl -v -u admin http://localhost:8080/exist/webdav/db/testuni/м.xml
# <text>WDAV Letter м.</text>

# Fetch with Rest
curl -v http://localhost:8080/exist/rest/db/testuni
curl -v http://localhost:8080/exist/rest/db/testuni/м.xml
# <title>Error 404 Document /db/testuni/?.xml not found</title>
# <tr><th>URI:</th><td>/exist/rest/db/testuni/?.xml</td></tr>
curl -v http://localhost:8080/exist/rest/db/testuni/%D0%BC.xml
# <body><h2>HTTP ERROR 404 Document /db/testuni/?.xml not found</h2>
# <tr><th>URI:</th><td>/exist/rest/db/testuni/%D0%BC.xml</td></tr>

# Rest create resource
curl -v -u admin -X PUT -H 'Content-Type: application/xml' -d '<text>REST Letter м.</text>' http://localhost:8080/exist/rest/db/testuni/м.xml
curl -v http://localhost:8080/exist/rest/db/testuni
curl -v http://localhost:8080/exist/rest/db/testuni/м.xml
> <text>REST Letter м.</text>
curl -v http://localhost:8080/exist/rest/db/testuni/%D0%BC.xml
# <text>REST Letter м.</text>

# Webdav list collection and fetch resource
curl -v -u admin http://localhost:8080/exist/webdav/db/testuni
curl -v -u admin http://localhost:8080/exist/webdav/db/testuni/%D0%BC.xml
# <text>WDAV Letter м.</text>
curl -v -u admin http://localhost:8080/exist/webdav/db/testuni/м.xml
# <text>WDAV Letter м.</text>

# Webdav delete resource
curl -v -u admin -X DELETE http://localhost:8080/exist/webdav/db/testuni/м.xml
curl -v -u admin http://localhost:8080/exist/webdav/db/testuni
# HTTP/1.1 500 Server Error
curl -v -u admin -X DELETE http://localhost:8080/exist/webdav/db/testuni
# HTTP/1.1 500 Server Error

# Rest delete resource
curl -v http://localhost:8080/exist/rest/db/testuni/м.xml
# <text>REST Letter м.</text>
curl -v -u admin -X DELETE http://localhost:8080/exist/rest/db/testuni

Metadata

Metadata

Assignees

No one assigned

    Labels

    REST APIIssues related to exist-db;s REST APIbugissue confirmed as bug

    Type

    Projects

    Status
    No status

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions