Skip to content

Commit fa3b512

Browse files
committed
Revert "Backport XStreamSerializer changes"
This reverts commit e539d7d.
1 parent b1402a9 commit fa3b512

File tree

3 files changed

+56
-58
lines changed

3 files changed

+56
-58
lines changed

build.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ Args:
310310
<property name="jbibtex.jar" value="${lib}/jbibtex-1.0.20.jar" />
311311
<!-- W3C RDF Parser -->
312312
<property name="rdf.jar" value="${lib}/rdf-api-2001-01-19.jar" />
313-
<property name="xstream.jar" value="${lib}/xstream-1.4.20.jar" />
313+
<property name="xstream.jar" value="${lib}/xstream-1.1.3.jar" />
314314
<property name="xmlunit.jar" value="${lib}/xmlunit-1.6.jar" />
315315
<property name="oai-harvester.jar" value="${lib}/harvester2-0.1.12-p1.jar"/>
316316
<!-- Needed by OAI harvester: Xalan, Xerces, XML-APIs, Log4j -->

lib/xstream-1.4.20.jar

-630 KB
Binary file not shown.

src/org/lockss/util/XStreamSerializer.java

Lines changed: 55 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -32,33 +32,25 @@ of this software and associated documentation files (the "Software"), to deal
3232

3333
package org.lockss.util;
3434

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+
3545
import com.thoughtworks.xstream.XStream;
46+
import com.thoughtworks.xstream.alias.*;
3647
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.*;
4050
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.*;
4652
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.*;
6254

6355
/**
6456
* <p>An implementation of {@link ObjectSerializer} based on
@@ -110,7 +102,7 @@ public class XStreamSerializer extends ObjectSerializer {
110102
* subject of Java Bug Report #709654.</p>
111103
* @author Thib Guicherd-Callin
112104
* @see com.thoughtworks.xstream.converters.basic.DateConverter
113-
* @see com.thoughtworks.xstream.core.util.ThreadSafeSimpleDateFormat
105+
* @see com.thoughtworks.xstream.converters.basic.ThreadSafeSimpleDateFormat
114106
*/
115107
private static class LockssDateConverter implements Converter {
116108

@@ -143,14 +135,12 @@ public Object unmarshal(HierarchicalStreamReader reader,
143135
}
144136

145137
protected static final ThreadSafeSimpleDateFormat formatter = new ThreadSafeSimpleDateFormat("yyyy-MM-dd HH:mm:ss.S Z",
146-
TimeZone.getDefault(),
147138
4,
148-
20, true);
139+
20);
149140

150141
protected static final ThreadSafeSimpleDateFormat oldFormatter = new ThreadSafeSimpleDateFormat("yyyy-MM-dd HH:mm:ss.S z",
151-
TimeZone.getDefault(),
152142
4,
153-
20, true);
143+
20);
154144

155145
}
156146
/*
@@ -302,11 +292,10 @@ private static class LockssReferenceByXPathMarshaller
302292
* @param classMapper
303293
*/
304294
public LockssReferenceByXPathMarshaller(HierarchicalStreamWriter writer,
305-
ConverterLookup converterLookup,
306-
Mapper classMapper,
295+
DefaultConverterLookup converterLookup,
296+
ClassMapper classMapper,
307297
String rootClassName) {
308-
super(writer, converterLookup, classMapper,
309-
ReferenceByXPathMarshallingStrategy.ABSOLUTE);
298+
super(writer, converterLookup, classMapper);
310299
this.rootClassName = rootClassName;
311300
}
312301

@@ -322,7 +311,6 @@ public LockssReferenceByXPathMarshaller(HierarchicalStreamWriter writer,
322311
* {@link LockssSerializable}.
323312
* @see ReferenceByXPathMarshaller#convertAnother
324313
*/
325-
@Override
326314
public void convertAnother(Object parent) {
327315
if ( !( parent instanceof Serializable ||
328316
parent instanceof LockssSerializable) ) {
@@ -372,23 +360,40 @@ private static class LockssReferenceByXPathMarshallingStrategy
372360
* unmarshaller).
373361
*/
374362
public LockssReferenceByXPathMarshallingStrategy(LockssApp lockssContext) {
375-
super(ReferenceByXPathMarshallingStrategy.ABSOLUTE);
376363
this.lockssContext = lockssContext;
377364
}
378365

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);
384382
}
385383

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,
388390
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);
392397
}
393398

394399
}
@@ -429,7 +434,7 @@ public LockssReferenceByXPathUnmarshaller(LockssApp lockssContext,
429434
Object root,
430435
HierarchicalStreamReader reader,
431436
ConverterLookup converterLookup,
432-
Mapper classMapper) {
437+
ClassMapper classMapper) {
433438
super(root, reader, converterLookup, classMapper);
434439
this.lockssContext = lockssContext;
435440
}
@@ -442,8 +447,8 @@ public LockssReferenceByXPathUnmarshaller(LockssApp lockssContext,
442447
* @param parent
443448
* @param type
444449
*/
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);
447452
if (ret instanceof LockssSerializable) {
448453
Object[] parameters = new Object[] { lockssContext };
449454
invokeMethod(
@@ -790,20 +795,13 @@ private synchronized void init() {
790795
else {
791796
reflectionProvider = new PureJavaReflectionProvider();
792797
}
793-
HierarchicalStreamDriver driver = new DomDriver(Constants.DEFAULT_ENCODING);
798+
HierarchicalStreamDriver driver = new DomDriver();
794799

795-
xs = new XStream(reflectionProvider, driver) {
796-
@Override
797-
protected boolean useXStream11XmlFriendlyMapper() {
798-
return true;
799-
}
800-
};
801-
800+
xs = new XStream(reflectionProvider, driver);
802801
xs.setMarshallingStrategy(new LockssReferenceByXPathMarshallingStrategy(lockssContext));
803-
xs.addPermission(AnyTypePermission.ANY);
804802
xs.registerConverter(new LockssDateConverter());
805803
xs.registerConverter(new LockssHashResultConverter());
806-
xs.registerConverter(new LockssConstructingConverter(xs.getMapper()));
804+
xs.registerConverter(new LockssConstructingConverter(xs.getClassMapper()));
807805
initialized = true;
808806
}
809807
}

0 commit comments

Comments
 (0)