Hi Konrad,

On Wed, 2016-02-24 at 15:33 +0100, Konrad Windszus wrote:
> Hi,
> in the context of [0] the handling of usePut=true was extended to
> also create intermediate nodes through the Sling POST servlet.
> Currently the maven-sling-plugin behaves like this:
> 
> If you use usePut=true then you must point the targetUrl towards a
> WebDAV implementation (which handles the PUT request). If the PUT
> returns a 409 (because the parent is not yet there) the plugin relies
> on the Sling POST servlet to create the intermediate parent nodes. In
> addition there is a check if the parent resource is already
> ther  leveraging the Sling GET servlet together with the JSON
> rendition (GET request with .json extension).
> In case you use usePut=false, the ReST plugin from the Felix
> Webconsole is used [1].
> 
> For me the design being implemented in [0] seems weird, because by
> setting usePut=true you have a server-side dependency on 1.) the
> webdav bundle 2.) the Sling POST servlet bundle and 3.) The Sling
> Default GET Servlet (with JSON rendition enabled). Also since the
> same targetUrl is used in the client for all requests, all servlets
> must be listening below the same root path. 
> 
> Therefore I would propose to either
> a) only rely on the WebDAV bundle if usePut=true and therefore create
> the intermediate folders also with a MKCOL request (as proposed by
> Felix in http://apache-sling.73963.n3.nabble.com/Issue-using-PUT-with
> -maven-sling-plugin-and-non-existent-path-tp3885587p3916882.html).
> The check if a collection is already existing should be done through
> a HEAD request on the collection (instead of leveraging the GET
> servlet with the JSON rendition)
> b) only use the Sling POST servlet  if usePut=true as proposed by
> Carsten in [3].
> 
> I would be in favor of a) because if you use the Sling WebDAV bundle
> the nodetype "sling:Folder" seems to be the default [4].

I agree, we can improve the way this works.

Regarding your proposals: 

- removing the reliance on the Sling GET servlet sounds good to me.
- I don't have a strong opinion regarding a vs b ( WebDav vs Post ) but
keep in mind that the Sling POST servlet is more likely to be present
and active compared to the Webdav servlet. Also, with the post servlet
we can control the JCR primary type to use, but that's not possible
with the webdav servlet AFAICT 

Thanks,

Robert
 

> 
> WDYT?
> Thanks,
> Konrad
> 
> [0] - https://issues.apache.org/jira/browse/SLING-3540
> [1] - http://felix.apache.org/documentation/subprojects/apache-felix-
> web-console/web-console-restful-api.html#bundles-plugin
> [2] - http://apache-sling.73963.n3.nabble.com/Issue-using-PUT-with-ma
> ven-sling-plugin-and-non-existent-path-tp3885587p3916882.html
> [3] - http://apache-sling.73963.n3.nabble.com/Issue-using-PUT-with-ma
> ven-sling-plugin-and-non-existent-path-tp3885587p3919590.html
> [4] - https://github.com/apache/sling/blob/61220a4667bc16b7b66a777f23
> 83ec3ccf7c245a/bundles/jcr/webdav/src/main/java/org/apache/sling/jcr/
> webdav/impl/servlets/SlingWebDavServlet.java#L125

Reply via email to