Browse Source

Fixed Jaxb2Marshaller's partial unmarshalling feature to consistently apply to all sources

Issue: SPR-10282
pull/260/merge
Juergen Hoeller 12 years ago
parent
commit
283b3ee44b
  1. 10
      spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java

10
spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java

@ -720,7 +720,7 @@ public class Jaxb2Marshaller @@ -720,7 +720,7 @@ public class Jaxb2Marshaller
return unmarshalStaxSource(unmarshaller, source);
}
else if (this.mappedClass != null) {
return unmarshaller.unmarshal(source, this.mappedClass);
return unmarshaller.unmarshal(source, this.mappedClass).getValue();
}
else {
return unmarshaller.unmarshal(source);
@ -734,12 +734,16 @@ public class Jaxb2Marshaller @@ -734,12 +734,16 @@ public class Jaxb2Marshaller
protected Object unmarshalStaxSource(Unmarshaller jaxbUnmarshaller, Source staxSource) throws JAXBException {
XMLStreamReader streamReader = StaxUtils.getXMLStreamReader(staxSource);
if (streamReader != null) {
return jaxbUnmarshaller.unmarshal(streamReader);
return (this.mappedClass != null ?
jaxbUnmarshaller.unmarshal(streamReader, this.mappedClass).getValue() :
jaxbUnmarshaller.unmarshal(streamReader));
}
else {
XMLEventReader eventReader = StaxUtils.getXMLEventReader(staxSource);
if (eventReader != null) {
return jaxbUnmarshaller.unmarshal(eventReader);
return (this.mappedClass != null ?
jaxbUnmarshaller.unmarshal(eventReader, this.mappedClass).getValue() :
jaxbUnmarshaller.unmarshal(eventReader));
}
else {
throw new IllegalArgumentException("StaxSource contains neither XMLStreamReader nor XMLEventReader");

Loading…
Cancel
Save