Class JSONWriterRecord
- All Implemented Interfaces:
AbstractMarshalRecord<CoreAbstractSession,,CoreField, XMLMarshaller, NamespaceResolver> MarshalRecord<CoreAbstractSession,,CoreField, XMLMarshaller, NamespaceResolver> XMLRecord<CoreAbstractSession>
- Direct Known Subclasses:
JSONFormattedWriterRecord
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classThis class will typically be used in conjunction with an XMLFragmentReader.protected static classInstances of this class are used to maintain state about the current level of the JSON message being marshalled.protected static interfaceprotected static classNested classes/interfaces inherited from interface org.eclipse.persistence.internal.oxm.record.MarshalRecord
MarshalRecord.CycleDetectionStack<E>Nested classes/interfaces inherited from interface org.eclipse.persistence.internal.oxm.record.XMLRecord
XMLRecord.Nil -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Stringprotected Stringprotected CharacterEscapeHandlerprotected booleanprotected CharsetEncoderprotected booleanprotected JSONWriterRecord.Levelprotected static final Stringprotected JSONWriterRecord.OutputFields inherited from class org.eclipse.persistence.oxm.record.MarshalRecord
COLON_W_SCHEMA_NIL_ATTRIBUTE, textWrapperFragment, TRUEFields inherited from class org.eclipse.persistence.internal.oxm.record.AbstractMarshalRecordImpl
equalNamespaceResolvers, hasCustomNamespaceMapper, marshaller, namespaceAware, namespaceResolver, sessionFields inherited from interface org.eclipse.persistence.internal.oxm.record.XMLRecord
DEFAULT_ATTRIBUTE_GROUP, NIL -
Constructor Summary
ConstructorsConstructorDescriptionJSONWriterRecord(OutputStream outputStream) JSONWriterRecord(OutputStream outputStream, String callbackName) JSONWriterRecord(Writer writer) JSONWriterRecord(Writer writer, String callbackName) -
Method Summary
Modifier and TypeMethodDescriptionvoidINTERNAL:voidattribute(XPathFragment xPathFragment, NamespaceResolver namespaceResolver, Object value, QName schemaType) Convert the value if necessary and write out the attribute and converted value.voidattribute(XPathFragment xPathFragment, NamespaceResolver namespaceResolver, String value) INTERNAL:voidINTERNAL:voidcharacters(String value) INTERNAL:voidcharacters(String value, boolean isString, boolean isAttribute) INTERNAL:voidcharacters(QName schemaType, Object value, String mimeType, boolean isCDATA) Convert the value if necessary and write out the converted value.voidcharacters(QName schemaType, Object value, String mimeType, boolean isCDATA, boolean isAttribute) protected voidvoidINTERNAL:voiddefaultNamespaceDeclaration(String defaultNamespace) Add the defaultNamespace declarationvoidelement(XPathFragment frag) INTERNAL:voidemptyAttribute(XPathFragment xPathFragment, NamespaceResolver namespaceResolver) Used when an nil attribute should be writtenbooleanemptyCollection(XPathFragment xPathFragment, NamespaceResolver namespaceResolver, boolean openGrouping) Handle marshal of an empty collection.voidemptyComplex(XPathFragment xPathFragment, NamespaceResolver namespaceResolver) Used when an empty complex item should be writtenvoidemptySimple(NamespaceResolver namespaceResolver) Used when an empty simple value should be writtenprotected voidvoidThis method is used to inform the MarshalRecord that it is done receiving element events that are part of a collection.voidINTERNAL:voidendElement(XPathFragment xPathFragment, NamespaceResolver namespaceResolver) INTERNAL:protected voidvoidendPrefixMappings(NamespaceResolver namespaceResolver) INTERNAL: override so we don't iterate over namespaces when endPrefixMapping doesn't do anythingvoidflush()voidcharINTERNAL: The character used to separate the prefix and uri portions when namespaces are presentprotected StringgetStringForQName(QName qName) INTERNAL: The optional fragment used to wrap the text() mappingsReturn the Writer that the object will be marshalled to.booleanvoidmarshalWithoutRootElement(ObjectBuilder treeObjectBuilder, Object object, Descriptor descriptor, Root root, boolean isXMLRoot) INTERNAL:voidnamespaceDeclaration(String prefix, String namespaceURI) Add the specified namespace declarationvoidnamespaceDeclarations(NamespaceResolver namespaceResolver) INTERNAL:voidnilComplex(XPathFragment xPathFragment, NamespaceResolver namespaceResolver) INTERNAL:voidnilSimple(NamespaceResolver namespaceResolver) INTERNAL:voidnode(Node node, NamespaceResolver namespaceResolver, String uri, String name) Receive notification of a node.voidopenStartElement(XPathFragment xPathFragment, NamespaceResolver namespaceResolver) INTERNAL:voidsetCallbackName(String callbackName) voidsetMarshaller(XMLMarshaller marshaller) INTERNAL:voidSet the Writer that the object will be marshalled to.protected voidINTERNAL:voidThis method is used to inform the MarshalRecord that the element events it is about to receive are part of a collection.voidstartDocument(String encoding, String version) INTERNAL:voidstartPrefixMappings(NamespaceResolver namespaceResolver) INTERNAL: override so we don't iterate over namespaces when startPrefixMapping doesn't do anythingprotected voidwriteKey(XPathFragment xPathFragment) protected voidprotected voidprotected voidwriteValue(String value, boolean isAttribute) INTERNAL:Methods inherited from class org.eclipse.persistence.oxm.record.MarshalRecord
add, addGroupingElement, addPositionalNodes, afterContainmentMarshal, beforeContainmentMarshal, clear, closeStartGroupingElements, endPrefixMapping, getCurrentAttributeGroup, getCycleDetectionStack, getDocument, getDOM, getGroupingElements, getLocalName, getNameForFragment, getNamespaceURI, getPositionalNodes, getPrefixBytes, getPrefixForFragment, getValueToWrite, node, openStartGroupingElements, popAttributeGroup, predicateAttribute, processNamespaceResolverForXSIPrefix, pushAttributeGroup, put, removeGroupingElement, setGroupingElement, setSession, startPrefixMapping, transformToXML, writeHeaderMethods inherited from class org.eclipse.persistence.internal.oxm.record.AbstractMarshalRecordImpl
addExtraNamespacesToNamespaceResolver, addXsiTypeAndClassIndicatorIfRequired, addXsiTypeAndClassIndicatorIfRequired, attributeWithoutQName, getConversionManager, getLeafElementType, getMarshaller, getNamespaceResolver, getOwningObject, getSession, hasCustomNamespaceMapper, hasEqualNamespaceResolvers, isNamespaceAware, isXOPPackage, removeExtraNamespacesFromNamespaceResolver, resolveNamespacePrefix, setCustomNamespaceMapper, setEqualNamespaceResolvers, setLeafElementType, setLeafElementType, setNamespaceResolver, setOwningObject, setXOPPackage, writeXsiTypeAttribute, writeXsiTypeAttributeMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.eclipse.persistence.internal.oxm.record.AbstractMarshalRecord
addExtraNamespacesToNamespaceResolver, addXsiTypeAndClassIndicatorIfRequired, addXsiTypeAndClassIndicatorIfRequired, getLeafElementType, getMarshaller, getNamespaceResolver, getOwningObject, hasEqualNamespaceResolvers, isNamespaceAware, resolveNamespacePrefix, setCustomNamespaceMapper, setEqualNamespaceResolvers, setLeafElementType, setNamespaceResolver, setOwningObject, setXOPPackage, writeXsiTypeAttribute, writeXsiTypeAttributeMethods inherited from interface org.eclipse.persistence.internal.oxm.record.MarshalRecord
attributeWithoutQName, hasCustomNamespaceMapper, isXOPPackage, removeExtraNamespacesFromNamespaceResolver, setLeafElementTypeMethods inherited from interface org.eclipse.persistence.internal.oxm.record.XMLRecord
getConversionManager, getSession
-
Field Details
-
isProcessingCData
protected boolean isProcessingCData -
NULL
- See Also:
-
attributePrefix
-
charactersAllowed
protected boolean charactersAllowed -
encoder
-
characterEscapeHandler
-
callbackName
-
writer
-
level
-
-
Constructor Details
-
JSONWriterRecord
public JSONWriterRecord() -
JSONWriterRecord
-
JSONWriterRecord
-
JSONWriterRecord
-
JSONWriterRecord
-
-
Method Details
-
setCallbackName
-
setMarshaller
INTERNAL:- Specified by:
setMarshallerin interfaceAbstractMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Specified by:
setMarshallerin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
setMarshallerin classAbstractMarshalRecordImpl<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver>
-
emptyCollection
public boolean emptyCollection(XPathFragment xPathFragment, NamespaceResolver namespaceResolver, boolean openGrouping) Handle marshal of an empty collection.- Specified by:
emptyCollectionin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
emptyCollectionin classMarshalRecord<XMLMarshaller>- Parameters:
openGrouping- if grouping elements should be marshalled for empty collections
-
forceValueWrapper
public void forceValueWrapper()- Specified by:
forceValueWrapperin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
forceValueWrapperin classMarshalRecord<XMLMarshaller>
-
getWriter
Return the Writer that the object will be marshalled to.- Returns:
- The marshal target.
-
setWriter
Set the Writer that the object will be marshalled to.- Parameters:
writer- The marshal target.
-
namespaceDeclaration
Description copied from class:MarshalRecordAdd the specified namespace declaration- Specified by:
namespaceDeclarationin interfaceAbstractMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Specified by:
namespaceDeclarationin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
namespaceDeclarationin classMarshalRecord<XMLMarshaller>
-
defaultNamespaceDeclaration
Description copied from class:MarshalRecordAdd the defaultNamespace declaration- Overrides:
defaultNamespaceDeclarationin classMarshalRecord<XMLMarshaller>
-
startDocument
INTERNAL:- Specified by:
startDocumentin classMarshalRecord<XMLMarshaller>- Parameters:
encoding- The XML document will be encoded using this encoding.version- This specifies the version of XML.
-
writeListSeparator
- Throws:
IOException
-
writeSeparator
- Throws:
IOException
-
startCallback
INTERNAL:- Throws:
IOException
-
endDocument
public void endDocument()INTERNAL:- Specified by:
endDocumentin classMarshalRecord<XMLMarshaller>
-
openStartElement
INTERNAL:- Specified by:
openStartElementin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
openStartElementin classMarshalRecord<XMLMarshaller>- 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
INTERNAL:- Specified by:
elementin classMarshalRecord<XMLMarshaller>- Parameters:
frag- The XPathFragment of the element
-
attribute
INTERNAL:- Specified by:
attributein interfaceAbstractMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Specified by:
attributein interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Specified by:
attributein classMarshalRecord<XMLMarshaller>- 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(XPathFragment xPathFragment, NamespaceResolver namespaceResolver, String value) INTERNAL:- Specified by:
attributein interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Specified by:
attributein classMarshalRecord<XMLMarshaller>- 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
INTERNAL: override so we don't iterate over namespaces when startPrefixMapping doesn't do anything- Overrides:
startPrefixMappingsin classMarshalRecord<XMLMarshaller>
-
endPrefixMappings
INTERNAL: override so we don't iterate over namespaces when endPrefixMapping doesn't do anything- Overrides:
endPrefixMappingsin classMarshalRecord<XMLMarshaller>
-
closeStartElement
public void closeStartElement()INTERNAL:- Specified by:
closeStartElementin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Specified by:
closeStartElementin classMarshalRecord<XMLMarshaller>
-
endElement
INTERNAL:- Specified by:
endElementin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Specified by:
endElementin classMarshalRecord<XMLMarshaller>- 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
- Throws:
IOException
-
startCollection
public void startCollection()Description copied from class:MarshalRecordThis method is used to inform the MarshalRecord that the element events it is about to receive are part of a collection.- Specified by:
startCollectionin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
startCollectionin classMarshalRecord<XMLMarshaller>- See Also:
-
endEmptyCollection
protected void endEmptyCollection() -
endCallback
- Throws:
IOException
-
endCollection
public void endCollection()Description copied from class:MarshalRecordThis method is used to inform the MarshalRecord that it is done receiving element events that are part of a collection.- Specified by:
endCollectionin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
endCollectionin classMarshalRecord<XMLMarshaller>- See Also:
-
characters
INTERNAL:- Specified by:
charactersin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Specified by:
charactersin classMarshalRecord<XMLMarshaller>- Parameters:
value- This is the entire value of the text node.
-
characters
INTERNAL: -
attribute
public void attribute(XPathFragment xPathFragment, NamespaceResolver namespaceResolver, Object value, QName schemaType) Description copied from class:MarshalRecordConvert the value if necessary and write out the attribute and converted value.- Specified by:
attributein interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
attributein classMarshalRecord<XMLMarshaller>
-
characters
Description copied from class:MarshalRecordConvert the value if necessary and write out the converted value.- Specified by:
charactersin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
charactersin classMarshalRecord<XMLMarshaller>
-
characters
-
namespaceDeclarations
INTERNAL:- Overrides:
namespaceDeclarationsin classMarshalRecord<XMLMarshaller>- Parameters:
namespaceResolver- The NamespaceResolver contains the namespace prefix and URI pairings that need to be declared.
-
nilComplex
INTERNAL:- Specified by:
nilComplexin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
nilComplexin classMarshalRecord<XMLMarshaller>
-
nilSimple
INTERNAL:- Specified by:
nilSimplein interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
nilSimplein classMarshalRecord<XMLMarshaller>
-
emptySimple
Used when an empty simple value should be written- Specified by:
emptySimplein interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
emptySimplein classMarshalRecord<XMLMarshaller>- Since:
- EclipseLink 2.4
-
emptyAttribute
Description copied from class:MarshalRecordUsed when an nil attribute should be written- Specified by:
emptyAttributein interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
emptyAttributein classMarshalRecord<XMLMarshaller>
-
emptyComplex
Used when an empty complex item should be written- Specified by:
emptyComplexin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
emptyComplexin classMarshalRecord<XMLMarshaller>- Since:
- EclipseLink 2.4
-
marshalWithoutRootElement
public void marshalWithoutRootElement(ObjectBuilder treeObjectBuilder, Object object, Descriptor descriptor, Root root, boolean isXMLRoot) INTERNAL:- Overrides:
marshalWithoutRootElementin classMarshalRecord<XMLMarshaller>
-
cdata
INTERNAL:- Specified by:
cdatain interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Specified by:
cdatain classMarshalRecord<XMLMarshaller>- 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- Specified by:
getNamespaceSeparatorin interfaceXMLRecord<CoreAbstractSession>- Overrides:
getNamespaceSeparatorin classAbstractMarshalRecordImpl<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Since:
- 2.4
-
getTextWrapperFragment
INTERNAL: The optional fragment used to wrap the text() mappings- Specified by:
getTextWrapperFragmentin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
getTextWrapperFragmentin classMarshalRecord<XMLMarshaller>- Since:
- 2.4
-
writeKey
- Throws:
IOException
-
writeValue
INTERNAL: -
getStringForQName
- Overrides:
getStringForQNamein classMarshalRecord<XMLMarshaller>
-
node
Receive notification of a node.- Specified by:
nodein classMarshalRecord<XMLMarshaller>- Parameters:
node- The Node to be added to the documentnamespaceResolver- The NamespaceResolver can be used to resolve the namespace URI/prefix of the nodeuri- replacement root name for the nodename- replacement root namespace for the node namespace URI/prefix of the node
-
isWrapperAsCollectionName
public boolean isWrapperAsCollectionName()- Specified by:
isWrapperAsCollectionNamein interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
isWrapperAsCollectionNamein classMarshalRecord<XMLMarshaller>
-
flush
public void flush()- Specified by:
flushin interfaceMarshalRecord<CoreAbstractSession,CoreField, XMLMarshaller, NamespaceResolver> - Overrides:
flushin classMarshalRecord<XMLMarshaller>
-