Why throw CannotResolveClassException on XStream?

866 Views Asked by At

i using follow code:

@XStreamAlias("ListOfMBDO")
public class XMLListOfMBDO {

 @XStreamImplicit(itemFieldName = "MBDO")
 public List<ModifyBetriebsortDataObject> items = new LinkedList<ModifyBetriebsortDataObject>();

}

public class ModifyBetriebsortDataObject {

 @XStreamAlias("PK")
 public Integer pk;

 @XStreamAlias("NAME")
 public String name;

 public ModifyBetriebsortDataObject(final Integer pk, final String name) {
  this.pk = pk;
  this.name = name;
 }
}


public void loadThis() {
  final String test = "<ListOfMBDO><MBDO><PK>123456</PK><NAME>Test</NAME></MBDO></ListOfMBDO>";
  final XStream _xStream = new XStream(new DomDriver());
  _xStream.processAnnotations(XMLListOfMBDO.class);
  _xStream.processAnnotations(ModifyBetriebsortDataObject.class);
  final XMLListOfMBDO testList = (XMLListOfMBDO) _xStream.fromXML(test);
}

The Serializationto XML works fine. But the deserialization throws an

com.thoughtworks.xstream.mapper.CannotResolveClassException: ....data.XMLListOfMBDO : ....data.XMLListOfMBDO
    at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:68)
    at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
    at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:71)
...

Why?

1

There are 1 best solutions below

0
On

You can try solving deserialization error by adding

    _xStream.alias("ListOfMBDO", XMLListOfMBDO.class);