@@ -124,7 +124,7 @@ public class XStreamMarshaller extends AbstractMarshaller implements Initializin
124
124
125
125
private HierarchicalStreamDriver streamDriver ;
126
126
127
- private final XppDriver fallbackDriver = new XppDriver () ;
127
+ private HierarchicalStreamDriver defaultDriver ;
128
128
129
129
private Mapper mapper ;
130
130
@@ -182,6 +182,14 @@ public void setReflectionProvider(ReflectionProvider reflectionProvider) {
182
182
*/
183
183
public void setStreamDriver (HierarchicalStreamDriver streamDriver ) {
184
184
this .streamDriver = streamDriver ;
185
+ this .defaultDriver = streamDriver ;
186
+ }
187
+
188
+ private HierarchicalStreamDriver getDefaultDriver () {
189
+ if (this .defaultDriver == null ) {
190
+ this .defaultDriver = new XppDriver ();
191
+ }
192
+ return this .defaultDriver ;
185
193
}
186
194
187
195
/**
@@ -389,7 +397,7 @@ protected XStream buildXStream() {
389
397
protected XStream constructXStream () {
390
398
// The referenced XStream constructor has been deprecated as of 1.4.5.
391
399
// We're preserving this call for broader XStream 1.4.x compatibility.
392
- return new XStream (this .reflectionProvider , this . streamDriver ,
400
+ return new XStream (this .reflectionProvider , getDefaultDriver () ,
393
401
this .beanClassLoader , this .mapper , this .converterLookup , this .converterRegistry ) {
394
402
@ Override
395
403
protected MapperWrapper wrapMapper (MapperWrapper next ) {
@@ -545,7 +553,7 @@ else if (entry.getValue() instanceof List) {
545
553
xstream .processAnnotations (this .annotatedClasses );
546
554
}
547
555
if (this .autodetectAnnotations ) {
548
- xstream .autodetectAnnotations (this . autodetectAnnotations );
556
+ xstream .autodetectAnnotations (true );
549
557
}
550
558
}
551
559
@@ -776,12 +784,7 @@ public Object unmarshalReader(Reader reader) throws XmlMappingException, IOExcep
776
784
}
777
785
778
786
public Object unmarshalReader (Reader reader , DataHolder dataHolder ) throws XmlMappingException , IOException {
779
- if (this .streamDriver != null ) {
780
- return doUnmarshal (this .streamDriver .createReader (reader ), dataHolder );
781
- }
782
- else {
783
- return doUnmarshal (this .fallbackDriver .createReader (reader ), dataHolder );
784
- }
787
+ return doUnmarshal (getDefaultDriver ().createReader (reader ), dataHolder );
785
788
}
786
789
787
790
/**
0 commit comments