@Override public void applyConfig(Map<String, String> m) { File configGroovy = Bootstrap.getInstance().resolveConfig("services.groovy"); logger.info("loading services from: {}", configGroovy); ConfigSlurper slurper = new ConfigSlurper(); if (Kernel.getExecutionProfile().isPresent()) { slurper.setEnvironment(Kernel.getExecutionProfile().get()); } if (configGroovy.exists()) { try { ConfigObject obj = slurper.parse(configGroovy.toURI().toURL()); Properties p = obj.toProperties(); p.entrySet().forEach(it -> { String key = Objects.toString(it.getKey()); String val = Objects.toString(it.getValue()); m.put(key, val); }); } catch (MalformedURLException e) { throw new MacGyverConfigurationException(e); } } else { logger.warn("services config file not found: {}", configGroovy); } }
public void afterPropertiesSet() throws MetaDataAccessException { Assert.notNull(dataSource, "Data source is not set!"); Assert.notNull(vendorNameDialectMappings, "Vendor name/dialect mappings are not set!"); Connection connection = null; String dbName = (String)JdbcUtils.extractDatabaseMetaData(dataSource, "getDatabaseProductName"); try { connection = DataSourceUtils.getConnection(dataSource); try { ConfigObject config = grailsApplication != null ? grailsApplication.getConfig() : null; Properties properties = config != null ? config.toProperties() : new Properties(); hibernateDialect = DialectFactory.buildDialect(properties, connection); hibernateDialectClassName = hibernateDialect.getClass().getName(); } catch (HibernateException e) { hibernateDialectClassName = vendorNameDialectMappings.getProperty(dbName); } if (!StringUtils.hasText(hibernateDialectClassName)) { throw new CouldNotDetermineHibernateDialectException( "Could not determine Hibernate dialect for database name [" + dbName + "]!"); } } finally { DataSourceUtils.releaseConnection(connection,dataSource); } }
@Override public PropertySource load() { val properties = new LinkedHashMap<Object, Object>(); val slurper = new ConfigSlurper(); applicationProfiles.forEach(Unchecked.consumer(profile -> { slurper.setEnvironment(profile); slurper.registerConditionalBlock("profiles", profile); val bindings = CollectionUtils.wrap("profile", profile, "logger", LOGGER); slurper.setBinding(bindings); val groovyConfig = slurper.parse(getResource().getURL()); val pp = groovyConfig.toProperties(); LOGGER.debug("Found settings [{}] in Groovy file [{}]", pp.keySet(), getResource()); properties.putAll(pp); })); return finalizeProperties(decryptProperties(properties)); } }