public static <V extends PrismValue, D extends ItemDefinition> ItemDelta<V, D> createAddDeltaFor(Item<V, D> item) { ItemDelta<V, D> rv = item.createDelta(item.getPath()); rv.addValuesToAdd(item.getClonedValues()); return rv; }
public static <IV extends PrismValue,ID extends ItemDefinition> Item<IV,ID> parseValueElements(Collection<?> valueElements, ID outputDefinition, String contextDescription) throws SchemaException { Item<IV,ID> output = null; for (Object valueElement: valueElements) { RawType rawType = getRawType(valueElement, contextDescription); Item<IV,ID> elementItem = rawType.getParsedItem(outputDefinition); if (output == null) { output = elementItem; } else { output.addAll(elementItem.getClonedValues()); } } return output; }
private <O extends ObjectType, I extends Item> Collection<PrismValue> getValuesToTake(PrismObject<O> objectLeft, PrismObject<O> objectRight, String side, I origItem, MergeStrategyType strategy, Expression<PrismValue, ItemDefinition> valueExpression, Task task, OperationResult result) throws ConfigurationException, SchemaException, ExpressionEvaluationException, ObjectNotFoundException, CommunicationException, SecurityViolationException { if (origItem == null) { return new ArrayList<>(0); } if (strategy == MergeStrategyType.TAKE) { return cleanContainerIds(origItem.getClonedValues()); } else if (strategy == MergeStrategyType.EXPRESSION) { if (valueExpression == null) { throw new ConfigurationException("Expression strategy specified but no expression present"); } List<PrismValue> origValues = origItem.getValues(); Collection<PrismValue> valuesToTake = new ArrayList<>(origValues.size()); for (PrismValue origValue: origValues) { Collection<PrismValue> expressionOutput = evaluateValueExpression(objectLeft, objectRight, side, origValue, valueExpression, task, result); if (expressionOutput != null) { valuesToTake.addAll(expressionOutput); } } return cleanContainerIds(valuesToTake); } else { throw new ConfigurationException("Unknown strategy "+strategy); } }
public <IV extends PrismValue,ID extends ItemDefinition, I extends Item<IV,ID>,DD extends ItemDelta<IV,ID>> DD findItemDelta(ItemPath propertyPath, Class<DD> deltaType, Class<I> itemType, boolean strict) { if (changeType == ChangeType.ADD) { I item = objectToAdd.findItem(propertyPath, itemType); if (item == null) { return null; } DD itemDelta = createEmptyDelta(propertyPath, item.getDefinition(), deltaType, item.getClass()); itemDelta.addValuesToAdd(item.getClonedValues()); return itemDelta; } else if (changeType == ChangeType.MODIFY) { return findModification(propertyPath, deltaType, strict); } else { return null; } }
itemDelta.addValuesToAdd(item.getClonedValues()); Collection<PartiallyResolvedDelta<IV,ID>> deltas = new ArrayList<>(1); deltas.add(new PartiallyResolvedDelta<>(itemDelta, partialValue.getResidualPath()));
private <D extends ItemDelta> D findModification(ItemPath propertyPath, Class<D> deltaType, boolean strict) { if (isModify()) { return ItemDeltaCollectionsUtil.findItemDelta(modifications, propertyPath, deltaType, strict); } else if (isAdd()) { Item<PrismValue, ItemDefinition> item = getObjectToAdd().findItem(propertyPath); if (item == null) { return null; } D itemDelta = (D) item.createDelta(); itemDelta.addValuesToAdd(item.getClonedValues()); return itemDelta; } else { return null; } }
private void handleObjectExtensionWholeContainer(RObject object, ItemDelta delta, PrismIdentifierGenerator idGenerator) { RObjectExtensionType extType = computeObjectExtensionType(delta); if (!delta.isAdd()) { clearExtension(object, extType); } if (delta.isDelete()) { return; } PrismContainerValue extension = (PrismContainerValue) delta.getAnyValue(); for (Item item : (List<Item>) extension.getItems()) { ItemDelta itemDelta = item.createDelta(); itemDelta.setValuesToReplace(item.getClonedValues()); processAnyExtensionDeltaValues(itemDelta, object, extType, null, null, idGenerator); } }
private void handleAssignmentExtensionWholeContainer(RAssignment assignment, ItemDelta delta, PrismIdentifierGenerator idGenerator) { RAssignmentExtension ext = assignment.getExtension(); if (!delta.isAdd()) { if (ext != null) { clearExtension(ext); } } if (delta.isDelete()) { return; } if (ext == null) { ext = new RAssignmentExtension(); ext.setOwner(assignment); assignment.setExtension(ext); } PrismContainerValue extension = (PrismContainerValue) delta.getAnyValue(); for (Item item : (List<Item>) extension.getItems()) { ItemDelta itemDelta = item.createDelta(); itemDelta.setValuesToReplace(item.getClonedValues()); processAnyExtensionDeltaValues(itemDelta, null, null, ext, RAssignmentExtensionType.EXTENSION, idGenerator); } }
Item<IV,ID> item = partialValue.getItem(); itemDelta = item.createDelta(); itemDelta.addValuesToAdd(item.getClonedValues()); } else { Item<IV,ID> item = partialValue.getItem(); itemDelta = item.createDelta(); itemDelta.addValuesToDelete(item.getClonedValues()); } else {
itemDelta.addValuesToAdd(otherItem.getClonedValues()); if (!itemDelta.isEmpty()) { ((Collection)deltas).add(itemDelta);
outputFocusItemDelta.addValuesToAdd(shouldBeItem.getClonedValues());