EclipseLink 2.4.2, build 'v20130514-5956486' API Reference

org.eclipse.persistence.oxm.record
Class JSONWriterRecord

java.lang.Object
  extended by org.eclipse.persistence.internal.sessions.AbstractRecord
      extended by org.eclipse.persistence.oxm.record.XMLRecord
          extended by org.eclipse.persistence.oxm.record.MarshalRecord
              extended by org.eclipse.persistence.oxm.record.JSONWriterRecord
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, java.util.Map, Record
Direct Known Subclasses:
JSONFormattedWriterRecord

public class JSONWriterRecord
extends MarshalRecord

Use this type of MarshalRecord when the marshal target is a Writer and the JSON should not be formatted with carriage returns or indenting.

XMLContext xmlContext = new XMLContext("session-name");
XMLMarshaller xmlMarshaller = xmlContext.createMarshaller();
JSONRecord jsonWriterRecord = new JSONWriterRecord();
jsonWriterRecord.setWriter(myWriter);
xmlMarshaller.marshal(myObject, jsonWriterRecord);

If the marshal(Writer) and setMediaType(MediaType.APPLICATION_JSON) and setFormattedOutput(false) method is called on XMLMarshaller, then the Writer is automatically wrapped in a JSONWriterRecord.

XMLContext xmlContext = new XMLContext("session-name");
XMLMarshaller xmlMarshaller = xmlContext.createMarshaller();
xmlMarshaller.setMediaType(MediaType.APPLICATION_JSON); xmlMarshaller xmlMarshaller.setFormattedOutput(false);
xmlMarshaller.marshal(myObject, myWriter);

See Also:
XMLMarshaller, Serialized Form

Nested Class Summary
protected  class JSONWriterRecord.JSONWriterRecordContentHandler
          This class will typically be used in conjunction with an XMLFragmentReader.
protected static class JSONWriterRecord.Level
          Instances of this class are used to maintain state about the current level of the JSON message being marshalled.
 
Nested classes/interfaces inherited from class org.eclipse.persistence.oxm.record.MarshalRecord
MarshalRecord.CycleDetectionStack<E>
 
Nested classes/interfaces inherited from class org.eclipse.persistence.internal.sessions.AbstractRecord
org.eclipse.persistence.internal.sessions.AbstractRecord.EntrySet, org.eclipse.persistence.internal.sessions.AbstractRecord.KeySet, org.eclipse.persistence.internal.sessions.AbstractRecord.NoEntry, org.eclipse.persistence.internal.sessions.AbstractRecord.RecordEntry, org.eclipse.persistence.internal.sessions.AbstractRecord.RecordEntryIterator, org.eclipse.persistence.internal.sessions.AbstractRecord.RecordKeyIterator, org.eclipse.persistence.internal.sessions.AbstractRecord.RecordValuesIterator, org.eclipse.persistence.internal.sessions.AbstractRecord.ValuesSet
 
Nested classes/interfaces inherited from interface java.util.Map
java.util.Map.Entry<K,V>
 
Field Summary
protected  java.lang.String attributePrefix
           
protected  java.lang.String callbackName
           
protected  CharacterEscapeHandler characterEscapeHandler
           
protected  boolean charactersAllowed
           
protected  java.nio.charset.CharsetEncoder encoder
           
protected  boolean isProcessingCData
           
protected  boolean isStartElementOpen
           
protected  java.util.Stack<JSONWriterRecord.Level> levels
           
protected static java.lang.String NULL
           
protected  java.lang.String space
           
protected  java.io.Writer writer
           
 
Fields inherited from class org.eclipse.persistence.oxm.record.MarshalRecord
COLON_W_SCHEMA_NIL_ATTRIBUTE, textWrapperFragment, TRUE
 
Fields inherited from class org.eclipse.persistence.oxm.record.XMLRecord
currentObject, equalNamespaceResolvers, hasCustomNamespaceMapper, marshaller, namespaceAware, namespaceResolver, NIL, session, unmarshaller
 
Fields inherited from class org.eclipse.persistence.internal.sessions.AbstractRecord
fields, lookupField, noEntry, nullValueInFields, size, values
 
Constructor Summary
JSONWriterRecord()
           
JSONWriterRecord(java.io.Writer writer)
           
JSONWriterRecord(java.io.Writer writer, java.lang.String callbackName)
           
 
Method Summary
 void attribute(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName, java.lang.String value)
          INTERNAL:
 void attribute(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment, NamespaceResolver namespaceResolver, java.lang.Object value, javax.xml.namespace.QName schemaType)
          Convert the value if necessary and write out the attribute and converted value.
 void attribute(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment, NamespaceResolver namespaceResolver, java.lang.String value)
          INTERNAL:
 void cdata(java.lang.String value)
          INTERNAL:
 void characters(javax.xml.namespace.QName schemaType, java.lang.Object value, java.lang.String mimeType, boolean isCDATA)
          Convert the value if necessary and write out the converted value.
 void characters(javax.xml.namespace.QName schemaType, java.lang.Object value, java.lang.String mimeType, boolean isCDATA, boolean isAttribute)
           
 void characters(java.lang.String value)
          INTERNAL:
 void characters(java.lang.String value, boolean isString, boolean isAttribute)
          INTERNAL:
protected  void closeComplex()
           
 void closeStartElement()
          INTERNAL:
 void defaultNamespaceDeclaration(java.lang.String defaultNamespace)
          Add the defaultNamespace declaration
 void element(org.eclipse.persistence.internal.oxm.XPathFragment frag)
          INTERNAL:
 void emptyAttribute(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment, NamespaceResolver namespaceResolver)
          Used when an nil attribute should be written
 boolean emptyCollection(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment, NamespaceResolver namespaceResolver, boolean openGrouping)
          Handle marshal of an empty collection.
 void emptyComplex(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment, NamespaceResolver namespaceResolver)
          Used when an empty complex item should be written
 void emptySimple(NamespaceResolver namespaceResolver)
          Used when an empty simple value should be written
protected  void endCallback()
           
 void endCollection()
          This method is used to inform the MarshalRecord that it is done receiving element events that are part of a collection.
 void endDocument()
          INTERNAL:
 void endElement(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment, NamespaceResolver namespaceResolver)
          INTERNAL:
protected  void endEmptyCollection()
           
 void endPrefixMappings(NamespaceResolver namespaceResolver)
          INTERNAL: override so we don't iterate over namespaces when endPrefixMapping doesn't do anything
 char getNamespaceSeparator()
          INTERNAL: The character used to separate the prefix and uri portions when namespaces are present
protected  java.lang.String getStringForQName(javax.xml.namespace.QName qName)
           
 org.eclipse.persistence.internal.oxm.XPathFragment getTextWrapperFragment()
          INTERNAL: The optional fragment used to wrap the text() mappings
 java.io.Writer getWriter()
          Return the Writer that the object will be marshalled to.
 boolean isWrapperAsCollectionName()
           
 void marshalWithoutRootElement(org.eclipse.persistence.internal.oxm.TreeObjectBuilder treeObjectBuilder, java.lang.Object object, XMLDescriptor descriptor, XMLRoot root, boolean isXMLRoot)
           
 void namespaceDeclaration(java.lang.String prefix, java.lang.String namespaceURI)
          Add the specified namespace declaration
 void namespaceDeclarations(NamespaceResolver namespaceResolver)
          INTERNAL:
 void nilComplex(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment, NamespaceResolver namespaceResolver)
          INTERNAL:
 void nilSimple(NamespaceResolver namespaceResolver)
          INTERNAL:
 void node(org.w3c.dom.Node node, NamespaceResolver namespaceResolver, java.lang.String uri, java.lang.String name)
          Receive notification of a node.
 void openStartElement(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment, NamespaceResolver namespaceResolver)
          INTERNAL:
 void setCallbackName(java.lang.String callbackName)
           
 void setMarshaller(XMLMarshaller marshaller)
          INTERNAL:
 void setWriter(java.io.Writer writer)
          Set the Writer that the object will be marshalled to.
protected  void startCallback()
          INTERNAL:
 void startCollection()
          This method is used to inform the MarshalRecord that the element events it is about to receive are part of a collection.
 void startDocument(java.lang.String encoding, java.lang.String version)
          INTERNAL:
 void startPrefixMappings(NamespaceResolver namespaceResolver)
          INTERNAL: override so we don't iterate over namespaces when startPrefixMapping doesn't do anything
protected  void writeKey(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment)
           
protected  void writeValue(java.lang.String value, boolean isAttribute)
          INTERNAL:
 
Methods inherited from class org.eclipse.persistence.oxm.record.MarshalRecord
add, addGroupingElement, addPositionalNodes, afterContainmentMarshal, beforeContainmentMarshal, clear, closeStartGroupingElements, endPrefixMapping, getCycleDetectionStack, getDocument, getDOM, getGroupingElements, getLocalName, getNameForFragment, getNameForFragmentBytes, getNamespaceURI, getPositionalNodes, getPrefixForFragment, getValueToWrite, node, openStartGroupingElements, predicateAttribute, processNamespaceResolverForXSIPrefix, put, removeGroupingElement, setGroupingElement, setSession, startPrefixMapping, transformToXML, writeHeader
 
Methods inherited from class org.eclipse.persistence.oxm.record.XMLRecord
attributeWithoutQName, contains, convertToXMLField, convertToXMLField, get, get, getCurrentObject, getDocPresPolicy, getIndicatingNoEntry, getLeafElementType, getMarshaller, getNamespaceResolver, getOwningObject, getSession, getUnmarshaller, hasCustomNamespaceMapper, hasEqualNamespaceResolvers, isNamespaceAware, isXOPPackage, put, resolveNamespacePrefix, setCurrentObject, setCustomNamespaceMapper, setDocPresPolicy, setEqualNamespaceResolvers, setLeafElementType, setLeafElementType, setNamespaceResolver, setOwningObject, setUnmarshaller, setXOPPackage
 
Methods inherited from class org.eclipse.persistence.internal.sessions.AbstractRecord
clone, containsKey, containsKey, containsKey, containsValue, elements, entrySet, get, getField, getFields, getIndicatingNoEntry, getLookupField, getValues, getValues, getValues, hasNullValueInFields, isEmpty, keys, keySet, mergeFrom, put, putAll, remove, remove, remove, replaceAt, resetSize, setFields, setNullValueInFields, setValues, size, toString, values
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Map
equals, hashCode
 

Field Detail

writer

protected java.io.Writer writer

isStartElementOpen

protected boolean isStartElementOpen

isProcessingCData

protected boolean isProcessingCData

levels

protected java.util.Stack<JSONWriterRecord.Level> levels

NULL

protected static final java.lang.String NULL
See Also:
Constant Field Values

attributePrefix

protected java.lang.String attributePrefix

charactersAllowed

protected boolean charactersAllowed

encoder

protected java.nio.charset.CharsetEncoder encoder

space

protected java.lang.String space

characterEscapeHandler

protected CharacterEscapeHandler characterEscapeHandler

callbackName

protected java.lang.String callbackName
Constructor Detail

JSONWriterRecord

public JSONWriterRecord()

JSONWriterRecord

public JSONWriterRecord(java.io.Writer writer)

JSONWriterRecord

public JSONWriterRecord(java.io.Writer writer,
                        java.lang.String callbackName)
Method Detail

setCallbackName

public void setCallbackName(java.lang.String callbackName)

setMarshaller

public void setMarshaller(XMLMarshaller marshaller)
INTERNAL:

Overrides:
setMarshaller in class XMLRecord

emptyCollection

public boolean emptyCollection(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment,
                               NamespaceResolver namespaceResolver,
                               boolean openGrouping)
Handle marshal of an empty collection.

Overrides:
emptyCollection in class MarshalRecord
Parameters:
xPathFragment -
namespaceResolver -
openGrouping - if grouping elements should be marshalled for empty collections
Returns:

getWriter

public java.io.Writer getWriter()
Return the Writer that the object will be marshalled to.

Returns:
The marshal target.

setWriter

public void setWriter(java.io.Writer writer)
Set the Writer that the object will be marshalled to.

Parameters:
writer - The marshal target.

namespaceDeclaration

public void namespaceDeclaration(java.lang.String prefix,
                                 java.lang.String namespaceURI)
Description copied from class: MarshalRecord
Add the specified namespace declaration

Overrides:
namespaceDeclaration in class MarshalRecord

defaultNamespaceDeclaration

public void defaultNamespaceDeclaration(java.lang.String defaultNamespace)
Description copied from class: MarshalRecord
Add the defaultNamespace declaration

Overrides:
defaultNamespaceDeclaration in class MarshalRecord

startDocument

public void startDocument(java.lang.String encoding,
                          java.lang.String version)
INTERNAL:

Specified by:
startDocument in class MarshalRecord
Parameters:
encoding - The XML document will be encoded using this encoding.
version - This specifies the version of XML.

startCallback

protected void startCallback()
                      throws java.io.IOException
INTERNAL:

Throws:
java.io.IOException

endDocument

public void endDocument()
INTERNAL:

Specified by:
endDocument in class MarshalRecord

openStartElement

public void openStartElement(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment,
                             NamespaceResolver namespaceResolver)
INTERNAL:

Overrides:
openStartElement in class MarshalRecord
Parameters:
xPathFragment - The XPathFragment contains the name and prefix information about the XML element being ended.
namespaceResolver - The NamespaceResolver can be used to resolve the namespace URI for the namespace prefix held by the XPathFragment (if required).

element

public void element(org.eclipse.persistence.internal.oxm.XPathFragment frag)
INTERNAL:

Specified by:
element in class MarshalRecord
Parameters:
frag - The XPathFragment of the element

attribute

public void attribute(java.lang.String namespaceURI,
                      java.lang.String localName,
                      java.lang.String qName,
                      java.lang.String value)
INTERNAL:

Specified by:
attribute in class MarshalRecord
Parameters:
namespaceURI - The namespace URI, if the attribute is not namespace qualified the value of this parameter wil be null.
localName - The local name of the attribute.
qName - The qualified name of the attribute.
value - This is the complete value for the attribute.

attribute

public void attribute(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment,
                      NamespaceResolver namespaceResolver,
                      java.lang.String value)
INTERNAL:

Specified by:
attribute in class MarshalRecord
Parameters:
xPathFragment - The XPathFragment contains the name and prefix information about the XML element being ended.
namespaceResolver - The NamespaceResolver can be used to resolve the namespace URI for the namespace prefix held by the XPathFragment (if required).
value - This is the complete value for the attribute.

startPrefixMappings

public void startPrefixMappings(NamespaceResolver namespaceResolver)
INTERNAL: override so we don't iterate over namespaces when startPrefixMapping doesn't do anything

Overrides:
startPrefixMappings in class MarshalRecord

endPrefixMappings

public void endPrefixMappings(NamespaceResolver namespaceResolver)
INTERNAL: override so we don't iterate over namespaces when endPrefixMapping doesn't do anything

Overrides:
endPrefixMappings in class MarshalRecord

closeStartElement

public void closeStartElement()
INTERNAL:

Specified by:
closeStartElement in class MarshalRecord

endElement

public void endElement(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment,
                       NamespaceResolver namespaceResolver)
INTERNAL:

Specified by:
endElement in class MarshalRecord
Parameters:
xPathFragment - The XPathFragment contains the name and prefix information about the XML element being ended.
namespaceResolver - The NamespaceResolver can be used to resolve the namespace URI for the namespace prefix held by the XPathFragment (if required).

closeComplex

protected void closeComplex()
                     throws java.io.IOException
Throws:
java.io.IOException

startCollection

public void startCollection()
Description copied from class: MarshalRecord
This method is used to inform the MarshalRecord that the element events it is about to receive are part of a collection.

Overrides:
startCollection in class MarshalRecord
See Also:
endCollection

endEmptyCollection

protected void endEmptyCollection()

endCallback

protected void endCallback()
                    throws java.io.IOException
Throws:
java.io.IOException

endCollection

public void endCollection()
Description copied from class: MarshalRecord
This method is used to inform the MarshalRecord that it is done receiving element events that are part of a collection.

Overrides:
endCollection in class MarshalRecord
See Also:
startCollection

characters

public void characters(java.lang.String value)
INTERNAL:

Specified by:
characters in class MarshalRecord
Parameters:
value - This is the entire value of the text node.

characters

public void characters(java.lang.String value,
                       boolean isString,
                       boolean isAttribute)
INTERNAL:


attribute

public void attribute(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment,
                      NamespaceResolver namespaceResolver,
                      java.lang.Object value,
                      javax.xml.namespace.QName schemaType)
Description copied from class: MarshalRecord
Convert the value if necessary and write out the attribute and converted value.

Overrides:
attribute in class MarshalRecord

characters

public void characters(javax.xml.namespace.QName schemaType,
                       java.lang.Object value,
                       java.lang.String mimeType,
                       boolean isCDATA)
Description copied from class: MarshalRecord
Convert the value if necessary and write out the converted value.

Overrides:
characters in class MarshalRecord

characters

public void characters(javax.xml.namespace.QName schemaType,
                       java.lang.Object value,
                       java.lang.String mimeType,
                       boolean isCDATA,
                       boolean isAttribute)

namespaceDeclarations

public void namespaceDeclarations(NamespaceResolver namespaceResolver)
INTERNAL:

Overrides:
namespaceDeclarations in class MarshalRecord
Parameters:
namespaceResolver - The NamespaceResolver contains the namespace prefix and URI pairings that need to be declared.

nilComplex

public void nilComplex(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment,
                       NamespaceResolver namespaceResolver)
INTERNAL:

Overrides:
nilComplex in class MarshalRecord

nilSimple

public void nilSimple(NamespaceResolver namespaceResolver)
INTERNAL:

Overrides:
nilSimple in class MarshalRecord

emptySimple

public void emptySimple(NamespaceResolver namespaceResolver)
Used when an empty simple value should be written

Overrides:
emptySimple in class MarshalRecord
Since:
EclipseLink 2.4

emptyAttribute

public void emptyAttribute(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment,
                           NamespaceResolver namespaceResolver)
Description copied from class: MarshalRecord
Used when an nil attribute should be written

Overrides:
emptyAttribute in class MarshalRecord

emptyComplex

public void emptyComplex(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment,
                         NamespaceResolver namespaceResolver)
Used when an empty complex item should be written

Overrides:
emptyComplex in class MarshalRecord
Since:
EclipseLink 2.4

marshalWithoutRootElement

public void marshalWithoutRootElement(org.eclipse.persistence.internal.oxm.TreeObjectBuilder treeObjectBuilder,
                                      java.lang.Object object,
                                      XMLDescriptor descriptor,
                                      XMLRoot root,
                                      boolean isXMLRoot)
Overrides:
marshalWithoutRootElement in class MarshalRecord

cdata

public void cdata(java.lang.String value)
INTERNAL:

Specified by:
cdata in class MarshalRecord
Parameters:
value - This is the value of the text to be wrapped

getNamespaceSeparator

public char getNamespaceSeparator()
INTERNAL: The character used to separate the prefix and uri portions when namespaces are present

Overrides:
getNamespaceSeparator in class XMLRecord
Since:
2.4

getTextWrapperFragment

public org.eclipse.persistence.internal.oxm.XPathFragment getTextWrapperFragment()
INTERNAL: The optional fragment used to wrap the text() mappings

Overrides:
getTextWrapperFragment in class MarshalRecord
Since:
2.4

writeKey

protected void writeKey(org.eclipse.persistence.internal.oxm.XPathFragment xPathFragment)
                 throws java.io.IOException
Throws:
java.io.IOException

writeValue

protected void writeValue(java.lang.String value,
                          boolean isAttribute)
INTERNAL:


getStringForQName

protected java.lang.String getStringForQName(javax.xml.namespace.QName qName)
Overrides:
getStringForQName in class MarshalRecord

node

public void node(org.w3c.dom.Node node,
                 NamespaceResolver namespaceResolver,
                 java.lang.String uri,
                 java.lang.String name)
Receive notification of a node.

Specified by:
node in class MarshalRecord
Parameters:
node - The Node to be added to the document
namespaceResolver - The NamespaceResolver can be used to resolve the namespace URI/prefix of the node
name - replacement root namespace for the node namespace URI/prefix of the node

isWrapperAsCollectionName

public boolean isWrapperAsCollectionName()
Overrides:
isWrapperAsCollectionName in class MarshalRecord

EclipseLink 2.4.2, build 'v20130514-5956486' API Reference