X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=catalog-be%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fsdc%2Fbe%2Fcomponents%2Fvalidation%2FNodeFilterValidator.java;h=c1eaf60ad0df326f390fe077d154cb428db34be1;hb=302c525546650b71ad699903d98090f8cb23f068;hp=db5de581290fee6d5ee98767547a4cc01455e89e;hpb=ca1cef5e1c74dc5e8d2fb17864648e94b9b66aa0;p=sdc.git diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/NodeFilterValidator.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/NodeFilterValidator.java index db5de58129..c1eaf60ad0 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/NodeFilterValidator.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/NodeFilterValidator.java @@ -90,14 +90,15 @@ public class NodeFilterValidator { public Either validateFilter(final Component parentComponent, final String componentInstanceId, final List uiConstraints, final NodeFilterConstraintAction action, - final NodeFilterConstraintType nodeFilterConstraintType) { + final NodeFilterConstraintType nodeFilterConstraintType, + final String capabilityName) { try { if (NodeFilterConstraintAction.ADD == action || NodeFilterConstraintAction.UPDATE == action) { for (final String uiConstraint : uiConstraints) { final UIConstraint constraint = new ConstraintConvertor().convert(uiConstraint); if (ConstraintConvertor.PROPERTY_CONSTRAINT.equals(constraint.getSourceType())) { final Either booleanResponseFormatEither = validatePropertyConstraint(parentComponent, - componentInstanceId, constraint); + componentInstanceId, constraint, capabilityName); if (booleanResponseFormatEither.isRight()) { return booleanResponseFormatEither; } @@ -141,7 +142,7 @@ public class NodeFilterValidator { } private Either validatePropertyConstraint(final Component parentComponent, final String componentInstanceId, - final UIConstraint uiConstraint) { + final UIConstraint uiConstraint, final String capabilityName) { String source = SOURCE; final Optional optionalComponentInstance; final List propertyDefinitions = parentComponent.getProperties(); @@ -161,8 +162,8 @@ public class NodeFilterValidator { if (CollectionUtils.isNotEmpty(sourcePropertyDefinition)) { final Optional sourceSelectedProperty = sourcePropertyDefinition.stream() .filter(property -> uiConstraint.getValue().equals(property.getName())).findFirst(); - final Optional targetComponentInstanceProperty = parentComponent.getComponentInstancesProperties() - .get(componentInstanceId).stream().filter(property -> uiConstraint.getServicePropertyName().equals(property.getName())).findFirst(); + Optional targetComponentInstanceProperty = getProperty(parentComponent, componentInstanceId, capabilityName, uiConstraint.getServicePropertyName()); + source = !targetComponentInstanceProperty.isPresent() ? "Target" : SOURCE; if (sourceSelectedProperty.isPresent() && targetComponentInstanceProperty.isPresent()) { return validatePropertyData(uiConstraint, sourceSelectedProperty, targetComponentInstanceProperty); @@ -171,6 +172,27 @@ public class NodeFilterValidator { final String missingProperty = source.equals(SOURCE) ? uiConstraint.getValue().toString() : uiConstraint.getServicePropertyName(); return Either.right(componentsUtils.getResponseFormat(ActionStatus.MAPPED_PROPERTY_NOT_FOUND, source, missingProperty)); } + + private Optional getProperty(final Component parentComponent, final String componentInstanceId, + final String capabilityName, final String propertyName) { + + if (StringUtils.isEmpty(capabilityName)) { + return parentComponent.getComponentInstancesProperties().get(componentInstanceId).stream() + .filter(property -> propertyName.equals(property.getName())).findFirst(); + } else { + final Optional componentInstanceOptional = parentComponent.getComponentInstances().stream() + .filter(componentInstance -> componentInstance.getUniqueId().equals(componentInstanceId)).findAny(); + if (componentInstanceOptional.isPresent()) { + for (final List listOfCaps : componentInstanceOptional.get().getCapabilities().values()) { + final Optional capDef = listOfCaps.stream().filter(cap -> cap.getName().equals(capabilityName)).findAny(); + if (capDef.isPresent()) { + return capDef.get().getProperties().stream().filter(property -> propertyName.equals(property.getName())).findFirst(); + } + } + } + } + return Optional.empty(); + } private Either validateInputConstraint(final Component parentComponent, final String componentInstanceId, final UIConstraint uiConstraint) {