Merge "Merge from ECOMP's repository"
[vid.git] / vid-app-common / src / main / java / org / onap / vid / properties / FeaturesTogglingConfiguration.java
1 package org.onap.vid.properties;
2
3 import org.apache.commons.lang3.StringUtils;
4 import org.springframework.context.ApplicationListener;
5 import org.springframework.context.annotation.Bean;
6 import org.springframework.context.annotation.Configuration;
7 import org.springframework.core.env.Environment;
8 import org.togglz.core.manager.FeatureManager;
9 import org.togglz.core.manager.FeatureManagerBuilder;
10 import org.togglz.core.repository.file.FileBasedStateRepository;
11 import org.togglz.spring.listener.TogglzApplicationContextBinderApplicationListener;
12
13 import javax.servlet.ServletContext;
14 import java.io.File;
15
16 @Configuration
17 public class FeaturesTogglingConfiguration {
18     @Bean
19     public ApplicationListener getApplicationListener() {
20         return new TogglzApplicationContextBinderApplicationListener();
21     }
22
23     @Bean
24     public FeatureManager featureManager(ServletContext servletContext, Environment environment) {
25         final String defaultFilename = "features.properties";
26
27         String filename = environment.getProperty("features.set.filename");
28
29         if (StringUtils.isBlank(filename)) {
30             filename = defaultFilename;
31         }
32
33         filename = StringUtils.trimToNull(filename);
34
35         return new FeatureManagerBuilder()
36                 .featureEnum(Features.class)
37                 .stateRepository(new FileBasedStateRepository(
38                         new File(filename.startsWith("/")? filename : servletContext.getRealPath("/WEB-INF/conf/" + filename))
39                 ))
40                 .build();
41     }
42 }