/* * Copyright (C) 2021 Samsung Electronics * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ package org.onap.a1pesimulator.util; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.FileNotFoundException; import java.io.FileReader; import java.util.Properties; import org.onap.a1pesimulator.data.VnfConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @Service public class VnfConfigReader { private static final Logger log = LoggerFactory.getLogger(VnfConfigReader.class); private String vnfConfigFile; private VnfConfigReader(@Value("${vnf.config.file}") String vnfConfigFile) { this.vnfConfigFile = vnfConfigFile; } public VnfConfig getVnfConfig() { Properties props = new Properties(); VnfConfig vnfConfig; try { props.load(new FileReader(vnfConfigFile)); ObjectMapper mapper = new ObjectMapper(); vnfConfig = mapper.convertValue(props, VnfConfig.class); } catch (FileNotFoundException e) { String errorMsg = "Could not find vnfConfigFile under: " + vnfConfigFile; log.error(errorMsg); throw new VnfConfigReaderException(errorMsg, e); } catch (Exception e) { String errorMsg = "Failed to get VnfConfig: " + e.getMessage(); log.error(errorMsg); throw new VnfConfigReaderException(errorMsg, e); } return vnfConfig; } private static class VnfConfigReaderException extends RuntimeException { private static final long serialVersionUID = 1L; public VnfConfigReaderException(String message, Throwable t) { super(message, t); } } }