@Override public boolean containsEquivalentValue(PrismContainerValue<C> value, @Nullable Comparator<PrismContainerValue<C>> comparator) { if (value.isIdOnly()) { return findValue(value.getId()) != null; } else { return contains(value, EquivalenceStrategy.IGNORE_METADATA_CONSIDER_DIFFERENT_IDS, comparator); } }
private <F extends ObjectType> Collection<PrismContainerValue<AssignmentType>> determineChangedAssignmentValues( LensFocusContext<F> focusContext, QName assignmentElementQName, ContainerDelta<AssignmentType> assignmentDelta, PlusMinusZero plusMinusZero) { Collection<PrismContainerValue<AssignmentType>> changedAssignmentValues = assignmentDelta.getValueChanges(plusMinusZero); if (plusMinusZero == PlusMinusZero.PLUS) { return changedAssignmentValues; } Collection<PrismContainerValue<AssignmentType>> processedChangedAssignmentValues = new ArrayList<>(changedAssignmentValues.size()); PrismObject<F> existingObject = focusContext.getObjectCurrentOrOld(); PrismContainer<AssignmentType> existingAssignmentContainer = existingObject.findContainer(ItemName.fromQName(assignmentElementQName)); for (PrismContainerValue<AssignmentType> changedAssignmentValue : changedAssignmentValues) { if (changedAssignmentValue.isIdOnly()) { if (existingAssignmentContainer != null) { PrismContainerValue<AssignmentType> existingAssignmentValue = existingAssignmentContainer.findValue(changedAssignmentValue.getId()); if (existingAssignmentValue != null) { processedChangedAssignmentValues.add(existingAssignmentValue); } } } else { processedChangedAssignmentValues.add(changedAssignmentValue); } } return processedChangedAssignmentValues; }
main: for (ItemDelta<?, ?> itemDelta : delta.getModifications()) { for (PrismValue valueToDelete : CollectionUtils.emptyIfNull(itemDelta.getValuesToDelete())) { if (valueToDelete instanceof PrismContainerValue && ((PrismContainerValue) valueToDelete).isIdOnly()) { foundIdOnlyDeletion = true; break main; List<PrismValue> newValuesToDelete = new ArrayList<>(); for (PrismValue valueToDelete : itemDelta.getValuesToDelete()) { if (valueToDelete instanceof PrismContainerValue && ((PrismContainerValue) valueToDelete).isIdOnly()
for (PrismContainerValue<C> cval: valuesToDelete) { AccessDecision subdecision = null; if (cval.isIdOnly()) { PrismContainerValue<C> currentObjectCval = determineContainerValueFromCurrentObject(path, cval.getId(), currentObject); if (currentObjectCval != null) {