848a32f5b5a31395980d642e9ec3850e4bb4f715
[ccsdk/cds.git] /
1 /*\r
2  * Copyright © 2017-2018 AT&T Intellectual Property.\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 package org.onap.ccsdk.apps.controllerblueprints.service.validator;\r
18 \r
19 import com.google.common.base.Preconditions;\r
20 import org.apache.commons.lang3.StringUtils;\r
21 import org.jetbrains.annotations.NotNull;\r
22 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException;\r
23 import org.onap.ccsdk.apps.controllerblueprints.core.data.NodeTemplate;\r
24 import org.onap.ccsdk.apps.controllerblueprints.core.data.ServiceTemplate;\r
25 import org.onap.ccsdk.apps.controllerblueprints.core.service.BluePrintValidatorDefaultService;\r
26 import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils;\r
27 import org.onap.ccsdk.apps.controllerblueprints.resource.dict.validator.ResourceAssignmentValidator;\r
28 \r
29 import java.util.HashMap;\r
30 import java.util.Map;\r
31 \r
32 /**\r
33  * ServiceTemplateValidator.java Purpose: Provide Configuration Generator ServiceTemplateValidator\r
34  *\r
35  * @author Brinda Santh\r
36  * @version 1.0\r
37  */\r
38 \r
39 public class ServiceTemplateValidator extends BluePrintValidatorDefaultService {\r
40 \r
41     StringBuilder message = new StringBuilder();\r
42     private Map<String, String> metaData = new HashMap<>();\r
43 \r
44     /**\r
45      * This is a validateServiceTemplate\r
46      *\r
47      * @param serviceTemplateContent serviceTemplateContent\r
48      * @return boolean\r
49      * @throws BluePrintException BluePrintException\r
50      */\r
51     public boolean validateServiceTemplate(String serviceTemplateContent) throws BluePrintException {\r
52         if (StringUtils.isNotBlank(serviceTemplateContent)) {\r
53             ServiceTemplate serviceTemplate =\r
54                     JacksonUtils.readValue(serviceTemplateContent, ServiceTemplate.class);\r
55             return validateServiceTemplate(serviceTemplate);\r
56         } else {\r
57             throw new BluePrintException(\r
58                     "Service Template Content is  (" + serviceTemplateContent + ") not Defined.");\r
59         }\r
60     }\r
61 \r
62     /**\r
63      * This is a validateServiceTemplate\r
64      *\r
65      * @param serviceTemplate\r
66      * @return boolean\r
67      * @throws BluePrintException BluePrintException\r
68      */\r
69     @SuppressWarnings("squid:S00112")\r
70     public boolean validateServiceTemplate(ServiceTemplate serviceTemplate) throws BluePrintException {\r
71         Map<String, Object> properties = new HashMap<>();\r
72         super.validateBlueprint(serviceTemplate, properties);\r
73         return true;\r
74     }\r
75 \r
76     /**\r
77      * This is a getMetaData to get the key information during the\r
78      *\r
79      * @return Map<String, String>\r
80      */\r
81     public Map<String, String> getMetaData() {\r
82         return metaData;\r
83     }\r
84 \r
85     @Override\r
86     public void validateMetadata(@NotNull Map<String, String> metaDataMap) throws BluePrintException {\r
87 \r
88         Preconditions.checkNotNull(serviceTemplate.getMetadata(), "Service Template Metadata Information is missing.");\r
89         super.validateMetadata(metaDataMap);\r
90 \r
91         this.metaData.putAll(serviceTemplate.getMetadata());\r
92     }\r
93 \r
94 \r
95     @Override\r
96     public void validateNodeTemplate(@NotNull String nodeTemplateName, @NotNull NodeTemplate nodeTemplate)\r
97             throws BluePrintException {\r
98         super.validateNodeTemplate(nodeTemplateName, nodeTemplate);\r
99         validateNodeTemplateCustom(nodeTemplateName, nodeTemplate);\r
100 \r
101     }\r
102 \r
103     @Deprecated()\r
104     private void validateNodeTemplateCustom(@NotNull String nodeTemplateName, @NotNull NodeTemplate nodeTemplate)\r
105             throws BluePrintException {\r
106         String derivedFrom = getBluePrintContext().nodeTemplateNodeType(nodeTemplateName).getDerivedFrom();\r
107         if ("tosca.nodes.Artifact".equals(derivedFrom)) {\r
108             ResourceAssignmentValidator resourceAssignmentValidator = new ResourceAssignmentValidator(nodeTemplate);\r
109             resourceAssignmentValidator.validateResourceAssignment();\r
110         }\r
111     }\r
112 }\r