Search code examples
javastringlistmappingdozer

How to map String values to a String list using Dozer?


Hi I try to map following Source class in to following Destination class. I used following mapping in order to map string values in to the list string. It isn't mapping properly. I need to know how to map 2 string values into one destination string list using Dozer.

public class SourceClass {

  protected String streetName;
  protected String additionalStreetName;

}

public class Destination {

protected List<String> addressLine;

}

<mapping map-id="newId" >
<class-a>myPackage.SourceClass </class-a>
<class-b>myPackage.Destination</class-b> 

  <field>
    <a>streetName</a>
    <b>addressLine[0]</b>
  </field>
   <field>
    <a>additionalStreetName</a>
    <b>addressLine[1]</b>
  </field> 
</mapping> 

Solution

  • This is the answer that I am come up with..

    import java.util.ArrayList;
    import java.util.List;
    
    import org.dozer.DozerConverter;
    import org.dozer.Mapper;
    import org.dozer.MapperAware;
    
    public class TestConverter extends DozerConverter<String, List>
        implements MapperAware {
    
    public TestConverter() {
        super(String.class, List.class);
        // TODO Auto-generated constructor stub
    }
    
    
    @Override
    public void setMapper(Mapper mapper) {
        // TODO Auto-generated method stub
    
    }
    
    @Override
    public List convertTo(String source, List destination) {
        if (source == null) {
             return new ArrayList<String>();
        }
        if (destination == null) {
             destination = new ArrayList<String>();
        }
    
        //destination.getAddressLine().add(source.getAdditionalStreetName());
        destination.add(source);
        return destination;
    }
    
    
    
    @Override
    public String convertFrom(List source, String destination) {
        // TODO Auto-generated method stub
        return null;
    }
    
    }
    

    ===============In dozerMapper.xml under configuration===========================

       <custom-converters>
        <converter 
            type="company.realMap.TestConverter">
            <class-a>desAdv.SourceClass</class-a>
            <class-b>abcReq.Destination</class-b>
        </converter> 
    

    ===============In dozerMapper.xml under mapping==========================

      <field custom-converter="myPackage.TestConverter">
        <a>streetName</a>  
        <b>addressLine</b>
        </field>
      <field custom-converter="myPackage.TestConverter">
        <a>additionalStreetName</a>  
        <b>addressLine</b>