Support Iterable interface as an input
Use case
We are using records with collections defined as Iterable<T> , and it would be handy to somehow make mapstruct able to convert from Iterable<T> to any other Iterable type. For example.
record B ( String value; ) {} record A ( Iterable<B> listOfB ) {} class C { List<String> listOfB } @Mapper interface Mapper { C mapAtoC(A input); default String mapBToSting(B in) { return in.value(); } }
Generated Code
interface MapperImpl { public C mapAtoC(A input) { .... C c = new C(); List<String> listOfB = StreamSupport.stream(labels.spliterator(), false).map(this::mapBToSting).toList(); c.setListOfB(listOfB); .... } }
Possible workarounds
Currently I need to create such functions manually
MapStruct Version
1.5.5.Final