Добавить элемент в список с помощью 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

Но это не работает.

Я хочу знать - есть ли способ сделать это без пользовательских конвертеров? И если да - как?

0 ответов

Другие вопросы по тегам