private Collection<Operation> convertToReplace(ProvisioningContext ctx, Collection<Operation> operations, PrismObject<ShadowType> currentShadow) throws SchemaException, ConfigurationException, ObjectNotFoundException, CommunicationException, ExpressionEvaluationException {
List<Operation> retval = new ArrayList<>(operations.size());
for (Operation operation : operations) {
if (operation instanceof PropertyModificationOperation) {
PropertyDelta propertyDelta = ((PropertyModificationOperation) operation).getPropertyDelta();
if (isAttributeDelta(propertyDelta)) {
QName attributeName = propertyDelta.getElementName();
RefinedAttributeDefinition rad = ctx.getObjectClassDefinition().findAttributeDefinition(attributeName);
if (isReadReplaceMode(ctx, rad, ctx.getObjectClassDefinition()) && (propertyDelta.isAdd() || propertyDelta.isDelete())) {
PropertyModificationOperation newOp = convertToReplace(propertyDelta, currentShadow, rad.getMatchingRuleQName());
newOp.setMatchingRuleQName(((PropertyModificationOperation) operation).getMatchingRuleQName());
retval.add(newOp);
continue;
}
}
}
retval.add(operation);
}
return retval;
}