【问题标题】:Java Modelmapper: Converter doesnt get usedJava Modelmapper:转换器没有被使用
【发布时间】:2015-11-18 15:47:06
【问题描述】:

我正在开发一个小型 java 程序,用于将活动目录用户与我的数据库中的用户同步。因此,我使用modelmapper。似乎工作正常,而且速度也很快。

无论如何,我在映射配置中添加了一个转换器。没有显示任何标记,我检查了语法,所以应该没问题。但是当我启动同步器以查看他是否正确映射所有内容时,没有任何反应。我的意思是,对象被正确映射,但不是我为其设置转换器的属性。

我已经进入调试模式,甚至没有进入转换方法,一次都没有

这是我的模型映射器属性映射配置

private PropertyMap<ActiveDirectoryUser, User> createUserMap = new PropertyMap<ActiveDirectoryUser, User>() {
    protected void configure() {
        map(source.getCn(), destination.getFullName());
        map(source.getsAMAccountName(), destination.getLoginName());
        map(source.getMail(), destination.getEmail());
        map(source.isEnabled(), destination.isActive());
        using(new ModelmapperMemberOfToIsAdminConverter(Arrays.asList(ConfigApp.get(ConfigKeys.AD_DISTINGUISHEDNAME_ADMINS).split(";")))
                ).map(source.getGroupMembership(), destination.isAdmin());
    };
};

还有我的转换器:

package ch.itp.absencemanagersync.synchronize;

import java.util.ArrayList;
import java.util.List;

import org.modelmapper.AbstractConverter;

public class ModelmapperMemberOfToIsAdminConverter extends AbstractConverter<ArrayList<String>, Boolean>{

    private List<String> comparisonList;

    protected ModelmapperMemberOfToIsAdminConverter(List<String> blablablist){
        comparisonList = blablablist;
    }

    @Override
    protected Boolean convert(ArrayList<String> source) {
        //empty for now, will do some logic here later
        //for testing, always return true
        return true;
    }

}

所以如果我运行同步器,理论上,我的数据库中的每个用户都应该成为管理员,但这不会发生 我不知道我在这里做错了什么,感谢任何帮助^^

ps:不要担心配置中的 Arrays.asList 垃圾,它工作得很好

你好,

麦克

【问题讨论】:

    标签: java converter object-object-mapping modelmapper


    【解决方案1】:

    工作代码:

    映射配置:

    private PropertyMap<ActiveDirectoryUser, User> createUserMap = new PropertyMap<ActiveDirectoryUser, User>() {
        protected void configure() {
            using(myConverter).map(source.getGroupMembership()).setAdmin(false);
            map(source.getCn(), destination.getFullName());
            map(source.getsAMAccountName(), destination.getLoginName());
            map(source.getMail(), destination.getEmail());
            map(source.isEnabled(), destination.isActive());
        };
    };
    

    和转换器:

    package ch.itp.absencemanagersync.synchronize;
    
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    
    import org.modelmapper.AbstractConverter;
    
    import ch.itp.absencemanagersync.util.ConfigApp;
    import ch.itp.absencemanagersync.util.ConfigKeys;
    
    public class ModelmapperMemberOfToIsAdminConverter extends AbstractConverter<List<String>, Boolean>{
    
        private List<String> comparisonList = Arrays.asList(ConfigApp.get(ConfigKeys.AD_DISTINGUISHEDNAME_ADMINS).split(";"));
    
        protected ModelmapperMemberOfToIsAdminConverter(){  
        }
        @Override
        protected Boolean convert(List<String> source) {
            if (!Collections.disjoint(source, comparisonList)){
                return Boolean.TRUE;
            }
            return Boolean.FALSE;
        }
    }
    

    现在正在将所需用户映射为管理员,正常工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      相关资源
      最近更新 更多