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