Я пытаюсь решить простое преобразование между исходным классом ниже
package com.my.package;
public class Source
{
private String member;
public String getMember()
{
return member;
}
public void setMember(String member)
{
this.member = member;
}
}
в целевой класс, как описано ниже:
package com.my.package;
public class Destination
{
private byte[] member;
public byte[] getMember()
{
return member;
}
public void setMember(byte[] member)
{
this.member = member;
}
}
Для этого я сначала попытался запустить dozer mapper с помощьюниже config
<mapping map-id="test">
<class-a>com.my.package.Source
</class-a>
<class-b>com.my.package.Destination
</class-b>
<field>
<a>member</a>
<b>member</b>
</field>
</mapping>
И столкнулся с этим исключением:
Exception in thread "main" org.dozer.MappingException: Illegal object type for the method 'setMember'.
Expected types:
[B
Actual types:
java.lang.String
Что выглядело справедливо, после еще нескольких поисков я наткнулся на следующий config:
<mapping map-id="test">
<class-a>com.my.package.Source
</class-a>
<class-b>com.my.package.Destination
</class-b>
<field>
<a>member</a>
<b set-method="setMemberFromString(java.lang.String)">member</b>
</field>
</mapping>
Ипредставил этот новый сеттер в классе Destination, что-то вроде:
public void setMemberFromString(String str) {
this.member = str.getBytes(Charset.forName("UTF-8"));
}
Удивительно, но даже это не работает и дает то же исключение.Есть идеи, что мне не хватает?