Signed-off-by: Andrew DeMaria <lostonamountain@gmail.com>master
parent
aa8ab6e5fe
commit
9df2660d1e
@ -1,22 +0,0 @@ |
||||
package org.libresonic.player.spring; |
||||
|
||||
import org.apache.commons.configuration2.ImmutableConfiguration; |
||||
import org.libresonic.player.service.ApacheCommonsConfigurationService; |
||||
import org.springframework.context.ApplicationContextInitializer; |
||||
import org.springframework.core.env.PropertySource; |
||||
import org.springframework.web.context.ConfigurableWebApplicationContext; |
||||
|
||||
public class AdditionalPropertySourceConfigurer implements |
||||
ApplicationContextInitializer<ConfigurableWebApplicationContext> { |
||||
|
||||
public void initialize(ConfigurableWebApplicationContext ctx) { |
||||
|
||||
ApacheCommonsConfigurationService configurationService = new ApacheCommonsConfigurationService(); |
||||
ImmutableConfiguration snapshot = configurationService.getImmutableSnapshot(); |
||||
|
||||
PropertySource ps = new DatasourceProfileActivatorPropertySource(new CommonsConfigurationPropertySource( |
||||
"libresonic-pre-init-configs", |
||||
snapshot)); |
||||
ctx.getEnvironment().getPropertySources().addLast(ps); |
||||
} |
||||
} |
@ -1,40 +0,0 @@ |
||||
package org.libresonic.player.spring; |
||||
|
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.springframework.core.env.PropertySource; |
||||
|
||||
public class DatasourceProfileActivatorPropertySource extends PropertySource { |
||||
public static final String SPRING_PROFILES_ACTIVE = "spring.profiles.active"; |
||||
public static final String DATASOURCE_CONFIG_TYPE = "database.config.type"; |
||||
final PropertySource parent; |
||||
|
||||
public DatasourceProfileActivatorPropertySource(PropertySource parent) { |
||||
super(parent.getName()); |
||||
this.parent = parent; |
||||
} |
||||
|
||||
@Override |
||||
public Object getProperty(String name) { |
||||
if(StringUtils.equalsIgnoreCase(name, SPRING_PROFILES_ACTIVE)) { |
||||
String appendTo = ""; |
||||
Object existing = parent.getProperty(SPRING_PROFILES_ACTIVE); |
||||
if(existing != null && existing instanceof String) { |
||||
appendTo += (String) existing; |
||||
} |
||||
DataSourceConfigType dataSourceConfigType; |
||||
Object rawType = parent.getProperty(DATASOURCE_CONFIG_TYPE); |
||||
if(rawType != null && rawType instanceof String) { |
||||
dataSourceConfigType = DataSourceConfigType.valueOf(StringUtils.upperCase((String) rawType)); |
||||
} else { |
||||
dataSourceConfigType = DataSourceConfigType.LEGACY; |
||||
} |
||||
if(StringUtils.isNotBlank(appendTo)) { |
||||
appendTo += ","; |
||||
} |
||||
appendTo += StringUtils.lowerCase(dataSourceConfigType.name()); |
||||
return appendTo; |
||||
} else { |
||||
return parent.getProperty(name); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,44 @@ |
||||
package org.libresonic.player.spring; |
||||
|
||||
import com.google.common.collect.Lists; |
||||
import org.apache.commons.configuration2.ImmutableConfiguration; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.libresonic.player.service.ApacheCommonsConfigurationService; |
||||
import org.springframework.context.ApplicationContextInitializer; |
||||
import org.springframework.core.env.PropertySource; |
||||
import org.springframework.web.context.ConfigurableWebApplicationContext; |
||||
|
||||
import java.util.List; |
||||
|
||||
public class LibresonicPropertySourceConfigurer implements |
||||
ApplicationContextInitializer<ConfigurableWebApplicationContext> { |
||||
|
||||
public static final String DATASOURCE_CONFIG_TYPE = "database.config.type"; |
||||
|
||||
public void initialize(ConfigurableWebApplicationContext ctx) { |
||||
|
||||
ApacheCommonsConfigurationService configurationService = new ApacheCommonsConfigurationService(); |
||||
ImmutableConfiguration snapshot = configurationService.getImmutableSnapshot(); |
||||
|
||||
PropertySource ps = new CommonsConfigurationPropertySource("libresonic-pre-init-configs", snapshot); |
||||
|
||||
|
||||
ctx.getEnvironment().getPropertySources().addLast(ps); |
||||
|
||||
addDataSourceProfile(ctx); |
||||
} |
||||
|
||||
private void addDataSourceProfile(ConfigurableWebApplicationContext ctx) { |
||||
DataSourceConfigType dataSourceConfigType; |
||||
String rawType = ctx.getEnvironment().getProperty(DATASOURCE_CONFIG_TYPE); |
||||
if(StringUtils.isNotBlank(rawType)) { |
||||
dataSourceConfigType = DataSourceConfigType.valueOf(StringUtils.upperCase(rawType)); |
||||
} else { |
||||
dataSourceConfigType = DataSourceConfigType.LEGACY; |
||||
} |
||||
String dataSourceTypeProfile = StringUtils.lowerCase(dataSourceConfigType.name()); |
||||
List<String> existingProfiles = Lists.newArrayList(ctx.getEnvironment().getActiveProfiles()); |
||||
existingProfiles.add(dataSourceTypeProfile); |
||||
ctx.getEnvironment().setActiveProfiles(existingProfiles.toArray(new String[0])); |
||||
} |
||||
} |
Loading…
Reference in new issue