Внутренние классы отображения Dozer

Мне нужно сопоставить класс A с классом C, используя платформу dozer.

public class A {

private String fielda1;
private String fielda2;

public String getFielda1() {
    return fielda1;
}
public void setFielda1(String fielda1) {
    this.fielda1 = fielda1;
}
public String getFielda2() {
    return fielda2;
}
public void setFielda2(String fielda2) {
    this.fielda2 = fielda2;
}
}


public class B {
private List<C> cList;

public List<C> getcList() {
    return cList;
}
public void setcList(List<C> cList) {
    this.cList = cList;
}

public static class C {
    private String fieldc1;
    private String fieldc2;

    public String getFieldc1() {
        return fieldc1;
    }
    public void setFieldc1(String fieldc1) {
        this.fieldc1 = fieldc1;
    }
    public String getFieldc2() {
        return fieldc2;
    }
    public void setFieldc2(String fieldc2) {
        this.fieldc2 = fieldc2;
    }
}
}

XML-файл сопоставления:

<mapping wildcard="false" map-null="false" map-id="test">
    <class-a>test.A</class-a>
    <class-b>test.B.C</class-b>
    <field>
        <a>fielda1</a>
        <b>fieldc1</b>
    </field>
    <field>
        <a>fielda1</a>
        <b>fieldc2</b>
    </field>
</mapping>

Когда я пытаюсь сопоставить эти классы, я получил следующее исключение:

org.dozer.MappingException: java.lang.ClassNotFoundException: test.B.C
at org.dozer.util.MappingUtils.throwMappingException(MappingUtils.java:88)
at org.dozer.util.DefaultClassLoader.loadClass(DefaultClassLoader.java:33)

Это швы этот бульдозер не может справиться с этой ситуацией и использует в качестве имени пакета класс B. Эту проблему можно решить с помощью специальных преобразователей. Я просто хочу знать, есть ли какой-нибудь трюк, который можно было бы использовать для преобразования этих классов, используя только конфигурацию XML?

7
задан Klaus Byskov Pedersen 12 November 2010 в 22:16
поделиться