2017-07-18 1 views
0

J'ai une application de ressort qui utilise le modelmapper pour convertir entre l'entité et les objets DTO. J'ai une chaîne dans le DTO qui représente un objet ZonedDateTime dans l'entité. Je l'ai écrit l'extrait suivant dans le SpringAppConfigurationModelmapper n'exécute pas la méthode de conversion de convertisseur

@Bean 
public ModelMapper contactModelMapper() { 

    Converter<String, ZonedDateTime> toZonedDateTimeString = new AbstractConverter<String, ZonedDateTime>() { 
     @Override 
     public ZonedDateTime convert(String source) { 
      DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); 
      LocalDateTime datel = LocalDateTime.parse(source, formatter); 
      ZonedDateTime result = datel.atZone(ZoneId.systemDefault()); 
      return result; 
     } 
    }; 
    Converter<ZonedDateTime, String> toStringZonedDateTime = new AbstractConverter<ZonedDateTime, String>() { 
     @Override 
     public String convert(ZonedDateTime source) { 
      String result = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(source); 
      return result; 
     } 
    }; 

    PropertyMap<Contact, ContactDTO> contactDTOmap = new PropertyMap<Contact, ContactDTO>() { 
     @Override 
     protected void configure() { 
      map().setTenantId(source.getTenant().getTenantId()); 
      //if (source.getCreatedDateTime() != null) map().setCreatedDateTime(source.getCreatedDateTime()); 
      //when(Conditions.isNotNull()).map(source.getCreatedDateTime(), map().getCreatedDateTime()); 
     } 
    }; 

    /* this is for userDTO to BO.. */ 
    PropertyMap<ContactDTO, Contact> contactMap = new PropertyMap<ContactDTO, Contact>() { 
     @Override 
     protected void configure() { 
      map().getTenant().setTenantId(source.getTenantId()); 
     } 
    }; 
    ModelMapper contactModelMapper = new ModelMapper(); 
    contactModelMapper.addMappings(contactDTOmap); 
    contactModelMapper.addMappings(contactMap); 
    contactModelMapper.addConverter(toStringZonedDateTime); 
    contactModelMapper.addConverter(toZonedDateTimeString); 
    return contactModelMapper; 
} 

Comme vous pouvez le voir, il y a 2 convertisseurs. Celui qui passe de la chaîne DTO à l'objet ZonedDateTime dans l'entité n'est pas du tout exécuté. Celui pour la conversion inverse s'exécute correctement.

J'apprécierais n'importe quelle aide, n'importe quelles suggessions pour ceci.

Merci

+0

Des suggestions? Toute information que je devrais fournir ?? – kavita

Répondre

0

j'ai résolu l'erreur après beaucoup de lecture en ligne et expérimenter. Il semble que l'ordre de l'addConverter appelle des questions. J'avais ajouté le convertisseur pour conversion dto to entity après le convertisseur pour la conversion d'entité en dto. Dès que la commande a été réglée, le code a commencé à fonctionner. Publier ceci pour aider quelqu'un comme documentation pour modelmapper est très saccadé.