@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, 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); }
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)); } else if (type.equals(Short.TYPE)) {
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);
getter = lookForAlternativeGetter(propertyClassMetaSupplier.get(), columnKey, columnDefinition, new HashSet<Type>(), mappingContextFactoryBuilder);
private <T, P> FieldMapper<Object, T> createFieldMapper( Class<T> target, String property, Getter<Object, P> getter) { PropertyMapping<T, P, SampleFieldKey> pm = createPropertyMapping(target, property); when(getterFactory.<P>newGetter(pm.getPropertyMeta().getPropertyType(), pm.getColumnKey(), pm.getColumnDefinition().properties())).thenReturn(getter); return constantSourceFieldMapperFactory.newFieldMapper(pm, mappingContextFactoryBuilder, MAPPING_ERROR_HANDLER); } public static <T, P> PropertyMapping<T, P, SampleFieldKey> createPropertyMapping(
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)); } else if (type.equals(Short.TYPE)) {
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);
getter = lookForAlternativeGetter(propertyClassMetaSupplier.get(), columnKey, columnDefinition, new HashSet<Type>(), mappingContextFactoryBuilder);
public ClassMetaSupplier(Type target) { this.target = target; }
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); }
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; }
public ClassMetaSupplier(Type target) { this.target = target; }
private <T, P> ContextualGetter<? super S, ? extends P> getGetterInstantiator( ClassMeta<P> classMeta, InstantiatorDefinition id, K key, ColumnDefinition<K, ?> columnDefinition, Collection<Type> types, MappingContextFactoryBuilder<?, K> mappingContextFactoryBuilder) { Instantiator<? super T, ? extends P> instantiator = classMeta.getReflectionService().getInstantiatorFactory().getOneArgIdentityInstantiator(id, classMeta.getReflectionService().builderIgnoresNullValues()); final Type paramType = id.getParameters()[0].getGenericType(); ContextualGetter<? super S, ? extends T> subGetter = getterFactory.newGetter(paramType, key, mappingContextFactoryBuilder, columnDefinition ); if (subGetter == null) { if (types.contains(paramType)) { // loop circuit cutter return null; } types.add(paramType); // converter? Type sourceType = key.getType(paramType); ContextualConverter converter = converterService.findConverter(sourceType, paramType, mappingContextFactoryBuilder, columnDefinition.properties()); if (converter != null) { ContextualGetter sourceTypeGetter = getterFactory.newGetter(sourceType, key, mappingContextFactoryBuilder, columnDefinition); subGetter = new FieldMapperGetterWithConverter(converter, sourceTypeGetter); } else { subGetter = lookForInstantiatorGetter(classMeta.getReflectionService().<T>getClassMeta(paramType), key, columnDefinition, types, mappingContextFactoryBuilder); } } if (subGetter != null) { return new InstantiatorContextualGetter<T, S, P>(instantiator, subGetter); } else return null; }
private <T, P> ContextualGetter<? super S, ? extends P> getGetterInstantiator( ClassMeta<P> classMeta, InstantiatorDefinition id, K key, ColumnDefinition<K, ?> columnDefinition, Collection<Type> types, MappingContextFactoryBuilder<?, K> mappingContextFactoryBuilder) { Instantiator<? super T, ? extends P> instantiator = classMeta.getReflectionService().getInstantiatorFactory().getOneArgIdentityInstantiator(id, classMeta.getReflectionService().builderIgnoresNullValues()); final Type paramType = id.getParameters()[0].getGenericType(); ContextualGetter<? super S, ? extends T> subGetter = getterFactory.newGetter(paramType, key, mappingContextFactoryBuilder, columnDefinition ); if (subGetter == null) { if (types.contains(paramType)) { // loop circuit cutter return null; } types.add(paramType); // converter? Type sourceType = key.getType(paramType); ContextualConverter converter = converterService.findConverter(sourceType, paramType, mappingContextFactoryBuilder, columnDefinition.properties()); if (converter != null) { ContextualGetter sourceTypeGetter = getterFactory.newGetter(sourceType, key, mappingContextFactoryBuilder, columnDefinition); subGetter = new FieldMapperGetterWithConverter(converter, sourceTypeGetter); } else { subGetter = lookForInstantiatorGetter(classMeta.getReflectionService().<T>getClassMeta(paramType), key, columnDefinition, types, mappingContextFactoryBuilder); } } if (subGetter != null) { return new InstantiatorContextualGetter<T, S, P>(instantiator, subGetter); } else return null; }