org.apache.sling.commons.json.jcr
Class JsonItemWriter

java.lang.Object
  extended by org.apache.sling.commons.json.jcr.JsonItemWriter

public class JsonItemWriter
extends java.lang.Object

Dumps JCR Items as JSON data. The dump methods are threadsafe.


Field Summary
static java.util.Locale DATE_FORMAT_LOCALE
          Used to format date values
static java.lang.String ECMA_DATE_FORMAT
          Used to format date values
 
Constructor Summary
JsonItemWriter(java.util.Set<java.lang.String> propertyNamesToIgnore)
          Create a JsonItemWriter
 
Method Summary
 void dump(javax.jcr.NodeIterator it, java.io.Writer out)
          Dump all Nodes of given NodeIterator in JSON
protected  void dump(javax.jcr.Node node, JSONWriter w, int currentRecursionLevel, int maxRecursionLevels)
          Dump given node in JSON, optionally recursing into its child nodes
 void dump(javax.jcr.Node node, java.io.Writer w, int maxRecursionLevels)
          Dump given node in JSON, optionally recursing into its child nodes
 void dump(javax.jcr.Node node, java.io.Writer w, int maxRecursionLevels, boolean tidy)
          Dump given node in JSON, optionally recursing into its child nodes
 void dump(javax.jcr.Property p, java.io.Writer w)
          Dump given property in JSON
protected  void dumpSingleNode(javax.jcr.Node n, JSONWriter w, int currentRecursionLevel, int maxRecursionLevels)
          Dump a single node
protected  void dumpValue(JSONWriter w, javax.jcr.Value v)
          Writes the given value to the JSON writer. currently the following conversions are done: JSR Property Type JSON Value Type BINARY always 0 as long DATE converted date string as defined by ECMA BOOLEAN boolean LONG long DOUBLE double all other string 1 Currently not implemented and uses 0 as default.
static java.lang.String format(java.util.Calendar date)
           
protected  boolean recursionLevelActive(int currentRecursionLevel, int maxRecursionLevels)
          true if the current recursion level is active
protected  void writeProperty(JSONWriter w, javax.jcr.Property p)
          Write a single property
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ECMA_DATE_FORMAT

public static final java.lang.String ECMA_DATE_FORMAT
Used to format date values

See Also:
Constant Field Values

DATE_FORMAT_LOCALE

public static final java.util.Locale DATE_FORMAT_LOCALE
Used to format date values

Constructor Detail

JsonItemWriter

public JsonItemWriter(java.util.Set<java.lang.String> propertyNamesToIgnore)
Create a JsonItemWriter

Parameters:
propertyNamesToIgnore - if not null, a property having a name from this set of values is ignored. TODO we should use a filtering interface to make the selection of which Nodes and Properties to dump more flexible.
Method Detail

dump

public void dump(javax.jcr.NodeIterator it,
                 java.io.Writer out)
          throws javax.jcr.RepositoryException,
                 JSONException
Dump all Nodes of given NodeIterator in JSON

Throws:
JSONException
javax.jcr.RepositoryException

dump

public void dump(javax.jcr.Node node,
                 java.io.Writer w,
                 int maxRecursionLevels)
          throws javax.jcr.RepositoryException,
                 JSONException
Dump given node in JSON, optionally recursing into its child nodes

Throws:
javax.jcr.RepositoryException
JSONException

dump

public void dump(javax.jcr.Node node,
                 java.io.Writer w,
                 int maxRecursionLevels,
                 boolean tidy)
          throws javax.jcr.RepositoryException,
                 JSONException
Dump given node in JSON, optionally recursing into its child nodes

Parameters:
tidy - if true the json dump is nicely formatted
Throws:
javax.jcr.RepositoryException
JSONException

dump

public void dump(javax.jcr.Property p,
                 java.io.Writer w)
          throws JSONException,
                 javax.jcr.ValueFormatException,
                 javax.jcr.RepositoryException
Dump given property in JSON

Throws:
JSONException
javax.jcr.ValueFormatException
javax.jcr.RepositoryException

dump

protected void dump(javax.jcr.Node node,
                    JSONWriter w,
                    int currentRecursionLevel,
                    int maxRecursionLevels)
             throws javax.jcr.RepositoryException,
                    JSONException
Dump given node in JSON, optionally recursing into its child nodes

Throws:
javax.jcr.RepositoryException
JSONException

dumpSingleNode

protected void dumpSingleNode(javax.jcr.Node n,
                              JSONWriter w,
                              int currentRecursionLevel,
                              int maxRecursionLevels)
                       throws javax.jcr.RepositoryException,
                              JSONException
Dump a single node

Throws:
javax.jcr.RepositoryException
JSONException

recursionLevelActive

protected boolean recursionLevelActive(int currentRecursionLevel,
                                       int maxRecursionLevels)
true if the current recursion level is active


writeProperty

protected void writeProperty(JSONWriter w,
                             javax.jcr.Property p)
                      throws javax.jcr.ValueFormatException,
                             javax.jcr.RepositoryException,
                             JSONException
Write a single property

Throws:
javax.jcr.ValueFormatException
javax.jcr.RepositoryException
JSONException

dumpValue

protected void dumpValue(JSONWriter w,
                         javax.jcr.Value v)
                  throws javax.jcr.ValueFormatException,
                         java.lang.IllegalStateException,
                         javax.jcr.RepositoryException,
                         JSONException
Writes the given value to the JSON writer. currently the following conversions are done:
JSR Property Type JSON Value Type
BINARY always 0 as long
DATE converted date string as defined by ECMA
BOOLEAN boolean
LONG long
DOUBLE double
all other string
1 Currently not implemented and uses 0 as default.

Parameters:
w - json writer
v - value to dump
Throws:
javax.jcr.ValueFormatException
java.lang.IllegalStateException
javax.jcr.RepositoryException
JSONException

format

public static java.lang.String format(java.util.Calendar date)


Copyright © 2007-2009. All Rights Reserved.