grails-miniprofiler icon indicating copy to clipboard operation
grails-miniprofiler copied to clipboard

Add support for multiple data sources

Open dmurat opened this issue 12 years ago • 1 comments

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 avatar Oct 12 '13 10:10 dmurat

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

dmurat avatar Oct 13 '13 08:10 dmurat