Skip to content

Instantly share code, notes, and snippets.

@elaatifi
Created January 8, 2014 14:14
Show Gist options
  • Save elaatifi/8317315 to your computer and use it in GitHub Desktop.
Save elaatifi/8317315 to your computer and use it in GitHub Desktop.
The important method in this class is passTest which will decide if we include a fieldMap or excluded it.
public static class MyClassMapBuilder<A,B> extends ClassMapBuilder<A,B> {
protected MyClassMapBuilder(Type<A> aType, Type<B> bType,
MapperFactory mapperFactory,
PropertyResolverStrategy propertyResolver,
DefaultFieldMapper[] defaults) {
super(aType, bType, mapperFactory, propertyResolver, defaults);
}
/* (non-Javadoc)
* @see ma.glasnost.orika.metadata.ClassMapBuilder#addFieldMap(ma.glasnost.orika.metadata.FieldMap)
*/
@Override
protected void addFieldMap(FieldMap fieldMap) {
if(passTest(fieldMap))
super.addFieldMap(fieldMap);
}
protected boolean passTest(FieldMap fieldMap) {
if(fieldMap.getDestination().getType().isAssignableFrom(String.class) && !fieldMap.getSource().getType().isAssignableFrom(String.class))
return false;
return true;
}
public static class Factory extends ClassMapBuilder.Factory {
/* (non-Javadoc)
* @see ma.glasnost.orika.metadata.ClassMapBuilder.Factory#newClassMapBuilder(ma.glasnost.orika.metadata.Type, ma.glasnost.orika.metadata.Type, ma.glasnost.orika.MapperFactory, ma.glasnost.orika.property.PropertyResolverStrategy, ma.glasnost.orika.DefaultFieldMapper[])
*/
@Override
protected <A, B> ClassMapBuilder<A, B> newClassMapBuilder(
Type<A> aType, Type<B> bType, MapperFactory mapperFactory,
PropertyResolverStrategy propertyResolver,
DefaultFieldMapper[] defaults) {
return new MyClassMapBuilder<A,B>(aType, bType, mapperFactory, propertyResolver,
defaults);
}
}
}
@elaatifi
Copy link
Author

elaatifi commented Jan 8, 2014

Here is how to configure Orika to use it :

factoryBuilder.classMapBuilderFactory(new MyClassMapBuilder.Factory());

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment