У меня есть такое перечисление:
public enum PartnershipIndicator {
VENDOR("VENDOR"), COPARTNER("COPARTNER"), BUYER("BUYER");
String code;
private PartnershipIndicator(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public static PartnershipIndicator valueOfCode(String code) {
for (PartnershipIndicator status : values()) {
if (status.getCode().equals(code)) {
return status;
}
}
throw new IllegalArgumentException(
"Partnership status cannot be resolved for code " + code);
}
@Override
public String toString() {
return code;
}
}
Мне нужно преобразовать его в строку и наоборот. Теперь это делается с помощью пользовательского конвертера. Но я хочу сделать это с помощью сопоставления бульдозеров (если это возможно). Если я не пишу никаких отображений в конфиг бульдозера, я получаю
org.dozer.MappingException: java.lang.NoSuchMethodException: by.dev.madhead.demo.test_java.model.PartnershipIndicator.<init>()
исключение. Я не могу добавить общедоступный конструктор по умолчанию в перечисление, так как это невозможно. Итак, я написал трюк с внутренним кодом и valueOfCode()/toString(). Это не работает. Затем я сопоставил его в конфигурации бульдозера:
<mapping>
<class-a>java.lang.String</class-a>
<class-b create-method="valueOfCode">by.dev.madhead.demo.test_java.model.PartnershipIndicator</class-b>
</mapping>
Это не работает. Я пробовал valueOfCode(), односторонние сопоставления. Ничего не работает. Преобразование Enum в String тоже не работает, я получаю пустые строки. Любые идеи?