Ho una tale enum:Dozer Stringa da enum mappatura
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;
}
}
ho bisogno di convertirlo in stringa e viceversa. Ora, è fatto dal convertitore personalizzato. Ma voglio farlo tramite mappature dozer (se è possibile). Se non scrivo alcuna mappatura al dozer confing, ottengo
org.dozer.MappingException: java.lang.NoSuchMethodException: by.dev.madhead.demo.test_java.model.PartnershipIndicator.<init>()
eccezione. Non riesco ad aggiungere il costruttore pubblico predefinito a enum, poiché non è possibile. Quindi, ho scritto un trucco con codice interno e valueOfCode()/toString(). Non funziona. Quindi, l'ho mappato in dozer config:
<mapping>
<class-a>java.lang.String</class-a>
<class-b create-method="valueOfCode">by.dev.madhead.demo.test_java.model.PartnershipIndicator</class-b>
</mapping>
Non funziona. Ho provato valueOfCode(), mappature unidirezionali. Niente funziona. Anche la conversione da Enum a String non funziona, ricevo Stringhe vuote. Qualche idea?
Ho aggiunto il mio convertitore personalizzato al dozer master. Quindi nessuno dalla 5.4 non affronterà questo problema :) – madhead
@all Qualcuno può dare un'occhiata a questa [Domanda] (http://stackoverflow.com/questions/27864640/dozer-string-to-date-field-level-mapping-for -a-list) – 09Q71AO534