package com.fasterxml.jackson.dataformat.xml.misc;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.XmlTestBase;
/**
* Unit test to showcase issue #104, based on TestObjectIdDeserialization unit test in databind package.
*/
public class ObjectId104Test extends XmlTestBase {
// // Classes for external id from property annotations:
static class IdWrapper
{
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="id")
public ValueNode node;
public IdWrapper() { }
public IdWrapper(int v) {
node = new ValueNode(v);
}
}
static class ValueNode {
public List<Integer> value= new ArrayList<Integer>();
public IdWrapper next;
public ValueNode() { this(0); }
public ValueNode(int v) { value.add(v); }
}
private final XmlMapper MAPPER = new XmlMapper();
// Another test to ensure ordering is not required (i.e. can do front references)
public void testSimpleCollectionDeserWithForwardRefs() throws Exception
{
IdWrapper result = MAPPER.readValue("<IdWrapper><node><value><value>7</value></value><next><node>1</node></next><id>1</id></node></IdWrapper>"
,IdWrapper.class);
assertEquals(7, (int)result.node.value.get(0));
assertSame(result.node, result.node.next.node);
}
}