From 2dad56f38fd18f1b727937de80c57fc6b082e39f Mon Sep 17 00:00:00 2001 From: Alok Menghrajani Date: Mon, 20 Apr 2015 13:01:30 -0700 Subject: [PATCH] Fixes readonlyDataSource. --- .../src/main/java/keywhiz/ServiceModule.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/server/src/main/java/keywhiz/ServiceModule.java b/server/src/main/java/keywhiz/ServiceModule.java index dc56dafd1..21a356ef2 100644 --- a/server/src/main/java/keywhiz/ServiceModule.java +++ b/server/src/main/java/keywhiz/ServiceModule.java @@ -122,8 +122,11 @@ public ServiceModule(KeywhizConfig config, Environment environment) { @Provides @Singleton @Readonly ManagedDataSource readonlyDataSource(Environment environment, KeywhizConfig config) { - DataSourceFactory dataSourceFactory = config.getDataSourceFactory(); - return dataSourceFactory.build(environment.metrics(), "postgres-readonly"); + DataSourceFactory dataSourceFactory = config.getReadonlyDataSourceFactory(); + ManagedDataSource dataSource = dataSourceFactory.build(environment.metrics(), "postgres-readonly"); + environment.lifecycle().manage(dataSource); + + return dataSource; } // jOOQ @@ -182,12 +185,16 @@ public ServiceModule(KeywhizConfig config, Environment environment) { } @Provides @Singleton - @Readonly DBI readonlyDbi(DBIFactory factory, Environment environment, KeywhizConfig config, - MapArgumentFactory mapArgumentFactory, @Readonly ManagedDataSource dataSource) + @Readonly DBI readonlyDbi(KeywhizConfig config, MapArgumentFactory mapArgumentFactory, + @Readonly ManagedDataSource dataSource) throws ClassNotFoundException { logger.debug("Creating read-only DBI"); - DBI dbi = factory.build(environment, config.getReadonlyDataSourceFactory(), dataSource, - "postgres-readonly"); + final DBI dbi = new DBI(dataSource); + dbi.registerArgumentFactory(new OptionalArgumentFactory(config.getReadonlyDataSourceFactory().getDriverClass())); + dbi.registerContainerFactory(new OptionalContainerFactory()); + dbi.registerArgumentFactory(new LocalDateTimeArgumentFactory()); + dbi.registerMapper(new LocalDateTimeMapper()); + dbi.registerArgumentFactory(mapArgumentFactory); return dbi; }