2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2020 Nordix Foundation
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * 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.
16 * SPDX-License-Identifier: Apache-2.0
17 * ============LICENSE_END=========================================================
20 package org.openecomp.sdc.be.components.impl;
22 import static java.util.Collections.singletonList;
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.junit.jupiter.api.Assertions.assertThrows;
25 import static org.junit.jupiter.api.Assertions.fail;
26 import static org.mockito.ArgumentMatchers.any;
27 import static org.mockito.ArgumentMatchers.anyInt;
28 import static org.mockito.ArgumentMatchers.anyList;
29 import static org.mockito.ArgumentMatchers.anyString;
30 import static org.mockito.Mockito.times;
31 import static org.mockito.Mockito.verify;
32 import static org.mockito.Mockito.when;
34 import fj.data.Either;
35 import java.util.ArrayList;
36 import java.util.Arrays;
37 import java.util.Collections;
38 import java.util.HashMap;
39 import java.util.LinkedList;
40 import java.util.List;
42 import java.util.Optional;
43 import org.junit.jupiter.api.BeforeEach;
44 import org.junit.jupiter.api.Test;
45 import org.junit.jupiter.api.extension.ExtendWith;
46 import org.mockito.InjectMocks;
47 import org.mockito.Mock;
48 import org.mockito.MockitoAnnotations;
49 import org.mockito.junit.jupiter.MockitoExtension;
50 import org.openecomp.sdc.be.components.impl.exceptions.BusinessLogicException;
51 import org.openecomp.sdc.be.components.impl.utils.NodeFilterConstraintAction;
52 import org.openecomp.sdc.be.components.validation.NodeFilterValidator;
53 import org.openecomp.sdc.be.components.validation.UserValidations;
54 import org.openecomp.sdc.be.config.ConfigurationManager;
55 import org.openecomp.sdc.be.dao.api.ActionStatus;
56 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphGenericDao;
57 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
58 import org.openecomp.sdc.be.datamodel.utils.ConstraintConvertor;
59 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
60 import org.openecomp.sdc.be.datatypes.elements.RequirementSubstitutionFilterPropertyDataDefinition;
61 import org.openecomp.sdc.be.datatypes.elements.SubstitutionFilterDataDefinition;
62 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
63 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
64 import org.openecomp.sdc.be.impl.ComponentsUtils;
65 import org.openecomp.sdc.be.model.ComponentInstance;
66 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
67 import org.openecomp.sdc.be.model.PropertyDefinition;
68 import org.openecomp.sdc.be.model.Service;
69 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.SubstitutionFilterOperation;
70 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
71 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
72 import org.openecomp.sdc.be.model.operations.impl.GraphLockOperation;
73 import org.openecomp.sdc.be.ui.model.UIConstraint;
74 import org.openecomp.sdc.exception.ResponseFormat;
76 @ExtendWith(MockitoExtension.class)
77 public class ComponentSubstitutionFilterBusinessLogicTest extends BaseBusinessLogicMock {
79 private static final String servicePropertyName = "controller_actor";
80 private static final String constraintOperator = "equal";
81 private static final String sourceType = "static";
82 private static final String sourceName = sourceType;
83 private static final String propertyValue = "constraintValue";
84 private static final String componentId = "dac65869-dfb4-40d2-aa20-084324659ec1";
85 private static final String componentInstanceId = "dac65869-dfb4-40d2-aa20-084324659ec1.service0";
88 private ComponentSubstitutionFilterBusinessLogic componentSubstitutionFilterBusinessLogic;
90 private NodeFilterValidator nodeFilterValidator;
92 private SubstitutionFilterOperation substitutionFilterOperation;
94 private ToscaOperationFacade toscaOperationFacade;
96 private GraphLockOperation graphLockOperation;
98 private JanusGraphDao janusGraphDao;
100 private JanusGraphGenericDao janusGraphGenericDao;
102 private ComponentsUtils componentsUtils;
104 private UserValidations userValidations;
106 private ResponseFormat responseFormat;
108 private Service service;
109 private ComponentInstance componentInstance;
110 private SubstitutionFilterDataDefinition substitutionFilterDataDefinition;
111 private RequirementSubstitutionFilterPropertyDataDefinition requirementSubstitutionFilterPropertyDataDefinition;
112 private String constraint;
116 MockitoAnnotations.initMocks(this);
117 componentSubstitutionFilterBusinessLogic =
118 new ComponentSubstitutionFilterBusinessLogic(elementDao, groupOperation, groupInstanceOperation,
119 groupTypeOperation, interfaceOperation, interfaceLifecycleTypeOperation, artifactToscaOperation,
120 substitutionFilterOperation, nodeFilterValidator);
121 componentSubstitutionFilterBusinessLogic.setToscaOperationFacade(toscaOperationFacade);
122 componentSubstitutionFilterBusinessLogic.setGraphLockOperation(graphLockOperation);
123 componentSubstitutionFilterBusinessLogic.setComponentsUtils(componentsUtils);
124 componentSubstitutionFilterBusinessLogic.setUserValidations(userValidations);
125 componentSubstitutionFilterBusinessLogic.setJanusGraphGenericDao(janusGraphGenericDao);
126 componentSubstitutionFilterBusinessLogic.setJanusGraphDao(janusGraphDao);
132 public void doNotCreateSubstitutionFilterAsExistsTest() throws BusinessLogicException {
133 componentInstance.setSubstitutionFilter(substitutionFilterDataDefinition);
135 when(toscaOperationFacade.getToscaElement(componentId)).thenReturn(Either.left(service));
137 final Optional<SubstitutionFilterDataDefinition> result = componentSubstitutionFilterBusinessLogic
138 .createSubstitutionFilterIfNotExist(componentId, componentInstanceId, true, ComponentTypeEnum.SERVICE);
139 assertThat(result).isPresent();
140 assertThat(result.get().getProperties()).isEqualTo(substitutionFilterDataDefinition.getProperties());
141 verify(toscaOperationFacade, times(1)).getToscaElement(componentId);
145 public void createSubstitutionFilterIfNotExistTest() throws BusinessLogicException {
146 when(toscaOperationFacade.getToscaElement(componentId)).thenReturn(Either.left(service));
147 when(graphLockOperation.lockComponent(componentId, NodeTypeEnum.Service))
148 .thenReturn(StorageOperationStatus.OK);
149 when(substitutionFilterOperation.createSubstitutionFilter(componentId, componentInstanceId))
150 .thenReturn(Either.left(substitutionFilterDataDefinition));
151 when(graphLockOperation.unlockComponent(componentId, NodeTypeEnum.Service))
152 .thenReturn(StorageOperationStatus.OK);
154 final Optional<SubstitutionFilterDataDefinition> result = componentSubstitutionFilterBusinessLogic
155 .createSubstitutionFilterIfNotExist(componentId, componentInstanceId, true, ComponentTypeEnum.SERVICE);
156 assertThat(result).isPresent();
157 assertThat(result.get().getProperties()).isEqualTo(substitutionFilterDataDefinition.getProperties());
158 verify(toscaOperationFacade, times(1)).getToscaElement(componentId);
159 verify(graphLockOperation, times(1)).lockComponent(componentId, NodeTypeEnum.Service);
160 verify(substitutionFilterOperation, times(1)).createSubstitutionFilter(componentId, componentInstanceId);
161 verify(graphLockOperation, times(1)).unlockComponent(componentId, NodeTypeEnum.Service);
165 public void createSubstitutionFilterIfNotExistFailTest() {
166 when(toscaOperationFacade.getToscaElement(componentId)).thenReturn(Either.left(service));
167 when(graphLockOperation.lockComponent(componentId, NodeTypeEnum.Service))
168 .thenReturn(StorageOperationStatus.OK);
169 when(substitutionFilterOperation.createSubstitutionFilter(componentId, componentInstanceId))
170 .thenReturn(Either.right(StorageOperationStatus.GENERAL_ERROR));
171 when(graphLockOperation.unlockComponent(componentId, NodeTypeEnum.Service))
172 .thenReturn(StorageOperationStatus.OK);
174 assertThrows(BusinessLogicException.class, () -> componentSubstitutionFilterBusinessLogic
175 .createSubstitutionFilterIfNotExist(componentId, componentInstanceId, true, ComponentTypeEnum.SERVICE));
177 verify(toscaOperationFacade, times(1)).getToscaElement(componentId);
178 verify(graphLockOperation, times(1)).lockComponent(componentId, NodeTypeEnum.Service);
179 verify(substitutionFilterOperation, times(1)).createSubstitutionFilter(componentId, componentInstanceId);
180 verify(graphLockOperation, times(1)).unlockComponent(componentId, NodeTypeEnum.Service);
184 public void addSubstitutionFilterTest() throws BusinessLogicException {
185 componentInstance.setSubstitutionFilter(substitutionFilterDataDefinition);
187 when(toscaOperationFacade.getToscaElement(componentId)).thenReturn(Either.left(service));
188 when(nodeFilterValidator.validateFilter(service, componentInstanceId, Collections.singletonList(constraint),
189 NodeFilterConstraintAction.ADD)).thenReturn(Either.left(true));
190 when(nodeFilterValidator.validateComponentInstanceExist(service, componentInstanceId))
191 .thenReturn(Either.left(true));
192 when(graphLockOperation.lockComponent(componentId, NodeTypeEnum.Service))
193 .thenReturn(StorageOperationStatus.OK);
195 when(substitutionFilterOperation
196 .addNewProperty(anyString(), anyString(), any(SubstitutionFilterDataDefinition.class),
197 any(RequirementSubstitutionFilterPropertyDataDefinition.class)))
198 .thenReturn(Either.left(substitutionFilterDataDefinition));
200 when(graphLockOperation.unlockComponent(componentId, NodeTypeEnum.Service))
201 .thenReturn(StorageOperationStatus.OK);
203 final Optional<SubstitutionFilterDataDefinition> result = componentSubstitutionFilterBusinessLogic
204 .addSubstitutionFilter(componentId, componentInstanceId, NodeFilterConstraintAction.ADD,
205 servicePropertyName, constraint, true, ComponentTypeEnum.SERVICE);
207 assertThat(result).isPresent();
208 assertThat(result.get().getProperties().getListToscaDataDefinition()).hasSize(1);
209 verify(toscaOperationFacade, times(1)).getToscaElement(componentId);
210 verify(graphLockOperation, times(1)).lockComponent(componentId, NodeTypeEnum.Service);
211 verify(nodeFilterValidator, times(1)).validateFilter(service, componentInstanceId,
212 Collections.singletonList(constraint), NodeFilterConstraintAction.ADD);
213 verify(substitutionFilterOperation, times(0))
214 .addNewProperty(componentId, componentInstanceId, substitutionFilterDataDefinition,
215 requirementSubstitutionFilterPropertyDataDefinition);
216 verify(graphLockOperation, times(1)).unlockComponent(componentId, NodeTypeEnum.Service);
221 public void addSubstitutionFilterFailTest() {
222 componentInstance.setSubstitutionFilter(substitutionFilterDataDefinition);
224 when(toscaOperationFacade.getToscaElement(componentId)).thenReturn(Either.left(service));
225 when(nodeFilterValidator.validateFilter(service, componentInstanceId, Collections.singletonList(constraint),
226 NodeFilterConstraintAction.ADD)).thenReturn(Either.left(true));
227 when(nodeFilterValidator.validateComponentInstanceExist(service, componentInstanceId))
228 .thenReturn(Either.left(true));
229 when(graphLockOperation.lockComponent(componentId, NodeTypeEnum.Service))
230 .thenReturn(StorageOperationStatus.OK);
232 when(substitutionFilterOperation
233 .addNewProperty(anyString(), anyString(), any(SubstitutionFilterDataDefinition.class),
234 any(RequirementSubstitutionFilterPropertyDataDefinition.class)))
235 .thenReturn(Either.right(StorageOperationStatus.GENERAL_ERROR));
237 when(graphLockOperation.unlockComponent(componentId, NodeTypeEnum.Service))
238 .thenReturn(StorageOperationStatus.OK);
240 assertThrows(BusinessLogicException.class, () -> componentSubstitutionFilterBusinessLogic
241 .addSubstitutionFilter(componentId, componentInstanceId, NodeFilterConstraintAction.ADD,
242 servicePropertyName, constraint, true, ComponentTypeEnum.SERVICE));
244 verify(toscaOperationFacade, times(1)).getToscaElement(componentId);
245 verify(graphLockOperation, times(1)).lockComponent(componentId, NodeTypeEnum.Service);
246 verify(nodeFilterValidator, times(1)).validateFilter(service, componentInstanceId,
247 Collections.singletonList(constraint), NodeFilterConstraintAction.ADD);
248 verify(substitutionFilterOperation, times(0))
249 .addNewProperty(componentId, componentInstanceId, substitutionFilterDataDefinition,
250 requirementSubstitutionFilterPropertyDataDefinition);
251 verify(graphLockOperation, times(1)).unlockComponent(componentId, NodeTypeEnum.Service);
255 public void updateSubstitutionFilterTest() throws BusinessLogicException {
256 componentInstance.setSubstitutionFilter(substitutionFilterDataDefinition);
258 when(toscaOperationFacade.getToscaElement(componentId)).thenReturn(Either.left(service));
259 when(nodeFilterValidator.validateFilter(service, componentInstanceId,
260 Collections.singletonList(constraint), NodeFilterConstraintAction.UPDATE)).thenReturn(Either.left(true));
261 when(graphLockOperation.lockComponent(componentId, NodeTypeEnum.Service))
262 .thenReturn(StorageOperationStatus.OK);
264 when(substitutionFilterOperation.updateSubstitutionFilter(anyString(), anyString(),
265 any(SubstitutionFilterDataDefinition.class), anyList()))
266 .thenReturn(Either.left(substitutionFilterDataDefinition));
268 when(graphLockOperation.unlockComponent(componentId, NodeTypeEnum.Service))
269 .thenReturn(StorageOperationStatus.OK);
271 final Optional<SubstitutionFilterDataDefinition> result = componentSubstitutionFilterBusinessLogic
272 .updateSubstitutionFilter(componentId, componentInstanceId, Collections.singletonList(constraint),
273 true, ComponentTypeEnum.SERVICE);
275 assertThat(result).isPresent();
277 verify(toscaOperationFacade, times(1)).getToscaElement(componentId);
278 verify(nodeFilterValidator, times(1)).validateFilter(service, componentInstanceId,
279 Collections.singletonList(constraint), NodeFilterConstraintAction.UPDATE);
283 public void updateSubstitutionFilterFailTest() {
284 componentInstance.setSubstitutionFilter(substitutionFilterDataDefinition);
286 when(toscaOperationFacade.getToscaElement(componentId)).thenReturn(Either.left(service));
287 when(nodeFilterValidator.validateFilter(service, componentInstanceId,
288 Collections.singletonList(constraint), NodeFilterConstraintAction.UPDATE)).thenReturn(Either.left(true));
289 when(graphLockOperation.lockComponent(componentId, NodeTypeEnum.Service))
290 .thenReturn(StorageOperationStatus.OK);
292 when(substitutionFilterOperation.updateSubstitutionFilter(anyString(), anyString(),
293 any(SubstitutionFilterDataDefinition.class), anyList()))
294 .thenReturn(Either.right(StorageOperationStatus.GENERAL_ERROR));
296 when(graphLockOperation.unlockComponent(componentId, NodeTypeEnum.Service))
297 .thenReturn(StorageOperationStatus.OK);
299 final List<String> constraints = requirementSubstitutionFilterPropertyDataDefinition.getConstraints();
300 assertThrows(BusinessLogicException.class, () -> componentSubstitutionFilterBusinessLogic
301 .updateSubstitutionFilter(componentId, componentInstanceId, constraints, true, ComponentTypeEnum.SERVICE));
303 verify(toscaOperationFacade, times(1)).getToscaElement(componentId);
304 verify(nodeFilterValidator, times(1)).validateFilter(service, componentInstanceId,
305 Collections.singletonList(constraint), NodeFilterConstraintAction.UPDATE);
309 public void updateSubstitutionFilterFailWithFilterNotFoundTest() {
310 when(toscaOperationFacade.getToscaElement(componentId)).thenReturn(Either.left(service));
311 when(nodeFilterValidator.validateFilter(service, componentInstanceId,
312 Collections.singletonList(constraint), NodeFilterConstraintAction.UPDATE)).thenReturn(Either.left(true));
314 assertThrows(BusinessLogicException.class, () -> componentSubstitutionFilterBusinessLogic
315 .updateSubstitutionFilter(componentId, componentInstanceId,
316 requirementSubstitutionFilterPropertyDataDefinition.getConstraints(), true,
317 ComponentTypeEnum.SERVICE));
319 verify(toscaOperationFacade, times(1)).getToscaElement(componentId);
320 verify(nodeFilterValidator, times(1)).validateFilter(service, componentInstanceId,
321 Collections.singletonList(constraint), NodeFilterConstraintAction.UPDATE);
325 public void updateSubstitutionFilterFailValidationTest() {
326 when(toscaOperationFacade.getToscaElement(componentId)).thenReturn(Either.left(service));
328 final UIConstraint uiConstraint =
329 new UIConstraint("invalidProperty", constraintOperator, sourceType, sourceName, propertyValue);
330 constraint = new ConstraintConvertor().convert(uiConstraint);
331 requirementSubstitutionFilterPropertyDataDefinition.setConstraints(Collections.singletonList(constraint));
333 when(responseFormat.getFormattedMessage()).thenReturn(ActionStatus.SELECTED_PROPERTY_NOT_PRESENT.name());
335 when(nodeFilterValidator.validateFilter(service, componentInstanceId,
336 Collections.singletonList(constraint), NodeFilterConstraintAction.UPDATE))
337 .thenReturn(Either.right(responseFormat));
339 assertThrows(BusinessLogicException.class, () -> componentSubstitutionFilterBusinessLogic
340 .updateSubstitutionFilter(componentId, componentInstanceId,
341 requirementSubstitutionFilterPropertyDataDefinition.getConstraints(), true,
342 ComponentTypeEnum.SERVICE));
344 verify(toscaOperationFacade, times(1)).getToscaElement(componentId);
345 verify(nodeFilterValidator, times(1)).validateFilter(service, componentInstanceId,
346 Collections.singletonList(constraint), NodeFilterConstraintAction.UPDATE);
350 public void deleteSubstitutionFilterTest() throws BusinessLogicException {
351 substitutionFilterDataDefinition.setProperties(new ListDataDefinition<>());
352 componentInstance.setSubstitutionFilter(substitutionFilterDataDefinition);
354 when(toscaOperationFacade.getToscaElement(componentId)).thenReturn(Either.left(service));
355 when(nodeFilterValidator.validateFilter(service, componentInstanceId,
356 Collections.singletonList(constraint), NodeFilterConstraintAction.DELETE)).thenReturn(Either.left(true));
358 when(nodeFilterValidator.validateComponentInstanceExist(service, componentInstanceId))
359 .thenReturn(Either.left(true));
360 when(graphLockOperation.lockComponent(componentId, NodeTypeEnum.Service))
361 .thenReturn(StorageOperationStatus.OK);
362 when(substitutionFilterOperation.deleteConstraint(anyString(), anyString(),
363 any(SubstitutionFilterDataDefinition.class), anyInt()))
364 .thenReturn(Either.left(substitutionFilterDataDefinition));
365 when(graphLockOperation.unlockComponent(componentId, NodeTypeEnum.Service))
366 .thenReturn(StorageOperationStatus.OK);
368 final Optional<SubstitutionFilterDataDefinition> result = componentSubstitutionFilterBusinessLogic
369 .deleteSubstitutionFilter(componentId, componentInstanceId, NodeFilterConstraintAction.DELETE, constraint,
370 0, true, ComponentTypeEnum.SERVICE);
372 assertThat(result).isPresent();
373 assertThat(result.get().getProperties().getListToscaDataDefinition()).hasSize(0);
374 verify(toscaOperationFacade, times(1)).getToscaElement(componentId);
375 verify(nodeFilterValidator, times(1)).validateFilter(service, componentInstanceId,
376 Collections.singletonList(constraint), NodeFilterConstraintAction.DELETE);
377 verify(nodeFilterValidator, times(1)).validateComponentInstanceExist(service, componentInstanceId);
378 verify(graphLockOperation, times(1)).lockComponent(componentId, NodeTypeEnum.Service);
379 verify(substitutionFilterOperation, times(1)).deleteConstraint(componentId, componentInstanceId,
380 substitutionFilterDataDefinition, 0);
381 verify(graphLockOperation, times(1)).unlockComponent(componentId, NodeTypeEnum.Service);
385 public void deleteSubstitutionFilterFailTest() {
386 componentInstance.setSubstitutionFilter(substitutionFilterDataDefinition);
388 when(toscaOperationFacade.getToscaElement(componentId)).thenReturn(Either.left(service));
389 when(nodeFilterValidator.validateFilter(service, componentInstanceId,
390 Collections.singletonList(constraint), NodeFilterConstraintAction.DELETE)).thenReturn(Either.left(true));
392 when(nodeFilterValidator.validateComponentInstanceExist(service, componentInstanceId))
393 .thenReturn(Either.left(true));
394 when(graphLockOperation.lockComponent(componentId, NodeTypeEnum.Service))
395 .thenReturn(StorageOperationStatus.OK);
396 when(substitutionFilterOperation.deleteConstraint(anyString(), anyString(),
397 any(SubstitutionFilterDataDefinition.class), anyInt()))
398 .thenReturn(Either.right(StorageOperationStatus.GENERAL_ERROR));
399 when(graphLockOperation.unlockComponent(componentId, NodeTypeEnum.Service))
400 .thenReturn(StorageOperationStatus.OK);
402 assertThrows(BusinessLogicException.class, () -> componentSubstitutionFilterBusinessLogic
403 .deleteSubstitutionFilter(componentId, componentInstanceId, NodeFilterConstraintAction.DELETE, constraint,
404 0, true, ComponentTypeEnum.SERVICE));
406 verify(toscaOperationFacade, times(1)).getToscaElement(componentId);
407 verify(nodeFilterValidator, times(1)).validateFilter(service, componentInstanceId,
408 Collections.singletonList(constraint), NodeFilterConstraintAction.DELETE);
409 verify(nodeFilterValidator, times(1)).validateComponentInstanceExist(service, componentInstanceId);
410 verify(substitutionFilterOperation, times(1)).deleteConstraint(componentId, componentInstanceId,
411 substitutionFilterDataDefinition, 0);
412 verify(graphLockOperation, times(1)).unlockComponent(componentId, NodeTypeEnum.Service);
416 public void deleteSubstitutionFilterFailValidationTest() {
417 when(toscaOperationFacade.getToscaElement(componentId)).thenReturn(Either.left(service));
418 when(nodeFilterValidator.validateFilter(service, componentInstanceId,
419 Collections.singletonList(constraint), NodeFilterConstraintAction.DELETE)).thenReturn(Either.left(true));
421 when(nodeFilterValidator.validateComponentInstanceExist(service, componentInstanceId))
422 .thenReturn(Either.left(true));
424 assertThrows(BusinessLogicException.class, () -> componentSubstitutionFilterBusinessLogic
425 .deleteSubstitutionFilter(componentId, componentInstanceId, NodeFilterConstraintAction.DELETE, constraint,
426 0, true, ComponentTypeEnum.SERVICE));
428 verify(toscaOperationFacade, times(1)).getToscaElement(componentId);
429 verify(nodeFilterValidator, times(1)).validateFilter(service, componentInstanceId,
430 Collections.singletonList(constraint), NodeFilterConstraintAction.DELETE);
433 public void initResource() {
435 service = new Service();
436 service.setName("MyTestService");
437 service.setUniqueId(componentId);
439 componentInstance = new ComponentInstance();
440 componentInstance.setUniqueId(componentInstanceId);
441 componentInstance.setName("myComponentInstance");
442 componentInstance.setDirectives(ConfigurationManager.getConfigurationManager().getConfiguration()
445 final UIConstraint uiConstraint =
446 new UIConstraint(servicePropertyName, constraintOperator, sourceType, sourceName, propertyValue);
447 constraint = new ConstraintConvertor().convert(uiConstraint);
449 requirementSubstitutionFilterPropertyDataDefinition = new RequirementSubstitutionFilterPropertyDataDefinition();
450 requirementSubstitutionFilterPropertyDataDefinition.setName(uiConstraint.getServicePropertyName());
451 requirementSubstitutionFilterPropertyDataDefinition
452 .setConstraints(Collections.singletonList(constraint));
454 final ListDataDefinition<RequirementSubstitutionFilterPropertyDataDefinition> listDataDefinition =
455 new ListDataDefinition<>(
456 Collections.singletonList(requirementSubstitutionFilterPropertyDataDefinition));
458 substitutionFilterDataDefinition = new SubstitutionFilterDataDefinition();
459 substitutionFilterDataDefinition.setProperties(listDataDefinition);
460 substitutionFilterDataDefinition.setID("SUBSTITUTION_FILTER_UID");
462 service.setComponentInstances(singletonList(componentInstance));
464 final PropertyDefinition property = new PropertyDefinition();
465 property.setName(uiConstraint.getServicePropertyName());
467 final List<ComponentInstanceProperty> origProperties = new ArrayList<>();
468 final ComponentInstanceProperty origProperty = new ComponentInstanceProperty();
469 origProperty.setName(uiConstraint.getServicePropertyName());
470 origProperty.setValue(propertyValue);
471 origProperty.setType(uiConstraint.getSourceType());
472 origProperties.add(origProperty);
474 final Map<String, List<ComponentInstanceProperty>> componentInstanceProps = new HashMap<>();
475 componentInstanceProps.put(componentInstanceId, origProperties);
477 service.setComponentInstancesProperties(componentInstanceProps);
478 service.setProperties(new LinkedList<>(Arrays.asList(property)));
479 } catch (final Exception e) {
480 fail(e.getMessage());