295953a408ab59088931c754a009eab20f3475eb
[ccsdk/apps.git] / ms / sliboot / src / main / java / org / onap / ccsdk / apps / ms / sliboot / FilterConfiguration.java
1 package org.onap.ccsdk.apps.ms.sliboot;
2
3 import java.io.File;
4 import java.io.FileReader;
5 import java.io.IOException;
6 import java.util.Properties;
7
8 import org.onap.aaf.cadi.filter.CadiFilter;
9 import org.onap.ccsdk.sli.core.utils.common.EnvProperties;
10 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory;
12 import org.springframework.beans.factory.annotation.Value;
13 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
14 import org.springframework.boot.web.servlet.FilterRegistrationBean;
15 import org.springframework.context.annotation.Bean;
16 import org.springframework.context.annotation.Configuration;
17 import org.springframework.core.annotation.Order;
18
19 @Configuration
20 @ConditionalOnProperty("cadi.properties.path")
21 public class FilterConfiguration {
22     private static final Logger log = LoggerFactory.getLogger(FilterConfiguration.class);
23
24         @Value( "${cadi.properties.path:none}" )
25         private String cadiPropFile;
26
27         @Bean
28         @Order(1)
29         public FilterRegistrationBean<CadiFilter> cadiFilter() {
30                 CadiFilter filter = new CadiFilter();
31                 
32                 FilterRegistrationBean<CadiFilter> registrationBean = new FilterRegistrationBean<>();
33                 registrationBean.setFilter(filter);
34                 if ("none".equals(cadiPropFile)) {
35             log.info("cadi.properties.path undefined, AAF CADI disabled");
36                         registrationBean.setEnabled(false);
37                         registrationBean.addUrlPatterns("/xxxx/*");
38                 } else {
39                         // Note: assume that cadi.properties.path specifies full path to properties file
40                         File cadiFile = new File(cadiPropFile);
41                         if (!cadiFile.exists()) {
42                                 log.info("cadi properties file {} not found, AAF CADI disabled", cadiPropFile);
43                                 registrationBean.setEnabled(false);
44                                 registrationBean.addUrlPatterns("/xxxx/*");
45                         } else {
46                                 Properties cadiProperties = new EnvProperties();
47                                 try {
48                                         cadiProperties.load(new FileReader(cadiFile));
49                                         cadiProperties.forEach((k, v) -> {
50                                                 registrationBean.addInitParameter((String) k, cadiProperties.getProperty((String) k));
51                                         });
52                                         registrationBean.addUrlPatterns("/*");
53                                         log.info("Installed and configured CADI filter");
54                                 } catch (IOException e) {
55                                         log.info("Caught exception loading cadi properties file {}, AAF CADI disabled", cadiPropFile, e);
56                                         registrationBean.setEnabled(false);
57                                         registrationBean.addUrlPatterns("/xxxx/*");
58                                 }
59                         }
60
61                 }
62
63                 return registrationBean;
64         }
65
66 }