blob: 29f5995b26ae2723c76d889a4e037371eccbefde [file] [log] [blame]
package org.codehaus.jackson.jaxb;
import javax.xml.bind.annotation.*;
import org.codehaus.jackson.map.ObjectMapper;
public class TestPropertyOrdering
extends BaseJaxbTest
{
/*
/**********************************************************
/* Helper beans
/**********************************************************
*/
@XmlType(propOrder = {"cparty", "contacts"})
@XmlAccessorOrder(XmlAccessOrder.ALPHABETICAL)
public class BeanFor268
{
private String cpartyDto = "dto";
private int[] contacts = new int[] { 1, 2, 3 };
@XmlElement(name="cparty")
public String getCpartyDto() { return cpartyDto; }
public void setCpartyDto(String cpartyDto) { this.cpartyDto = cpartyDto; }
@XmlElement(name="contact")
@XmlElementWrapper(name="contacts")
public int[] getContacts() { return contacts; }
public void setContacts(int[] contacts) { this.contacts = contacts; }
}
/* Also, considering that JAXB actually seems to expect original
* names for property ordering, let's see that alternative
* annotation also works
* (see [JACKSON-268] for more details)
*/
@XmlType(propOrder = {"cpartyDto", "contacts"})
@XmlAccessorOrder(XmlAccessOrder.ALPHABETICAL)
public class BeanWithImplicitNames
{
private String cpartyDto = "dto";
private int[] contacts = new int[] { 1, 2, 3 };
@XmlElement(name="cparty")
public String getCpartyDto() { return cpartyDto; }
public void setCpartyDto(String cpartyDto) { this.cpartyDto = cpartyDto; }
@XmlElement(name="contact")
@XmlElementWrapper(name="contacts")
public int[] getContacts() { return contacts; }
public void setContacts(int[] contacts) { this.contacts = contacts; }
}
@XmlType(propOrder={"b", "a", "c"})
public static class AlphaBean2
{
public int c = 3;
public int a = 1;
public int b = 2;
}
/*
/**********************************************************
/* Tests
/**********************************************************
*/
public void testSerializationExplicitOrdering() throws Exception
{
ObjectMapper mapper = getJaxbMapper();
assertEquals("{\"b\":2,\"a\":1,\"c\":3}", serializeAsString(mapper, new AlphaBean2()));
}
// Trying to reproduce [JACKSON-268]
public void testOrderingWithRename() throws Exception
{
ObjectMapper mapper = getJaxbMapper();
assertEquals("{\"cparty\":\"dto\",\"contacts\":[1,2,3]}", mapper.writeValueAsString(new BeanFor268()));
}
public void testOrderingWithOriginalPropName() throws Exception
{
ObjectMapper mapper = getJaxbMapper();
assertEquals("{\"cparty\":\"dto\",\"contacts\":[1,2,3]}",
mapper.writeValueAsString(new BeanWithImplicitNames()));
}
}