If a value isn't available in the config then it'll create a ConfigObject. Since ConfigObject implements Map and starts out empty, you can use "Groovy Truth" to provide default values, e.g.
Code:
def doWithSpring = {
def conf = ConfigurationHolder.config
def securityConf = SpringSecurityUtils.securityConfig
oracleDataSource(DataSourceForOracleAndSpring) {
dataSource = ref("dataSource")
applicationName = conf.application.name
moduleName = conf.application.module ?: ''
}
}
or if there's no default and you don't want to set any value:
Code:
def doWithSpring = {
def conf = ConfigurationHolder.config
def securityConf = SpringSecurityUtils.securityConfig
oracleDataSource(DataSourceForOracleAndSpring) {
dataSource = ref("dataSource")
applicationName = conf.application.name
if (conf.application.module) {
moduleName = conf.application.module
}
}
}
The plugin uses Config.groovy to manage its settings. This makes it easy to be environment-aware and support external configs since that's already supported in Config.groovy. It's not really documented since the config isn't typically used outside of the plugin. Basically what happens is DefaultSecurityConfig.groovy is loaded, then the values from Config.groovy are merged in to let the user specify missing values and override defaults.
All values start with grails.plugins.springsecurity, so as a convenience SpringSecurityUtils.securityConfig returns the security sub-config. So for example SpringSecurityUtils.securityConfig.userLookup.user DomainClassName and ConfigurationHolder.config.grails.plugins.springse curity.userLookup.userDomainClassName are the same values.