jmapper-core icon indicating copy to clipboard operation
jmapper-core copied to clipboard

Mapping List<String> to a List of non-String data type

Open psawmora opened this issue 7 years ago • 1 comments

I was trying to do a recursive mapping on List of Strings to a List of Some other type. For an example take the following class definitions. Classes have getters and setters set through longbok.

`

public static class EmployeeDB {

    private String bankName;

    List<Detail> details;
}

public class Detail {

private String name;
private String address;

}

public static class Source {

    private String bankName;

    List<String> names;
   
}

`

The Jmapper API was as follows.

`

JMapperAPI jMapperAPI = new JMapperAPI() .add(mappedClass(EmployeeDB.class) .add(global() .excludedAttributes("details")) .add(attribute("details").value("names")) ) .add(mappedClass(Detail.class) );

    Source source = new Source();
    source.setBankName("Bank-1");
    source.setNames(List.of("e-1", "e-2"));
  
   JMapper<EmployeeDB, Source> mapper = new JMapper<>(EmployeeDB.class, Source.class, jMapperAPI);
    EmployeeDB employeeDB = mapper.getDestination(source);
    System.out.println(employeeDB.getDetails().get(0).getName());

` Here I've tried setting a recursive mapping for Detail class but haven't set any attributes as I couldn't find a proper target attribute in the String class.

When ran, I got the following exception.

Exception in thread "main" java.lang.ClassCastException: java.base/java.lang.String cannot be cast to com.ilt.cms.pm.integration.mapper.Detail

Is there any special way to map a List<String> to List<Detail> (based on the example here) ?

psawmora avatar Nov 16 '18 13:11 psawmora

I'm using 1.6.1.CR2

psawmora avatar Nov 16 '18 13:11 psawmora