public static <T, K extends FieldKey<K>> ConstantTargetFieldMapperFactory<T, K> newInstance( SetterFactory<T, PropertyMapping<?, ?, K>> setterFactory, Type targetType) { return newInstance(new ContextualSetterFactoryAdapter<T, PropertyMapping<?, ?, K>>(setterFactory), targetType); }
public static <T, K extends FieldKey<K>> ConstantTargetFieldMapperFactory<T, K> newInstance( ContextualSetterFactory<T, PropertyMapping<?, ?, K>> setterFactory, Type targetType) { return new ConstantTargetFieldMapperFactoryImpl<T, K>(setterFactory, targetType); }
@SuppressWarnings("unchecked") @Override public <S, P> FieldMapper<S, T> newFieldMapper( PropertyMapping<S, P, K> pm, MappingContextFactoryBuilder contextFactoryBuilder, MapperBuilderErrorHandler mappingErrorHandler ) { Getter<? super S, ? extends P> getter = (Getter<? super S, ? extends P>) pm.getColumnDefinition().getCustomGetterFrom(pm.getPropertyMeta().getOwnerType()); if (getter == null) { getter = pm.getPropertyMeta().getGetter(); } if (getter == null) { mappingErrorHandler.accessorNotFound("Could not find getter for " + pm.getColumnKey() + " type " + pm.getPropertyMeta().getPropertyType() + " path " + pm.getPropertyMeta().getPath() + ", See " + ErrorDoc.CTFM_GETTER_NOT_FOUND.toUrl()); return null; } ContextualSetter<? super T, ? super P> setter = getSetterForTarget(pm, contextFactoryBuilder); if (setter == null) { mappingErrorHandler.accessorNotFound("Could not find setter for " + pm.getColumnKey() + " type " + pm.getPropertyMeta().getPropertyType() + " path " + pm.getPropertyMeta().getPath() + " See " + ErrorDoc.CTFM_SETTER_NOT_FOUND.toUrl()); return null; } Type propertyType = pm.getPropertyMeta().getPropertyType(); return buildFieldMapper(getter, setter, propertyType); }
@SuppressWarnings("unchecked") private <S, P> ContextualSetter<T, P> getSetterForTarget(PropertyMapping<S, ?, K> pm, ContextFactoryBuilder contextFactoryBuilder) { ContextualSetter<T, P> setter = ContextualSetterAdapter.of((Setter<T, P>) pm.getColumnDefinition().getCustomSetterTo(targetType)); final SetterFactory<T, PropertyMapping<?, ?, K>> customSetterFactory = (SetterFactory<T, PropertyMapping<?, ?, K>>) pm.getColumnDefinition().getCustomSetterFactoryTo(targetType); if (customSetterFactory != null) { setter = ContextualSetterAdapter.<T, P>of(customSetterFactory.<P>getSetter(pm)); } if (setter == null){ setter = setterFactory.getSetter(pm, contextFactoryBuilder); } if (setter == null) { if (!pm.getPropertyMeta().isSelf()) { final ClassMeta<?> propertyClassMeta = pm.getPropertyMeta().getPropertyClassMeta(); if (propertyClassMeta instanceof ObjectClassMeta) { ObjectClassMeta<P> ocm = (ObjectClassMeta<P>) propertyClassMeta; if (ocm.getNumberOfProperties() == 1) { PropertyMeta<P, ?> subProp = ocm.getFirstProperty(); ContextualSetter<T, Object> subSetter = getSetterForTarget(pm.propertyMeta(subProp), contextFactoryBuilder); if (subSetter != null) { return new ContextualSetterOnGetter<T, Object, P>(subSetter, (Getter<P, Object>) subProp.getGetter()); } } } } } return setter; }
@SuppressWarnings("unchecked") @Override public <S, P> FieldMapper<S, T> newFieldMapper( PropertyMapping<S, P, K> pm, MappingContextFactoryBuilder contextFactoryBuilder, MapperBuilderErrorHandler mappingErrorHandler ) { Getter<? super S, ? extends P> getter = (Getter<? super S, ? extends P>) pm.getColumnDefinition().getCustomGetterFrom(pm.getPropertyMeta().getOwnerType()); if (getter == null) { getter = pm.getPropertyMeta().getGetter(); } if (getter == null) { mappingErrorHandler.accessorNotFound("Could not find getter for " + pm.getColumnKey() + " type " + pm.getPropertyMeta().getPropertyType() + " path " + pm.getPropertyMeta().getPath() + ", See " + ErrorDoc.CTFM_GETTER_NOT_FOUND.toUrl()); return null; } ContextualSetter<? super T, ? super P> setter = getSetterForTarget(pm, contextFactoryBuilder); if (setter == null) { mappingErrorHandler.accessorNotFound("Could not find setter for " + pm.getColumnKey() + " type " + pm.getPropertyMeta().getPropertyType() + " path " + pm.getPropertyMeta().getPath() + " See " + ErrorDoc.CTFM_SETTER_NOT_FOUND.toUrl()); return null; } Type propertyType = pm.getPropertyMeta().getPropertyType(); return buildFieldMapper(getter, setter, propertyType); }
@SuppressWarnings("unchecked") private <S, P> ContextualSetter<T, P> getSetterForTarget(PropertyMapping<S, ?, K> pm, ContextFactoryBuilder contextFactoryBuilder) { ContextualSetter<T, P> setter = ContextualSetterAdapter.of((Setter<T, P>) pm.getColumnDefinition().getCustomSetterTo(targetType)); final SetterFactory<T, PropertyMapping<?, ?, K>> customSetterFactory = (SetterFactory<T, PropertyMapping<?, ?, K>>) pm.getColumnDefinition().getCustomSetterFactoryTo(targetType); if (customSetterFactory != null) { setter = ContextualSetterAdapter.<T, P>of(customSetterFactory.<P>getSetter(pm)); } if (setter == null){ setter = setterFactory.getSetter(pm, contextFactoryBuilder); } if (setter == null) { if (!pm.getPropertyMeta().isSelf()) { final ClassMeta<?> propertyClassMeta = pm.getPropertyMeta().getPropertyClassMeta(); if (propertyClassMeta instanceof ObjectClassMeta) { ObjectClassMeta<P> ocm = (ObjectClassMeta<P>) propertyClassMeta; if (ocm.getNumberOfProperties() == 1) { PropertyMeta<P, ?> subProp = ocm.getFirstProperty(); ContextualSetter<T, Object> subSetter = getSetterForTarget(pm.propertyMeta(subProp), contextFactoryBuilder); if (subSetter != null) { return new ContextualSetterOnGetter<T, Object, P>(subSetter, (Getter<P, Object>) subProp.getGetter()); } } } } } return setter; }
public static <T, K extends FieldKey<K>> ConstantTargetFieldMapperFactory<T, K> newInstance( SetterFactory<T, PropertyMapping<?, ?, K>> setterFactory, Type targetType) { return newInstance(new ContextualSetterFactoryAdapter<T, PropertyMapping<?, ?, K>>(setterFactory), targetType); }
public static <T, K extends FieldKey<K>> ConstantTargetFieldMapperFactory<T, K> newInstance( ContextualSetterFactory<T, PropertyMapping<?, ?, K>> setterFactory, Type targetType) { return new ConstantTargetFieldMapperFactoryImpl<T, K>(setterFactory, targetType); }
public <T> PreparedStatementMapperBuilder<T> buildFrom(final ClassMeta<T> classMeta) { return new PreparedStatementMapperBuilder<T>(classMeta, mapperConfig(), ConstantTargetFieldMapperFactoryImpl.newInstance(PreparedStatementSetterFactory.INSTANCE, PreparedStatement.class)); }
public <T> PreparedStatementMapperBuilder<T> buildFrom(final ClassMeta<T> classMeta) { return new PreparedStatementMapperBuilder<T>(classMeta, mapperConfig(), ConstantTargetFieldMapperFactoryImpl.newInstance(PreparedStatementSetterFactory.INSTANCE, PreparedStatement.class)); }
@Before public void setUp() { factory = ConstantTargetFieldMapperFactoryImpl.newInstance(PreparedStatementSetterFactory.INSTANCE, PreparedStatement.class); ps = mock(PreparedStatement.class); index = 1; }
@Before public void setUp() { factory = ConstantTargetFieldMapperFactoryImpl.<Appendable, SampleFieldKey>newInstance(setterFactory, Appendable.class); }
public static <T> SettableDataMapperBuilder<T> newFieldMapperBuilder(MapperConfig<DatastaxColumnKey, ?> config, ReflectionService reflectionService, Type target) { ClassMeta<T> classMeta = reflectionService.getClassMeta(target); return new SettableDataMapperBuilder<T>(classMeta, config, ConstantTargetFieldMapperFactoryImpl.newInstance(new SettableDataSetterFactory(config, reflectionService), SettableByIndexData.class)); } }
public static <T> SettableDataMapperBuilder<T> newFieldMapperBuilder(MapperConfig<DatastaxColumnKey, ?> config, ReflectionService reflectionService, Type target) { ClassMeta<T> classMeta = reflectionService.getClassMeta(target); return new SettableDataMapperBuilder<T>(classMeta, config, ConstantTargetFieldMapperFactoryImpl.newInstance(new SettableDataSetterFactory(config, reflectionService), SettableByIndexData.class)); } }
public <T> SettableDataMapperBuilder<T> newBuilderFrom(ClassMeta<T> classMeta) { MapperConfig<DatastaxColumnKey,Row> config = mapperConfig(); return new SettableDataMapperBuilder<T>( classMeta, config, ConstantTargetFieldMapperFactoryImpl .newInstance(new SettableDataSetterFactory(config, classMeta.getReflectionService()), SettableByIndexData.class)); }
public Writerbuilder(ClassMeta<T> classMeta, MapperConfig<SampleFieldKey, Object[]> mapperConfig) { super(classMeta, TypeHelper.<List<Object>>toClass(new TypeReference<List<Object>>(){}.getType()), mapperConfig, ConstantTargetFieldMapperFactoryImpl.<List<Object>, SampleFieldKey>newInstance(SETTER_FACTORY, List.class)); }
protected BoundStatementMapper<T> createMapper(MapperKey<DatastaxColumnKey> mapperKey) { BoundStatementMapper<T> mapper; SettableDataMapperBuilder<T> settableDataMapperBuilder = new SettableDataMapperBuilder<T>(classMeta, config, ConstantTargetFieldMapperFactoryImpl.newInstance(new SettableDataSetterFactory(config, classMeta.getReflectionService()), SettableByIndexData.class)); for(DatastaxColumnKey columnKey : mapperKey.getColumns()) { settableDataMapperBuilder.addColumn(columnKey); } mapper = new BoundStatementMapper<T>(settableDataMapperBuilder.mapper()); cache.add(mapperKey, mapper); return mapper; }
@Test public void testGetterNotFound() { ConstantTargetFieldMapperFactory<Appendable, SampleFieldKey> factory = ConstantTargetFieldMapperFactoryImpl.<Appendable, SampleFieldKey>newInstance(setterFactory, Appendable.class); try { PropertyMeta<Object, Object> pm = mock(PropertyMeta.class); PropertyMapping<Object, Object, SampleFieldKey> propertyMapping = new PropertyMapping<Object, Object, SampleFieldKey>(pm, new SampleFieldKey("hh", 0), FieldMapperColumnDefinition.<SampleFieldKey>identity()); factory.newFieldMapper(propertyMapping, null, RethrowMapperBuilderErrorHandler.INSTANCE); fail(); } catch (MapperBuildingException e) { } }
@Test public void testSetterNotFound() { SetterFactory<Appendable, PropertyMapping<?, ?, SampleFieldKey>> setterFactory = new SetterFactory<Appendable, PropertyMapping<?, ?, SampleFieldKey>>() { @Override public <P> Setter<Appendable, P> getSetter(PropertyMapping<?, ?, SampleFieldKey> arg) { return null; } }; ConstantTargetFieldMapperFactory<Appendable, SampleFieldKey> factory = ConstantTargetFieldMapperFactoryImpl.<Appendable, SampleFieldKey>newInstance(setterFactory, Appendable.class); try { PropertyMapping<DbObject, Object, SampleFieldKey> propertyMapping = ConstantSourceFieldMapperFactoryImplTest.createPropertyMapping(DbObject.class, "id"); assertNotNull(propertyMapping.getPropertyMeta().getGetter()); factory.newFieldMapper(propertyMapping, null, RethrowMapperBuilderErrorHandler.INSTANCE); fail(); } catch (MapperBuildingException e) { } }