Hello List:
I'm in the process of migrating a project from java 6 to java 7. The project
had been using XStream 1.3. We had to update that to XStream 1.4.4 because of
java 7. Most things now work. However, we have some old xml files written by an
unknown version of XStream that can't be deserialized now. The problem is with
SynchronizedList. Here's the error I get:
com.thoughtworks.xstream.converters.ConversionException: Cannot deserialize
object with new readObject()/writeObject() methods
---- Debugging information ----
class : java.util.Collections$SynchronizedList
required-type : java.util.Collections$SynchronizedList
converter-type :
com.thoughtworks.xstream.converters.reflection.SerializableConverter
path : /java.util.Collections-SynchronizedRandomAccessList
line number : 1
The xml file looks like this:
<java.util.Collections-SynchronizedRandomAccessList
resolves-to="java.util.Collections-SynchronizedList">
<list>
... the list content
</list>
<c class="list" reference="../list"/>
<mutex class="java.util.Collections-SynchronizedList">
<list reference="../../list"/>
<c class="list" reference="../../list"/>
<mutex class="java.util.Collections-SynchronizedList" reference=".."/>
</mutex>
</java.util.Collections-SynchronizedRandomAccessList>
Here's the code that creates the XStream instance:
XStream xstream = new XStream(new XppDriver(new
XStream11XmlFriendlyReplacer())) {
@Override
protected boolean useXStream11XmlFriendlyMapper() {
return true;
}
};
I also tried using XStream11NameCoder instead of the
XStream11XmlFriendlyReplacer with the same results.
Any ideas?
Thanks,
Rad Widmer