org.apache.sling.jcr.contentloader.internal.readers
Class JsonReader

java.lang.Object
  extended by org.apache.sling.jcr.contentloader.internal.readers.JsonReader
All Implemented Interfaces:
ContentReader

public class JsonReader
extends Object
implements ContentReader

The JsonReader 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
static ImportProvider PROVIDER
           
 
Constructor Summary
JsonReader()
           
 
Method Summary
protected  void createAce(JSONObject ace, ContentCreator contentCreator)
          Create or update an access control entry
protected  void createAcl(Object obj, ContentCreator contentCreator)
          Create or update one or more access control entries for the current node.
protected  void createNode(String name, JSONObject obj, ContentCreator contentCreator)
           
protected  void createPrincipal(JSONObject json, ContentCreator contentCreator)
          Create or update a user or group
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  String getName(String name)
           
protected  int getType(String name, Object object)
           
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PROVIDER

public static final ImportProvider PROVIDER
Constructor Detail

JsonReader

public JsonReader()
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 interface ContentReader
Parameters:
url - The input stream.
Throws:
IOException
javax.jcr.RepositoryException
See Also:
ContentReader.parse(java.net.URL, org.apache.sling.jcr.contentloader.internal.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 interface ContentReader
Parameters:
ins - the input stream.
Throws:
IOException
javax.jcr.RepositoryException

createNode

protected void createNode(String name,
                          JSONObject obj,
                          ContentCreator contentCreator)
                   throws JSONException,
                          javax.jcr.RepositoryException
Throws:
JSONException
javax.jcr.RepositoryException

createProperty

protected void createProperty(String name,
                              Object value,
                              ContentCreator contentCreator)
                       throws JSONException,
                              javax.jcr.RepositoryException
Throws:
JSONException
javax.jcr.RepositoryException

getType

protected int getType(String name,
                      Object object)

getName

protected String getName(String name)

createPrincipals

protected void createPrincipals(Object obj,
                                ContentCreator contentCreator)
                         throws JSONException,
                                javax.jcr.RepositoryException
Create or update one or more user and/or groups { "security:principals" : [ { "name":"owner", "isgroup":"true", "members":[], "dynamic":"true" } ], }

Throws:
JSONException
javax.jcr.RepositoryException

createPrincipal

protected void createPrincipal(JSONObject json,
                               ContentCreator contentCreator)
                        throws JSONException,
                               javax.jcr.RepositoryException
Create or update a user or group

Throws:
JSONException
javax.jcr.RepositoryException

createAcl

protected void createAcl(Object obj,
                         ContentCreator contentCreator)
                  throws JSONException,
                         javax.jcr.RepositoryException
Create or update one or more access control entries for the current node. { "security:acl" : [ { "principal" : "username1", "granted" : [ "jcr:read", "jcr:write" ], "denied" : [ ] }, { "principal" : "groupname1", "granted" : [ "jcr:read", "jcr:write" ] } ] }

Throws:
JSONException
javax.jcr.RepositoryException

createAce

protected void createAce(JSONObject ace,
                         ContentCreator contentCreator)
                  throws JSONException,
                         javax.jcr.RepositoryException
Create or update an access control entry

Throws:
JSONException
javax.jcr.RepositoryException


Copyright © 2007-2013 The Apache Software Foundation. All Rights Reserved.