use of org.eclipse.persistence.oxm.record.FormattedWriterRecord in project eclipselink by eclipse-ee4j.
the class XMLMarshaller method marshal.
private void marshal(Object object, Writer writer, ABSTRACT_SESSION session, DESCRIPTOR xmlDescriptor) throws XMLMarshalException {
if ((object == null) || (writer == null)) {
throw XMLMarshalException.nullArgumentException();
}
boolean isXMLRoot = false;
String version = DEFAULT_XML_VERSION;
String encoding = getEncoding();
String callbackName = null;
if (object instanceof JSONWithPadding) {
callbackName = ((JSONWithPadding) object).getCallbackName();
object = ((JSONWithPadding) object).getObject();
if (object == null) {
throw XMLMarshalException.nullArgumentException();
}
}
if (object instanceof Root) {
isXMLRoot = true;
Root xroot = (Root) object;
version = xroot.getXMLVersion() != null ? xroot.getXMLVersion() : version;
encoding = xroot.getEncoding() != null ? xroot.getEncoding() : encoding;
}
MarshalRecord marshalRecord;
writer = wrapWriter(writer);
if (isFormattedOutput()) {
if (isApplicationJSON()) {
marshalRecord = new JSONFormattedWriterRecord(writer, callbackName);
} else {
marshalRecord = new FormattedWriterRecord();
((FormattedWriterRecord) marshalRecord).setWriter(writer);
}
} else {
if (isApplicationJSON()) {
marshalRecord = new JSONWriterRecord(writer, callbackName);
} else {
marshalRecord = new WriterRecord();
((WriterRecord) marshalRecord).setWriter(writer);
}
}
marshalStreamOrWriter(object, marshalRecord, session, xmlDescriptor, isXMLRoot);
}
use of org.eclipse.persistence.oxm.record.FormattedWriterRecord in project eclipselink by eclipse-ee4j.
the class SDOXMLHelperDelegate method save.
private void save(XMLDocument xmlDocument, Writer outputWriter, XMLMarshaller anXMLMarshaller) throws IOException {
if (xmlDocument == null) {
throw new IllegalArgumentException(SDOException.cannotPerformOperationWithNullInputParameter("save", "xmlDocument"));
}
// Ask the SDOXMLDocument if we should include the XML declaration in the resulting XML
anXMLMarshaller.setFragment(!xmlDocument.isXMLDeclaration());
anXMLMarshaller.setEncoding(xmlDocument.getEncoding());
anXMLMarshaller.setSchemaLocation(xmlDocument.getSchemaLocation());
anXMLMarshaller.setNoNamespaceSchemaLocation(xmlDocument.getNoNamespaceSchemaLocation());
WriterRecord writerRecord;
if (anXMLMarshaller.isFormattedOutput()) {
writerRecord = new FormattedWriterRecord();
} else {
writerRecord = new WriterRecord();
}
writerRecord.setWriter(outputWriter);
writerRecord.setMarshaller(anXMLMarshaller);
SDOMarshalListener listener = ((SDOMarshalListener) anXMLMarshaller.getMarshalListener());
listener.setMarshalledObject(xmlDocument.getRootObject());
listener.setMarshalledObjectRootQName(new QName(xmlDocument.getRootElementURI(), xmlDocument.getRootElementName()));
listener.setRootMarshalRecord(writerRecord);
try {
anXMLMarshaller.marshal(xmlDocument, writerRecord);
writerRecord.flush();
} catch (XMLMarshalException xme) {
if (xme.getErrorCode() == XMLMarshalException.DESCRIPTOR_NOT_FOUND_IN_PROJECT) {
if (aHelperContext != ((SDOType) xmlDocument.getRootObject().getType()).getHelperContext()) {
throw SDOException.dataObjectNotFromHelperContext();
}
}
} finally {
listener.setMarshalledObject(null);
listener.setMarshalledObjectRootQName(null);
listener.setRootMarshalRecord(null);
}
outputWriter.flush();
}
use of org.eclipse.persistence.oxm.record.FormattedWriterRecord in project eclipselink by eclipse-ee4j.
the class SDOXMLHelperDelegate method save.
/**
* INTERNAL:
* Saves the DataObject as an XML document with the specified root element.
* Same as
* save(createDocument(dataObject, rootElementURI, rootElementName),
* writer, null);
*
* @param rootObject specifies DataObject to be saved
* @param rootElementURI the Target Namespace URI of the root XML element
* @param rootElementName the Name of the root XML element
* @param writer specifies the Writer to write to.
* @throws IllegalArgumentException if the dataObject tree
* is not closed or has no container.
*/
private void save(DataObject rootObject, String rootElementURI, String rootElementName, Writer writer, XMLMarshaller anXMLMarshaller) throws XMLMarshalException {
SDOXMLDocument xmlDocument = (SDOXMLDocument) createDocument(rootObject, rootElementURI, rootElementName);
// Ask the SDOXMLDocument if we should include the XML declaration in the resulting XML
anXMLMarshaller.setFragment(!xmlDocument.isXMLDeclaration());
WriterRecord writerRecord;
if (anXMLMarshaller.isFormattedOutput()) {
writerRecord = new FormattedWriterRecord();
} else {
writerRecord = new WriterRecord();
}
writerRecord.setWriter(writer);
writerRecord.setMarshaller(anXMLMarshaller);
SDOMarshalListener listener = ((SDOMarshalListener) anXMLMarshaller.getMarshalListener());
listener.setMarshalledObject(rootObject);
listener.setMarshalledObjectRootQName(new QName(rootElementURI, rootElementName));
listener.setRootMarshalRecord(writerRecord);
try {
anXMLMarshaller.marshal(xmlDocument, writerRecord);
writerRecord.flush();
} catch (XMLMarshalException xme) {
if (xme.getErrorCode() == XMLMarshalException.DESCRIPTOR_NOT_FOUND_IN_PROJECT) {
if (aHelperContext != ((SDOType) rootObject.getType()).getHelperContext()) {
throw SDOException.dataObjectNotFromHelperContext();
}
}
} finally {
listener.setMarshalledObject(null);
listener.setMarshalledObjectRootQName(null);
listener.setRootMarshalRecord(null);
}
try {
writer.flush();
} catch (IOException ex) {
throw XMLMarshalException.marshalException(ex);
}
}
use of org.eclipse.persistence.oxm.record.FormattedWriterRecord in project eclipselink by eclipse-ee4j.
the class SDOXSDHelperDelegate method getStringFromAppInfoElement.
public String getStringFromAppInfoElement(Element appInfo) {
FormattedWriterRecord record = new FormattedWriterRecord();
record.setWriter(new StringWriter());
record.node(appInfo, new NamespaceResolver());
return record.getWriter().toString();
}
Aggregations