push addional code
[sdc.git] / openecomp-be / lib / openecomp-tosca-lib / src / test / java / org / openecomp / sdc / tosca / TestUtil.java
1 package org.openecomp.sdc.tosca;
2
3 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
4 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
5 import org.openecomp.sdc.tosca.services.yamlutil.ToscaExtensionYamlUtil;
6
7 import java.io.*;
8 import java.net.URL;
9 import java.nio.file.NotDirectoryException;
10 import java.util.HashMap;
11 import java.util.Map;
12
13 public class TestUtil {
14
15   public static ToscaServiceModel loadToscaServiceModel(String serviceTemplatesPath,
16                                                         String globalServiceTemplatesPath,
17                                                         String entryDefinitionServiceTemplate)
18       throws IOException {
19     ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
20     Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
21     if (entryDefinitionServiceTemplate == null) {
22       entryDefinitionServiceTemplate = "MainServiceTemplate.yaml";
23     }
24
25     loadServiceTemplates(serviceTemplatesPath, toscaExtensionYamlUtil, serviceTemplates);
26     if (globalServiceTemplatesPath != null) {
27       loadServiceTemplates(globalServiceTemplatesPath, toscaExtensionYamlUtil, serviceTemplates);
28     }
29
30     return new ToscaServiceModel(null, serviceTemplates, entryDefinitionServiceTemplate);
31   }
32
33   private static void loadServiceTemplates(String serviceTemplatesPath,
34                                            ToscaExtensionYamlUtil toscaExtensionYamlUtil,
35                                            Map<String, ServiceTemplate> serviceTemplates)
36       throws IOException {
37     URL urlFile = TestUtil.class.getResource(serviceTemplatesPath);
38     if (urlFile != null) {
39       File pathFile = new File(urlFile.getFile());
40       File[] files = pathFile.listFiles();
41       if (files != null) {
42         addServiceTemplateFiles(serviceTemplates, files, toscaExtensionYamlUtil);
43       } else {
44         throw new NotDirectoryException(serviceTemplatesPath);
45       }
46     } else {
47       throw new NotDirectoryException(serviceTemplatesPath);
48     }
49   }
50
51   private static void addServiceTemplateFiles(Map<String, ServiceTemplate> serviceTemplates,
52                                               File[] files,
53                                               ToscaExtensionYamlUtil toscaExtensionYamlUtil)
54       throws IOException {
55     for (File file : files) {
56       try (InputStream yamlFile = new FileInputStream(file)) {
57         ServiceTemplate serviceTemplateFromYaml =
58             toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
59         serviceTemplates.put(file.getName(), serviceTemplateFromYaml);
60         try {
61           yamlFile.close();
62         } catch (IOException ignore) {
63         }
64       } catch (FileNotFoundException e) {
65         throw e;
66       } catch (IOException e) {
67         throw e;
68       }
69     }
70   }
71 }