Mapstruct: вызов функции из внедренного картографа - PullRequest
0 голосов
/ 07 мая 2020

У меня есть такой сопоставитель:

    @Mapper(uses = {DateMapper.class, AuthenticationMapper.class})
    public interface LocalUserMapper {
        LocalUserMapper INSTANCE = Mappers.getMapper(LocalUserMapper.class);

        @Mapping(target = "domains", source = "localUser.directDomains")
        @Mapping(target = "phone", source = "localUser.phoneNumber")
        @Mapping(target = "displayName", source = "localUser.displayPartyName")
        @Mapping(target = "authenticationMethod", expression =" java(mapAuthenticationMethodForLocalUser(localUser))")
        UserDTO convertLocalUser(LocalUser localUser);
}

для сопоставления поля «authenticationMethod» я хочу сделать несколько вещей локально, а затем пусть AuthenticationMapper (см. Выше) сделает все остальное (примечание: я не могу изменить основную функцию сопоставления AuthenticationMapper в соответствии с моими потребностями, она используется в других местах) в идеале используйте эту функцию для сопоставления (как выражение)

    default String mapAuthenticationMethodForLocalUser(LocalUser localUser) {
            AuthenticationMethod authenticationMethod = localUser.getAuthenticationMethod();
            if (localUser.useTwoLayerAuthentication()) {
// do some stuff and return something
            } //else
            return **authenticationMethodMapper**.convertAuthenticationMethod(authenticationMethod);
        }

это не работает, как если бы impl генерируется authenticationMethodMapper - это как-то неизвестное поле

кто-нибудь знает хороший способ это сделать? спасибо!

...