Mapstruct необязательное отображение - PullRequest
0 голосов
/ 19 сентября 2018

Мне интересно, как я могу изменить это mapping, используя mapstruct, чтобы избежать исключения nullPointer.rep.getClientLevelType() может быть нулевым или DIRECT или RELATED.Когда fromValue выполняется на null или empty.string, возникает исключение нулевого указателя.Я не знаю, как сделать, чтобы это поле присутствовало, только если rep.getClientLevelType() не является нулевым, используя mapstruct.

@Mapping(target = "clientLevelType", expression = "java(ClientLevelType.fromValue(rep.getClientLevelType()))")

enum документ, сгенерированный из wsdl:

@XmlType(name = "ClientLevelType")
@XmlEnum
public enum ClientLevelType {

    DIRECT,
    RELATED;

    public String value() {
        return name();
    }

    public static ClientLevelType fromValue(String v) {
        return valueOf(v);
    }    
}

WSDL:

   <xs:simpleType name="ClientLevelType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="DIRECT"/>
            <xs:enumeration value="RELATED"/>
        </xs:restriction>
    </xs:simpleType>

1 Ответ

0 голосов
/ 19 сентября 2018

Преобразование String в enum может быть сделано неявно с помощью mapstruct, см. неявные преобразования типов в документации.

Таким образом, вместо добавления expression просто добавьте source или, когда имена полей совпадают, вы можете даже пропустить их, и MapStruct автоматически обнаружит сопоставление.

...