You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Ian Boston (JIRA)" <ji...@apache.org> on 2010/03/31 08:56:27 UTC
[jira] Created: (JCR-2589) WebDav MKCOL on a directory that already
exists generates a IllegalStateException
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
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.
[jira] Resolved: (JCR-2589) WebDav MKCOL on a directory that
already exists generates a IllegalStateException
Posted by "angela (JIRA)" <ji...@apache.org>.
[ 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.