public ItemDeltaItem(ItemDeltaItem<V,D> idi) { super(); this.itemOld = idi.getItemOld(); this.itemNew = idi.getItemNew(); this.delta = idi.getDelta(); }
private boolean hasDeltas(ExpressionVariables variables) { for (Entry<QName,Object> entry: variables.entrySet()) { Object value = entry.getValue(); if (value instanceof ObjectDeltaObject<?>) { if (((ObjectDeltaObject<?>)value).getObjectDelta() != null && !((ObjectDeltaObject<?>)value).getObjectDelta().isEmpty()) { return true; } } else if (value instanceof ItemDeltaItem<?,?>) { if (((ItemDeltaItem<?,?>)value).getDelta() != null && !((ItemDeltaItem<?,?>)value).getDelta().isEmpty()) { return true; } } } return false; }
private static void convertToLegacy( ItemDeltaItem<PrismContainerValue<AssignmentType>, PrismContainerDefinition<AssignmentType>> idi) { if (idi == null || idi.getDelta() == null || idi.getSubItemDeltas() != null) { return; } // Legacy approach (when adding/removing assignments) was: itemOld+itemNew = value, delta = null // This was recently changed, to provide precise information (add = null->itemNew, delete = itemOld->null). // However, to not break scripts before 3.6 release we provide imitation of old behavior here. // (Moreover, for magic assignment the delta is not correct anyway.) if (idi.getDelta().isAdd() || idi.getDelta().isReplace()) { idi.setItemOld(idi.getItemNew().clone()); } else { idi.setItemNew(idi.getItemOld().clone()); } idi.setDelta(null); }
private static void mergeExtension(ItemDeltaItem<PrismContainerValue<AssignmentType>,PrismContainerDefinition<AssignmentType>> destIdi, ItemDeltaItem<PrismContainerValue<AssignmentType>,PrismContainerDefinition<AssignmentType>> srcIdi) throws SchemaException { mergeExtension(destIdi.getItemOld(), srcIdi.getItemOld()); mergeExtension(destIdi.getItemNew(), srcIdi.getItemNew()); if (srcIdi.getDelta() != null || srcIdi.getSubItemDeltas() != null) { throw new UnsupportedOperationException("Merge of IDI with deltas not supported"); } }
/** * @return */ public boolean isStructuredProperty() { if (!isProperty()) { return false; } PrismProperty<?> property = (PrismProperty<?>) getAnyItem(); Object realValue = property.getAnyRealValue(); if (realValue != null) { return realValue instanceof Structured; } PropertyDelta<?> delta = (PropertyDelta<?>) getDelta(); realValue = delta.getAnyRealValue(); if (realValue != null) { return realValue instanceof Structured; } return false; }
public <X> ItemDeltaItem<PrismPropertyValue<X>,PrismPropertyDefinition<X>> resolveStructuredProperty( ItemPath resolvePath, PrismPropertyDefinition outputDefinition, ItemPath outputPath, PrismContext prismContext) { ItemDeltaItem<PrismPropertyValue<Structured>,PrismPropertyDefinition<Structured>> thisIdi = (ItemDeltaItem<PrismPropertyValue<Structured>,PrismPropertyDefinition<Structured>>)this; PrismProperty<X> outputPropertyNew = resolveStructuredPropertyItem((PrismProperty<Structured>) thisIdi.getItemNew(), resolvePath, outputDefinition); PrismProperty<X> outputPropertyOld = resolveStructuredPropertyItem((PrismProperty<Structured>) thisIdi.getItemOld(), resolvePath, outputDefinition); PropertyDelta<X> outputDelta = resolveStructuredPropertyDelta((PropertyDelta<Structured>) thisIdi.getDelta(), resolvePath, outputDefinition, outputPath, prismContext); return new ItemDeltaItem<>(outputPropertyOld, outputDelta, outputPropertyNew); }
DebugUtil.debugDumpLabelLn(sb, "EvaluatedAssignment", indent); DebugUtil.debugDumpWithLabelLn(sb, "assignment old", String.valueOf(assignmentIdi.getItemOld()), indent + 1); DebugUtil.debugDumpWithLabelLn(sb, "assignment delta", String.valueOf(assignmentIdi.getDelta()), indent + 1); DebugUtil.debugDumpWithLabelLn(sb, "assignment new", String.valueOf(assignmentIdi.getItemNew()), indent + 1); DebugUtil.debugDumpWithLabelLn(sb, "evaluatedOld", evaluatedOld, indent + 1);
@Override public String debugDump(int indent) { StringBuilder sb = new StringBuilder(); DebugUtil.debugDumpLabel(sb, "AssignmentPathSegment", indent); sb.append("\n"); DebugUtil.debugDumpWithLabelLn(sb, "source", source==null?"null":source.toString(), indent + 1); String assignmentOrInducement = isAssignment ? "assignment" : "inducement"; if (assignmentIdi != null) { DebugUtil.debugDumpWithLabelLn(sb, assignmentOrInducement + " old", String.valueOf(assignmentIdi.getItemOld()), indent + 1); DebugUtil.debugDumpWithLabelLn(sb, assignmentOrInducement + " delta", String.valueOf(assignmentIdi.getDelta()), indent + 1); DebugUtil.debugDumpWithLabelLn(sb, assignmentOrInducement + " new", String.valueOf(assignmentIdi.getItemNew()), indent + 1); } else { DebugUtil.debugDumpWithLabelLn(sb, assignmentOrInducement, "null", indent + 1); } DebugUtil.debugDumpWithLabelLn(sb, "target", target==null?"null":target.toString(), indent + 1); DebugUtil.debugDumpWithLabelLn(sb, "evaluationOrder", evaluationOrder, indent + 1); DebugUtil.debugDumpWithLabelLn(sb, "isMatchingOrder", isMatchingOrder, indent + 1); DebugUtil.debugDumpWithLabelLn(sb, "isMatchingOrderForTarget", isMatchingOrderForTarget, indent + 1); DebugUtil.debugDumpWithLabelLn(sb, "relation", relation, indent + 1); DebugUtil.debugDumpWithLabelLn(sb, "pathToSourceValid", pathToSourceValid, indent + 1); DebugUtil.debugDumpWithLabelLn(sb, "validityOverride", validityOverride, indent + 1); DebugUtil.debugDumpWithLabelLn(sb, "processMembership", processMembership, indent + 1); DebugUtil.debugDumpWithLabelLn(sb, "lastEqualOrderSegmentIndex", lastEqualOrderSegmentIndex, indent + 1); DebugUtil.debugDumpWithLabel(sb, "varThisObject", varThisObject==null?"null":varThisObject.toString(), indent + 1); return sb.toString(); }
(ItemDelta<V,D>)resolveContext.getDelta(), prismContext);
PropertyDelta<ProtectedStringType> userPasswordDelta = (PropertyDelta<ProtectedStringType>) userPasswordIdi.getDelta(); Collection<PrismPropertyValue<ProtectedStringType>> userPasswordDeltaOldValues = userPasswordDelta.getEstimatedOldValues(); if (userPasswordDeltaOldValues != null && !userPasswordDeltaOldValues.isEmpty()) {
delta = ((ItemDeltaItem<IV,ID>)sourceObject).getDelta();
specialAttributeDelta = sourceIdi.getDelta();