/** * Register bean arguments and row mapping for an {@code Modifiable*} value class, using a supplied implementation and constructor. * @param spec the specification interface or abstract class * @param impl the modifiable class * @param constructor a supplier of new Modifiable instances * @param <S> the specification class * @param <M> the modifiable class * @return a plugin that configures type mapping for the given class */ public <S, M extends S> JdbiImmutables registerModifiable(Class<S> spec, Class<M> impl, Supplier<?> constructor) { return register(spec, impl, ImmutablesPropertiesFactory.modifiable(spec, impl, () -> impl.cast(constructor.get()))); }
/** * Register bean arguments and row mapping for an {@code Immutable*} value class, using a supplied implementation and builder. * @param spec the specification interface or abstract class * @param impl the generated implementation class * @param builder a supplier of new Builder instances * @param <S> the specification class * @param <I> the implementation class * @return a plugin that configures type mapping for the given class */ public <S, I extends S> JdbiImmutables registerImmutable(Class<S> spec, Class<I> impl, Supplier<?> builder) { return register(spec, impl, ImmutablesPropertiesFactory.immutable(spec, builder)); }