aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterManagerImpl.java
blob: 4917533dd85cbed2f16f6f1b9c8b7514258fe4a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package org.openecomp.core.impl;

import org.openecomp.core.converter.ToscaConverter;
import org.openecomp.core.converter.api.ToscaConverterManager;
import org.openecomp.core.utilities.file.FileContentHandler;
import org.openecomp.core.utilities.file.FileUtils;
import org.openecomp.core.utilities.json.JsonUtil;
import org.openecomp.sdc.logging.api.Logger;
import org.openecomp.sdc.logging.api.LoggerFactory;
import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;

import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class ToscaConverterManagerImpl implements ToscaConverterManager {

  private static final Logger LOGGER = LoggerFactory.getLogger(ToscaConverterManagerImpl.class.getName());
  private static List<ToscaConverter> toscaConverters;
  private static final String toscaConverterFileName = "ToscaConverters.json";
  private static final String TOSCA_CONVERTER_IMPL_FORMAT_ERROR = "Failed to construct TOSCA converter for '%s' implementation.";

  static {
    toscaConverters = getConvertersList();
  }

  @Override
  public ToscaServiceModel convert(String csarName, FileContentHandler fileContentHandler) {
    return null;
  }

  private static List<ToscaConverter> getConvertersList(){
    List<ToscaConverter> toscaConvertersList = new ArrayList<>();
    Map<String, String> convertersMap = FileUtils.readViaInputStream(toscaConverterFileName,
            stream -> JsonUtil.json2Object(stream, Map.class));
    return getToscaConvertersList(toscaConvertersList, convertersMap);
  }

  private static List<ToscaConverter> getToscaConvertersList(
      List<ToscaConverter> toscaConvertersList, Map<String, String> convertersMap) {
    for(String implClassName : convertersMap.values()){
      try{
        Class<?> clazz = Class.forName(implClassName);
        Constructor<?> constructor = clazz.getConstructor();
        toscaConvertersList.add((ToscaConverter) constructor.newInstance());
      }catch (Exception ex){
        LOGGER.debug(String.format(TOSCA_CONVERTER_IMPL_FORMAT_ERROR, implClassName), ex);
        continue;
      }
    }
    return toscaConvertersList;
  }
}