Class JsonReader
- java.lang.Object
-
- org.apache.sling.jcr.contentloader.internal.readers.JsonReader
-
- All Implemented Interfaces:
ContentReader
- Direct Known Subclasses:
OrderedJsonReader
public class JsonReader extends Object implements ContentReader
TheJsonReader
Parses a Json document on content load and creates the corresponding node structure with properties. Will not update protected nodes and properties like rep:Policy and children.Nodes, Properties and in fact complete subtrees may be described in JSON files using the following skeleton structure (see http://www.json.org for information on the syntax of JSON) : # the name of the node is taken from the name of the file without the .json ext. { # optional primary node type, default "nt:unstructured" "jcr:primaryType":"sling:ScriptedComponent", # optional mixin node types as array "jcr:mixinTypes": [ ], # "properties" are added as key value pairs, the name of the key being the name # of the property. The value is either the string property value, array for # multi-values or an object whose value[s] property denotes the property # value(s) and whose type property denotes the property type "sling:contentClass": "com.day.sling.jcr.test.Test", "sampleMulti": [ "v1", "v2" ], "sampleStruct": 1, "sampleStructMulti": [ 1, 2, 3 ], # reference properties start with jcr:reference "jcr:reference:sampleReference": "/test/content", # path propertie start with jcr:path "jcr:path:sampleReference": "/test/path", # nested nodes are added as nested maps. "sling:scripts": { "jcr:primaryType": "sling:ScriptList", "script1" :{ "primaryNodeType": "sling:Script", "sling:name": "/test/content/jsp/start.jsp", "sling:type": "jsp", "sling:glob": "*" } } }
-
-
Field Summary
Fields Modifier and Type Field Description protected static Set<String>
ignoredNames
-
Fields inherited from interface org.apache.sling.jcr.contentloader.ContentReader
PROPERTY_EXTENSIONS, PROPERTY_TYPES
-
-
Constructor Summary
Constructors Constructor Description JsonReader()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
createNode(String name, jakarta.json.JsonObject obj, ContentCreator contentCreator)
protected void
createPrincipals(Object obj, ContentCreator contentCreator)
Create or update one or more user and/or groups{ "security:principals" : [ { "name":"owner", "isgroup":"true", "members":[], "dynamic":"true" } ], }
protected void
createProperty(String name, Object value, ContentCreator contentCreator)
protected boolean
handleSecurity(String n, Object o, ContentCreator contentCreator)
void
parse(InputStream ins, ContentCreator contentCreator)
Read the content from the input stream and create the content using the provided content creator.void
parse(URL url, ContentCreator contentCreator)
Read the content from the URL and create the content using the provided content creator.protected Set<LocalRestriction>
toLocalRestrictions(jakarta.json.JsonObject allowOrDenyObj, Map<String,org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionDefinition> srMap, javax.jcr.ValueFactory vf)
Construct a LocalRestriction using data from the json objectprotected Map<String,org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionDefinition>
toSrMap(javax.jcr.Node parentNode)
Calculate a map of restriction names to the restriction definitionprotected void
writeChildren(jakarta.json.JsonObject obj, ContentCreator contentCreator)
-
-
-
Method Detail
-
parse
public void parse(URL url, ContentCreator contentCreator) throws IOException, javax.jcr.RepositoryException
Description copied from interface:ContentReader
Read the content from the URL and create the content using the provided content creator.- Specified by:
parse
in interfaceContentReader
- Parameters:
url
- The input stream.- Throws:
IOException
- If anything goes wrong.javax.jcr.RepositoryException
- See Also:
ContentReader.parse(java.net.URL, org.apache.sling.jcr.contentloader.ContentCreator)
-
parse
public void parse(InputStream ins, ContentCreator contentCreator) throws IOException, javax.jcr.RepositoryException
Description copied from interface:ContentReader
Read the content from the input stream and create the content using the provided content creator.- Specified by:
parse
in interfaceContentReader
- Parameters:
ins
- the input stream.- Throws:
IOException
- If anything goes wrong.javax.jcr.RepositoryException
-
handleSecurity
protected boolean handleSecurity(String n, Object o, ContentCreator contentCreator) throws javax.jcr.RepositoryException
- Throws:
javax.jcr.RepositoryException
-
writeChildren
protected void writeChildren(jakarta.json.JsonObject obj, ContentCreator contentCreator) throws javax.jcr.RepositoryException
- Throws:
javax.jcr.RepositoryException
-
createNode
protected void createNode(String name, jakarta.json.JsonObject obj, ContentCreator contentCreator) throws javax.jcr.RepositoryException
- Throws:
javax.jcr.RepositoryException
-
createProperty
protected void createProperty(String name, Object value, ContentCreator contentCreator) throws javax.jcr.RepositoryException
- Throws:
javax.jcr.RepositoryException
-
createPrincipals
protected void createPrincipals(Object obj, ContentCreator contentCreator) throws javax.jcr.RepositoryException
Create or update one or more user and/or groups{ "security:principals" : [ { "name":"owner", "isgroup":"true", "members":[], "dynamic":"true" } ], }
- Parameters:
obj
- ObjectcontentCreator
- Content creator- Throws:
javax.jcr.RepositoryException
- Repository exception
-
toSrMap
protected Map<String,org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionDefinition> toSrMap(javax.jcr.Node parentNode) throws javax.jcr.RepositoryException
Calculate a map of restriction names to the restriction definition- Parameters:
parentNode
- the node the restrictions are for- Throws:
javax.jcr.RepositoryException
-
toLocalRestrictions
protected Set<LocalRestriction> toLocalRestrictions(jakarta.json.JsonObject allowOrDenyObj, Map<String,org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionDefinition> srMap, javax.jcr.ValueFactory vf) throws javax.jcr.RepositoryException
Construct a LocalRestriction using data from the json object- Parameters:
allowOrDenyObj
- the json objectsrMap
- map of restriction names to the restriction definitionvf
- the ValueFactory- Throws:
javax.jcr.RepositoryException
-
-