My solution to this was to extend BindyCsvDataFormat as follows:
/**
* This class changes the behavior of BindyCsvDataFormat. Instead of detecting classes
* in package(s) which are annotated with bindy annotations, this class, specifically
* defines the class that will be unmarshalled into.
*/
public class SingleClassBindyCsvDataFormat extends BindyCsvDataFormat {
private Class<?> modelClass;
@Override
protected BindyAbstractFactory createModelFactory(PackageScanClassResolver resolver) throws Exception {
return new OneClassBindyCsvFactory(resolver, getModelClass());
}
@Override
public void setPackages(String... packages) {
throw new UnsupportedOperationException("This dataformat does not support package based model searches.");
}
public Class<?> getModelClass() {
return modelClass;
}
public void setModelClass(Class<?> modelClass) {
this.modelClass = modelClass;
}
private static class OneClassBindyCsvFactory extends BindyCsvFactory {
public OneClassBindyCsvFactory(PackageScanClassResolver resolver, Class<?> modelClass) throws Exception {
super(resolver, new String[]{});
Preconditions.checkNotNull(modelClass);
models = ImmutableSet.<Class<?>>of(modelClass);
initCsvModel();
}
}
}
So far, it works like a charm!