@Override public ConstantSourceMapperBuilder<S, T, K> addMapping(K key, ColumnDefinition<K, ?> columnDefinition) { for(DiscriminatedBuilder<S, T, K> builder : builders) { builder.builder.addMapping(key, columnDefinition); } final ColumnDefinition<K, ?> composedDefinition = columnDefinition.compose(mapperConfig.columnDefinitions().getColumnDefinition(key)); mapperBuilderErrorHandler.successfullyMapAtLeastToOne(composedDefinition); return this; }
@Override public ConstantSourceMapperBuilder<S, T, K> addMapping(K key, ColumnDefinition<K, ?> columnDefinition) { for(DiscriminatedBuilder<S, T, K> builder : builders) { builder.builder.addMapping(key, columnDefinition); } final ColumnDefinition<K, ?> composedDefinition = columnDefinition.compose(mapperConfig.columnDefinitions().getColumnDefinition(key)); mapperBuilderErrorHandler.successfullyMapAtLeastToOne(composedDefinition); return this; }
mapperConfig.columnDefinitions().forEach(SetterProperty.class, new BiConsumer<Predicate<? super K>, SetterProperty>() { @Override public void accept(Predicate<? super K> predicate, SetterProperty setterProperty) { mapperConfig.columnDefinitions().forEach(GetterProperty.class, new BiConsumer<Predicate<? super K>, GetterProperty>() { @Override public void accept(Predicate<? super K> predicate, GetterProperty getterProperty) {
mapperConfig.columnDefinitions().forEach(SetterProperty.class, new BiConsumer<Predicate<? super K>, SetterProperty>() { @Override public void accept(Predicate<? super K> predicate, SetterProperty setterProperty) { mapperConfig.columnDefinitions().forEach(GetterProperty.class, new BiConsumer<Predicate<? super K>, GetterProperty>() { @Override public void accept(Predicate<? super K> predicate, GetterProperty getterProperty) {
.columnDefinitions() .forEach( DefaultValueProperty.class, .columnDefinitions() .forEach( MandatoryProperty.class,
.columnDefinitions() .forEach( DefaultValueProperty.class, .columnDefinitions() .forEach( MandatoryProperty.class,
@Override protected JdbcColumnKey newKey(String column, int i, FieldMapperColumnDefinition<JdbcColumnKey> columnDefinition) { JdbcColumnKey key = new JdbcColumnKey(column, i); SqlTypeColumnProperty typeColumnProperty = columnDefinition.lookFor(SqlTypeColumnProperty.class); if (typeColumnProperty == null) { ColumnDefinition<JdbcColumnKey, ?> globalDef = mapperConfig.columnDefinitions().getColumnDefinition(key); typeColumnProperty = globalDef.lookFor(SqlTypeColumnProperty.class); } if (typeColumnProperty != null) { return new JdbcColumnKey(key.getName(), key.getIndex(), typeColumnProperty.getSqlType(), key); } return key; }
@Override protected JdbcColumnKey newKey(String column, int i, FieldMapperColumnDefinition<JdbcColumnKey> columnDefinition) { JdbcColumnKey key = new JdbcColumnKey(column, i); SqlTypeColumnProperty typeColumnProperty = columnDefinition.lookFor(SqlTypeColumnProperty.class); if (typeColumnProperty == null) { ColumnDefinition<JdbcColumnKey, ?> globalDef = mapperConfig.columnDefinitions().getColumnDefinition(key); typeColumnProperty = globalDef.lookFor(SqlTypeColumnProperty.class); } if (typeColumnProperty != null) { return new JdbcColumnKey(key.getName(), key.getIndex(), typeColumnProperty.getSqlType(), key); } return key; }
public SqlParameterSourceBuilder<T> add(JdbcColumnKey key, FieldMapperColumnDefinition<JdbcColumnKey> columnDefinition) { final FieldMapperColumnDefinition<JdbcColumnKey> composedDefinition = columnDefinition.compose(mapperConfig.columnDefinitions().getColumnDefinition(key)); final JdbcColumnKey mappedColumnKey = composedDefinition.rename(key); PropertyMapping<T, Object, JdbcColumnKey> propertyMapping; if (composedDefinition.has(ConstantValueProperty.class)) { ConstantValueProperty staticValueProperty = composedDefinition.lookFor(ConstantValueProperty.class); PropertyMeta<T, Object> meta = new ObjectPropertyMeta<T, Object>(key.getName(), builder.getClassMeta().getType(), reflectionService, staticValueProperty.getType(), ScoredGetter.of(new ConstantGetter<T, Object>(staticValueProperty.getValue()), 1), null, null); propertyMapping = builder.addProperty(key, columnDefinition, meta); } else { propertyMapping = builder.addProperty(mappedColumnKey, composedDefinition); } parameters.add(build(key, propertyMapping)); return this; }
@SuppressWarnings("unchecked") public B addColumn(K key, FieldMapperColumnDefinition<K> columnDefinition) { final FieldMapperColumnDefinition<K> composedDefinition = columnDefinition.compose(mapperConfig.columnDefinitions().getColumnDefinition(key)); final K mappedColumnKey = composedDefinition.rename(key); if (composedDefinition.has(ConstantValueProperty.class)) { ConstantValueProperty staticValueProperty = composedDefinition.lookFor(ConstantValueProperty.class); PropertyMeta<T, Object> meta = new ObjectPropertyMeta<T, Object>(key.getName(), classMeta.getType(), reflectionService, staticValueProperty.getType(), ScoredGetter.of(new ConstantGetter<T, Object>(staticValueProperty.getValue()), 1), null, null); propertyMappingsBuilder.addProperty(key, columnDefinition, meta); } else { propertyMappingsBuilder.addProperty(mappedColumnKey, composedDefinition); } return (B) this; }
private MapperConfig<SampleFieldKey, Object[]> mapperConfig() { FieldMapperColumnDefinitionProviderImpl<SampleFieldKey> provider = new FieldMapperColumnDefinitionProviderImpl<SampleFieldKey>(); provider.addColumnDefinition("benchmark", FieldMapperColumnDefinition.<SampleFieldKey>identity().add(new SetterProperty(SETTER)).add(new GetterProperty(GETTER))); return MapperConfig.<SampleFieldKey, Object[]>fieldMapperConfig().columnDefinitions(provider); } }
@SuppressWarnings("unchecked") public B addColumn(K key, FieldMapperColumnDefinition<K> columnDefinition) { final FieldMapperColumnDefinition<K> composedDefinition = columnDefinition.compose(mapperConfig.columnDefinitions().getColumnDefinition(key)); final K mappedColumnKey = composedDefinition.rename(key); if (composedDefinition.has(ConstantValueProperty.class)) { ConstantValueProperty staticValueProperty = composedDefinition.lookFor(ConstantValueProperty.class); PropertyMeta<T, Object> meta = new ObjectPropertyMeta<T, Object>(key.getName(), classMeta.getType(), reflectionService, staticValueProperty.getType(), ScoredGetter.of(new ConstantGetter<T, Object>(staticValueProperty.getValue()), 1), null, null); propertyMappingsBuilder.addProperty(key, columnDefinition, meta); } else { propertyMappingsBuilder.addProperty(mappedColumnKey, composedDefinition); } return (B) this; }
@Override @SuppressWarnings("unchecked") public final ConstantSourceMapperBuilder<S, T, K> addMapping(K key, final ColumnDefinition<K, ?> columnDefinition) { final ColumnDefinition<K, ?> composedDefinition = columnDefinition.compose(mapperConfig.columnDefinitions().getColumnDefinition(key)); final K mappedColumnKey = composedDefinition.rename(key); FieldMapperProperty prop = columnDefinition.lookFor(FieldMapperProperty.class); if (prop != null) { addMapper((FieldMapper<S, T>) prop.getFieldMapper()); } else { PropertyMapping<T, ?, K> propertyMapping = propertyMappingsBuilder.addProperty(mappedColumnKey, composedDefinition); if (propertyMapping != null) { ColumnDefinition<K, ?> effectiveColumnDefinition = propertyMapping.getColumnDefinition(); Predicate<PropertyMeta<?, ?>> keyAppliesTo = effectiveColumnDefinition.keyAppliesTo(); if (effectiveColumnDefinition.isKey() && keyAppliesTo.test(propertyMapping.getPropertyMeta())) { Predicate<S> predicate = buildKeyPredicate(propertyMapping.getPropertyMeta(), keyAppliesTo); mappingContextFactoryBuilder.addKey(new KeyAndPredicate<S, K>(mappedColumnKey, predicate)); } } } return this; }
@Override @SuppressWarnings("unchecked") public final ConstantSourceMapperBuilder<S, T, K> addMapping(K key, final ColumnDefinition<K, ?> columnDefinition) { final ColumnDefinition<K, ?> composedDefinition = columnDefinition.compose(mapperConfig.columnDefinitions().getColumnDefinition(key)); final K mappedColumnKey = composedDefinition.rename(key); FieldMapperProperty prop = columnDefinition.lookFor(FieldMapperProperty.class); if (prop != null) { addMapper((FieldMapper<S, T>) prop.getFieldMapper()); } else { PropertyMapping<T, ?, K> propertyMapping = propertyMappingsBuilder.addProperty(mappedColumnKey, composedDefinition); if (propertyMapping != null) { ColumnDefinition<K, ?> effectiveColumnDefinition = propertyMapping.getColumnDefinition(); Predicate<PropertyMeta<?, ?>> keyAppliesTo = effectiveColumnDefinition.keyAppliesTo(); if (effectiveColumnDefinition.isKey() && keyAppliesTo.test(propertyMapping.getPropertyMeta())) { Predicate<S> predicate = buildKeyPredicate(propertyMapping.getPropertyMeta(), keyAppliesTo); mappingContextFactoryBuilder.addKey(new KeyAndPredicate<S, K>(mappedColumnKey, predicate)); } } } return this; }
@Test public void testDefaultValue() throws Exception { ClassMeta<DbObject> classMeta = ReflectionService.newInstance().<DbObject>getClassMeta(DbObject.class); FieldMapperColumnDefinitionProviderImpl<SampleFieldKey> definitionProvider = new FieldMapperColumnDefinitionProviderImpl<SampleFieldKey>(); definitionProvider.addColumnProperty("type_name", new DefaultValueProperty<DbObject.Type>(DbObject.Type.type4)); MapperConfig<SampleFieldKey, Object[]> mapperConfig = MapperConfig.<SampleFieldKey, Object[]>fieldMapperConfig().columnDefinitions(definitionProvider); EnumerableMapper<Object[][], DbObject, ?> mapper = new SampleMapperBuilder<DbObject>(classMeta, mapperConfig) .addMapping("id") .mapper(); Object[][] data = new Object[][] {{3l}}; DbObject dbObject = mapper.iterator(data).next(); assertEquals(3l, dbObject.getId()); assertEquals(DbObject.Type.type4, dbObject.getTypeName()); }
@Test public void testMandatoryProperty461() { ClassMeta<DbObject> classMeta = ReflectionService.newInstance().getClassMeta(DbObject.class); MapperConfig<SampleFieldKey, Object[]> mapperConfig = MapperConfig.fieldMapperConfig(); mapperConfig = mapperConfig.columnDefinitions(new ColumnDefinitionProvider<SampleFieldKey>() { @Override public FieldMapperColumnDefinition<SampleFieldKey> getColumnDefinition(SampleFieldKey key) { if (key.getName().equals("email")) { return FieldMapperColumnDefinition.<SampleFieldKey>identity().add(MandatoryProperty.class); } return FieldMapperColumnDefinition.<SampleFieldKey>identity(); } @Override public <CP, BC extends BiConsumer<Predicate<? super SampleFieldKey>, CP>> BC forEach(Class<CP> propertyType, BC consumer) { if (MandatoryProperty.class.equals(propertyType)) { consumer.accept(CaseInsensitiveFieldKeyNamePredicate.of("email"), (CP) MandatoryProperty.DEFAULT); } return consumer; } }); try { new SampleMapperBuilder<DbObject>(classMeta, mapperConfig).addMapping("id").mapper(); fail(); } catch (MissingPropertyException e) { // expected } }
@Test public void testDefaultMapperConfig() { MapperFactory mapperFactory = new MapperFactory(); MapperConfig<SampleFieldKey, Object[]> mapperConfig = mapperFactory.mapperConfig(); final ArrayList<Object> properties = new ArrayList<Object>(); mapperConfig.columnDefinitions().forEach(Object.class, new BiConsumer<Predicate<? super SampleFieldKey>, Object>() { @Override public void accept(Predicate<? super SampleFieldKey> predicate, Object o) { properties.add(o); } }); assertTrue(properties.isEmpty()); assertFalse(mapperConfig.failOnAsm()); assertEquals(NO_ASM_MAPPER_THRESHOLD, mapperConfig.asmMapperNbFieldsLimit()); assertNull(mapperConfig.fieldMapperErrorHandler()); assertFalse(mapperConfig.hasFieldMapperErrorHandler()); assertTrue(mapperConfig.mapperBuilderErrorHandler() instanceof RethrowMapperBuilderErrorHandler); assertTrue(mapperConfig.consumerErrorHandler() instanceof RethrowConsumerErrorHandler); assertEquals(MapperConfig.MAX_METHOD_SIZE, mapperConfig.maxMethodSize()); assertTrue(mapperConfig.propertyNameMatcherFactory() instanceof DefaultPropertyNameMatcherFactory); assertTrue(mapperFactory.getReflectionService().isAsmActivated()); }