Search code examples
javaenumsbooleanmapstruct

How can I map an enum to a boolean with mapstruct?


I have some auto-generated enums that I need to map to boolean values in a MapStruct mapper. They go like this:

enum YN {
    Y("Y"), N("N")
}

enum ZO {
    _0("0"), _1("1")
}

I've tried to use @ValueMappings(), but it didn't work:

@ValueMappings({
    @ValueMapping(source="Y", target=true),
    @ValueMapping(source="N", target=false)
)
Boolean map(YN value);

How can I implemente this mapping?


Solution

  • ValueMappings are used for mapping between two Enums. You can't use them to map an Enum to something else. For your defined mapping you will have to write a mapping by yourself. Then MapStruct can use that one in other mappers.

    abstract class Mapper {
        Boolean map(YN value) {
            return YN.Y.equals(value);
        }
    
        Boolean map(ZO value) {
            return ZO.O.equals(value);
        }
    }