@@ -32,33 +32,25 @@ of this software and associated documentation files (the "Software"), to deal
32
32
33
33
package org .lockss .util ;
34
34
35
+ import java .io .*;
36
+ import java .lang .reflect .Method ;
37
+ import java .text .ParseException ;
38
+ import java .util .*;
39
+
40
+ import com .thoughtworks .xstream .alias .CannotResolveClassException ;
41
+ import org .lockss .app .LockssApp ;
42
+ import org .lockss .hasher .HashResult ;
43
+ import org .lockss .util .SerializationException ;
44
+
35
45
import com .thoughtworks .xstream .XStream ;
46
+ import com .thoughtworks .xstream .alias .*;
36
47
import com .thoughtworks .xstream .converters .*;
37
- import com .thoughtworks .xstream .converters .reflection .PureJavaReflectionProvider ;
38
- import com .thoughtworks .xstream .converters .reflection .ReflectionConverter ;
39
- import com .thoughtworks .xstream .converters .reflection .ReflectionProvider ;
48
+ import com .thoughtworks .xstream .converters .basic .*;
49
+ import com .thoughtworks .xstream .converters .reflection .*;
40
50
import com .thoughtworks .xstream .core .*;
41
- import com .thoughtworks .xstream .core .util .ThreadSafeSimpleDateFormat ;
42
- import com .thoughtworks .xstream .io .HierarchicalStreamDriver ;
43
- import com .thoughtworks .xstream .io .HierarchicalStreamReader ;
44
- import com .thoughtworks .xstream .io .HierarchicalStreamWriter ;
45
- import com .thoughtworks .xstream .io .StreamException ;
51
+ import com .thoughtworks .xstream .io .*;
46
52
import com .thoughtworks .xstream .io .xml .DomDriver ;
47
- import com .thoughtworks .xstream .mapper .CannotResolveClassException ;
48
- import com .thoughtworks .xstream .mapper .Mapper ;
49
- import com .thoughtworks .xstream .security .AnyTypePermission ;
50
- import org .lockss .app .LockssApp ;
51
- import org .lockss .hasher .HashResult ;
52
-
53
- import java .io .InterruptedIOException ;
54
- import java .io .Reader ;
55
- import java .io .Serializable ;
56
- import java .io .Writer ;
57
- import java .lang .reflect .Method ;
58
- import java .text .ParseException ;
59
- import java .util .Date ;
60
- import java .util .HashMap ;
61
- import java .util .TimeZone ;
53
+ import com .thoughtworks .xstream .mapper .*;
62
54
63
55
/**
64
56
* <p>An implementation of {@link ObjectSerializer} based on
@@ -110,7 +102,7 @@ public class XStreamSerializer extends ObjectSerializer {
110
102
* subject of Java Bug Report #709654.</p>
111
103
* @author Thib Guicherd-Callin
112
104
* @see com.thoughtworks.xstream.converters.basic.DateConverter
113
- * @see com.thoughtworks.xstream.core.util .ThreadSafeSimpleDateFormat
105
+ * @see com.thoughtworks.xstream.converters.basic .ThreadSafeSimpleDateFormat
114
106
*/
115
107
private static class LockssDateConverter implements Converter {
116
108
@@ -143,14 +135,12 @@ public Object unmarshal(HierarchicalStreamReader reader,
143
135
}
144
136
145
137
protected static final ThreadSafeSimpleDateFormat formatter = new ThreadSafeSimpleDateFormat ("yyyy-MM-dd HH:mm:ss.S Z" ,
146
- TimeZone .getDefault (),
147
138
4 ,
148
- 20 , true );
139
+ 20 );
149
140
150
141
protected static final ThreadSafeSimpleDateFormat oldFormatter = new ThreadSafeSimpleDateFormat ("yyyy-MM-dd HH:mm:ss.S z" ,
151
- TimeZone .getDefault (),
152
142
4 ,
153
- 20 , true );
143
+ 20 );
154
144
155
145
}
156
146
/*
@@ -302,11 +292,10 @@ private static class LockssReferenceByXPathMarshaller
302
292
* @param classMapper
303
293
*/
304
294
public LockssReferenceByXPathMarshaller (HierarchicalStreamWriter writer ,
305
- ConverterLookup converterLookup ,
306
- Mapper classMapper ,
295
+ DefaultConverterLookup converterLookup ,
296
+ ClassMapper classMapper ,
307
297
String rootClassName ) {
308
- super (writer , converterLookup , classMapper ,
309
- ReferenceByXPathMarshallingStrategy .ABSOLUTE );
298
+ super (writer , converterLookup , classMapper );
310
299
this .rootClassName = rootClassName ;
311
300
}
312
301
@@ -322,7 +311,6 @@ public LockssReferenceByXPathMarshaller(HierarchicalStreamWriter writer,
322
311
* {@link LockssSerializable}.
323
312
* @see ReferenceByXPathMarshaller#convertAnother
324
313
*/
325
- @ Override
326
314
public void convertAnother (Object parent ) {
327
315
if ( !( parent instanceof Serializable ||
328
316
parent instanceof LockssSerializable ) ) {
@@ -372,23 +360,40 @@ private static class LockssReferenceByXPathMarshallingStrategy
372
360
* unmarshaller).
373
361
*/
374
362
public LockssReferenceByXPathMarshallingStrategy (LockssApp lockssContext ) {
375
- super (ReferenceByXPathMarshallingStrategy .ABSOLUTE );
376
363
this .lockssContext = lockssContext ;
377
364
}
378
365
379
- @ Override
380
- protected TreeMarshaller createMarshallingContext (HierarchicalStreamWriter writer ,
381
- ConverterLookup converterLookup ,
382
- Mapper mapper ) {
383
- return new LockssReferenceByXPathMarshaller (writer , converterLookup , mapper , "<FIXME>" ); // FIXME
366
+ /**
367
+ * <p>Performs unmarshalling with a
368
+ * {@link LockssReferenceByXPathMarshaller} instance.</p>
369
+ * @see LockssReferenceByXPathMarshaller
370
+ */
371
+ public void marshal (HierarchicalStreamWriter writer ,
372
+ Object root ,
373
+ DefaultConverterLookup converterLookup ,
374
+ ClassMapper classMapper ,
375
+ DataHolder dataHolder ) {
376
+ new LockssReferenceByXPathMarshaller (
377
+ writer ,
378
+ converterLookup ,
379
+ classMapper ,
380
+ root .getClass ().getName ()
381
+ ).start (root , dataHolder );
384
382
}
385
383
386
- @ Override
387
- protected TreeUnmarshaller createUnmarshallingContext (Object root ,
384
+ /**
385
+ * <p>Performs unmarshalling with a
386
+ * {@link LockssReferenceByXPathUnmarshaller} instance.</p>
387
+ * @see LockssReferenceByXPathUnmarshaller
388
+ */
389
+ public Object unmarshal (Object root ,
388
390
HierarchicalStreamReader reader ,
389
- ConverterLookup converterLookup ,
390
- Mapper mapper ) {
391
- return new LockssReferenceByXPathUnmarshaller (lockssContext , root , reader , converterLookup , mapper );
391
+ DataHolder dataHolder ,
392
+ DefaultConverterLookup converterLookup ,
393
+ ClassMapper classMapper ) {
394
+ return new LockssReferenceByXPathUnmarshaller (
395
+ lockssContext , root , reader , converterLookup , classMapper ).start (
396
+ dataHolder );
392
397
}
393
398
394
399
}
@@ -429,7 +434,7 @@ public LockssReferenceByXPathUnmarshaller(LockssApp lockssContext,
429
434
Object root ,
430
435
HierarchicalStreamReader reader ,
431
436
ConverterLookup converterLookup ,
432
- Mapper classMapper ) {
437
+ ClassMapper classMapper ) {
433
438
super (root , reader , converterLookup , classMapper );
434
439
this .lockssContext = lockssContext ;
435
440
}
@@ -442,8 +447,8 @@ public LockssReferenceByXPathUnmarshaller(LockssApp lockssContext,
442
447
* @param parent
443
448
* @param type
444
449
*/
445
- public Object convertAnother (Object parent , Class type , Converter converter ) {
446
- Object ret = super .convertAnother (parent , type , converter );
450
+ public Object convertAnother (Object parent , Class type ) {
451
+ Object ret = super .convertAnother (parent , type );
447
452
if (ret instanceof LockssSerializable ) {
448
453
Object [] parameters = new Object [] { lockssContext };
449
454
invokeMethod (
@@ -790,20 +795,13 @@ private synchronized void init() {
790
795
else {
791
796
reflectionProvider = new PureJavaReflectionProvider ();
792
797
}
793
- HierarchicalStreamDriver driver = new DomDriver (Constants . DEFAULT_ENCODING );
798
+ HierarchicalStreamDriver driver = new DomDriver ();
794
799
795
- xs = new XStream (reflectionProvider , driver ) {
796
- @ Override
797
- protected boolean useXStream11XmlFriendlyMapper () {
798
- return true ;
799
- }
800
- };
801
-
800
+ xs = new XStream (reflectionProvider , driver );
802
801
xs .setMarshallingStrategy (new LockssReferenceByXPathMarshallingStrategy (lockssContext ));
803
- xs .addPermission (AnyTypePermission .ANY );
804
802
xs .registerConverter (new LockssDateConverter ());
805
803
xs .registerConverter (new LockssHashResultConverter ());
806
- xs .registerConverter (new LockssConstructingConverter (xs .getMapper ()));
804
+ xs .registerConverter (new LockssConstructingConverter (xs .getClassMapper ()));
807
805
initialized = true ;
808
806
}
809
807
}
0 commit comments