jmapper-framework / jmapper-core

Elegance, high performance and robustness all in one java bean mapper
http://jmapper-framework.github.io/jmapper-core
Apache License 2.0
227 stars 41 forks source link

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

Open psawmora opened 5 years ago

psawmora commented 5 years ago

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 to List (based on the example here) ?

psawmora commented 5 years ago

I'm using 1.6.1.CR2