package org.simpleflatmapper.map.fieldmapper;
import org.simpleflatmapper.map.FieldKey;
import org.simpleflatmapper.map.FieldMapper;
import org.simpleflatmapper.map.MapperBuilderErrorHandler;
import org.simpleflatmapper.map.property.FieldMapperColumnDefinition;
import org.simpleflatmapper.map.context.MappingContextFactoryBuilder;
import org.simpleflatmapper.map.mapper.PropertyMapping;
import org.simpleflatmapper.reflect.Getter;
import org.simpleflatmapper.reflect.meta.ClassMeta;
import org.simpleflatmapper.util.Supplier;
import java.lang.reflect.Type;
public interface ConstantSourceFieldMapperFactory<S, K extends FieldKey<K>> {
<T, P> FieldMapper<S, T> newFieldMapper(
PropertyMapping<T, P, K, FieldMapperColumnDefinition<K>> propertyMapping,
MappingContextFactoryBuilder contextFactoryBuilder,
MapperBuilderErrorHandler mappingErrorHandler);
<P> Getter<? super S, ? extends P> getGetterFromSource(
K columnKey,
Type propertyType,
FieldMapperColumnDefinition<K> columnDefinition,
Supplier<ClassMeta<P>> propertyClassMetaSupplier);
}