[jira] [Updated] (JCR-4146) json extension is removed by AbstractWebdavServlet on COPY request

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

[jira] [Updated] (JCR-4146) json extension is removed by AbstractWebdavServlet on COPY request

JIRA jira@apache.org

     [ https://issues.apache.org/jira/browse/JCR-4146?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Julian Reschke updated JCR-4146:
    Attachment: JCR-4146.diff

Test case and potential patch.

The change is to extend the {{DavResourceLocator}} interface, so that the JSON handling can be skipped when processing Destination header fields.

I'm not totally sure that this is the right approach, but it seems to fix this problem. There's also the issue that this requires an interface extension, making a version bump necessary. This could probably be addressed with an extension interface if needed.

[~anchela] - feedback appreciated.

> json extension is removed by AbstractWebdavServlet on COPY request
> ------------------------------------------------------------------
>                 Key: JCR-4146
>                 URL: https://issues.apache.org/jira/browse/JCR-4146
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-webdav
>    Affects Versions: 2.15.3
>            Reporter: Ana Vinatoru
>            Assignee: Julian Reschke
>         Attachments: JCR-4146.diff
> This issue was first observed via crxDE: the user did a copy / paste on a node with the .json extension (let's say test.json). After saving, the new node was named "Copy of test" instead of "Copy of test.json".
> I tracked the request to the AbstractWebdavServlet.doCopy method - and this is where the .json extension seems to be lost.
> The Destination header sent by crxde includes the extension, but the new resource created in doCopy does not have it.
> The request looked like this:
> {code:java}
> curl -u admin:admin 'http://localhost:4502/crx/server/crx.default/jcr%3aroot/libs/test.json' -X COPY -H 'Overwrite: T' -H 'Destination: /crx/server/crx.default/jcr%3aroot/libs/Copy%20of%20test.json' -v
> {code}
> To rule out issues in other layers, I tested with the Jackrabbit 2.14.x standalone.
> I uploaded the test.json file via WebDav, then executed the following curl request:
> {code:java}
> curl -u admin:admin 'http://localhost:9001/server/default/jcr:root/test.json' -X COPY -H 'Overwrite: T' -H 'Destination: /server/default/jcr:root/copytest.json' -v
> {code}
> The new node was created, but instead of being named "copytest.json", it is called "copytest".

This message was sent by Atlassian JIRA