+ policyDefinition.setTargets(getPolicyTargets(component, targets));
+ policyDefinition = validateAndUpdatePolicyTargets(component, policyDefinition.getUniqueId(),
+ policyDefinition.getTargets());
+ return policyDefinition;
+ }
+
+ private EnumMap<PolicyTargetType, List<String>> getPolicyTargets(Component component,
+ Map<PolicyTargetType, List<String>> targets) {
+ EnumMap<PolicyTargetType, List<String>> updatedTargets = new EnumMap<>(PolicyTargetType.class);
+ handlePolicyTargetsFromComponentInstances(component, targets, updatedTargets);
+ handlePolicyTargetsFromGroups(component, targets, updatedTargets);
+ return updatedTargets;
+ }
+
+ private void handlePolicyTargetsFromGroups(Component component, Map<PolicyTargetType, List<String>> targets,
+ EnumMap<PolicyTargetType, List<String>> updatedTargets) {
+ List<String> targetsToUpdate = targets.getOrDefault(PolicyTargetType.GROUPS, Collections.EMPTY_LIST);
+
+ List<String> targetUniqueIds = new ArrayList<>();
+
+ for (String targetName : targetsToUpdate) {
+ Optional<GroupDefinition> group = component.getGroupByInvariantName(targetName);
+ String groupUniqueId = group
+ .orElseThrow(() -> new ByActionStatusComponentException(
+ ActionStatus.GROUP_INSTANCE_NOT_FOUND_ON_COMPONENT_INSTANCE)).getUniqueId();
+ targetUniqueIds.add(groupUniqueId);