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

angela resolved JCR-2589.
-------------------------

       Resolution: Fixed
    Fix Version/s: 2.1.0
         Assignee: angela

fixed as proposed.

however, i didn't run the litmus test... will do that some time after easter.
nor did i check spi2dav. the server side is prepared to handle 
DavResource#addMember with an index (and i remember that added this to 
circumvent the DAV limitation on MKCOL that collides with the JCR same-name 
siblings. but i don't remember if i consistently used this on the spi2dav 
client side.... spi2davex isn't affected anyway).

> WebDav MKCOL on a directory that already exists generates a 
> IllegalStateException
> ---------------------------------------------------------------------------------
>
>                 Key: JCR-2589
>                 URL: https://issues.apache.org/jira/browse/JCR-2589
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-webdav
>    Affects Versions: 2.0.0
>            Reporter: Ian Boston
>            Assignee: angela
>             Fix For: 2.1.0
>
>
> when performing a MKCOL on a resource that already exists, following is 
> thrown.
> 31.03.2010 16:14:10.760 *ERROR* [127.0.0.1 [1270012450463] MKCOL 
> /org.apache.sling.launchpad.testing-6-SNAPSHOT/apps HTTP/1.1] 
> org.apache.sling.engine.impl.SlingMainServlet service: Uncaught Throwable 
> java.lang.IllegalStateException: Response has already been committed
>        at 
> org.apache.sling.engine.impl.SlingHttpServletResponseImpl.checkCommitted(SlingHttpServletResponseImpl.java:398)
>        at 
> org.apache.sling.engine.impl.SlingHttpServletResponseImpl.setStatus(SlingHttpServletResponseImpl.java:265)
>        at 
> org.apache.jackrabbit.webdav.WebdavResponseImpl.setStatus(WebdavResponseImpl.java:276)
>        at 
> org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.doMkCol(AbstractWebdavServlet.java:548)
>        at 
> org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.execute(AbstractWebdavServlet.java:256)
>        at 
> org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.service(AbstractWebdavServlet.java:196)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>        at 
> org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:523)
> ....
> I think a return after the sendError is required ?
> in AbstractWebdavServlet.doMkCol(...) 
>    protected void doMkCol(WebdavRequest request, WebdavResponse response,
>                           DavResource resource) throws IOException, 
> DavException {
>        DavResource parentResource = resource.getCollection();
>        if (parentResource == null || !parentResource.exists() || 
> !parentResource.isCollection()) {
>            // parent does not exist or is not a collection
>            response.sendError(DavServletResponse.SC_CONFLICT);
>            return;
>        }
>        // shortcut: mkcol is only allowed on deleted/non-existing resources
>        if (resource.exists()) {
>            response.sendError(DavServletResponse.SC_METHOD_NOT_ALLOWED);
> +          return;
>        }
>        if (request.getContentLength() > 0 || 
> request.getHeader("Transfer-Encoding") != null) {
>            parentResource.addMember(resource, getInputContext(request, 
> request.getInputStream()));
>        } else {
>            parentResource.addMember(resource, getInputContext(request, null));
>        }
>        response.setStatus(DavServletResponse.SC_CREATED);
>    }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to