tomdcc / grails-miniprofiler

Miniprofiler plugin for Grails
Other
16 stars 4 forks source link

Add support for multiple data sources #10

Open dmurat opened 10 years ago

dmurat commented 10 years ago

Currently miniprofiler is enabled only for default data source. It will be great to add support for all data sources present in application.

After quick inspection of plugin source, I modified MiniprofilerGrailsPlugin.groovy and, in doWithSpring closure, replaced

BeanConfiguration dataSourceConfig = springConfig.getBeanConfig('dataSource')
if(dataSourceConfig) {
    springConfig.addBeanConfiguration("dataSourceOriginal", dataSourceConfig)
    dataSource(ProfilingDataSource, ref('dataSourceOriginal'), profilerProvider)
}

with

List<String> dataSourceBeanNames = springConfig.getBeanNames().findAll { it.startsWith("dataSource") && it.indexOf("Unproxied") == -1}
dataSourceBeanNames.each { String dataSourceBeanName ->
  BeanConfiguration dataSourceConfiguration = springConfig.getBeanConfig(dataSourceBeanName)
  if (dataSourceConfiguration) {
    springConfig.addBeanConfiguration("${dataSourceBeanName}_Original", dataSourceConfiguration)
    "${dataSourceBeanName}"(ProfilingDataSource, ref("${dataSourceBeanName}_Original"), profilerProvider)
  }
}

With this change only, I was able to get sql profiling for all data sources available in app.

dmurat commented 10 years ago

pull request added: https://github.com/tomdcc/grails-miniprofiler/pull/11