public static <IV extends PrismValue,ID extends ItemDefinition> void assertNoDelete(ItemDelta<IV,ID> delta) { assertNoDelete(null, delta); }
@Test public void testPropertyDeltaNarrow01() throws Exception { final String TEST_NAME="testPropertyDeltaNarrow01"; displayTestTitle(TEST_NAME); // GIVEN PrismPropertyDefinition propertyDefinition = getPrismContext().definitionFactory().createPropertyDefinition(UserType.F_DESCRIPTION, DOMUtil.XSD_STRING); PropertyDelta<String> delta = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta.addRealValuesToAdd("blabla"); delta.addRealValuesToAdd("bubu"); PrismObject<UserType> user = createUserFoo(); // WHEN PropertyDelta<String> narrowedDelta = delta.narrow(user); // THEN System.out.println("Narrowed delta:"); System.out.println(narrowedDelta.debugDump()); PrismAsserts.assertNoReplace(narrowedDelta); PrismAsserts.assertAdd(narrowedDelta, "blabla", "bubu"); PrismAsserts.assertNoDelete(narrowedDelta); }
@Test public void testPropertyDeltaNarrow02() throws Exception { final String TEST_NAME="testPropertyDeltaNarrow02"; displayTestTitle(TEST_NAME); // GIVEN PrismPropertyDefinition propertyDefinition = getPrismContext().definitionFactory().createPropertyDefinition(UserType.F_DESCRIPTION, DOMUtil.XSD_STRING); PropertyDelta<String> delta = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta.addRealValuesToAdd("blabla"); delta.addRealValuesToAdd("bubu"); PrismObject<UserType> user = createUserFoo(); user.setPropertyRealValue(UserType.F_DESCRIPTION, "bubu"); // WHEN PropertyDelta<String> narrowedDelta = delta.narrow(user); // THEN System.out.println("Narrowed delta:"); System.out.println(narrowedDelta.debugDump()); PrismAsserts.assertNoReplace(narrowedDelta); PrismAsserts.assertAdd(narrowedDelta, "blabla"); PrismAsserts.assertNoDelete(narrowedDelta); }
@Test public void testPropertyDeltaMerge13() throws Exception { final String TEST_NAME="testPropertyDeltaMerge13"; displayTestTitle(TEST_NAME); // GIVEN PrismPropertyDefinition propertyDefinition = getPrismContext().definitionFactory().createPropertyDefinition(UserType.F_DESCRIPTION, DOMUtil.XSD_STRING); PropertyDelta<String> delta1 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta1.setRealValuesToReplace("r1x"); PropertyDelta<String> delta2 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta2.addRealValuesToDelete("r1x"); // WHEN delta1.merge(delta2); // THEN System.out.println("Merged delta:"); System.out.println(delta1.debugDump()); PrismAsserts.assertReplace(delta1); PrismAsserts.assertNoAdd(delta1); PrismAsserts.assertNoDelete(delta1); }
@Test public void testPropertyDeltaMerge01() throws Exception { final String TEST_NAME="testPropertyDeltaMerge01"; displayTestTitle(TEST_NAME); // GIVEN PrismPropertyDefinition propertyDefinition = getPrismContext().definitionFactory().createPropertyDefinition(UserType.F_DESCRIPTION, DOMUtil.XSD_STRING); PropertyDelta<String> delta1 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta1.addRealValuesToAdd("add1"); PropertyDelta<String> delta2 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta2.addRealValuesToAdd("add2"); // WHEN delta1.merge(delta2); // THEN System.out.println("Merged delta:"); System.out.println(delta1.debugDump()); PrismAsserts.assertNoReplace(delta1); PrismAsserts.assertAdd(delta1, "add1", "add2"); PrismAsserts.assertNoDelete(delta1); }
@Test public void testPropertyDeltaMerge10() throws Exception { final String TEST_NAME="testPropertyDeltaMerge10"; displayTestTitle(TEST_NAME); // GIVEN PrismPropertyDefinition propertyDefinition = getPrismContext().definitionFactory().createPropertyDefinition(UserType.F_DESCRIPTION, DOMUtil.XSD_STRING); PropertyDelta<String> delta1 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta1.setRealValuesToReplace("r1x", "r1y"); PropertyDelta<String> delta2 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta2.addRealValuesToAdd("add2"); // WHEN delta1.merge(delta2); // THEN System.out.println("Merged delta:"); System.out.println(delta1.debugDump()); PrismAsserts.assertReplace(delta1, "r1x", "r1y", "add2"); PrismAsserts.assertNoAdd(delta1); PrismAsserts.assertNoDelete(delta1); }
@Test public void testPropertyDeltaNarrow03() throws Exception { final String TEST_NAME="testPropertyDeltaNarrow03"; displayTestTitle(TEST_NAME); // GIVEN PrismPropertyDefinition propertyDefinition = getPrismContext().definitionFactory().createPropertyDefinition(UserType.F_DESCRIPTION, DOMUtil.XSD_STRING); PropertyDelta<String> delta = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta.addRealValuesToAdd("bubu"); PrismObject<UserType> user = createUserFoo(); user.setPropertyRealValue(UserType.F_DESCRIPTION, "bubu"); // WHEN PropertyDelta<String> narrowedDelta = delta.narrow(user); // THEN System.out.println("Narrowed delta:"); System.out.println(narrowedDelta.debugDump()); PrismAsserts.assertNoReplace(narrowedDelta); PrismAsserts.assertNoAdd(narrowedDelta); PrismAsserts.assertNoDelete(narrowedDelta); assertTrue("Delta not empty", narrowedDelta.isEmpty()); }
@Test public void testPropertyDeltaSwallow01() throws Exception { final String TEST_NAME="testPropertyDeltaSwallow01"; displayTestTitle(TEST_NAME); // GIVEN PrismPropertyDefinition propertyDefinition = getPrismContext().definitionFactory().createPropertyDefinition(UserType.F_DESCRIPTION, DOMUtil.XSD_STRING); PropertyDelta<String> delta1 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta1.addRealValuesToAdd("add1"); ObjectDelta<UserType> objectDelta = new ObjectDeltaImpl<>(UserType.class, ChangeType.MODIFY, PrismTestUtil.getPrismContext()); objectDelta.addModification(delta1); PropertyDelta<String> delta2 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta2.addRealValuesToAdd("add2"); // WHEN objectDelta.swallow(delta2); // THEN System.out.println("Swallowed delta:"); System.out.println(objectDelta.debugDump()); PrismAsserts.assertModifications(objectDelta, 1); PropertyDelta<String> modification = (PropertyDelta<String>) objectDelta.getModifications().iterator().next(); PrismAsserts.assertNoReplace(modification); PrismAsserts.assertAdd(modification, "add1", "add2"); PrismAsserts.assertNoDelete(modification); }
@Test public void testPropertyDeltaMerge05() throws Exception { final String TEST_NAME="testPropertyDeltaMerge05"; displayTestTitle(TEST_NAME); // GIVEN PrismPropertyDefinition propertyDefinition = getPrismContext().definitionFactory().createPropertyDefinition(UserType.F_DESCRIPTION, DOMUtil.XSD_STRING); PropertyDelta<String> delta1 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta1.addRealValuesToAdd("add1"); PropertyDelta<String> delta2 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta2.addRealValuesToAdd("add2"); delta2.addRealValuesToDelete("add1"); // WHEN delta1.merge(delta2); // THEN System.out.println("Merged delta:"); System.out.println(delta1.debugDump()); PrismAsserts.assertNoReplace(delta1); PrismAsserts.assertAdd(delta1, "add2"); PrismAsserts.assertNoDelete(delta1); }
@Test public void testPropertyDeltaMerge06() throws Exception { final String TEST_NAME="testPropertyDeltaMerge06"; displayTestTitle(TEST_NAME); // GIVEN PrismPropertyDefinition propertyDefinition = getPrismContext().definitionFactory().createPropertyDefinition(UserType.F_DESCRIPTION, DOMUtil.XSD_STRING); PropertyDelta<String> delta1 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta1.addRealValuesToAdd("add1"); delta1.addRealValuesToDelete("del1"); PropertyDelta<String> delta2 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta2.addRealValuesToAdd("del1"); // WHEN delta1.merge(delta2); // THEN System.out.println("Merged delta:"); System.out.println(delta1.debugDump()); PrismAsserts.assertNoReplace(delta1); PrismAsserts.assertAdd(delta1, "add1"); PrismAsserts.assertNoDelete(delta1); }
@Test public void testPropertyDeltaMerge20() throws Exception { final String TEST_NAME="testPropertyDeltaMerge20"; displayTestTitle(TEST_NAME); // GIVEN PrismPropertyDefinition propertyDefinition = getPrismContext().definitionFactory().createPropertyDefinition(UserType.F_DESCRIPTION, DOMUtil.XSD_STRING); PropertyDelta<String> delta1 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta1.addRealValuesToAdd("add1"); delta1.addRealValuesToDelete("del1"); PropertyDelta<String> delta2 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta2.setRealValuesToReplace("r2x", "r2y"); // WHEN delta1.merge(delta2); // THEN System.out.println("Merged delta:"); System.out.println(delta1.debugDump()); PrismAsserts.assertReplace(delta1, "r2x", "r2y"); PrismAsserts.assertNoAdd(delta1); PrismAsserts.assertNoDelete(delta1); }
@Test public void testPropertyDeltaMerge11() throws Exception { final String TEST_NAME="testPropertyDeltaMerge11"; displayTestTitle(TEST_NAME); // GIVEN PrismPropertyDefinition propertyDefinition = getPrismContext().definitionFactory().createPropertyDefinition(UserType.F_DESCRIPTION, DOMUtil.XSD_STRING); PropertyDelta<String> delta1 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta1.setRealValuesToReplace("r1x", "r1y"); PropertyDelta<String> delta2 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta2.addRealValuesToAdd("add2"); delta2.addRealValuesToDelete("r1y"); // WHEN delta1.merge(delta2); // THEN System.out.println("Merged delta:"); System.out.println(delta1.debugDump()); PrismAsserts.assertReplace(delta1, "r1x", "add2"); PrismAsserts.assertNoAdd(delta1); PrismAsserts.assertNoDelete(delta1); }
@Test public void testPropertyDeltaMerge12() throws Exception { final String TEST_NAME="testPropertyDeltaMerge12"; displayTestTitle(TEST_NAME); // GIVEN PrismPropertyDefinition propertyDefinition = getPrismContext().definitionFactory().createPropertyDefinition(UserType.F_DESCRIPTION, DOMUtil.XSD_STRING); PropertyDelta<String> delta1 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta1.setRealValuesToReplace("r1x", "r1y"); PropertyDelta<String> delta2 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta2.addRealValuesToAdd("add2"); delta2.addRealValuesToDelete("del2"); // WHEN delta1.merge(delta2); // THEN System.out.println("Merged delta:"); System.out.println(delta1.debugDump()); PrismAsserts.assertReplace(delta1, "r1x", "r1y", "add2"); PrismAsserts.assertNoAdd(delta1); PrismAsserts.assertNoDelete(delta1); }
@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 testSummarize06() throws Exception { final String TEST_NAME="testSummarize06"; displayTestTitle(TEST_NAME); // GIVEN PrismReferenceDefinition referenceDefinition = new PrismReferenceDefinitionImpl(UserType.F_PARENT_ORG_REF, OBJECT_REFERENCE_TYPE_QNAME, PrismTestUtil.getPrismContext()); ReferenceDelta delta1 = new ReferenceDeltaImpl(referenceDefinition, PrismTestUtil.getPrismContext()); delta1.addValueToAdd(new PrismReferenceValueImpl("oid1")); ObjectDelta<UserType> objectDelta1 = new ObjectDeltaImpl<>(UserType.class, ChangeType.MODIFY, PrismTestUtil.getPrismContext()); objectDelta1.addModification(delta1); ReferenceDelta delta2 = new ReferenceDeltaImpl(referenceDefinition, PrismTestUtil.getPrismContext()); delta2.addValueToAdd(new PrismReferenceValueImpl("oid1")); // here we add the same value ObjectDelta<UserType> objectDelta2 = new ObjectDeltaImpl<>(UserType.class, ChangeType.MODIFY, PrismTestUtil.getPrismContext()); objectDelta2.addModification(delta2); // WHEN ObjectDelta<UserType> sumDelta = ObjectDeltaCollectionsUtil.summarize(objectDelta1, objectDelta2); // THEN System.out.println("Summarized delta:"); System.out.println(sumDelta.debugDump()); PrismAsserts.assertModifications(sumDelta, 1); ReferenceDelta modification = (ReferenceDelta) sumDelta.getModifications().iterator().next(); PrismAsserts.assertNoReplace(modification); assertEquals("Invalid number of values to add", 1, modification.getValuesToAdd().size()); PrismAsserts.assertNoDelete(modification); }
@Test public void testSummarize01() throws Exception { final String TEST_NAME="testSummarize01"; displayTestTitle(TEST_NAME); // GIVEN PrismPropertyDefinition propertyDefinition = getPrismContext().definitionFactory().createPropertyDefinition(UserType.F_DESCRIPTION, DOMUtil.XSD_STRING); PropertyDelta<String> delta1 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta1.addRealValuesToAdd("add1"); ObjectDelta<UserType> objectDelta1 = new ObjectDeltaImpl<>(UserType.class, ChangeType.MODIFY, PrismTestUtil.getPrismContext()); objectDelta1.addModification(delta1); PropertyDelta<String> delta2 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); delta2.addRealValuesToAdd("add2"); ObjectDelta<UserType> objectDelta2 = new ObjectDeltaImpl<>(UserType.class, ChangeType.MODIFY, PrismTestUtil.getPrismContext()); objectDelta2.addModification(delta2); // WHEN ObjectDelta<UserType> sumDelta = ObjectDeltaCollectionsUtil.summarize(objectDelta1, objectDelta2); // THEN System.out.println("Summarized delta:"); System.out.println(sumDelta.debugDump()); PrismAsserts.assertModifications(sumDelta, 1); PropertyDelta<String> modification = (PropertyDelta<String>) sumDelta.getModifications().iterator().next(); PrismAsserts.assertNoReplace(modification); PrismAsserts.assertAdd(modification, "add1", "add2"); PrismAsserts.assertNoDelete(modification); }
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();
@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)); }
@Test public void testObjectDeltaNarrow01() throws Exception { final String TEST_NAME="testObjectDeltaNarrow01"; displayTestTitle(TEST_NAME); // GIVEN ObjectDelta<UserType> userDelta = getPrismContext().deltaFactory().object() .createModificationAddProperty(UserType.class, USER_FOO_OID, UserType.F_ADDITIONAL_NAMES, "blabla", "bubu"); display("userDelta", userDelta); PrismObject<UserType> user = createUserFoo(); display("user", user); // WHEN displayWhen(TEST_NAME); ObjectDelta<UserType> narrowedDelta = userDelta.narrow(user); // THEN displayThen(TEST_NAME); display("Narrowed delta", narrowedDelta); PrismAsserts.assertIsModify(narrowedDelta); PrismAsserts.assertModifications(narrowedDelta, 1); PropertyDelta<String> narrowedAdditionalNamesDelta = narrowedDelta.findPropertyDelta(UserType.F_ADDITIONAL_NAMES); assertNotNull("No additionalNames delta after summarize", narrowedAdditionalNamesDelta); PrismAsserts.assertNoReplace(narrowedAdditionalNamesDelta); PrismAsserts.assertAdd(narrowedAdditionalNamesDelta, "blabla", "bubu"); PrismAsserts.assertNoDelete(narrowedAdditionalNamesDelta); }
@Test public void testObjectDeltaNarrow02() throws Exception { final String TEST_NAME="testObjectDeltaNarrow02"; displayTestTitle(TEST_NAME); // GIVEN ObjectDelta<UserType> userDelta = getPrismContext().deltaFactory().object() .createModificationAddProperty(UserType.class, USER_FOO_OID, UserType.F_ADDITIONAL_NAMES, "blabla", "bubu"); display("userDelta", userDelta); PrismObject<UserType> user = createUserFoo(); user.setPropertyRealValue(UserType.F_ADDITIONAL_NAMES, "bubu"); display("user", user); // WHEN displayWhen(TEST_NAME); ObjectDelta<UserType> narrowedDelta = userDelta.narrow(user); // THEN displayThen(TEST_NAME); display("Narrowed delta", narrowedDelta); PrismAsserts.assertIsModify(narrowedDelta); PrismAsserts.assertModifications(narrowedDelta, 1); PropertyDelta<String> narrowedAdditionalNamesDelta = narrowedDelta.findPropertyDelta(UserType.F_ADDITIONAL_NAMES); assertNotNull("No additionalNames delta after summarize", narrowedAdditionalNamesDelta); PrismAsserts.assertNoReplace(narrowedAdditionalNamesDelta); PrismAsserts.assertAdd(narrowedAdditionalNamesDelta, "blabla"); PrismAsserts.assertNoDelete(narrowedAdditionalNamesDelta); }