public static ContainerDelta<?> assertContainerAddGetContainerDelta(ObjectDelta<?> objectDelta, ItemPath propertyPath) { ContainerDelta<?> delta = objectDelta.findContainerDelta(propertyPath); assertNotNull("Container delta for "+propertyPath+" not found",delta); assert !delta.isEmpty() : "Container delta for "+propertyPath+" is empty"; assert delta.getValuesToAdd() != null : "Container delta for "+propertyPath+" has null values to add"; assert !delta.getValuesToAdd().isEmpty() : "Container delta for "+propertyPath+" has empty values to add"; return delta; }
public static ContainerDelta<?> assertContainerDeleteGetContainerDelta(ObjectDelta<?> objectDelta, ItemPath propertyPath) { ContainerDelta<?> delta = objectDelta.findContainerDelta(propertyPath); assertNotNull("Container delta for "+propertyPath+" not found",delta); assert !delta.isEmpty() : "Container delta for "+propertyPath+" is empty"; assert delta.getValuesToDelete() != null : "Container delta for "+propertyPath+" has null values to delete"; assert !delta.getValuesToDelete().isEmpty() : "Container delta for "+propertyPath+" has empty values to delete"; return delta; }
/** * Breaks user assignment delta in the context by inserting some empty value. This may interfere with comparing the values to * existing user values. */ protected <F extends FocusType> void breakAssignmentDelta(ObjectDelta<F> userDelta) throws SchemaException { ContainerDelta<?> assignmentDelta = userDelta.findContainerDelta(UserType.F_ASSIGNMENT); PrismContainerValue<?> assignmentDeltaValue = null; if (assignmentDelta.getValuesToAdd() != null) { assignmentDeltaValue = assignmentDelta.getValuesToAdd().iterator().next(); } if (assignmentDelta.getValuesToDelete() != null) { assignmentDeltaValue = assignmentDelta.getValuesToDelete().iterator().next(); } PrismContainer<ActivationType> activationContainer = assignmentDeltaValue.findOrCreateContainer(AssignmentType.F_ACTIVATION); PrismContainerValue<ActivationType> emptyValue = prismContext.itemFactory().createContainerValue(); activationContainer.add(emptyValue); }
public static <C extends Containerable> void assertContainerAdd(ObjectDelta<?> objectDelta, ItemPath propertyPath, PrismContainerValue<C>... expectedCVals) { ContainerDelta<C> delta = objectDelta.findContainerDelta(propertyPath); assertNotNull("Container delta for "+propertyPath+" not found",delta); assert !delta.isEmpty() : "Container delta for "+propertyPath+" is empty"; assert delta.getValuesToAdd() != null : "Container delta for "+propertyPath+" has null values to add"; assert !delta.getValuesToAdd().isEmpty() : "Container delta for "+propertyPath+" has empty values to add"; assertEquivalentContainerValues("Wrong values in container delta for "+propertyPath, delta.getValuesToAdd(), expectedCVals); }
public <C extends Containerable> ContainerDeltaAsserter<C,ObjectDeltaAsserter<O,RA>> container(ItemPath path) { ContainerDelta<C> containerDelta = delta.findContainerDelta(path); assertNotNull("No container delta for path "+path+" in "+desc(), containerDelta); ContainerDeltaAsserter<C,ObjectDeltaAsserter<O,RA>> containerDeltaAsserter = new ContainerDeltaAsserter<>(containerDelta, this, "container delta for "+path+" in "+desc()); copySetupTo(containerDeltaAsserter); return containerDeltaAsserter; }
/** * Returns delta of user assignments, both primary and secondary (merged together). * The returned object is (kind of) immutable. Changing it may do strange things (but most likely the changes will be lost). * * Originally we took only the delta related to current execution wave, to avoid re-processing of already executed assignments. * But MID-2422 shows that we need to take deltas from waves 0..N (N=current execution wave) [that effectively means all the secondary deltas] */ private ContainerDelta<AssignmentType> getExecutionWaveAssignmentDelta(LensFocusContext<AH> focusContext) throws SchemaException { ObjectDelta<AH> focusDelta = focusContext.getAggregatedWaveDelta(focusContext.getLensContext().getExecutionWave()); if (focusDelta == null) { return createEmptyAssignmentDelta(focusContext); } ContainerDelta<AssignmentType> assignmentDelta = focusDelta.findContainerDelta(AssignmentHolderType.F_ASSIGNMENT); if (assignmentDelta == null) { return createEmptyAssignmentDelta(focusContext); } return assignmentDelta; }
private void assertAssignmentValueCount(ObjectDelta<UserType> userDelta, int expectedValues, String type, Function<ContainerDelta<AssignmentType>, Collection<PrismContainerValue<AssignmentType>>> lambda) { ContainerDelta<AssignmentType> assignmentDelta = userDelta.findContainerDelta(UserType.F_ASSIGNMENT); if (assignmentDelta == null) { if (expectedValues == 0) { return; } else { fail("No assignment delta in "+userDelta); } } Collection<PrismContainerValue<AssignmentType>> values = lambda.apply(assignmentDelta); if (values == null) { if (expectedValues == 0) { return; } else { fail("No values to delete in assignment "+type+" in "+userDelta); } } assertEquals("Wrong number of assignment "+type+" values in "+userDelta, expectedValues, values.size()); }
private void assertAssignmentValue(ObjectDelta<UserType> userDelta, Long expectedId, String expectedDescription, String type, Function<ContainerDelta<AssignmentType>, Collection<PrismContainerValue<AssignmentType>>> lambda) { ContainerDelta<AssignmentType> assignmentDelta = userDelta.findContainerDelta(UserType.F_ASSIGNMENT); if (assignmentDelta == null) { fail("No assignment delta in "+userDelta); } Collection<PrismContainerValue<AssignmentType>> valuesToDelete = lambda.apply(assignmentDelta); if (valuesToDelete == null) { fail("No values to "+type+" in assignment delta in "+userDelta); } for (PrismContainerValue<AssignmentType> valueToDelete : valuesToDelete) { if (assignmentMatches(valueToDelete, expectedId, expectedDescription)) { return; } } fail("Assignment "+expectedId+":"+expectedDescription+" not found in "+userDelta); }
objectDelta.checkConsistence(); assertEquals("Wrong OID", "c0c010c0-d34d-b33f-f00d-111111111111", objectDelta.getOid()); ContainerDelta<AssignmentType> assignmentDelta = objectDelta.findContainerDelta(UserType.F_ASSIGNMENT); assertNotNull("No assignment delta", assignmentDelta); Collection<PrismContainerValue<AssignmentType>> valuesToAdd = assignmentDelta.getValuesToAdd();
@Test public void testAddDeltaNoAssignmentAddAssignmentDifferentNoIdSwallow() throws Exception { final String TEST_NAME="testAddDeltaNoAssignmentAddAssignmentDifferentNoIdSwallow"; displayTestTitle(TEST_NAME); // GIVEN //Delta 1 PrismObject<UserType> user = createUserFoo(); ObjectDelta<UserType> userDelta1 = DeltaFactory.Object.createAddDelta(user); //Delta 2 PrismContainerValue<AssignmentType> assignmentValue2 = getPrismContext().itemFactory().createContainerValue(); // null container ID assignmentValue2.setPropertyRealValue(AssignmentType.F_DESCRIPTION, ASSIGNMENT_ABRAKADABRA_DESCRIPTION, PrismTestUtil.getPrismContext()); ContainerDelta<AssignmentType> containerDelta2 = ContainerDeltaImpl.createDelta(UserType.F_ASSIGNMENT,getUserTypeDefinition()); containerDelta2.addValueToAdd(assignmentValue2); // WHEN userDelta1.swallow(containerDelta2); // THEN System.out.println("Delta after swallow:"); System.out.println(userDelta1.debugDump()); assertEquals("Wrong OID", USER_FOO_OID, userDelta1.getOid()); ContainerDelta<AssignmentType> containerDeltaAfter = userDelta1.findContainerDelta(UserType.F_ASSIGNMENT); assertNotNull("No assignment delta", containerDeltaAfter); PrismAsserts.assertNoDelete(containerDeltaAfter); PrismAsserts.assertNoReplace(containerDeltaAfter); Collection<PrismContainerValue<AssignmentType>> valuesToAdd = containerDeltaAfter.getValuesToAdd(); assertEquals("Unexpected number of values to add", 1, valuesToAdd.size()); assertTrue("Value "+assignmentValue2+" missing ", valuesToAdd.contains(assignmentValue2)); }
@Test public void testAddDeltaNoAssignmentAddAssignmentDifferentIdSwallow() throws Exception { final String TEST_NAME="testAddDeltaNoAssignmentAddAssignmentDifferentIdSwallow"; displayTestTitle(TEST_NAME); // GIVEN //Delta 1 PrismObject<UserType> user = createUserFoo(); ObjectDelta<UserType> userDelta1 = DeltaFactory.Object.createAddDelta(user); //Delta 2 PrismContainerValue<AssignmentType> assignmentValue2 = getPrismContext().itemFactory().createContainerValue(); assignmentValue2.setId(USER_ASSIGNMENT_2_ID); assignmentValue2.setPropertyRealValue(AssignmentType.F_DESCRIPTION, ASSIGNMENT_ABRAKADABRA_DESCRIPTION, PrismTestUtil.getPrismContext()); ContainerDelta<AssignmentType> containerDelta2 = ContainerDeltaImpl.createDelta(UserType.F_ASSIGNMENT,getUserTypeDefinition()); containerDelta2.addValueToAdd(assignmentValue2); // WHEN userDelta1.swallow(containerDelta2); // THEN System.out.println("Delta after swallow:"); System.out.println(userDelta1.debugDump()); assertEquals("Wrong OID", USER_FOO_OID, userDelta1.getOid()); ContainerDelta<AssignmentType> containerDeltaAfter = userDelta1.findContainerDelta(UserType.F_ASSIGNMENT); assertNotNull("No assignment delta", containerDeltaAfter); PrismAsserts.assertNoDelete(containerDeltaAfter); PrismAsserts.assertNoReplace(containerDeltaAfter); Collection<PrismContainerValue<AssignmentType>> valuesToAdd = containerDeltaAfter.getValuesToAdd(); assertEquals("Unexpected number of values to add", 1, valuesToAdd.size()); assertTrue("Value "+assignmentValue2+" missing ", valuesToAdd.contains(assignmentValue2)); }
System.out.println(userDelta1.debugDump()); assertEquals("Wrong OID", USER_FOO_OID, userDelta1.getOid()); ContainerDelta<AssignmentType> containerDeltaAfter = userDelta1.findContainerDelta(UserType.F_ASSIGNMENT); assertNotNull("No assignment delta", containerDeltaAfter); PrismAsserts.assertNoDelete(containerDeltaAfter);
System.out.println(userDelta1.debugDump()); assertEquals("Wrong OID", USER_FOO_OID, userDelta1.getOid()); ContainerDelta<AssignmentType> containerDeltaAfter = userDelta1.findContainerDelta(UserType.F_ASSIGNMENT); assertNotNull("No assignment delta", containerDeltaAfter); PrismAsserts.assertNoDelete(containerDeltaAfter);
System.out.println(userDelta1.debugDump()); assertEquals("Wrong OID", USER_FOO_OID, userDelta1.getOid()); ContainerDelta<AssignmentType> containerDeltaAfter = userDelta1.findContainerDelta(UserType.F_ASSIGNMENT); assertNotNull("No assignment delta", containerDeltaAfter); PrismAsserts.assertNoDelete(containerDeltaAfter);
System.out.println(userDelta1.debugDump()); assertEquals("Wrong OID", USER_FOO_OID, userDelta1.getOid()); ContainerDelta<AssignmentType> containerDeltaAfter = userDelta1.findContainerDelta(UserType.F_ASSIGNMENT); assertNotNull("No assignment delta", containerDeltaAfter); PrismAsserts.assertNoDelete(containerDeltaAfter);
System.out.println(userDelta1.debugDump()); assertEquals("Wrong OID", USER_FOO_OID, userDelta1.getOid()); ContainerDelta<AssignmentType> containerDeltaAfter = userDelta1.findContainerDelta(UserType.F_ASSIGNMENT); assertNotNull("No assignment delta", containerDeltaAfter); PrismAsserts.assertNoDelete(containerDeltaAfter);
System.out.println(userDelta1.debugDump()); assertEquals("Wrong OID", USER_FOO_OID, userDelta1.getOid()); ContainerDelta<AssignmentType> containerDeltaAfter = userDelta1.findContainerDelta(UserType.F_ASSIGNMENT); assertNotNull("No assignment delta", containerDeltaAfter); PrismAsserts.assertNoDelete(containerDeltaAfter);
System.out.println(userDelta1.debugDump()); assertEquals("Wrong OID", USER_FOO_OID, userDelta1.getOid()); ContainerDelta<AssignmentType> containerDeltaAfter = userDelta1.findContainerDelta(UserType.F_ASSIGNMENT); assertNotNull("No assignment delta", containerDeltaAfter); PrismAsserts.assertNoDelete(containerDeltaAfter);
ContainerDelta<MetadataType> metadataDelta = accountDelta.findContainerDelta(SchemaConstants.PATH_PASSWORD_METADATA); if (metadataDelta == null) { Collection<? extends ItemDelta<?,?>> modifyMetadataDeltas = operationalDataManager.createModifyMetadataDeltas(context, SchemaConstants.PATH_PASSWORD_METADATA, projectionContext.getObjectTypeClass(), now, task);
PrismAsserts.assertIsModify(focusSecondaryDelta); PrismAsserts.assertModifications(focusSecondaryDelta, 2); ContainerDelta<AssignmentType> assignmentDelta = focusSecondaryDelta.findContainerDelta(FocusType.F_ASSIGNMENT); assertEquals("Unexpected assignment secondary delta", 1, assignmentDelta.getValuesToDelete().size()); PrismContainerValue<AssignmentType> deletedAssignment = assignmentDelta.getValuesToDelete().iterator().next();