public DiscriminatorGenericBuilderMapper(BiInstantiator<? super S, MappingContext<? super S>, GenericBuilder<S, T>> gbi) { super(gbi); }
public DiscriminatorGenericBuilderMapper(BiInstantiator<? super S, MappingContext<? super S>, GenericBuilder<S, T>> gbi) { super(gbi); }
@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") 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); }
classMeta, mapperConfig.propertyNameMatcherFactory(), mapperConfig.mapperBuilderErrorHandler(), propertyPredicateFactory, propertyFinder,
@Test public void testSelfPropertyInvalidation() { final ClassMeta<DbObject> classMeta = ReflectionService.newInstance().getClassMeta(DbObject.class); MapperBuilderErrorHandler errorHandler = mock(MapperBuilderErrorHandler.class); PropertyMappingsBuilder<DbObject, SampleFieldKey> builder = PropertyMappingsBuilder.of( classMeta, MapperConfig.<SampleFieldKey, Object[]>fieldMapperConfig().mapperBuilderErrorHandler(errorHandler), CONSTANT_PREDICATE); builder.addProperty(new SampleFieldKey("self", 0), FieldMapperColumnDefinition.<SampleFieldKey>identity()); verify(errorHandler, never()).customFieldError(any(FieldKey.class), any(String.class)); verify(errorHandler, never()).accessorNotFound(any(String.class)); verify(errorHandler, never()).propertyNotFound(any(Type.class), any(String.class)); builder.addProperty(new SampleFieldKey("id", 1), FieldMapperColumnDefinition.<SampleFieldKey>identity()); verify(errorHandler).propertyNotFound(DbObject.class, "self"); }
classMeta, mapperConfig.propertyNameMatcherFactory(), mapperConfig.mapperBuilderErrorHandler(), propertyPredicateFactory, propertyFinder,
public final MapperConfig<K, S> mapperConfig() { return MapperConfig .<K, S>config(enrichColumnDefinitions(columnDefinitions)) .mapperBuilderErrorHandler(mapperBuilderErrorHandler) .propertyNameMatcherFactory(propertyNameMatcherFactory) .failOnAsm(failOnAsm) .asmMapperNbFieldsLimit(asmMapperNbFieldsLimit) .fieldMapperErrorHandler(fieldMapperErrorHandler) .consumerErrorHandler(consumerErrorHandler) .maxMethodSize(maxMethodSize) .assumeInjectionModifiesValues(assumeInjectionModifiesValues) .discriminators(discriminators) .rowFilter(rowFilter) .unorderedJoin(unorderedJoin); }
public final MapperConfig<K, S> mapperConfig() { return MapperConfig .<K, S>config(enrichColumnDefinitions(columnDefinitions)) .mapperBuilderErrorHandler(mapperBuilderErrorHandler) .propertyNameMatcherFactory(propertyNameMatcherFactory) .failOnAsm(failOnAsm) .asmMapperNbFieldsLimit(asmMapperNbFieldsLimit) .fieldMapperErrorHandler(fieldMapperErrorHandler) .consumerErrorHandler(consumerErrorHandler) .maxMethodSize(maxMethodSize) .assumeInjectionModifiesValues(assumeInjectionModifiesValues) .discriminators(discriminators) .rowFilter(rowFilter) .unorderedJoin(unorderedJoin); }
private <P, C> ContextualIndexedSetter<PreparedStatement, P> getSetter(PropertyMapping<C, P, JdbcColumnKey> pm) { ContextualIndexedSetter<PreparedStatement, P> setter = null; IndexedSetterProperty indexedSetterProperty = pm.getColumnDefinition().lookFor(IndexedSetterProperty.class); if (indexedSetterProperty != null) { setter = ContextualIndexedSetterAdapter.of((IndexedSetter<PreparedStatement, P>) indexedSetterProperty.getIndexedSetter()); } if (setter == null) { setter = indexedSetterFactory(pm); } if (setter == null) { mapperConfig.mapperBuilderErrorHandler().accessorNotFound( "Could not find setter for " + pm.getColumnKey() + " type " + pm.getPropertyMeta().getPropertyType() + " path " + pm.getPropertyMeta().getPath() + " See " + ErrorDoc.CTFM_SETTER_NOT_FOUND.toUrl()); } return setter; }
@Test public void testHandleMapperErrorGetterNotFound() throws NoSuchMethodException, SecurityException, IOException { final ClassMeta<MyClass> classMeta = ReflectionService.newInstance().getClassMeta(MyClass.class); FieldMapperColumnDefinition<SampleFieldKey> columnDefinition = FieldMapperColumnDefinition.<SampleFieldKey>identity(); MapperBuilderErrorHandler errorHandler = mock(MapperBuilderErrorHandler.class); PropertyMappingsBuilder<MyClass, SampleFieldKey> builder = PropertyMappingsBuilder.of( classMeta, MapperConfig.<SampleFieldKey, Object[]>fieldMapperConfig().mapperBuilderErrorHandler(errorHandler), new PropertyMappingsBuilder.PropertyPredicateFactory<SampleFieldKey>() { @Override public Predicate<PropertyMeta<?, ?>> predicate( final SampleFieldKey key, Object[] properties, final List<PropertyMappingsBuilder.AccessorNotFound> accessorNotFounds) { return new Predicate<PropertyMeta<?, ?>>() { @Override public boolean test(PropertyMeta<?, ?> propertyMeta) { accessorNotFounds.add(new PropertyMappingsBuilder.AccessorNotFound(key, propertyMeta.getPath(), propertyMeta.getPropertyType(), ErrorDoc.CSFM_GETTER_NOT_FOUND, propertyMeta)); return false; } }; } }); builder.addProperty(new SampleFieldKey("prop", 1), columnDefinition); verify(errorHandler).accessorNotFound("Could not find Getter for SampleFieldKey{name=prop, affinities=[], type=class java.lang.Object} returning type class org.simpleflatmapper.test.beans.Foo path prop. See https://github.com/arnaudroger/SimpleFlatMapper/wiki/Errors_CSFM_GETTER_NOT_FOUND"); }
private <P, C> ContextualIndexedSetter<PreparedStatement, P> getSetter(PropertyMapping<C, P, JdbcColumnKey> pm) { ContextualIndexedSetter<PreparedStatement, P> setter = null; IndexedSetterProperty indexedSetterProperty = pm.getColumnDefinition().lookFor(IndexedSetterProperty.class); if (indexedSetterProperty != null) { setter = ContextualIndexedSetterAdapter.of((IndexedSetter<PreparedStatement, P>) indexedSetterProperty.getIndexedSetter()); } if (setter == null) { setter = indexedSetterFactory(pm); } if (setter == null) { mapperConfig.mapperBuilderErrorHandler().accessorNotFound( "Could not find setter for " + pm.getColumnKey() + " type " + pm.getPropertyMeta().getPropertyType() + " path " + pm.getPropertyMeta().getPath() + " See " + ErrorDoc.CTFM_SETTER_NOT_FOUND.toUrl()); } return setter; }
@Test public void testHandleMapperErrorSetterNotFound() throws NoSuchMethodException, SecurityException, IOException { final ClassMeta<DbObject> classMeta = ReflectionService.newInstance().getClassMeta(DbObject.class); MapperBuilderErrorHandler errorHandler = mock(MapperBuilderErrorHandler.class); PropertyMappingsBuilder<DbObject, SampleFieldKey> builder = PropertyMappingsBuilder.of( classMeta, MapperConfig.<SampleFieldKey, Object[]>fieldMapperConfig().mapperBuilderErrorHandler(errorHandler), CONSTANT_PREDICATE); FieldMapperColumnDefinition<SampleFieldKey> columnDefinition = FieldMapperColumnDefinition.<SampleFieldKey>identity(); builder.addProperty(new SampleFieldKey("id", 1), columnDefinition); builder.addProperty(new SampleFieldKey("notthere1", 2), columnDefinition); verify(errorHandler).propertyNotFound(DbObject.class, "notthere1"); builder.addProperty(new SampleFieldKey("notthere3", 3), columnDefinition); verify(errorHandler).propertyNotFound(DbObject.class, "notthere3"); }
@Test public void testAddFailedPropertyIgnoreError() { final ClassMeta<DbObject> classMeta = ReflectionService.newInstance().getClassMeta(DbObject.class); PropertyMappingsBuilder<DbObject, SampleFieldKey> builder2 = PropertyMappingsBuilder.of(classMeta, MapperConfig.<SampleFieldKey, Object[]>fieldMapperConfig().mapperBuilderErrorHandler(IgnoreMapperBuilderErrorHandler.INSTANCE), CONSTANT_PREDICATE); builder2.addProperty(new SampleFieldKey("id", 0), FieldMapperColumnDefinition.<SampleFieldKey>identity()); builder2.addProperty(new SampleFieldKey("not_id", 0), FieldMapperColumnDefinition.<SampleFieldKey>identity()); List<PropertyMapping<DbObject, ?, SampleFieldKey>> props = getAllProperties(builder2); assertEquals(2, props.size()); assertNull(props.get(1)); }
@Test public void testSelfPropertyWithNoAccessorCallsPropertyNotFound602() { final ClassMeta<C602> classMeta = ReflectionService.newInstance().getClassMeta(C602.class); FieldMapperColumnDefinition<SampleFieldKey> columnDefinition = FieldMapperColumnDefinition.<SampleFieldKey>identity(); MapperBuilderErrorHandler errorHandler = mock(MapperBuilderErrorHandler.class); PropertyMappingsBuilder<C602, SampleFieldKey> builder = PropertyMappingsBuilder.of( classMeta, MapperConfig.<SampleFieldKey, Object[]>fieldMapperConfig().mapperBuilderErrorHandler(errorHandler), new PropertyMappingsBuilder.PropertyPredicateFactory<SampleFieldKey>() { @Override public Predicate<PropertyMeta<?, ?>> predicate( final SampleFieldKey key, Object[] properties, final List<PropertyMappingsBuilder.AccessorNotFound> accessorNotFounds) { return new Predicate<PropertyMeta<?, ?>>() { @Override public boolean test(PropertyMeta<?, ?> propertyMeta) { if (propertyMeta.isSelf()) { accessorNotFounds.add(new PropertyMappingsBuilder.AccessorNotFound(key, propertyMeta.getPath(), propertyMeta.getPropertyType(), ErrorDoc.CSFM_GETTER_NOT_FOUND, propertyMeta)); return false; } return true; } }; } }); builder.addProperty(new SampleFieldKey("id", 1), columnDefinition); verify(errorHandler).propertyNotFound(C602.class, "id"); }
@Test public void testCustomSourceIncompatibilityIgnoreError() { final ClassMeta<DbObject> classMeta = ReflectionService.newInstance().getClassMeta(DbObject.class); PropertyMappingsBuilder<DbObject, SampleFieldKey> builder2 = PropertyMappingsBuilder.of(classMeta, MapperConfig.<SampleFieldKey, Object[]>fieldMapperConfig().mapperBuilderErrorHandler(IgnoreMapperBuilderErrorHandler.INSTANCE), CONSTANT_PREDICATE); builder2.addProperty(new SampleFieldKey("id", 0), FieldMapperColumnDefinition.<SampleFieldKey>identity().addGetter(new Getter<Object, String>() { @Override public String get(Object target) throws Exception { return null; } })); builder2.addProperty(new SampleFieldKey("name", 1), FieldMapperColumnDefinition.<SampleFieldKey>identity()); final List<PropertyMapping<DbObject, ?, SampleFieldKey>> props = getAllProperties(builder2); assertEquals(2, props.size()); assertNull(props.get(0)); }
@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()); }
assertEquals(mapperBuilderErrorHandler, mapperConfig.mapperBuilderErrorHandler()); assertEquals(consumerErrorHandler, mapperConfig.consumerErrorHandler()); Assert.assertEquals(consumerErrorHandler, mapperFactory.consumerErrorHandler());