Dozer bidirektionales mapping (String, String) mit custom comverter unmöglich?

Habe ich ein Raupen-mapping mit einem benutzerdefinierten Konverter:

<mapping>
    <class-a>com.xyz.Customer</class-a>
    <class-b>com.xyz.CustomerDAO</class-b>
    <field custom-converter="com.xyz.DozerEmptyString2NullConverter">
        <a>customerName</a>
        <b>customerName</b>
    </field>
</mapping>

Dem Konverter:

public class DozerEmptyString2NullConverter extends DozerConverter<String, String> {

    public DozerEmptyString2NullConverter() {
        super(String.class, String.class);
    }

    public String convertFrom(String source, String destination) {
        String ret = null;
        if (source != null) {
            if (!source.equals(""))
            {
                ret = StringFormatter.wildcard(source);
            } 
        }
        return ret;
    }

    public String convertTo(String source, String destination) {
        return source;
    }
}

Wenn ich Anrufe, die mapper in eine Richtung (Kunde -> CustomerDAO) die Methode "convertTo' bezeichnet wird.

Seit Dozer ist in der Lage, die bi-direktionale mapping, erwarte ich, dass, sobald ich rufe die mapper in die entgegengesetzte Richtung, die Methode convertFrom' aufgerufen wird.

Aber die Methode convertTo wird nie aufgerufen.

Ich vermute, dass das problem ist, dass beide Typen sind Strings, aber wie kann ich diese Arbeit machen?

Als workaround, ich habe zwei one-way-mapping, ist das die standard Lösung, oder ist das Verhalten ein bug?

InformationsquelleAutor ABX | 2011-02-18
Schreibe einen Kommentar