Olá pessoal!
Começamos a criar uma nova dsl para escrever nodes nos converters do xstream. A ideia é facilitar o uso e escrever menos.
O projeto está disponível no github: xstream-wrtier-dsl
Olhem alguns exemplos de uso:
converter to Client:
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
build(writer, context).to(source)
.node("code", "#id")
.node("fullName", "#name")
.node("#email")
.delegate("home-address", "#address");
}
converter to Address:
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
build(writer, context).to(source)
.node("#street")
.node("#city")
.node("#state")
.node("#country")
.node("zip-code", "#zipCode");
}
converter to Order:
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
build(writer, context).to(source)
.node("#id")
.collection("#products");
}
converter to User.Role:
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
build(writer, context).node("role", source);
}
converter to Invoice:
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
build(writer, context).to(source)
.node("#id")
.node("total", "#amount", options(":if_not_null"))
.node("#dueDate", options(":date_format => dd/MM/yyyy"));
}
O projeto ainda não está finalizado, estou a procura de feedback, o que acham?
[]s