private ItemDeltaItem<PrismContainerValue<AssignmentType>, PrismContainerDefinition<AssignmentType>> createAssignmentIdiAdd( PrismContainerValue<AssignmentType> cval) throws SchemaException { ItemDeltaItem<PrismContainerValue<AssignmentType>, PrismContainerDefinition<AssignmentType>> idi = new ItemDeltaItem<>(); idi.setItemOld(null); @SuppressWarnings({"unchecked", "raw"}) ItemDelta<PrismContainerValue<AssignmentType>, PrismContainerDefinition<AssignmentType>> itemDelta = (ItemDelta<PrismContainerValue<AssignmentType>, PrismContainerDefinition<AssignmentType>>) getDeltaItemFragment(cval) .add(cval.asContainerable().clone()) .asItemDelta(); idi.setDelta(itemDelta); idi.recompute(); return idi; }
private ItemDeltaItem<PrismContainerValue<AssignmentType>, PrismContainerDefinition<AssignmentType>> createAssignmentIdiDelete( PrismContainerValue<AssignmentType> cval) throws SchemaException { ItemDeltaItem<PrismContainerValue<AssignmentType>, PrismContainerDefinition<AssignmentType>> idi = new ItemDeltaItem<>(); idi.setItemOld(LensUtil.createAssignmentSingleValueContainerClone(cval.asContainerable())); @SuppressWarnings({"unchecked", "raw"}) ItemDelta<PrismContainerValue<AssignmentType>, PrismContainerDefinition<AssignmentType>> itemDelta = (ItemDelta<PrismContainerValue<AssignmentType>, PrismContainerDefinition<AssignmentType>>) getDeltaItemFragment(cval) .delete(cval.asContainerable().clone()) .asItemDelta(); idi.setDelta(itemDelta); idi.recompute(); return idi; }
if (subSubItemDelta.isApplicableTo(subAnyItem)) { subDelta = (ItemDelta<IV,ID>) subSubItemDelta; subIdi.setDelta(subDelta); } else { subIdi.setSubItemDeltas(subSubItemDeltas);
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); }