Consistent use of varargs, consistent template method order
This commit is contained in:
parent
92e3c52a48
commit
b27e240fdb
|
|
@ -97,7 +97,7 @@ public class CastorMarshaller extends AbstractMarshaller implements Initializing
|
|||
|
||||
private String encoding = DEFAULT_ENCODING;
|
||||
|
||||
private Class[] targetClasses;
|
||||
private Class<?>[] targetClasses;
|
||||
|
||||
private String[] targetPackages;
|
||||
|
||||
|
|
@ -172,7 +172,7 @@ public class CastorMarshaller extends AbstractMarshaller implements Initializing
|
|||
/**
|
||||
* Set the locations of the Castor XML Mapping files.
|
||||
*/
|
||||
public void setMappingLocations(Resource[] mappingLocations) {
|
||||
public void setMappingLocations(Resource... mappingLocations) {
|
||||
this.mappingLocations = mappingLocations;
|
||||
}
|
||||
|
||||
|
|
@ -180,15 +180,15 @@ public class CastorMarshaller extends AbstractMarshaller implements Initializing
|
|||
* Set the Castor target class. Alternative means of configuring {@code CastorMarshaller} for unmarshalling
|
||||
* multiple classes include use of mapping files, and specifying packages with Castor descriptor classes.
|
||||
*/
|
||||
public void setTargetClass(Class targetClass) {
|
||||
this.targetClasses = new Class[]{targetClass};
|
||||
public void setTargetClass(Class<?> targetClass) {
|
||||
this.targetClasses = new Class<?>[] {targetClass};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Castor target classes. Alternative means of configuring {@code CastorMarshaller} for unmarshalling
|
||||
* multiple classes include use of mapping files, and specifying packages with Castor descriptor classes.
|
||||
*/
|
||||
public void setTargetClasses(Class[] targetClasses) {
|
||||
public void setTargetClasses(Class<?>... targetClasses) {
|
||||
this.targetClasses = targetClasses;
|
||||
}
|
||||
|
||||
|
|
@ -202,7 +202,7 @@ public class CastorMarshaller extends AbstractMarshaller implements Initializing
|
|||
/**
|
||||
* Set the names of packages with the Castor descriptor classes.
|
||||
*/
|
||||
public void setTargetPackages(String[] targetPackages) {
|
||||
public void setTargetPackages(String... targetPackages) {
|
||||
this.targetPackages = targetPackages;
|
||||
}
|
||||
|
||||
|
|
@ -458,8 +458,8 @@ public class CastorMarshaller extends AbstractMarshaller implements Initializing
|
|||
* @see XMLContext#addMapping(org.exolab.castor.mapping.Mapping)
|
||||
* @see XMLContext#addClass(Class)
|
||||
*/
|
||||
protected XMLContext createXMLContext(Resource[] mappingLocations, Class[] targetClasses, String[] targetPackages)
|
||||
throws MappingException, ResolverException, IOException {
|
||||
protected XMLContext createXMLContext(Resource[] mappingLocations, Class<?>[] targetClasses,
|
||||
String[] targetPackages) throws MappingException, ResolverException, IOException {
|
||||
|
||||
XMLContext context = new XMLContext();
|
||||
if (!ObjectUtils.isEmpty(mappingLocations)) {
|
||||
|
|
@ -492,47 +492,46 @@ public class CastorMarshaller extends AbstractMarshaller implements Initializing
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
// Marshalling
|
||||
|
||||
@Override
|
||||
protected final void marshalDomNode(Object graph, Node node) throws XmlMappingException {
|
||||
protected void marshalDomNode(Object graph, Node node) throws XmlMappingException {
|
||||
marshalSaxHandlers(graph, DomUtils.createContentHandler(node), null);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void marshalSaxHandlers(Object graph, ContentHandler contentHandler, LexicalHandler lexicalHandler)
|
||||
throws XmlMappingException {
|
||||
|
||||
Marshaller marshaller = xmlContext.createMarshaller();
|
||||
marshaller.setContentHandler(contentHandler);
|
||||
marshal(graph, marshaller);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void marshalOutputStream(Object graph, OutputStream outputStream)
|
||||
throws XmlMappingException, IOException {
|
||||
|
||||
marshalWriter(graph, new OutputStreamWriter(outputStream, encoding));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void marshalWriter(Object graph, Writer writer) throws XmlMappingException, IOException {
|
||||
Marshaller marshaller = xmlContext.createMarshaller();
|
||||
marshaller.setWriter(writer);
|
||||
marshal(graph, marshaller);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void marshalXmlEventWriter(Object graph, XMLEventWriter eventWriter) throws XmlMappingException {
|
||||
protected void marshalXmlEventWriter(Object graph, XMLEventWriter eventWriter) throws XmlMappingException {
|
||||
marshalSaxHandlers(graph, StaxUtils.createContentHandler(eventWriter), null);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void marshalXmlStreamWriter(Object graph, XMLStreamWriter streamWriter) throws XmlMappingException {
|
||||
protected void marshalXmlStreamWriter(Object graph, XMLStreamWriter streamWriter) throws XmlMappingException {
|
||||
marshalSaxHandlers(graph, StaxUtils.createContentHandler(streamWriter), null);
|
||||
}
|
||||
|
||||
private void marshal(Object graph, Marshaller marshaller) {
|
||||
@Override
|
||||
protected void marshalSaxHandlers(Object graph, ContentHandler contentHandler, LexicalHandler lexicalHandler)
|
||||
throws XmlMappingException {
|
||||
|
||||
Marshaller marshaller = xmlContext.createMarshaller();
|
||||
marshaller.setContentHandler(contentHandler);
|
||||
doMarshal(graph, marshaller);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void marshalOutputStream(Object graph, OutputStream outputStream) throws XmlMappingException, IOException {
|
||||
marshalWriter(graph, new OutputStreamWriter(outputStream, encoding));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void marshalWriter(Object graph, Writer writer) throws XmlMappingException, IOException {
|
||||
Marshaller marshaller = xmlContext.createMarshaller();
|
||||
marshaller.setWriter(writer);
|
||||
doMarshal(graph, marshaller);
|
||||
}
|
||||
|
||||
private void doMarshal(Object graph, Marshaller marshaller) {
|
||||
try {
|
||||
customizeMarshaller(marshaller);
|
||||
marshaller.marshal(graph);
|
||||
|
|
@ -572,10 +571,11 @@ public class CastorMarshaller extends AbstractMarshaller implements Initializing
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// Unmarshalling
|
||||
|
||||
@Override
|
||||
protected final Object unmarshalDomNode(Node node) throws XmlMappingException {
|
||||
protected Object unmarshalDomNode(Node node) throws XmlMappingException {
|
||||
try {
|
||||
return createUnmarshaller().unmarshal(node);
|
||||
}
|
||||
|
|
@ -585,9 +585,9 @@ public class CastorMarshaller extends AbstractMarshaller implements Initializing
|
|||
}
|
||||
|
||||
@Override
|
||||
protected final Object unmarshalInputStream(InputStream inputStream) throws XmlMappingException, IOException {
|
||||
protected Object unmarshalXmlEventReader(XMLEventReader eventReader) {
|
||||
try {
|
||||
return createUnmarshaller().unmarshal(new InputSource(inputStream));
|
||||
return createUnmarshaller().unmarshal(eventReader);
|
||||
}
|
||||
catch (XMLException ex) {
|
||||
throw convertCastorException(ex, false);
|
||||
|
|
@ -595,9 +595,9 @@ public class CastorMarshaller extends AbstractMarshaller implements Initializing
|
|||
}
|
||||
|
||||
@Override
|
||||
protected final Object unmarshalReader(Reader reader) throws XmlMappingException, IOException {
|
||||
protected Object unmarshalXmlStreamReader(XMLStreamReader streamReader) {
|
||||
try {
|
||||
return createUnmarshaller().unmarshal(new InputSource(reader));
|
||||
return createUnmarshaller().unmarshal(streamReader);
|
||||
}
|
||||
catch (XMLException ex) {
|
||||
throw convertCastorException(ex, false);
|
||||
|
|
@ -605,7 +605,7 @@ public class CastorMarshaller extends AbstractMarshaller implements Initializing
|
|||
}
|
||||
|
||||
@Override
|
||||
protected final Object unmarshalSaxReader(XMLReader xmlReader, InputSource inputSource)
|
||||
protected Object unmarshalSaxReader(XMLReader xmlReader, InputSource inputSource)
|
||||
throws XmlMappingException, IOException {
|
||||
|
||||
UnmarshalHandler unmarshalHandler = createUnmarshaller().createHandler();
|
||||
|
|
@ -621,9 +621,9 @@ public class CastorMarshaller extends AbstractMarshaller implements Initializing
|
|||
}
|
||||
|
||||
@Override
|
||||
protected final Object unmarshalXmlEventReader(XMLEventReader eventReader) {
|
||||
protected Object unmarshalInputStream(InputStream inputStream) throws XmlMappingException, IOException {
|
||||
try {
|
||||
return createUnmarshaller().unmarshal(eventReader);
|
||||
return createUnmarshaller().unmarshal(new InputSource(inputStream));
|
||||
}
|
||||
catch (XMLException ex) {
|
||||
throw convertCastorException(ex, false);
|
||||
|
|
@ -631,9 +631,9 @@ public class CastorMarshaller extends AbstractMarshaller implements Initializing
|
|||
}
|
||||
|
||||
@Override
|
||||
protected final Object unmarshalXmlStreamReader(XMLStreamReader streamReader) {
|
||||
protected Object unmarshalReader(Reader reader) throws XmlMappingException, IOException {
|
||||
try {
|
||||
return createUnmarshaller().unmarshal(streamReader);
|
||||
return createUnmarshaller().unmarshal(new InputSource(reader));
|
||||
}
|
||||
catch (XMLException ex) {
|
||||
throw convertCastorException(ex, false);
|
||||
|
|
@ -679,6 +679,7 @@ public class CastorMarshaller extends AbstractMarshaller implements Initializing
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Convert the given {@code XMLException} to an appropriate exception from the
|
||||
* {@code org.springframework.oxm} hierarchy.
|
||||
|
|
|
|||
|
|
@ -297,7 +297,7 @@ public class Jaxb2Marshaller implements MimeMarshaller, MimeUnmarshaller, Generi
|
|||
* Specify the {@code XmlAdapter}s to be registered with the JAXB {@code Marshaller}
|
||||
* and {@code Unmarshaller}
|
||||
*/
|
||||
public void setAdapters(XmlAdapter<?, ?>[] adapters) {
|
||||
public void setAdapters(XmlAdapter<?, ?>... adapters) {
|
||||
this.adapters = adapters;
|
||||
}
|
||||
|
||||
|
|
@ -311,7 +311,7 @@ public class Jaxb2Marshaller implements MimeMarshaller, MimeUnmarshaller, Generi
|
|||
/**
|
||||
* Set the schema resources to use for validation.
|
||||
*/
|
||||
public void setSchemas(Resource[] schemaResources) {
|
||||
public void setSchemas(Resource... schemaResources) {
|
||||
this.schemaResources = schemaResources;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -84,6 +84,7 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
|
||||
private static final String DEFAULT_BINDING_NAME = "binding";
|
||||
|
||||
|
||||
private Class<?> targetClass;
|
||||
|
||||
private String targetPackage;
|
||||
|
|
@ -112,7 +113,6 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
/**
|
||||
* Set the target class for this instance. Setting either this property or the
|
||||
* {@link #setTargetPackage(String) targetPackage} property is required.
|
||||
*
|
||||
* <p>If this property is set, {@link #setTargetPackage(String) targetPackage} is ignored.
|
||||
*/
|
||||
public void setTargetClass(Class<?> targetClass) {
|
||||
|
|
@ -122,7 +122,6 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
/**
|
||||
* Set the target package for this instance. Setting either this property or the
|
||||
* {@link #setTargetClass(Class) targetClass} property is required.
|
||||
*
|
||||
* <p>If {@link #setTargetClass(Class) targetClass} is set, this property is ignored.
|
||||
*/
|
||||
public void setTargetPackage(String targetPackage) {
|
||||
|
|
@ -157,10 +156,9 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
}
|
||||
|
||||
/**
|
||||
* Sets the root element name for the DTD declaration written when marshalling. By default, this is
|
||||
* {@code null} (i.e. no DTD declaration is written). If set to a value, the system ID or public ID also need to
|
||||
* be set.
|
||||
*
|
||||
* Set the root element name for the DTD declaration written when marshalling.
|
||||
* By default, this is {@code null} (i.e. no DTD declaration is written).
|
||||
* <p>If set to a value, the system ID or public ID also need to be set.
|
||||
* @see #setDocTypeSystemId(String)
|
||||
* @see #setDocTypePublicId(String)
|
||||
*/
|
||||
|
|
@ -169,10 +167,9 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
}
|
||||
|
||||
/**
|
||||
* Sets the system Id for the DTD declaration written when marshalling. By default, this is
|
||||
* {@code null}. Only used when the root element also has been set. Set either this property or
|
||||
* {@code docTypePublicId}, not both.
|
||||
*
|
||||
* Set the system Id for the DTD declaration written when marshalling.
|
||||
* By default, this is {@code null}. Only used when the root element also has been set.
|
||||
* <p>Set either this property or {@code docTypePublicId}, not both.
|
||||
* @see #setDocTypeRootElementName(String)
|
||||
*/
|
||||
public void setDocTypeSystemId(String docTypeSystemId) {
|
||||
|
|
@ -180,10 +177,9 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
}
|
||||
|
||||
/**
|
||||
* Sets the public Id for the DTD declaration written when marshalling. By default, this is
|
||||
* {@code null}. Only used when the root element also has been set. Set either this property or
|
||||
* {@code docTypeSystemId}, not both.
|
||||
*
|
||||
* Set the public Id for the DTD declaration written when marshalling.
|
||||
* By default, this is {@code null}. Only used when the root element also has been set.
|
||||
* <p>Set either this property or {@code docTypeSystemId}, not both.
|
||||
* @see #setDocTypeRootElementName(String)
|
||||
*/
|
||||
public void setDocTypePublicId(String docTypePublicId) {
|
||||
|
|
@ -191,15 +187,15 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
}
|
||||
|
||||
/**
|
||||
* Sets the internal subset Id for the DTD declaration written when marshalling. By default, this is
|
||||
* {@code null}. Only used when the root element also has been set.
|
||||
*
|
||||
* Set the internal subset Id for the DTD declaration written when marshalling.
|
||||
* By default, this is {@code null}. Only used when the root element also has been set.
|
||||
* @see #setDocTypeRootElementName(String)
|
||||
*/
|
||||
public void setDocTypeInternalSubset(String docTypeInternalSubset) {
|
||||
this.docTypeInternalSubset = docTypeInternalSubset;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws JiBXException {
|
||||
if (this.targetClass != null) {
|
||||
|
|
@ -215,7 +211,8 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
}
|
||||
this.bindingFactory = BindingDirectory.getFactory(this.targetClass);
|
||||
}
|
||||
} else if (this.targetPackage != null) {
|
||||
}
|
||||
else if (this.targetPackage != null) {
|
||||
if (!StringUtils.hasLength(bindingName)) {
|
||||
bindingName = DEFAULT_BINDING_NAME;
|
||||
}
|
||||
|
|
@ -223,7 +220,8 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
logger.info("Configured for target package [" + targetPackage + "] using binding [" + bindingName + "]");
|
||||
}
|
||||
this.bindingFactory = BindingDirectory.getFactory(bindingName, targetPackage);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
throw new IllegalArgumentException("either 'targetClass' or 'targetPackage' is required");
|
||||
}
|
||||
}
|
||||
|
|
@ -246,7 +244,7 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
}
|
||||
|
||||
|
||||
// Supported Marshalling
|
||||
// Supported marshalling
|
||||
|
||||
@Override
|
||||
protected void marshalOutputStream(Object graph, OutputStream outputStream)
|
||||
|
|
@ -273,8 +271,7 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
}
|
||||
}
|
||||
|
||||
private void marshalDocument(IMarshallingContext marshallingContext, Object graph) throws IOException,
|
||||
JiBXException {
|
||||
private void marshalDocument(IMarshallingContext marshallingContext, Object graph) throws IOException, JiBXException {
|
||||
if (StringUtils.hasLength(docTypeRootElementName)) {
|
||||
IXMLWriter xmlWriter = marshallingContext.getXmlWriter();
|
||||
xmlWriter.writeDocType(docTypeRootElementName, docTypeSystemId, docTypePublicId, docTypeInternalSubset);
|
||||
|
|
@ -282,6 +279,27 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
marshallingContext.marshalDocument(graph);
|
||||
}
|
||||
|
||||
|
||||
// Unsupported marshalling
|
||||
|
||||
@Override
|
||||
protected void marshalDomNode(Object graph, Node node) throws XmlMappingException {
|
||||
try {
|
||||
// JiBX does not support DOM natively, so we write to a buffer first, and transform that to the Node
|
||||
Result result = new DOMResult(node);
|
||||
transformAndMarshal(graph, result);
|
||||
}
|
||||
catch (IOException ex) {
|
||||
throw new MarshallingFailureException("JiBX marshalling exception", ex);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void marshalXmlEventWriter(Object graph, XMLEventWriter eventWriter) {
|
||||
XMLStreamWriter streamWriter = StaxUtils.createEventStreamWriter(eventWriter);
|
||||
marshalXmlStreamWriter(graph, streamWriter);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void marshalXmlStreamWriter(Object graph, XMLStreamWriter streamWriter) throws XmlMappingException {
|
||||
try {
|
||||
|
|
@ -295,20 +313,6 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
}
|
||||
}
|
||||
|
||||
// Unsupported Marshalling
|
||||
|
||||
@Override
|
||||
protected void marshalDomNode(Object graph, Node node) throws XmlMappingException {
|
||||
try {
|
||||
// JiBX does not support DOM natively, so we write to a buffer first, and transform that to the Node
|
||||
Result result = new DOMResult(node);
|
||||
transformAndMarshal(graph, result);
|
||||
}
|
||||
catch (IOException ex) {
|
||||
throw new MarshallingFailureException("JiBX marshalling exception", ex);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void marshalSaxHandlers(Object graph, ContentHandler contentHandler, LexicalHandler lexicalHandler)
|
||||
throws XmlMappingException {
|
||||
|
|
@ -338,15 +342,33 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void marshalXmlEventWriter(Object graph, XMLEventWriter eventWriter) {
|
||||
XMLStreamWriter streamWriter = StaxUtils.createEventStreamWriter(eventWriter);
|
||||
marshalXmlStreamWriter(graph, streamWriter);
|
||||
}
|
||||
|
||||
|
||||
// Unmarshalling
|
||||
|
||||
@Override
|
||||
protected Object unmarshalXmlEventReader(XMLEventReader eventReader) {
|
||||
try {
|
||||
XMLStreamReader streamReader = StaxUtils.createEventStreamReader(eventReader);
|
||||
return unmarshalXmlStreamReader(streamReader);
|
||||
}
|
||||
catch (XMLStreamException ex) {
|
||||
return new UnmarshallingFailureException("JiBX unmarshalling exception", ex);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object unmarshalXmlStreamReader(XMLStreamReader streamReader) {
|
||||
try {
|
||||
UnmarshallingContext unmarshallingContext = (UnmarshallingContext) createUnmarshallingContext();
|
||||
IXMLReader xmlReader = new StAXReaderWrapper(streamReader, null, true);
|
||||
unmarshallingContext.setDocument(xmlReader);
|
||||
return unmarshallingContext.unmarshalElement();
|
||||
}
|
||||
catch (JiBXException ex) {
|
||||
throw convertJibxException(ex, false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object unmarshalInputStream(InputStream inputStream) throws XmlMappingException, IOException {
|
||||
try {
|
||||
|
|
@ -369,30 +391,6 @@ public class JibxMarshaller extends AbstractMarshaller implements InitializingBe
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object unmarshalXmlStreamReader(XMLStreamReader streamReader) {
|
||||
try {
|
||||
UnmarshallingContext unmarshallingContext = (UnmarshallingContext) createUnmarshallingContext();
|
||||
IXMLReader xmlReader = new StAXReaderWrapper(streamReader, null, true);
|
||||
unmarshallingContext.setDocument(xmlReader);
|
||||
return unmarshallingContext.unmarshalElement();
|
||||
}
|
||||
catch (JiBXException ex) {
|
||||
throw convertJibxException(ex, false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object unmarshalXmlEventReader(XMLEventReader eventReader) {
|
||||
try {
|
||||
XMLStreamReader streamReader = StaxUtils.createEventStreamReader(eventReader);
|
||||
return unmarshalXmlStreamReader(streamReader);
|
||||
}
|
||||
catch (XMLStreamException ex) {
|
||||
return new UnmarshallingFailureException("JiBX unmarshalling exception", ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Unsupported Unmarshalling
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -170,7 +170,7 @@ public abstract class AbstractMarshaller implements Marshaller, Unmarshaller {
|
|||
}
|
||||
|
||||
/**
|
||||
* Create a {@code XMLReader} that this marshaller will when passed an empty {@code SAXSource}.
|
||||
* Create an {@code XMLReader} that this marshaller will when passed an empty {@code SAXSource}.
|
||||
* @return the XMLReader
|
||||
* @throws SAXException if thrown by JAXP methods
|
||||
*/
|
||||
|
|
@ -184,7 +184,7 @@ public abstract class AbstractMarshaller implements Marshaller, Unmarshaller {
|
|||
/**
|
||||
* Template method for handling {@code DOMResult}s.
|
||||
* <p>This implementation delegates to {@code marshalDomNode}.
|
||||
* @param graph the root of the object graph to marshal
|
||||
* @param graph the root of the object graph to marshal
|
||||
* @param domResult the {@code DOMResult}
|
||||
* @throws XmlMappingException if the given object cannot be marshalled to the result
|
||||
* @throws IllegalArgumentException if the {@code domResult} is empty
|
||||
|
|
@ -214,8 +214,8 @@ public abstract class AbstractMarshaller implements Marshaller, Unmarshaller {
|
|||
* <p>This implementation delegates to {@code marshalXMLSteamWriter} or
|
||||
* {@code marshalXMLEventConsumer}, depending on what is contained in the
|
||||
* {@code StaxResult}.
|
||||
* @param graph the root of the object graph to marshal
|
||||
* @param staxResult a Spring {@link org.springframework.util.xml.StaxSource} or JAXP 1.4 {@link StAXSource}
|
||||
* @param graph the root of the object graph to marshal
|
||||
* @param staxResult a JAXP 1.4 {@link StAXSource}
|
||||
* @throws XmlMappingException if the given object cannot be marshalled to the result
|
||||
* @throws IllegalArgumentException if the {@code domResult} is empty
|
||||
* @see #marshalDomNode(Object, org.w3c.dom.Node)
|
||||
|
|
@ -239,7 +239,7 @@ public abstract class AbstractMarshaller implements Marshaller, Unmarshaller {
|
|||
/**
|
||||
* Template method for handling {@code SAXResult}s.
|
||||
* <p>This implementation delegates to {@code marshalSaxHandlers}.
|
||||
* @param graph the root of the object graph to marshal
|
||||
* @param graph the root of the object graph to marshal
|
||||
* @param saxResult the {@code SAXResult}
|
||||
* @throws XmlMappingException if the given object cannot be marshalled to the result
|
||||
* @see #marshalSaxHandlers(Object, org.xml.sax.ContentHandler, org.xml.sax.ext.LexicalHandler)
|
||||
|
|
@ -396,7 +396,7 @@ public abstract class AbstractMarshaller implements Marshaller, Unmarshaller {
|
|||
|
||||
/**
|
||||
* Abstract template method for marshalling the given object to a StAX {@code XMLEventWriter}.
|
||||
* @param graph the root of the object graph to marshal
|
||||
* @param graph the root of the object graph to marshal
|
||||
* @param eventWriter the {@code XMLEventWriter} to write to
|
||||
* @throws XmlMappingException if the given object cannot be marshalled to the DOM node
|
||||
*/
|
||||
|
|
@ -412,16 +412,6 @@ public abstract class AbstractMarshaller implements Marshaller, Unmarshaller {
|
|||
protected abstract void marshalXmlStreamWriter(Object graph, XMLStreamWriter streamWriter)
|
||||
throws XmlMappingException;
|
||||
|
||||
/**
|
||||
* Abstract template method for marshalling the given object graph to a {@code OutputStream}.
|
||||
* @param graph the root of the object graph to marshal
|
||||
* @param outputStream the {@code OutputStream} to write to
|
||||
* @throws XmlMappingException if the given object cannot be marshalled to the writer
|
||||
* @throws IOException if an I/O exception occurs
|
||||
*/
|
||||
protected abstract void marshalOutputStream(Object graph, OutputStream outputStream)
|
||||
throws XmlMappingException, IOException;
|
||||
|
||||
/**
|
||||
* Abstract template method for marshalling the given object graph to a SAX {@code ContentHandler}.
|
||||
* @param graph the root of the object graph to marshal
|
||||
|
|
@ -433,6 +423,16 @@ public abstract class AbstractMarshaller implements Marshaller, Unmarshaller {
|
|||
Object graph, ContentHandler contentHandler, LexicalHandler lexicalHandler)
|
||||
throws XmlMappingException;
|
||||
|
||||
/**
|
||||
* Abstract template method for marshalling the given object graph to a {@code OutputStream}.
|
||||
* @param graph the root of the object graph to marshal
|
||||
* @param outputStream the {@code OutputStream} to write to
|
||||
* @throws XmlMappingException if the given object cannot be marshalled to the writer
|
||||
* @throws IOException if an I/O exception occurs
|
||||
*/
|
||||
protected abstract void marshalOutputStream(Object graph, OutputStream outputStream)
|
||||
throws XmlMappingException, IOException;
|
||||
|
||||
/**
|
||||
* Abstract template method for marshalling the given object graph to a {@code Writer}.
|
||||
* @param graph the root of the object graph to marshal
|
||||
|
|
@ -443,6 +443,7 @@ public abstract class AbstractMarshaller implements Marshaller, Unmarshaller {
|
|||
protected abstract void marshalWriter(Object graph, Writer writer)
|
||||
throws XmlMappingException, IOException;
|
||||
|
||||
|
||||
/**
|
||||
* Abstract template method for unmarshalling from a given DOM {@code Node}.
|
||||
* @param node the DOM node that contains the objects to be unmarshalled
|
||||
|
|
@ -469,6 +470,18 @@ public abstract class AbstractMarshaller implements Marshaller, Unmarshaller {
|
|||
protected abstract Object unmarshalXmlStreamReader(XMLStreamReader streamReader)
|
||||
throws XmlMappingException;
|
||||
|
||||
/**
|
||||
* Abstract template method for unmarshalling using a given SAX {@code XMLReader}
|
||||
* and {@code InputSource}.
|
||||
* @param xmlReader the SAX {@code XMLReader} to parse with
|
||||
* @param inputSource the input source to parse from
|
||||
* @return the object graph
|
||||
* @throws XmlMappingException if the given reader and input source cannot be converted to an object
|
||||
* @throws IOException if an I/O exception occurs
|
||||
*/
|
||||
protected abstract Object unmarshalSaxReader(XMLReader xmlReader, InputSource inputSource)
|
||||
throws XmlMappingException, IOException;
|
||||
|
||||
/**
|
||||
* Abstract template method for unmarshalling from a given {@code InputStream}.
|
||||
* @param inputStream the {@code InputStreamStream} to read from
|
||||
|
|
@ -489,16 +502,4 @@ public abstract class AbstractMarshaller implements Marshaller, Unmarshaller {
|
|||
protected abstract Object unmarshalReader(Reader reader)
|
||||
throws XmlMappingException, IOException;
|
||||
|
||||
/**
|
||||
* Abstract template method for unmarshalling using a given SAX {@code XMLReader}
|
||||
* and {@code InputSource}.
|
||||
* @param xmlReader the SAX {@code XMLReader} to parse with
|
||||
* @param inputSource the input source to parse from
|
||||
* @return the object graph
|
||||
* @throws XmlMappingException if the given reader and input source cannot be converted to an object
|
||||
* @throws IOException if an I/O exception occurs
|
||||
*/
|
||||
protected abstract Object unmarshalSaxReader(XMLReader xmlReader, InputSource inputSource)
|
||||
throws XmlMappingException, IOException;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -122,8 +122,9 @@ public class XmlBeansMarshaller extends AbstractMarshaller {
|
|||
return XmlObject.class.isAssignableFrom(clazz);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected final void marshalDomNode(Object graph, Node node) throws XmlMappingException {
|
||||
protected void marshalDomNode(Object graph, Node node) throws XmlMappingException {
|
||||
Document document = node.getNodeType() == Node.DOCUMENT_NODE ? (Document) node : node.getOwnerDocument();
|
||||
Node xmlBeansNode = ((XmlObject) graph).newDomNode(getXmlOptions());
|
||||
NodeList xmlBeansChildNodes = xmlBeansNode.getChildNodes();
|
||||
|
|
@ -135,14 +136,19 @@ public class XmlBeansMarshaller extends AbstractMarshaller {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected final void marshalOutputStream(Object graph, OutputStream outputStream)
|
||||
throws XmlMappingException, IOException {
|
||||
|
||||
((XmlObject) graph).save(outputStream, getXmlOptions());
|
||||
protected void marshalXmlEventWriter(Object graph, XMLEventWriter eventWriter) {
|
||||
ContentHandler contentHandler = StaxUtils.createContentHandler(eventWriter);
|
||||
marshalSaxHandlers(graph, contentHandler, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void marshalSaxHandlers(Object graph, ContentHandler contentHandler, LexicalHandler lexicalHandler)
|
||||
protected void marshalXmlStreamWriter(Object graph, XMLStreamWriter streamWriter) throws XmlMappingException {
|
||||
ContentHandler contentHandler = StaxUtils.createContentHandler(streamWriter);
|
||||
marshalSaxHandlers(graph, contentHandler, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void marshalSaxHandlers(Object graph, ContentHandler contentHandler, LexicalHandler lexicalHandler)
|
||||
throws XmlMappingException {
|
||||
try {
|
||||
((XmlObject) graph).save(contentHandler, lexicalHandler, getXmlOptions());
|
||||
|
|
@ -153,24 +159,20 @@ public class XmlBeansMarshaller extends AbstractMarshaller {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected final void marshalWriter(Object graph, Writer writer) throws XmlMappingException, IOException {
|
||||
protected void marshalOutputStream(Object graph, OutputStream outputStream)
|
||||
throws XmlMappingException, IOException {
|
||||
|
||||
((XmlObject) graph).save(outputStream, getXmlOptions());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void marshalWriter(Object graph, Writer writer) throws XmlMappingException, IOException {
|
||||
((XmlObject) graph).save(writer, getXmlOptions());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void marshalXmlEventWriter(Object graph, XMLEventWriter eventWriter) {
|
||||
ContentHandler contentHandler = StaxUtils.createContentHandler(eventWriter);
|
||||
marshalSaxHandlers(graph, contentHandler, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void marshalXmlStreamWriter(Object graph, XMLStreamWriter streamWriter) throws XmlMappingException {
|
||||
ContentHandler contentHandler = StaxUtils.createContentHandler(streamWriter);
|
||||
marshalSaxHandlers(graph, contentHandler, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final Object unmarshalDomNode(Node node) throws XmlMappingException {
|
||||
protected Object unmarshalDomNode(Node node) throws XmlMappingException {
|
||||
try {
|
||||
XmlObject object = XmlObject.Factory.parse(node, getXmlOptions());
|
||||
validate(object);
|
||||
|
|
@ -182,10 +184,20 @@ public class XmlBeansMarshaller extends AbstractMarshaller {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected final Object unmarshalInputStream(InputStream inputStream) throws XmlMappingException, IOException {
|
||||
protected Object unmarshalXmlEventReader(XMLEventReader eventReader) throws XmlMappingException {
|
||||
XMLReader reader = StaxUtils.createXMLReader(eventReader);
|
||||
try {
|
||||
InputStream nonClosingInputStream = new NonClosingInputStream(inputStream);
|
||||
XmlObject object = XmlObject.Factory.parse(nonClosingInputStream, getXmlOptions());
|
||||
return unmarshalSaxReader(reader, new InputSource());
|
||||
}
|
||||
catch (IOException ex) {
|
||||
throw convertXmlBeansException(ex, false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object unmarshalXmlStreamReader(XMLStreamReader streamReader) throws XmlMappingException {
|
||||
try {
|
||||
XmlObject object = XmlObject.Factory.parse(streamReader, getXmlOptions());
|
||||
validate(object);
|
||||
return object;
|
||||
}
|
||||
|
|
@ -195,30 +207,18 @@ public class XmlBeansMarshaller extends AbstractMarshaller {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected final Object unmarshalReader(Reader reader) throws XmlMappingException, IOException {
|
||||
try {
|
||||
Reader nonClosingReader = new NonClosingReader(reader);
|
||||
XmlObject object = XmlObject.Factory.parse(nonClosingReader, getXmlOptions());
|
||||
validate(object);
|
||||
return object;
|
||||
}
|
||||
catch (XmlException ex) {
|
||||
throw convertXmlBeansException(ex, false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final Object unmarshalSaxReader(XMLReader xmlReader, InputSource inputSource)
|
||||
protected Object unmarshalSaxReader(XMLReader xmlReader, InputSource inputSource)
|
||||
throws XmlMappingException, IOException {
|
||||
|
||||
XmlSaxHandler saxHandler = XmlObject.Factory.newXmlSaxHandler(getXmlOptions());
|
||||
xmlReader.setContentHandler(saxHandler.getContentHandler());
|
||||
try {
|
||||
xmlReader.setProperty("http://xml.org/sax/properties/lexical-handler", saxHandler.getLexicalHandler());
|
||||
}
|
||||
catch (SAXNotRecognizedException e) {
|
||||
catch (SAXNotRecognizedException ex) {
|
||||
// ignore
|
||||
}
|
||||
catch (SAXNotSupportedException e) {
|
||||
catch (SAXNotSupportedException ex) {
|
||||
// ignore
|
||||
}
|
||||
try {
|
||||
|
|
@ -236,20 +236,23 @@ public class XmlBeansMarshaller extends AbstractMarshaller {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected final Object unmarshalXmlEventReader(XMLEventReader eventReader) throws XmlMappingException {
|
||||
XMLReader reader = StaxUtils.createXMLReader(eventReader);
|
||||
protected Object unmarshalInputStream(InputStream inputStream) throws XmlMappingException, IOException {
|
||||
try {
|
||||
return unmarshalSaxReader(reader, new InputSource());
|
||||
InputStream nonClosingInputStream = new NonClosingInputStream(inputStream);
|
||||
XmlObject object = XmlObject.Factory.parse(nonClosingInputStream, getXmlOptions());
|
||||
validate(object);
|
||||
return object;
|
||||
}
|
||||
catch (IOException ex) {
|
||||
catch (XmlException ex) {
|
||||
throw convertXmlBeansException(ex, false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final Object unmarshalXmlStreamReader(XMLStreamReader streamReader) throws XmlMappingException {
|
||||
protected Object unmarshalReader(Reader reader) throws XmlMappingException, IOException {
|
||||
try {
|
||||
XmlObject object = XmlObject.Factory.parse(streamReader, getXmlOptions());
|
||||
Reader nonClosingReader = new NonClosingReader(reader);
|
||||
XmlObject object = XmlObject.Factory.parse(nonClosingReader, getXmlOptions());
|
||||
validate(object);
|
||||
return object;
|
||||
}
|
||||
|
|
@ -312,6 +315,7 @@ public class XmlBeansMarshaller extends AbstractMarshaller {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* See SPR-7034
|
||||
*/
|
||||
|
|
@ -388,6 +392,7 @@ public class XmlBeansMarshaller extends AbstractMarshaller {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private static class NonClosingReader extends Reader {
|
||||
|
||||
private final WeakReference<Reader> reader;
|
||||
|
|
|
|||
Loading…
Reference in New Issue