1 /*******************************************************************************
2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 * ============LICENSE_END=========================================================
19 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
21 *******************************************************************************/
22 package com.att.nsa.dmaap.filemonitor;
25 import java.io.FileInputStream;
26 import java.util.HashMap;
28 import java.util.Properties;
30 import com.att.eelf.configuration.EELFLogger;
31 import com.att.eelf.configuration.EELFManager;
32 import com.fasterxml.jackson.core.type.TypeReference;
33 import com.fasterxml.jackson.databind.ObjectMapper;
36 * ServicePropertiesMap class
40 @SuppressWarnings("squid:S1118")
41 public class ServicePropertiesMap
43 private static HashMap<String, HashMap<String, String>> mapOfMaps =
44 new HashMap<String, HashMap<String, String>>();
45 // static final Logger logger = LoggerFactory.getLogger(ServicePropertiesMap.class);
47 private static final EELFLogger logger = EELFManager.getInstance().getLogger(ServicePropertiesMap.class);
51 * @throws Exception ex
53 public static void refresh(File file) throws Exception
55 String filePath= null;
58 logger.info("Loading properties - " + (file != null?file.getName():""));
60 //Store .json & .properties files into map of maps
62 filePath = file.getPath();
65 if(filePath != null) {
66 if(filePath.lastIndexOf(".json")>0){
68 ObjectMapper om = new ObjectMapper();
69 TypeReference<HashMap<String, String>> typeRef =
70 new TypeReference<HashMap<String, String>>() {};
71 HashMap<String, String> propMap = om.readValue(file, typeRef);
72 HashMap<String, String> lcasePropMap = new HashMap<>();
73 for (Map.Entry<String,String> entry : propMap.entrySet())
75 String key = entry.getKey();
76 String lcaseKey = ifNullThenEmpty(key);
77 lcasePropMap.put(lcaseKey, propMap.get(key));
80 mapOfMaps.put(file.getName(), lcasePropMap);
83 }else if(filePath.lastIndexOf(".properties")>0){
84 Properties prop = new Properties();
85 FileInputStream fis = new FileInputStream(file);
88 @SuppressWarnings("unchecked")
89 HashMap<String, String> propMap = new HashMap<>((Map)prop);
91 mapOfMaps.put(file.getName(), propMap);
95 logger.info("File - " + file.getName() + " is loaded into the map and the "
96 + "corresponding system properties have been refreshed");
100 logger.error("File " + (file != null?file.getName():"") + " cannot be loaded into the map ", e);
101 throw new Exception("Error reading map file " + (file != null?file.getName():""), e);
106 * @param fileName fileName
107 * @param propertyKey propertyKey
110 public static String getProperty(String fileName, String propertyKey)
112 HashMap<String, String> propMap = mapOfMaps.get(fileName);
113 return propMap!=null?propMap.get(ifNullThenEmpty(propertyKey)):"";
117 * @param fileName fileName
120 public static Map<String, String> getProperties(String fileName){
121 return mapOfMaps.get(fileName);
124 private static String ifNullThenEmpty(String key) {