1 package org.openecomp.core.impl;
3 import org.openecomp.core.converter.ToscaConverter;
4 import org.openecomp.core.converter.api.ToscaConverterManager;
5 import org.openecomp.core.utilities.file.FileContentHandler;
6 import org.openecomp.core.utilities.file.FileUtils;
7 import org.openecomp.core.utilities.json.JsonUtil;
8 import org.openecomp.sdc.logging.api.Logger;
9 import org.openecomp.sdc.logging.api.LoggerFactory;
10 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
12 import java.lang.reflect.Constructor;
13 import java.util.ArrayList;
14 import java.util.List;
17 public class ToscaConverterManagerImpl implements ToscaConverterManager {
19 private static final Logger LOGGER = LoggerFactory.getLogger(ToscaConverterManagerImpl.class.getName());
20 private static List<ToscaConverter> toscaConverters;
21 private static final String toscaConverterFileName = "ToscaConverters.json";
22 private static final String TOSCA_CONVERTER_IMPL_FORMAT_ERROR = "Failed to construct TOSCA converter for '%s' implementation.";
25 toscaConverters = getConvertersList();
29 public ToscaServiceModel convert(String csarName, FileContentHandler fileContentHandler) {
33 private static List<ToscaConverter> getConvertersList(){
34 List<ToscaConverter> toscaConvertersList = new ArrayList<>();
35 Map<String, String> convertersMap = FileUtils.readViaInputStream(toscaConverterFileName,
36 stream -> JsonUtil.json2Object(stream, Map.class));
37 return getToscaConvertersList(toscaConvertersList, convertersMap);
40 private static List<ToscaConverter> getToscaConvertersList(
41 List<ToscaConverter> toscaConvertersList, Map<String, String> convertersMap) {
42 for(String implClassName : convertersMap.values()){
44 Class<?> clazz = Class.forName(implClassName);
45 Constructor<?> constructor = clazz.getConstructor();
46 toscaConvertersList.add((ToscaConverter) constructor.newInstance());
47 }catch (Exception ex){
48 LOGGER.debug(String.format(TOSCA_CONVERTER_IMPL_FORMAT_ERROR, implClassName), ex);
52 return toscaConvertersList;