Mapping to destination classes without a no arg constructor.
Due to the fact that ShapeShift uses reflection behind the scenes, destination classes need a no arg constructor. But in some cases you have no control over the destination classes and cannot modify them to add a no arg constructor. This is where Instance Mapping comes into play, you can pass already-instantiated destination objects to the map method.
Version 0.0.7 of ShapeShift introduced new Object Suppliers functionality as an improved solution for the no arg constructor issue.
SimpleEntityDisplay does not have a no arg constructor. You can either add a no arg constructor or initiate a new instance of SimpleEntityDisplay and pass it to the map function.
val shapeShift =ShapeShiftBuilder().build()val simpleEntity =SimpleEntity("test", "test description", "private data")val simpleEntityDisplay =SimpleEntityDisplay("", "")// Passing simpleEntityDisplay as a destination instance val result = shapeShift.map(simpleEntity, simpleEntityDisplay)
ShapeShift shapeShift =newShapeShiftBuilder().build();SimpleEntity simpleEntity =newSimpleEntity();simpleEntity.setName("test");simpleEntity.setDescription("test description");simpleEntity.setPrivateData("private data");SimpleEntityDisplay simpleEntityDisplay =newSimpleEntityDisplay("","");// Passing simpleEntityDisplay as a destination instance SimpleEntityDisplay result =shapeShift.map(simpleEntity, simpleEntityDisplay);