2つのクラスがあります。A
とB
の両方が会社を持っています。 A
の会社は、B
(Company
はid
を持ち、CNCompany
はそうではありません)の会社よりも少し詳しい情報を持っています。 orikaを使用してすべてのフィールドをマップしたいと思います。オブジェクトのすべてのフィールドがnullの場合、オブジェクトをnullにします。Orika - オブジェクトのすべてのフィールドがnullの場合、オブジェクトを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(source)メソッドです。私はすべての子(子どもの子など)をトラバースして、それらがヌルであるかどうかをチェックする必要があります。 – Chris311
私の頭の上から離れて、私はあなたが子供の上を反復し、ヌルをチェックするために反射を使うことができると思います。私はそれが簡単な部分だったと思っていましたが、今私はそれについてもっと考えています。それは少し痛みを伴うでしょう。 – kab
はい、私もそうだと思います。ちょうどあなたが他のオブジェクト(カスケード)のオブジェクト/特定のオブジェクトの異なる種類のためにこれをしたいと想像して... – Chris311