private Collection<PropertyDelta<PrismPropertyValue>> convertToPropertyDelta( Collection<PropertyModificationOperation> sideEffectOperations) { Collection<PropertyDelta<PrismPropertyValue>> sideEffectDeltas = new ArrayList<>(); if (sideEffectOperations != null) { for (PropertyModificationOperation mod : sideEffectOperations){ sideEffectDeltas.add(mod.getPropertyDelta()); } } return sideEffectDeltas; }
/** * Converts ADD/DELETE VALUE operations into REPLACE VALUE, if needed */ 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); // for yet-unprocessed operations } return retval; }
if (operation instanceof PropertyModificationOperation) { PropertyModificationOperation propOp = (PropertyModificationOperation)operation; if (propOp.getPropertyDelta().getElementName().equals(assocAttrName)) { attributeDelta = propOp.getPropertyDelta(); PropertyModificationOperation attributeModification = new PropertyModificationOperation(attributeDelta); attributeModification.setMatchingRuleQName(assocDefType.getMatchingRule()); operations.add(attributeModification);
operations.add(new PropertyModificationOperation(enabledPropertyDelta)); } else { operations.add(new PropertyModificationOperation(validFromPropertyDelta)); operations.add(new PropertyModificationOperation(validToPropertyDelta)); operations.add(new PropertyModificationOperation(lockoutPropertyDelta)); } else {
if (origOperation instanceof PropertyModificationOperation) { PropertyModificationOperation modificationOperation = (PropertyModificationOperation)origOperation; PropertyDelta<?> propertyDelta = modificationOperation.getPropertyDelta(); PropertyDelta<?> filteredDelta = ProvisioningUtil.narrowPropertyDelta(propertyDelta, currentShadow, modificationOperation.getMatchingRuleQName(), matchingRuleRegistry); if (filteredDelta != null && !filteredDelta.isEmpty()) { if (propertyDelta == filteredDelta) { filteredOperations.add(origOperation); } else { PropertyModificationOperation newOp = new PropertyModificationOperation<>(filteredDelta); newOp.setMatchingRuleQName(modificationOperation.getMatchingRuleQName()); filteredOperations.add(newOp);
if (isAttributeDelta(itemDelta) || SchemaConstants.PATH_PASSWORD.equivalent(itemDelta.getParentPath())) { if (itemDelta instanceof PropertyDelta) { PropertyModificationOperation attributeModification = new PropertyModificationOperation( (PropertyDelta) itemDelta); RefinedAttributeDefinition<Object> attrDef = objectClassDefinition.findAttributeDefinition(itemDelta.getElementName()); if (attrDef != null) { attributeModification.setMatchingRuleQName(attrDef.getMatchingRuleQName()); if (itemDelta.getDefinition() == null) { itemDelta.setDefinition(attrDef); PropertyModificationOperation attributeModification = new PropertyModificationOperation( (PropertyDelta) itemDelta); operations.add(attributeModification);
attributeOperation = new PropertyModificationOperation(assocAttrDef.createEmptyDelta(ItemPath.create(ShadowType.F_ATTRIBUTES, assocAttrName))); attributeOperation.setMatchingRuleQName(assocDefType.getMatchingRule()); operationMap.put(assocAttrName, attributeOperation); attributeOperation.getPropertyDelta().addValuesToAdd(valueAttr.getClonedValues()); } else if (modificationType == ModificationType.DELETE) { attributeOperation.getPropertyDelta().addValuesToDelete(valueAttr.getClonedValues()); } else if (modificationType == ModificationType.REPLACE) { attributeOperation.getPropertyDelta().setValuesToReplace(valueAttr.getClonedValues());
return new PropertyModificationOperation(resultingDelta);
if (operation instanceof PropertyModificationOperation) { PropertyModificationOperation propOp = (PropertyModificationOperation)operation; if (propOp.getPropertyDelta().getElementName().equals(assocAttrName)) { attributeDelta = propOp.getPropertyDelta(); PropertyModificationOperation attributeModification = new PropertyModificationOperation(attributeDelta); attributeModification.setMatchingRuleQName(assocDefType.getMatchingRule()); LOGGER.trace("Collecting entitlement object operations ({}) association {}: {}", modificationType, associationName.getLocalPart(), attributeModification); operations.add(attributeModification);
private PropertyModificationOperation createDeleteAttributeChange(String propertyName, String propertyValue) { PrismProperty property = createProperty(propertyName, propertyValue); ItemPath propertyPath = ItemPath.create(ShadowType.F_ATTRIBUTES, new QName(ResourceTypeUtil.getResourceNamespace(resourceType), propertyName)); PropertyDelta delta = prismContext.deltaFactory().property().create(propertyPath, property.getDefinition()); delta.addRealValuesToDelete(propertyValue); PropertyModificationOperation attributeModification = new PropertyModificationOperation(delta); return attributeModification; }
private boolean isRename(ProvisioningContext ctx, Collection<Operation> modifications) throws SchemaException, ConfigurationException, ObjectNotFoundException, CommunicationException, ExpressionEvaluationException { for (Operation op : modifications){ if (!(op instanceof PropertyModificationOperation)) { continue; } if (isIdentifierDelta(ctx, ((PropertyModificationOperation)op).getPropertyDelta())) { return true; } } return false; }
private PropertyModificationOperation createReplaceAttributeChange(String propertyName, String propertyValue) { PrismProperty property = createProperty(propertyName, propertyValue); ItemPath propertyPath = ItemPath.create(ShadowType.F_ATTRIBUTES, new QName(ResourceTypeUtil.getResourceNamespace(resourceType), propertyName)); PropertyDelta delta = prismContext.deltaFactory().property().create(propertyPath, property.getDefinition()); delta.setRealValuesToReplace(propertyValue); PropertyModificationOperation attributeModification = new PropertyModificationOperation(delta); return attributeModification; }
private PropertyDelta<QName> determineAuxilaryObjectClassDelta(Collection<Operation> changes) { PropertyDelta<QName> auxiliaryObjectClassDelta = null; for (Operation operation : changes) { if (operation == null) { IllegalArgumentException e = new IllegalArgumentException("Null operation in modifyObject"); throw e; } if (operation instanceof PropertyModificationOperation) { PropertyDelta<?> delta = ((PropertyModificationOperation)operation).getPropertyDelta(); if (delta.getPath().equivalent(ShadowType.F_AUXILIARY_OBJECT_CLASS)) { auxiliaryObjectClassDelta = (PropertyDelta<QName>) delta; } } } return auxiliaryObjectClassDelta; }
private PropertyModificationOperation createAddAttributeChange(String propertyName, String propertyValue) { PrismProperty property = createProperty(propertyName, propertyValue); ItemPath propertyPath = ItemPath.create(ShadowType.F_ATTRIBUTES, new QName(ResourceTypeUtil.getResourceNamespace(resourceType), propertyName)); PropertyDelta delta = prismContext.deltaFactory().property().create(propertyPath, property.getDefinition()); delta.addRealValuesToAdd(propertyValue); PropertyModificationOperation attributeModification = new PropertyModificationOperation(delta); return attributeModification; }
private Collection<RefinedAttributeDefinition> determineReadReplace(ProvisioningContext ctx, Collection<Operation> operations, RefinedObjectClassDefinition objectClassDefinition) throws ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException, ExpressionEvaluationException { Collection<RefinedAttributeDefinition> retval = new ArrayList<>(); for (Operation operation : operations) { RefinedAttributeDefinition rad = getRefinedAttributeDefinitionIfApplicable(operation, objectClassDefinition); if (rad != null && isReadReplaceMode(ctx, rad, objectClassDefinition) && operation instanceof PropertyModificationOperation) { // third condition is just to be sure PropertyDelta propertyDelta = ((PropertyModificationOperation) operation).getPropertyDelta(); if (propertyDelta.isAdd() || propertyDelta.isDelete()) { retval.add(rad); // REPLACE operations are not needed to be converted to READ+REPLACE } } } return retval; }
private PropertyModificationOperation createActivationChange(ActivationStatusType status) { PrismObjectDefinition<ShadowType> shadowDefinition = getShadowDefinition(ShadowType.class); PropertyDelta<ActivationStatusType> delta = prismContext.deltaFactory().property().createDelta( ItemPath.create(ShadowType.F_ACTIVATION, ActivationType.F_ADMINISTRATIVE_STATUS), shadowDefinition); delta.setRealValuesToReplace(status); return new PropertyModificationOperation(delta); }
public void processEntitlementsAdd(ProvisioningContext ctx, PrismObject<ShadowType> shadow) throws SchemaException, ConfigurationException, ObjectNotFoundException, CommunicationException, ExpressionEvaluationException { PrismContainer<ShadowAssociationType> associationContainer = shadow.findContainer(ShadowType.F_ASSOCIATION); if (associationContainer == null || associationContainer.isEmpty()) { return; } Map<QName, PropertyModificationOperation> operationMap = new HashMap<>(); collectEntitlementToAttrsDelta(ctx, operationMap, associationContainer.getValues(), ModificationType.ADD); for (PropertyModificationOperation operation : operationMap.values()) { operation.getPropertyDelta().applyTo(shadow); } }
Uid newUid = new Uid((String)attrDeltaSideEffect.getValuesToReplace().get(0)); PropertyDelta<String> uidDelta = createUidDelta(newUid, getUidDefinition(identification)); PropertyModificationOperation uidMod = new PropertyModificationOperation(uidDelta); sideEffectChanges.add(uidMod); Name newName = new Name((String)attrDeltaSideEffect.getValuesToReplace().get(0)); PropertyDelta<String> nameDelta = createNameDelta(newName, getNameDefinition(identification)); PropertyModificationOperation nameMod = new PropertyModificationOperation(nameDelta); sideEffectChanges.add(nameMod); PropertyModificationOperation modification = new PropertyModificationOperation(delta); sideEffectChanges.add(modification);
private RefinedAttributeDefinition getRefinedAttributeDefinitionIfApplicable(Operation operation, RefinedObjectClassDefinition objectClassDefinition) { if (operation instanceof PropertyModificationOperation) { PropertyDelta propertyDelta = ((PropertyModificationOperation) operation).getPropertyDelta(); if (isAttributeDelta(propertyDelta)) { QName attributeName = propertyDelta.getElementName(); return objectClassDefinition.findAttributeDefinition(attributeName); } } return null; }
PropertyModificationOperation uidMod = new PropertyModificationOperation(uidDelta);