S3lm4 say Selma, stands for Stupid Simple Statically Linked Mapper. In fact it is on one side an Annotation Processor that generate Java code to handle the mapping from field to field at compile time. On the other side, it is a Runtime library to instantiate and invoke the generated Mapper.
First add selma-processor as a provided dependency and selma as a compile dependency to your build. Then, define a Mapper interface describing the mapping you want:
@Mapper
public interface SelmaMapper {
// Imutable mapping
OutBean asOutBean(InBean source);
// Update graph
OutBean updateOutBean(InBean source, OutBean destination);
}
Then ? Well just use the generated Mapper:
SelmaMapper mapper = Selma.mapper(SelmaMapper.class);
OutBean res = mapper.asOutBean(in);
// Or
OutBean dest = dao.getById(42);
OutBean res = mapper.updateOutBean(in, dest);
// res is the updated bean dest with in values
And voilà !
Visit our site: (http://selma-java.org)
First add selma and selma-processor to your pom dependencies:
<!-- scope provided because the processor is only needed for the compiler -->
<dependency>
<groupId>fr.xebia.extras</groupId>
<artifactId>selma-processor</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<!-- This is the only real dependency you will have in your binaries -->
<dependency>
<groupId>fr.xebia.extras</groupId>
<artifactId>selma</artifactId>
<version>1.0</version>
</dependency>
Then, as I said earlier, build your interface with @Mapper annotation and enjoy.
Checkout the example module to have a deeper look.
Help needed, please report issues and ask for features :)