Details
Description
Description
Posting JSON content to the SlingPostServlet with :import operation as documented at https://sling.apache.org/documentation/bundles/manipulating-content-the-slingpostservlet-servlets-post.html#importing-content-structures fails when the JSON payload contains protected property names such as:
"jcr:createdBy", "jcr:created", "jcr:createdBy", "jcr:baseVersion", "jcr:lastModified", "jcr:lastModifiedBy", "jcr:uuid", "cq:lastModified", "cq:lastModifiedBy", "cq:lastReplicated", "jcr:versionHistory", "rep:policy", "onTime", "offTime"
# curl invocation curl -L -vv -u admin:admin \ -F ":operation=import" \ -F ":contentType=json" \ -F ":name=newcontentnode" \ -F ":content=@data.json" \ -F ":replace=true" \ -H 'Referer: http://localhost:4502/content/we-retail/language-masters/en' \ -H 'User-Agent: Adobe-Campaign/5.0' \ http://localhost:4502/content/we-retail/language-masters/en
Suggested Improvement
Add a new POST parameter :ignoreProperties which can take a comma-separated list of properties for the importer to skip.
Error.log:
more detailed error log attached to issue
26.04.2019 16:34:55.298 *ERROR* [0:0:0:0:0:0:0:1 [1556289295274] POST /content/we-retail/language-masters HTTP/1.1] org.apache.sling.servlets.post.impl.operations.ImportOperation Exception during response processing.
javax.jcr.nodetype.ConstraintViolationException: Property is protected: jcr:createdBy = admin
at org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate.setProperty(NodeDelegate.java:525)
at org.apache.jackrabbit.oak.jcr.session.NodeImpl$35.perform(NodeImpl.java:1376)
at org.apache.jackrabbit.oak.jcr.session.NodeImpl$35.perform(NodeImpl.java:1364)
at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:208)
at org.apache.jackrabbit.oak.jcr.session.ItemImpl.perform(ItemImpl.java:112)
at org.apache.jackrabbit.oak.jcr.session.NodeImpl.internalSetProperty(NodeImpl.java:1364)
at org.apache.jackrabbit.oak.jcr.session.NodeImpl.setProperty(NodeImpl.java:434)
at org.apache.sling.jcr.contentloader.internal.DefaultContentCreator.createProperty(DefaultContentCreator.java:361)
at org.apache.sling.jcr.contentloader.internal.readers.JsonReader.createProperty(JsonReader.java:226)
at org.apache.sling.jcr.contentloader.internal.readers.JsonReader.createNode(JsonReader.java:199)
at org.apache.sling.jcr.contentloader.internal.readers.JsonReader.createNode(JsonReader.java:197)
at org.apache.sling.jcr.contentloader.internal.readers.JsonReader.parse(JsonReader.java:159)
at org.apache.sling.jcr.contentloader.internal.DefaultContentImporter.importContent(DefaultContentImporter.java:93)
at org.apache.sling.servlets.post.impl.operations.ImportOperation.doRun(ImportOperation.java:176)
at org.apache.sling.servlets.post.AbstractPostOperation.run(AbstractPostOperation.java:97)
at org.apache.sling.servlets.post.impl.SlingPostServlet.doPost(SlingPostServlet.java:205)
at org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:146)
at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:342)
at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:374)
at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:552)
Attachments
Attachments
Issue Links
- links to