У меня есть 2 класса A
и B
, которые оба получили компанию. Компания A
получила немного больше информации, чем компания B
(Company
имеет id
, в то время как CNCompany
doesn't). Я хочу сопоставить все поля с помощью orika. Если все поля имеют значение null, я хочу, чтобы объект был нулевым!Orika - Объект карты null, если все поля объекта равны нулю
Я попытался выразить это с помощью модульного теста. Что нужно сделать, чтобы добиться этого?
public class A {
private Company company;
public Company getCompany() {
return company;
}
public void setCompany(Company company) {
this.company = company;
}
}
public class B {
private CNCompany company;
public CNCompany getCompany() {
return company;
}
public void setCompany(CNCompany company) {
this.company = company;
}
}
public class Company {
private Id id;
private AccountId accountId;
public Id getId() {
return id;
}
public void setId(Id id) {
this.id = id;
}
public AccountId getAccountId() {
return accountId;
}
public void setAccountId(AccountId accountId) {
this.accountId = accountId;
}
}
public class CNCompany {
private AccountId accountId
public AccountId getAccountId() {
return accountId;
}
public void setAccountId(AccountId accountId) {
this.accountId = accountId;
}
}
public class MyMapper extends ConfigurableMapper {
@Override
protected void configure(MapperFactory factory) {
factory.classMap(A.class, B.class) //
.mapNulls(false).mapNullsInReverse(false) //
.byDefault() //
.register();
}
}
@Test
public void testMap() throws Exception {
A a = new A();
Company company = new Company();
Id id = new Id();
id.setValue("1");
company.setId(id);
a.setCompany(company);
MyMapper myMapper = new MyMapper();
B outcome = myMapper.map(a, B.class);
assertThat(outcome.getCompany(), is(nullValue()));
}
Проблема заключается в том, что метод isNothingButNulls (источник). Мне нужно пройти все дочерние элементы (и дочерние элементы childs и т. Д.) И проверить, являются ли они пустыми. – Chris311
Сверху моей головы. Думаю, вы могли бы использовать отражения для повторения над детьми и проверки на нуль. Я как бы понял, что это была легкая часть, но теперь, когда я думаю об этом, это будет немного больно. – kab
Да, я тоже так думаю. Представьте, что вы хотите сделать это для разных объектов или определенных объектов в других объектах (каскад) ... – Chris311