org.sfm.querydsl.TupleFieldMapperFactory Maven / Gradle / Ivy
package org.sfm.querydsl;
import java.lang.reflect.Type;
import org.sfm.map.FieldMapperErrorHandler;
import org.sfm.map.MapperBuilderErrorHandler;
import org.sfm.map.impl.FieldErrorHandlerMapper;
import org.sfm.map.impl.FieldMapper;
import org.sfm.map.impl.FieldMapperFactory;
import org.sfm.map.impl.GetterFactory;
import org.sfm.map.impl.fieldmapper.FieldMapperImpl;
import org.sfm.reflect.Getter;
import org.sfm.reflect.Setter;
import org.sfm.reflect.TypeHelper;
import com.mysema.query.Tuple;
public final class TupleFieldMapperFactory implements FieldMapperFactory {
private final GetterFactory getterFactory;
public TupleFieldMapperFactory(GetterFactory getterFactory) {
this.getterFactory = getterFactory;
}
@Override
public FieldMapper newFieldMapper(Type propertyType, Setter setter,
TupleElementKey key, FieldMapperErrorHandler errorHandler, MapperBuilderErrorHandler mappingErrorHandler) {
final Class> type = TypeHelper.toClass(propertyType);
Getter getter = getterFactory.newGetter(type, key);
if (getter == null) {
mappingErrorHandler.getterNotFound("Could not find getter for " + key + " type " + type);
}
FieldMapper fm = new FieldMapperImpl(getter, setter);
if (errorHandler != null) {
fm = new FieldErrorHandlerMapper(key, fm, errorHandler);
}
return fm;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy