@Override
public void configure(final Env env, final Config conf, final Binder binder) {
Key<DataSource> dskey = Key.get(DataSource.class, Names.named(name));
Supplier<NoSuchElementException> noSuchElement = () -> new NoSuchElementException(
"DataSource missing: " + dskey);
HikariDataSource ds = (HikariDataSource) env.get(dskey).orElseThrow(noSuchElement);
Configuration jooqconf = new DefaultConfiguration();
ConnectionProvider dscp = new DataSourceConnectionProvider(ds);
jooqconf.set(JDBCUtils.dialect(env.get(Key.get(String.class, Names.named(name + ".url")))
.orElseThrow(noSuchElement)));
jooqconf.set(dscp);
jooqconf.set(new DefaultTransactionProvider(dscp));
if (callback != null) {
callback.accept(jooqconf, conf);
}
ServiceKey serviceKey = env.serviceKey();
serviceKey.generate(Configuration.class, name, k -> binder.bind(k).toInstance(jooqconf));
Provider<DSLContext> dsl = () -> DSL.using(jooqconf);
serviceKey.generate(DSLContext.class, name, k -> binder.bind(k).toProvider(dsl));
}
}