2015-11-18 5 views
0

im работает над небольшой java-программой, которая синхронизирует пользователей активного каталога с пользователями в моем db. поэтому, я использую modelmapper. кажется, работает отлично, а также довольно быстро.Java Modelmapper: Конвертер не используется

В любом случае я добавил конвертер в свою конфигурацию отображения. не показывает маркеров, и я проверил синтаксис, так что все должно быть хорошо. но когда я запускаю синтезатор, чтобы увидеть, правильно ли отображает ГС, ничего не происходит. Я имею в виду, что объекты правильно отображаются, но не свойство, для которого я устанавливал преобразователь.

я уже вошел в отладочном режиме, метод преобразования даже не вошел, а не когда-то

так Херес мой modelmapper-propertymapconfiguration

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; 
    } 

} 

, так что если я запускаю синтезатор, теоретически каждый пользователь в моем db должен включить администратора, но этого не происходит Я не знаю, что я делаю здесь неправильно, любой он ПОЛ ценится ^^

PS: Не беспокойтесь о Arrays.asList дерьмо в конфиге, то будет работать просто отлично

поздравления,

Майку

ответ

0

рабочий код:

отображение config:

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; 
    } 
} 

теперь отображение нужных пользователей, чтобы быть админы, работает правильно