Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-tosca-converter-lib / openecomp-tosca-converter-core / src / main / java / org / openecomp / core / impl / ToscaConverterManagerImpl.java
1 package org.openecomp.core.impl;
2
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;
11
12 import java.lang.reflect.Constructor;
13 import java.util.ArrayList;
14 import java.util.List;
15 import java.util.Map;
16
17 public class ToscaConverterManagerImpl implements ToscaConverterManager {
18
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.";
23
24   static {
25     toscaConverters = getConvertersList();
26   }
27
28   @Override
29   public ToscaServiceModel convert(String csarName, FileContentHandler fileContentHandler) {
30     return null;
31   }
32
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);
38   }
39
40   private static List<ToscaConverter> getToscaConvertersList(
41       List<ToscaConverter> toscaConvertersList, Map<String, String> convertersMap) {
42     for(String implClassName : convertersMap.values()){
43       try{
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);
49         continue;
50       }
51     }
52     return toscaConvertersList;
53   }
54 }