2 * Copyright © 2016-2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.openecomp.sdc.tosca.datatypes;
19 import java.io.IOException;
20 import java.io.InputStream;
21 import java.util.ArrayList;
22 import java.util.HashMap;
23 import java.util.List;
25 import java.util.Optional;
26 import org.junit.Assert;
27 import org.junit.Test;
28 import org.onap.sdc.tosca.datatypes.model.*;
29 import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
30 import org.onap.sdc.tosca.datatypes.model.extension.*;
31 import org.onap.sdc.tosca.datatypes.model.heatextend.ParameterDefinitionExt;
32 import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil;
33 import org.onap.sdc.tosca.services.YamlUtil;
34 import org.openecomp.sdc.tosca.services.DataModelUtil;
35 import org.openecomp.sdc.tosca.services.ToscaConstants;
38 public class ToscaModelTest {
40 public static final String FIRST_NODE_TEMPLATE = "firstNodeTemplate";
41 public static final String REQ1 = "req1";
42 public static final String REQ2 = "req2";
43 public static final String SERVICE_FILTER_TOSCA_ID = "{get_input=inParam1}";
44 public static final String VMD_NAME = "vmdName";
45 public static final String DIRECTOR = "director";
46 private YamlUtil yamlUtil = new YamlUtil();
47 private ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
48 private static final String INTERFACE_ID = "inter_1";
49 private static final String NODE_TEMPLATE_ID = "firstNodeTemplate";
50 private static final String NODE_TYPE_ID = "compute_node_type";
51 private static final String BASE_DIR = "/mock/model";
52 private static final String ST = "/serviceTemplate.yaml";
53 private static final String ST_WITH_INTERFACE = "/serviceTemplateWithInterface.yaml";
54 private static final String ST_WITH_OPERATIONS = "/serviceTemplateWithInterfaceAndOperation.yaml";
55 private static final String ST_WITH_INTERFACE_DEF = "/serviceTemplateWithNodeTemplateInterface.yaml";
56 private static final String ST_WITH_NODE_INTERFACE_DEF = "/serviceTemplateWithNodeTypeInterface.yaml";
57 private static final String INTERFACE_TYPE_VALUE = "tosca.interfaces.node.lifecycle.Standard";
58 private static final String OPERATION_START = "start";
59 private static final String OPERATION_DESC = "start operation";
60 private static final String IMPLEMENTATION_NAME = "startWorkFlow.json";
61 private static final String PRIMARY_IMPL = "myImpl.yaml";
62 private static final String DEPENDENCY_NAME = "script1.sh";
63 private static final String STRING_TYPE = "string";
64 private static final String ST_WITH_SERVICE_FILTER = "/serviceTemplateWithServiceFilter.yaml";
67 public void testServiceTemplateJavaToYaml() {
68 ServiceTemplate serviceTemplate = new ServiceTemplate();
69 Map<String, String> metadata = new HashMap<>();
70 metadata.put("Template_author", "OPENECOMP");
71 metadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, "Test");
72 metadata.put("Template_version", "1.0.0");
73 serviceTemplate.setTosca_definitions_version("tosca_simple_yaml_1_0_0");
74 serviceTemplate.setDescription("testing desc tosca service template");
76 Import fileImport1 = new Import();
77 fileImport1.setFile("path1/path2/file1.yaml");
78 Import fileImport2 = new Import();
79 fileImport2.setFile("path1/path2/file2.yaml");
80 List<Map<String, Import>> imports = new ArrayList<>();
81 Map<String, Import> importsMap = new HashMap<>();
82 importsMap.put("myfile1", fileImport1);
83 imports.add(importsMap);
84 importsMap = new HashMap<>();
85 importsMap.put("myfile2", fileImport2);
86 imports.add(importsMap);
87 serviceTemplate.setImports(imports);
89 OperationDefinition operationDefinition = new OperationDefinition();
90 operationDefinition.setDescription("test operation");
91 InterfaceType interfaceType = new InterfaceType();
92 interfaceType.setDerived_from("derived_from");
93 interfaceType.setDescription("desc");
94 interfaceType.addOperation("test", operationDefinition);
95 serviceTemplate.addInterfaceType("test_interface", interfaceType);
97 ArtifactType artifact = new ArtifactType();
98 artifact.setMime_type("application/java-archive");
99 ArrayList<String> ext = new ArrayList<>();
102 artifact.setFile_ext(ext);
103 Map<String, ArtifactType> artifactTypes = new HashMap<>();
104 artifactTypes.put("one_artifact", artifact);
105 serviceTemplate.setArtifact_types(artifactTypes);
107 NodeType nodeType = new NodeType();
108 nodeType.setDerived_from("tosca.nodes.Root");
109 nodeType.setVersion("1.0.0");
110 nodeType.setDescription("tosca compute test");
112 PropertyDefinition propDef1 = new PropertyDefinition();
113 propDef1.setType("integer");
114 propDef1.setDescription("Number of CPUs requested for a software node instance");
115 propDef1.setRequired(true);
116 propDef1.set_default(1);
118 Constraint graterOrEqual = new Constraint();
119 graterOrEqual.setGreater_or_equal((float) 5.0);
120 Constraint constraintEqual = new Constraint();
121 constraintEqual.setEqual(5);
122 Constraint greater_than = new Constraint();
123 greater_than.setGreater_than(6.02);
124 Constraint inRange = new Constraint();
125 inRange.setIn_range(new Object[2]);
126 inRange.getIn_range()[0] = 0;
127 inRange.getIn_range()[1] = ToscaConstants.UNBOUNDED;
129 List<Constraint> constraints = new ArrayList<>();
130 constraints.add(graterOrEqual);
131 constraints.add(constraintEqual);
132 constraints.add(greater_than);
133 constraints.add(inRange);
134 propDef1.setConstraints(constraints);
136 Map<String, PropertyDefinition> properties = new HashMap<>();
137 properties.put("cpu_num", propDef1);
138 nodeType.setProperties(properties);
140 Map<String, AttributeDefinition> attributesDef = new HashMap<>();
141 AttributeDefinition attDef = new AttributeDefinition();
142 attDef.setType(PropertyType.STRING.getDisplayName());
143 attDef.set_default("hi");
144 attributesDef.put("attDef1", attDef);
145 nodeType.setAttributes(attributesDef);
147 Map<String, RequirementDefinition> reqsDef = new HashMap<>();
148 RequirementDefinition reqDef = new RequirementDefinition();
149 reqDef.setCapability("tosca.cap1");
150 reqDef.getOccurrences()[0] = 5;
151 reqsDef.put("re1", reqDef);
152 List<Map<String, RequirementDefinition>> reqList = new ArrayList<>();
153 reqList.add(reqsDef);
154 nodeType.setRequirements(reqList);
157 Map<String, CapabilityDefinition> capsDef = new HashMap<>();
158 CapabilityDefinition capdef = new CapabilityDefinition();
159 capdef.setType("tosca.cap");
160 List<String> vvSource = new ArrayList<>();
161 vvSource.add("node1");
162 vvSource.add("node2");
163 capdef.setValid_source_types(vvSource);
164 capsDef.put("cap1", capdef);
165 nodeType.setCapabilities(capsDef);
167 Map<String, NodeType> nodeTypes = new HashMap<>();
168 nodeTypes.put("compute_node_type", nodeType);
169 serviceTemplate.setNode_types(nodeTypes);
171 TopologyTemplate topologyTemplate = new TopologyTemplate();
172 topologyTemplate.setDescription("topologi template descroption");
173 Map<String, ParameterDefinition> inputs = new HashMap<>();
174 ParameterDefinition paramDef = new ParameterDefinition();
175 paramDef.setType(PropertyType.STRING.getDisplayName());
176 paramDef.setDescription("desc");
177 paramDef.set_default("my default val");
178 paramDef.setRequired(false);
179 paramDef.setEntry_schema(DataModelUtil.createEntrySchema("tosca.myType", null, null));
180 List<Constraint> paramConstraint = new ArrayList<>();
181 Constraint paramConst1 = new Constraint();
182 paramConst1.setGreater_than(6);
183 Constraint paramConst2 = new Constraint();
184 paramConst2.setGreater_or_equal(9);
185 paramConstraint.add(paramConst1);
186 paramConstraint.add(paramConst2);
187 paramDef.setConstraints(paramConstraint);
188 inputs.put("inParam1", paramDef);
189 topologyTemplate.setInputs(inputs);
191 Map<String, NodeTemplate> nodeTemplates = new HashMap<>();
192 NodeTemplate nodeTemplate = new NodeTemplate();
193 nodeTemplate.setType("nodeTypeRef");
194 List<String> directives = new ArrayList<>();
195 directives.add(Directive.SELECTABLE.getDisplayName());
196 directives.add(Directive.SUBSTITUTABLE.getDisplayName());
197 nodeTemplate.setDirectives(directives);
198 Map<String, Object> nodeTemplateProperties = new HashMap<>();
199 nodeTemplateProperties.put("prop1", "abcd");
200 nodeTemplateProperties.put("prop2", "{ get_input: my_mysql_rootpw }");
201 nodeTemplate.setProperties(nodeTemplateProperties);
202 Map<String, Object> nodeTemplateAtts = new HashMap<>();
203 nodeTemplateAtts.put("att1", "att1Val");
204 nodeTemplateAtts.put("att2", "{ get_input: my_mysql_rootpw }");
205 nodeTemplate.setAttributes(nodeTemplateAtts);
208 RequirementAssignment reqAssignment1 = new RequirementAssignment();
209 reqAssignment1.setNode("nodeA");
210 reqAssignment1.setCapability("capA");
211 reqAssignment1.setRelationship("relationB");
212 Object[] reqAssOccurrences = new Object[2];
213 reqAssOccurrences[0] = 1;
214 reqAssOccurrences[1] = 2;
215 reqAssignment1.setOccurrences(reqAssOccurrences);
216 NodeFilter reqNodeFilter = new NodeFilter();
217 List<Constraint> propConstraint1 = new ArrayList<>();
218 Constraint propConst1 = new Constraint();
219 propConst1.setGreater_or_equal(9);
220 propConstraint1.add(propConst1);
221 List<Constraint> propConstraint2 = new ArrayList<>();
222 Constraint propConst2 = new Constraint();
223 propConst2.setMin_length(1);
224 propConstraint2.add(propConst2);
225 Constraint propConst3 = new Constraint();
226 propConst3.setMax_length(2);
227 propConstraint2.add(propConst3);
228 List<Map<String, List<Constraint>>> nodeFilterProp = new ArrayList<>();
229 Map<String, List<Constraint>> propsMap = new HashMap<>();
230 propsMap.put("propName1", propConstraint1);
231 propsMap.put("propName2", propConstraint2);
232 nodeFilterProp.add(propsMap);
233 reqNodeFilter.setProperties(nodeFilterProp);
234 reqAssignment1.setNode_filter(reqNodeFilter);
236 RequirementAssignment reqAssignment2 = new RequirementAssignment();
237 reqAssignment2.setNode("nodeA");
238 reqAssignment2.setCapability("capA");
239 reqAssignment2.setRelationship("relationB");
240 Map<String, RequirementAssignment> nodeTemplateRequirement1 = new HashMap<>();
241 Map<String, RequirementAssignment> nodeTemplateRequirement2 = new HashMap<>();
242 nodeTemplateRequirement1.put(REQ1, reqAssignment1);
243 nodeTemplateRequirement2.put(REQ2, reqAssignment2);
244 nodeTemplate.setRequirements(new ArrayList<>());
245 nodeTemplate.getRequirements().add(nodeTemplateRequirement1);
246 nodeTemplate.getRequirements().add(nodeTemplateRequirement2);
248 Map<String, CapabilityAssignment> nodeTemplateCapability = new HashMap<>();
249 CapabilityAssignment capAss = new CapabilityAssignment();
250 Map<String, Object> capProps = new HashMap<>();
251 capProps.put("num_cpus", "{ get_input: cpus }");
252 capAss.setProperties(capProps);
253 Map<String, Object> capAtts = new HashMap<>();
254 capAtts.put("num_cpus", "66");
255 capAss.setAttributes(capAtts);
256 nodeTemplateCapability.put("cap1", capAss);
257 nodeTemplate.setCapabilities(nodeTemplateCapability);
259 NodeFilter nodeTemplateNodeFilter = new NodeFilter();
260 List<Map<String, List<Constraint>>> nodeFilterProp2 = new ArrayList<>();
261 Map<String, List<Constraint>> propsMap2 = new HashMap<>();
262 Constraint c1 = new Constraint();
264 List<Constraint> consList = new ArrayList<>();
266 propsMap2.put("test1", consList);
267 nodeFilterProp2.add(propsMap2);
268 nodeTemplateNodeFilter.setProperties(nodeFilterProp2);
269 nodeTemplate.setNode_filter(nodeTemplateNodeFilter);
270 nodeTemplates.put("firatNodeTemplate", nodeTemplate);
271 topologyTemplate.setNode_templates(nodeTemplates);
273 SubstitutionMapping subMap = new SubstitutionMapping();
274 subMap.setNode_type("myNodeType.node");
275 Map<String, List<String>> mapCapabilities = new HashMap<>();
276 List<String> NodeCap = new ArrayList<>();
277 NodeCap.add("database");
278 NodeCap.add("database_endpoint");
279 mapCapabilities.put("database_endpoint", NodeCap);
280 subMap.setCapabilities(mapCapabilities);
281 topologyTemplate.setSubstitution_mappings(subMap);
282 serviceTemplate.setTopology_template(topologyTemplate);
284 String yaml = new YamlUtil().objectToYaml(serviceTemplate);
285 ServiceTemplate serviceTemplateFromYaml = new YamlUtil().yamlToObject(yaml, ServiceTemplate.class);
286 Assert.assertNotNull(serviceTemplateFromYaml);
291 public void testYamlToServiceTemplateObj() throws IOException {
292 ServiceTemplate serviceTemplateFromYaml =
293 getServiceTemplate(BASE_DIR + ST);
294 Assert.assertNotNull(serviceTemplateFromYaml);
298 public void testYamlWithInterfaceToServiceTemplateObj() throws IOException {
299 ServiceTemplate serviceTemplateWithOperation = getServiceTemplate(BASE_DIR + ST_WITH_OPERATIONS);
300 Assert.assertNotNull(serviceTemplateWithOperation);
302 InterfaceType expectedInterfaceType = createInterfaceType();
304 Map<String, InterfaceType> interfaceTypes = DataModelUtil.getInterfaceTypes(serviceTemplateWithOperation);
305 Assert.assertEquals(1, interfaceTypes.size());
306 InterfaceType actualInterfaceType = interfaceTypes.get(INTERFACE_ID);
307 Assert.assertEquals(expectedInterfaceType, actualInterfaceType);
311 public void testAddOperationToInterface() throws IOException {
312 YamlUtil yamlUtil = new YamlUtil();
313 ServiceTemplate serviceTemplateWithInterface = getServiceTemplate(BASE_DIR + ST_WITH_INTERFACE);
314 ServiceTemplate serviceTemplateWithOperation = getServiceTemplate(BASE_DIR + ST_WITH_OPERATIONS);
316 OperationDefinition operationDefinition = createOperationDefinition();
318 DataModelUtil.addInterfaceOperation(serviceTemplateWithInterface, INTERFACE_ID, OPERATION_START,
319 operationDefinition);
320 String expectedServiceTemplate = yamlUtil.objectToYaml(serviceTemplateWithOperation);
321 String actualServiceTemplate = yamlUtil.objectToYaml(serviceTemplateWithInterface);
322 Assert.assertEquals(expectedServiceTemplate, actualServiceTemplate);
326 public void testInterfaceTypeToObjConversion() throws IOException {
327 ServiceTemplate serviceTemplateWithInterface = getServiceTemplate(BASE_DIR + ST_WITH_INTERFACE);
328 ServiceTemplate serviceTemplateWithOperation = getServiceTemplate(BASE_DIR + ST_WITH_OPERATIONS);
329 InterfaceType interfaceType = createInterfaceType();
331 Optional<Object> interfaceAsObj = DataModelUtil.convertInterfaceTypeToObj(interfaceType);
332 Assert.assertTrue(interfaceAsObj.isPresent());
334 Map<String, Object> interfaceTypes = new HashMap<>();
335 interfaceTypes.put(INTERFACE_ID, interfaceAsObj.get());
336 serviceTemplateWithInterface.setInterface_types(interfaceTypes);
338 String expectedServiceTemplate = yamlUtil.objectToYaml(serviceTemplateWithOperation);
339 String actualServiceTemplate = yamlUtil.objectToYaml(serviceTemplateWithInterface);
340 Assert.assertEquals(expectedServiceTemplate, actualServiceTemplate);
344 public void testObjToInterfaceTypeConversion() throws IOException, ReflectiveOperationException {
345 ServiceTemplate serviceTemplateWithOperation = getServiceTemplate(BASE_DIR + ST_WITH_OPERATIONS);
346 Map<String, Object> interfaceTypes = serviceTemplateWithOperation.getInterface_types();
347 Object interfaceObj = interfaceTypes.get(INTERFACE_ID);
348 Optional<InterfaceType> actualInterfaceType =
349 DataModelUtil.convertObjToInterfaceType(INTERFACE_ID, interfaceObj);
351 Assert.assertTrue(actualInterfaceType.isPresent());
352 InterfaceType expectedInterfaceType = createInterfaceType();
353 Assert.assertEquals(expectedInterfaceType, actualInterfaceType.get());
357 public void testObjToInterfaceDefinitionTypeConversion() throws IOException, ReflectiveOperationException {
358 ServiceTemplate serviceTemplateWithInterfaceDef = getServiceTemplate(BASE_DIR + ST_WITH_NODE_INTERFACE_DEF);
359 NodeType nodeTypeWithInterface = DataModelUtil.getNodeType(serviceTemplateWithInterfaceDef, NODE_TYPE_ID);
360 Map<String, Object> interfaces = nodeTypeWithInterface.getInterfaces();
361 Object interfaceObj = interfaces.get(INTERFACE_ID);
363 Optional<? extends InterfaceDefinition> actualInterfaceDefinition = DataModelUtil
364 .convertObjToInterfaceDefinition(
365 INTERFACE_ID, interfaceObj,
366 InterfaceDefinitionType.class);
368 Assert.assertTrue(actualInterfaceDefinition.isPresent());
370 InterfaceDefinitionType expectedInterfaceDefinitionType = createInterfaceDefinitionType();
371 Assert.assertEquals(expectedInterfaceDefinitionType, actualInterfaceDefinition.get());
375 public void testObjToInterfaceDefinitionTemplateConversion() throws IOException, ReflectiveOperationException {
376 ServiceTemplate serviceTemplateWithInterfaceDef = getServiceTemplate(BASE_DIR + ST_WITH_INTERFACE_DEF);
377 NodeTemplate nodeTemplateWithInterface =
378 DataModelUtil.getNodeTemplate(serviceTemplateWithInterfaceDef, NODE_TEMPLATE_ID);
379 Map<String, Object> interfaces = nodeTemplateWithInterface.getInterfaces();
380 Object interfaceObj = interfaces.get(INTERFACE_ID);
382 Optional<? extends InterfaceDefinition> actualInterfaceDefinition = DataModelUtil
383 .convertObjToInterfaceDefinition(
384 INTERFACE_ID, interfaceObj,
385 InterfaceDefinitionTemplate.class);
387 Assert.assertTrue(actualInterfaceDefinition.isPresent());
388 InterfaceDefinitionTemplate expectedInterfaceDefinitionTemplate = createInterfaceDefinitionTemplate();
389 Assert.assertEquals(expectedInterfaceDefinitionTemplate, actualInterfaceDefinition.get());
393 public void testYamlToServiceTemplateIncludingHeatExtend() throws IOException {
394 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
395 try (InputStream yamlFile = toscaExtensionYamlUtil
396 .loadYamlFileIs(BASE_DIR + "/serviceTemplateHeatExtend.yaml")) {
397 ServiceTemplate serviceTemplateFromYaml =
398 toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
399 ParameterDefinitionExt parameterDefinitionExt =
400 (ParameterDefinitionExt) serviceTemplateFromYaml.getTopology_template().getInputs().get("inParam1");
401 Assert.assertNotNull(parameterDefinitionExt.getLabel());
402 String backToYamlString = toscaExtensionYamlUtil.objectToYaml(serviceTemplateFromYaml);
403 Assert.assertNotNull(backToYamlString);
408 public void testServiceFilter() throws IOException {
409 ServiceTemplate serviceTemplateWithServiceFilter = getServiceTemplateExt(BASE_DIR + ST_WITH_SERVICE_FILTER);
411 NodeTemplate firstNodeTemplate =
412 DataModelUtil.getNodeTemplate(serviceTemplateWithServiceFilter, FIRST_NODE_TEMPLATE);
413 Map<String, RequirementAssignment> nodeTemplateRequirements =
414 DataModelUtil.getNodeTemplateRequirements(firstNodeTemplate);
416 Object req1 = nodeTemplateRequirements.get(REQ1);
417 Assert.assertEquals(true, req1 instanceof org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment);
418 Assert.assertNotNull(((org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment)req1).getService_filter());
419 List<Map<String, List<Constraint>>> properties =
420 ((org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment) req1).getService_filter()
422 Assert.assertNotNull(properties);
423 List<Constraint> vmdNameConstrain = properties.get(0).get(VMD_NAME);
424 Assert.assertNotNull(vmdNameConstrain);
425 Assert.assertNotNull(vmdNameConstrain.get(0).getEqual());
427 List<Map<String, CapabilityFilter>> capabilities =
428 ((org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment) req1).getService_filter()
430 Assert.assertNotNull(capabilities);
431 CapabilityFilter capabilityFilter = capabilities.get(0).get(DIRECTOR);
432 Assert.assertNotNull(capabilityFilter);
433 Assert.assertNotNull(capabilityFilter.getProperties());
436 Object req2 = nodeTemplateRequirements.get(REQ2);
437 Assert.assertEquals(true, req2 instanceof org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment);
438 Assert.assertNotNull(((org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment)req2).getService_filter());
440 ((org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment) req2).getService_filter()
442 Assert.assertNotNull(tosca_id);
443 Assert.assertEquals(SERVICE_FILTER_TOSCA_ID, tosca_id.toString());
446 String serviceTemplateYaml = toscaExtensionYamlUtil.objectToYaml(serviceTemplateWithServiceFilter);
447 Assert.assertNotNull(serviceTemplateYaml);
451 private ServiceTemplate getServiceTemplate(String inputPath) throws IOException {
452 try (InputStream yamlFile = yamlUtil.loadYamlFileIs(inputPath)) {
453 return yamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
457 private ServiceTemplate getServiceTemplateExt(String inputPath) throws IOException {
458 try (InputStream yamlFile = toscaExtensionYamlUtil.loadYamlFileIs(inputPath)) {
459 return toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
463 private InterfaceType createInterfaceType() {
464 OperationDefinition operationDefinition = createOperationDefinition();
465 InterfaceType interfaceType = new InterfaceType();
466 interfaceType.setDescription("test interface");
467 interfaceType.addOperation(OPERATION_START, operationDefinition);
468 return interfaceType;
471 private OperationDefinition createOperationDefinition() {
472 OperationDefinition operationDefinition = new OperationDefinition();
473 operationDefinition.setDescription(OPERATION_DESC);
474 return operationDefinition;
477 private InterfaceDefinitionType createInterfaceDefinitionType() {
478 OperationDefinitionType operationDefinitionType = createOperationDefinitionType();
479 InterfaceDefinitionType interfaceDefinitionType = new InterfaceDefinitionType();
480 interfaceDefinitionType.setType(INTERFACE_TYPE_VALUE);
481 interfaceDefinitionType.addOperation(OPERATION_START, operationDefinitionType);
482 return interfaceDefinitionType;
485 private InterfaceDefinitionTemplate createInterfaceDefinitionTemplate() {
486 OperationDefinitionTemplate operationDefinitionTemplate = createOperationDefinitionTemplate();
487 InterfaceDefinitionTemplate interfaceDefinitionTemplate = new InterfaceDefinitionTemplate();
488 interfaceDefinitionTemplate.addOperation(OPERATION_START, operationDefinitionTemplate);
489 return interfaceDefinitionTemplate;
492 private OperationDefinitionTemplate createOperationDefinitionTemplate() {
493 OperationDefinitionTemplate operationDefinitionTemplate = new OperationDefinitionTemplate();
494 operationDefinitionTemplate.setDescription(OPERATION_DESC);
495 Implementation implementation = new Implementation();
496 implementation.setPrimary(PRIMARY_IMPL);
497 List<String> dependencies = new ArrayList<>();
498 dependencies.add(DEPENDENCY_NAME);
499 implementation.setDependencies(dependencies);
500 operationDefinitionTemplate.setImplementation(implementation);
501 return operationDefinitionTemplate;
504 private OperationDefinitionType createOperationDefinitionType() {
505 OperationDefinitionType operationDefinitionType = new OperationDefinitionType();
506 operationDefinitionType.setDescription(OPERATION_DESC);
507 operationDefinitionType.setImplementation(IMPLEMENTATION_NAME);
508 PropertyDefinition propertyDefinition = new PropertyDefinition();
509 propertyDefinition.setType(STRING_TYPE);
510 return operationDefinitionType;