ef28ea400fbada4ed1a6b5770b1c00f83bab7068
[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("featureFlags.filename");
28
29         if (StringUtils.isBlank(filename)) {
30             filename = defaultFilename;
31         }
32
33         return new FeatureManagerBuilder()
34                 .featureEnum(Features.class)
35                 .stateRepository(new FileBasedStateRepository(
36                         new File(servletContext.getRealPath("/WEB-INF/conf/" + filename))
37                 ))
38                 .build();
39     }
40 }