@SuppressWarnings("unchecked") private <S, P> FieldMapper<S, T> buildFieldMapper(Getter<? super S, ? extends P> getter, ContextualSetter<? super T, ? super P> setter, Type propertyType) { if (TypeHelper.isPrimitive(propertyType)) { if (getter instanceof BooleanGetter && setter instanceof BooleanContextualSetter) { return new BooleanConstantTargetFieldMapper<S, T>((BooleanGetter<S>)getter, (BooleanContextualSetter<T>) setter); } else if (getter instanceof ByteGetter && setter instanceof ByteContextualSetter) { return new ByteConstantTargetFieldMapper<S, T>((ByteGetter<S>)getter, (ByteContextualSetter<T>) setter); } else if (getter instanceof CharacterGetter && setter instanceof CharacterContextualSetter) { return new CharacterConstantTargetFieldMapper<S, T>((CharacterGetter<S>)getter, (CharacterContextualSetter<T>) setter); } else if (getter instanceof ShortGetter && setter instanceof ShortContextualSetter) { return new ShortConstantTargetFieldMapper<S, T>((ShortGetter<S>)getter, (ShortContextualSetter<T>) setter); } else if (getter instanceof IntGetter && setter instanceof IntContextualSetter) { return new IntConstantTargetFieldMapper<S, T>((IntGetter<S>)getter, (IntContextualSetter<T>) setter); } else if (getter instanceof LongGetter && setter instanceof LongContextualSetter) { return new LongConstantTargetFieldMapper<S, T>((LongGetter<S>)getter, (LongContextualSetter<T>) setter); } else if (getter instanceof FloatGetter && setter instanceof FloatContextualSetter) { return new FloatConstantTargetFieldMapper<S, T>((FloatGetter<S>)getter, (FloatContextualSetter<T>) setter); } else if (getter instanceof DoubleGetter && setter instanceof DoubleContextualSetter) { return new DoubleConstantTargetFieldMapper<S, T>((DoubleGetter<S>)getter, (DoubleContextualSetter<T>) setter); } } return new ConstantTargetFieldMapper<S, T, P>(getter, setter); }
protected final void mapFields(InputStream source, final DbObject target, MappingContext<? super InputStream> mappingContext) throws Exception { mapper1.mapTo(source, target, mappingContext); mapper2.mapTo(source, target, mappingContext); mapper3.mapTo(source, target, mappingContext); mapper4.mapTo(source, target, mappingContext); }
@SuppressWarnings("unchecked") private <T, P> FieldMapper<S, T> primitiveIndexedFieldMapper(final Class<P> type, final Setter<? super T, ? super P> setter, final ContextualGetter<? super S, ? extends P> getter) { if (type.equals(Boolean.TYPE)) { return new BooleanConstantSourceFieldMapper<S, T>( toBooleanGetter((ContextualGetter<S, ? extends Boolean>) getter), ObjectSetterFactory.<T>toBooleanSetter((Setter<T, ? super Boolean>) setter)); } else if (type.equals(Integer.TYPE)) { return new IntConstantSourceFieldMapper<S, T>( toIntGetter((ContextualGetter<S, ? extends Integer>) getter), ObjectSetterFactory.<T>toIntSetter((Setter<T, ? super Integer>) setter)); } else if (type.equals(Long.TYPE)) { return new LongConstantSourceFieldMapper<S, T>( toLongGetter((ContextualGetter<S, ? extends Long>) getter), ObjectSetterFactory.<T>toLongSetter((Setter<T, ? super Long>) setter)); } else if (type.equals(Float.TYPE)) { return new FloatConstantSourceFieldMapper<S, T>( toFloatGetter((ContextualGetter<S, ? extends Float>) getter), ObjectSetterFactory.<T>toFloatSetter((Setter<T, ? super Float>) setter)); } else if (type.equals(Double.TYPE)) { return new DoubleConstantSourceFieldMapper<S, T>( toDoubleGetter((ContextualGetter<S, ? extends Double>) getter), ObjectSetterFactory.<T>toDoubleSetter((Setter<T, ? super Double>) setter)); } else if (type.equals(Byte.TYPE)) { return new ByteConstantSourceFieldMapper<S, T>( toByteGetter((ContextualGetter<S, ? extends Byte>) getter), ObjectSetterFactory.<T>toByteSetter((Setter<T, ? super Byte>) setter)); } else if (type.equals(Character.TYPE)) { return new CharacterConstantSourceFieldMapper<S, T>( toCharGetter((ContextualGetter<S, ? extends Character>) getter), ObjectSetterFactory.<T>toCharacterSetter((Setter<T, ? super Character>) setter));
private <P, J> ContextualGetter<? super S, ? extends P> lookForAlternativeGetter(ClassMeta<P> classMeta, K key, ColumnDefinition<K, ?> columnDefinition, Collection<Type> types, MappingContextFactoryBuilder<?, K> mappingContextFactoryBuilder) { // look for converter Type propertyType = classMeta.getType(); Type sourceType = key.getType(propertyType); Object[] properties = columnDefinition.properties(); ContextualConverter<? super J, ? extends P> converter = converterService.findConverter(sourceType, propertyType, mappingContextFactoryBuilder, properties); if (converter != null) { ContextualGetter<? super S, ? extends J> getter = getterFactory.newGetter(sourceType, key, mappingContextFactoryBuilder, properties); return new FieldMapperGetterWithConverter<S, J, P>(converter, getter); } return lookForInstantiatorGetter(classMeta, key, columnDefinition, types, mappingContextFactoryBuilder); }
final Class<P> type = TypeHelper.toClass(propertyType); ContextualGetter<? super S, ? extends P> getter = getGetterFromSource(key, propertyMapping.getPropertyMeta().getPropertyType(), propertyMapping.getColumnDefinition(), } else { if (type.isPrimitive() ) { return this.<T, P>primitiveIndexedFieldMapper(type, setter, getter); return new ConstantSourceFieldMapper<S, T, P>(getter, new NullValueFilterSetter(setter)); } else { return new ConstantSourceFieldMapper<S, T, P>(getter, setter);
@Test public void testGet() throws Exception { FieldMapperGetterWithConverter<String, Long, Integer> g = new FieldMapperGetterWithConverter<String, Long, Integer>( new ContextualConverter<Long, Integer>() { @Override public Integer convert(Long in, Context context) throws Exception { return 25; } }, new ContextualGetter<String, Long>() { @Override public Long get(String s, Context context) throws Exception { return 3l; } } ); assertEquals(new Integer(25), g.get(null, null)); } }
@SuppressWarnings("unchecked") protected <P> FieldMapper<S, T> newFieldMapper(PropertyMapping<T, P, K> t) { ColumnDefinition<K, ?> columnDefinition = t.getColumnDefinition(); FieldMapper<S, T> fieldMapper = null; if (columnDefinition.has(FieldMapperProperty.class)) { fieldMapper = (FieldMapper<S, T>) columnDefinition.lookFor(FieldMapperProperty.class).getFieldMapper(); } if (fieldMapper == null) { fieldMapper = fieldMapperFactory.newFieldMapper(t, mappingContextFactoryBuilder, mapperConfig.mapperBuilderErrorHandler()); } return wrapFieldMapperWithErrorHandler(t.getColumnKey(), fieldMapper); }
@SuppressWarnings("unchecked") @Before public void setUp() { getterFactory = mock(GetterFactory.class); constantSourceFieldMapperFactory = new ConstantSourceFieldMapperFactoryImpl<Object, SampleFieldKey>(new ContextualGetterFactoryAdapter<Object, SampleFieldKey>(getterFactory), ConverterService.getInstance(), Object.class); keySourceGetter = mock(KeySourceGetter.class); mappingContextFactoryBuilder = null; }
public <P> ContextualGetter<? super S, ? extends P> lookForInstantiatorGetter(ClassMeta<P> classMeta, K key, ColumnDefinition<K, ?> columnDefinition, Collection<Type> types, MappingContextFactoryBuilder<?, K> mappingContextFactoryBuilder) { InstantiatorDefinitions.CompatibilityScorer scorer = InstantiatorDefinitions.getCompatibilityScorer(key); List<InstantiatorDefinition> instantiatorDefinitions = classMeta.getInstantiatorDefinitions(); InstantiatorDefinition id = InstantiatorDefinitions.lookForCompatibleOneArgument(instantiatorDefinitions, scorer); if (id != null) { return getGetterInstantiator(classMeta, id, key, columnDefinition, types, mappingContextFactoryBuilder); } return null; }
private <P> SourceMapper<S, P> getterPropertyMapper(PropertyMeta<T, P> owner, PropertyMapping<T, ?, K> propertyMapping) { PropertyMeta<T, ?> pm = propertyMapping.getPropertyMeta(); final ContextualGetter<? super S, P> getter = (ContextualGetter<? super S, P>) fieldMapperFactory.getGetterFromSource(propertyMapping.getColumnKey(), pm.getPropertyType(), propertyMapping.getColumnDefinition(), pm.getPropertyClassMetaSupplier(), mappingContextFactoryBuilder); return new GetterMapper<S, P>(getter); }
private <P> FieldMapper<S, T> newMapperFieldMapper(List<PropertyMapping<T, ?, K>> properties, Setter<T, P> setter, SourceMapper<S, ?> mapper, MappingContextFactoryBuilder<S, K> mappingContextFactoryBuilder) { final MapperFieldMapper fieldMapper = new MapperFieldMapper(mapper, (Setter<T, P>)setter, mappingContextFactoryBuilder.nullChecker(), mappingContextFactoryBuilder.currentIndex()); return wrapFieldMapperWithErrorHandler(properties.get(0).getColumnKey(), fieldMapper); }
@SuppressWarnings("unchecked") private <S, P> FieldMapper<S, T> buildFieldMapper(Getter<? super S, ? extends P> getter, ContextualSetter<? super T, ? super P> setter, Type propertyType) { if (TypeHelper.isPrimitive(propertyType)) { if (getter instanceof BooleanGetter && setter instanceof BooleanContextualSetter) { return new BooleanConstantTargetFieldMapper<S, T>((BooleanGetter<S>)getter, (BooleanContextualSetter<T>) setter); } else if (getter instanceof ByteGetter && setter instanceof ByteContextualSetter) { return new ByteConstantTargetFieldMapper<S, T>((ByteGetter<S>)getter, (ByteContextualSetter<T>) setter); } else if (getter instanceof CharacterGetter && setter instanceof CharacterContextualSetter) { return new CharacterConstantTargetFieldMapper<S, T>((CharacterGetter<S>)getter, (CharacterContextualSetter<T>) setter); } else if (getter instanceof ShortGetter && setter instanceof ShortContextualSetter) { return new ShortConstantTargetFieldMapper<S, T>((ShortGetter<S>)getter, (ShortContextualSetter<T>) setter); } else if (getter instanceof IntGetter && setter instanceof IntContextualSetter) { return new IntConstantTargetFieldMapper<S, T>((IntGetter<S>)getter, (IntContextualSetter<T>) setter); } else if (getter instanceof LongGetter && setter instanceof LongContextualSetter) { return new LongConstantTargetFieldMapper<S, T>((LongGetter<S>)getter, (LongContextualSetter<T>) setter); } else if (getter instanceof FloatGetter && setter instanceof FloatContextualSetter) { return new FloatConstantTargetFieldMapper<S, T>((FloatGetter<S>)getter, (FloatContextualSetter<T>) setter); } else if (getter instanceof DoubleGetter && setter instanceof DoubleContextualSetter) { return new DoubleConstantTargetFieldMapper<S, T>((DoubleGetter<S>)getter, (DoubleContextualSetter<T>) setter); } } return new ConstantTargetFieldMapper<S, T, P>(getter, setter); }
@SuppressWarnings("unchecked") private <T, P> FieldMapper<S, T> primitiveIndexedFieldMapper(final Class<P> type, final Setter<? super T, ? super P> setter, final ContextualGetter<? super S, ? extends P> getter) { if (type.equals(Boolean.TYPE)) { return new BooleanConstantSourceFieldMapper<S, T>( toBooleanGetter((ContextualGetter<S, ? extends Boolean>) getter), ObjectSetterFactory.<T>toBooleanSetter((Setter<T, ? super Boolean>) setter)); } else if (type.equals(Integer.TYPE)) { return new IntConstantSourceFieldMapper<S, T>( toIntGetter((ContextualGetter<S, ? extends Integer>) getter), ObjectSetterFactory.<T>toIntSetter((Setter<T, ? super Integer>) setter)); } else if (type.equals(Long.TYPE)) { return new LongConstantSourceFieldMapper<S, T>( toLongGetter((ContextualGetter<S, ? extends Long>) getter), ObjectSetterFactory.<T>toLongSetter((Setter<T, ? super Long>) setter)); } else if (type.equals(Float.TYPE)) { return new FloatConstantSourceFieldMapper<S, T>( toFloatGetter((ContextualGetter<S, ? extends Float>) getter), ObjectSetterFactory.<T>toFloatSetter((Setter<T, ? super Float>) setter)); } else if (type.equals(Double.TYPE)) { return new DoubleConstantSourceFieldMapper<S, T>( toDoubleGetter((ContextualGetter<S, ? extends Double>) getter), ObjectSetterFactory.<T>toDoubleSetter((Setter<T, ? super Double>) setter)); } else if (type.equals(Byte.TYPE)) { return new ByteConstantSourceFieldMapper<S, T>( toByteGetter((ContextualGetter<S, ? extends Byte>) getter), ObjectSetterFactory.<T>toByteSetter((Setter<T, ? super Byte>) setter)); } else if (type.equals(Character.TYPE)) { return new CharacterConstantSourceFieldMapper<S, T>( toCharGetter((ContextualGetter<S, ? extends Character>) getter), ObjectSetterFactory.<T>toCharacterSetter((Setter<T, ? super Character>) setter));
private <P, J> ContextualGetter<? super S, ? extends P> lookForAlternativeGetter(ClassMeta<P> classMeta, K key, ColumnDefinition<K, ?> columnDefinition, Collection<Type> types, MappingContextFactoryBuilder<?, K> mappingContextFactoryBuilder) { // look for converter Type propertyType = classMeta.getType(); Type sourceType = key.getType(propertyType); Object[] properties = columnDefinition.properties(); ContextualConverter<? super J, ? extends P> converter = converterService.findConverter(sourceType, propertyType, mappingContextFactoryBuilder, properties); if (converter != null) { ContextualGetter<? super S, ? extends J> getter = getterFactory.newGetter(sourceType, key, mappingContextFactoryBuilder, properties); return new FieldMapperGetterWithConverter<S, J, P>(converter, getter); } return lookForInstantiatorGetter(classMeta, key, columnDefinition, types, mappingContextFactoryBuilder); }
final Class<P> type = TypeHelper.toClass(propertyType); ContextualGetter<? super S, ? extends P> getter = getGetterFromSource(key, propertyMapping.getPropertyMeta().getPropertyType(), propertyMapping.getColumnDefinition(), } else { if (type.isPrimitive() ) { return this.<T, P>primitiveIndexedFieldMapper(type, setter, getter); return new ConstantSourceFieldMapper<S, T, P>(getter, new NullValueFilterSetter(setter)); } else { return new ConstantSourceFieldMapper<S, T, P>(getter, setter);
protected final void mapFields(InputStream source, final DbObject target, MappingContext<? super InputStream> mappingContext) throws Exception { mapper1.mapTo(source, target, mappingContext); mapper2.mapTo(source, target, mappingContext); mapperSetter3.set(target, MyGetter.get(source, mappingContext, 3)); mapper4.mapTo(source, target, mappingContext); }
@SuppressWarnings("unchecked") protected <P> FieldMapper<S, T> newFieldMapper(PropertyMapping<T, P, K> t) { ColumnDefinition<K, ?> columnDefinition = t.getColumnDefinition(); FieldMapper<S, T> fieldMapper = null; if (columnDefinition.has(FieldMapperProperty.class)) { fieldMapper = (FieldMapper<S, T>) columnDefinition.lookFor(FieldMapperProperty.class).getFieldMapper(); } if (fieldMapper == null) { fieldMapper = fieldMapperFactory.newFieldMapper(t, mappingContextFactoryBuilder, mapperConfig.mapperBuilderErrorHandler()); } return wrapFieldMapperWithErrorHandler(t.getColumnKey(), fieldMapper); }
public <P> ContextualGetter<? super S, ? extends P> lookForInstantiatorGetter(ClassMeta<P> classMeta, K key, ColumnDefinition<K, ?> columnDefinition, Collection<Type> types, MappingContextFactoryBuilder<?, K> mappingContextFactoryBuilder) { InstantiatorDefinitions.CompatibilityScorer scorer = InstantiatorDefinitions.getCompatibilityScorer(key); List<InstantiatorDefinition> instantiatorDefinitions = classMeta.getInstantiatorDefinitions(); InstantiatorDefinition id = InstantiatorDefinitions.lookForCompatibleOneArgument(instantiatorDefinitions, scorer); if (id != null) { return getGetterInstantiator(classMeta, id, key, columnDefinition, types, mappingContextFactoryBuilder); } return null; }
private <P> SourceMapper<S, P> getterPropertyMapper(PropertyMeta<T, P> owner, PropertyMapping<T, ?, K> propertyMapping) { PropertyMeta<T, ?> pm = propertyMapping.getPropertyMeta(); final ContextualGetter<? super S, P> getter = (ContextualGetter<? super S, P>) fieldMapperFactory.getGetterFromSource(propertyMapping.getColumnKey(), pm.getPropertyType(), propertyMapping.getColumnDefinition(), pm.getPropertyClassMetaSupplier(), mappingContextFactoryBuilder); return new GetterMapper<S, P>(getter); }
private <P> FieldMapper<S, T> newMapperFieldMapper(List<PropertyMapping<T, ?, K>> properties, Setter<T, P> setter, SourceMapper<S, ?> mapper, MappingContextFactoryBuilder<S, K> mappingContextFactoryBuilder) { final MapperFieldMapper fieldMapper = new MapperFieldMapper(mapper, (Setter<T, P>)setter, mappingContextFactoryBuilder.nullChecker(), mappingContextFactoryBuilder.currentIndex()); return wrapFieldMapperWithErrorHandler(properties.get(0).getColumnKey(), fieldMapper); }