Viorel Lupu created SLING-8375:
----------------------------------
Summary: SlingPostServlet: :import operation must skip protected
properties if present
Key: SLING-8375
URL: https://issues.apache.org/jira/browse/SLING-8375
Project: Sling
Issue Type: Improvement
Components: Servlets
Environment: AEM 6.3
Reporter: Viorel Lupu
Attachments: error-import-json.log
h2. 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#slingpostservlet-operations]
fails when the JSON payload contains protected property names such as:
{code:java}
"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"
{code}
h2. Suggested Improvement
The importer should skip protected properties and proceed with import rather
than failing.
h2. Error.log:
more detailed error log attached to issue
{code:java}
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)
{code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)