Java Modelmapper:转换器未被使用
Java Modelmapper: Converter doesnt get used
我正在开发一个 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 狗屎,它工作正常
问候,
麦克
工作代码:
映射配置:
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;
}
}
现在正在将所需用户映射为管理员,工作正常
我正在开发一个 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 狗屎,它工作正常
问候,
麦克
工作代码:
映射配置:
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;
}
}
现在正在将所需用户映射为管理员,工作正常