Добавить элемент в список с помощью Dozer без специального конвертера
Недавно мы столкнулись с необходимостью автоматически генерировать код отображения.
После анализа всех структур отображения bean-компонентов мы выбрали среду Dozer (это действительно мощный процессор отображения xml).
Но сейчас есть проблема. Нам нужно просто добавить один элемент (клиент) в конец списка. Но я действительно не знаю, как это сделать.
public class Client {
private String name;
private Integer age;
// constructor, getters and setters
}
public class OrganizationSource{
private Client client;
// constructor, getter and setter
}
public class OrganizationDest {
private List<Client> clients;
// getter
}
Все примеры из документа Dozer говорят только о заданном элементе в списке по индексу, который не является подходящим решением, когда вы не знаете последний индекс.
<field>
<a>client</a>
<b>clients[0]</b>
<b-hint>Client</b-hint> // that works! it creates new element in list
</field>
Я пытался объявить пользовательский метод set для списка (как упомянуто в документации)
<field type="one-way">
<a>integerStr</a>
<b set-method="addIntegerToList">integerList</b>
</field>
Но чтобы поместить элемент в список, мне нужно вызвать два метода (сначала получить, а затем добавить) что-то вроде:
Client source = new Client("Source", 0);
Organization org = new Organization();
List<Client> clients = org.getClients();
clients.add(source)
Я попытался объявить метод set таким образом:
<field type="one-way>
<a>client</a>
<b set-method="getClients().add(java.lang.Object)"</b>
</field
Но это не работает.
Я хочу знать - есть ли способ сделать это без пользовательских конвертеров? И если да - как?