public static void assertPropertyAdd(ObjectDelta<?> userDelta, ItemPath propertyPath, Object... expectedValues) { PropertyDelta<Object> propertyDelta = userDelta.findPropertyDelta(propertyPath); assertNotNull("Property delta for "+propertyPath+" not found",propertyDelta); assertAdd(propertyDelta, expectedValues); }
@Test public void testPropertyUserSimpleDiffMultiAddStaticNull1() throws Exception { System.out.println("\n\n===[ testPropertyUserSimpleDiffMultiAddStaticNull1 ]===\n"); // GIVEN PrismObjectDefinition<UserType> userDef = getUserTypeDefinition(); PrismObject<UserType> user2 = userDef.instantiate(); user2.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp2 = user2.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp2.addRealValue("foo"); additionalNamesProp2.addRealValue("bar"); // WHEN PropertyDelta<String> delta = ItemUtil.diff(null, additionalNamesProp2); // THEN assertNotNull(delta); System.out.println(delta.debugDump()); PrismAsserts.assertAdd(delta, "foo", "bar"); delta.checkConsistence(); }
@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 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 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 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 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 testPropertyUserSimpleDiffMultiAddStatic() throws Exception { System.out.println("\n\n===[ testPropertyUserSimpleDiffMultiAddStatic ]===\n"); // GIVEN PrismObjectDefinition<UserType> userDef = getUserTypeDefinition(); PrismObject<UserType> user1 = userDef.instantiate(); user1.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp1 = user1.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp1.addRealValue("foo"); additionalNamesProp1.addRealValue("bar"); PrismObject<UserType> user2 = userDef.instantiate(); user2.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp2 = user2.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp2.addRealValue("foo"); additionalNamesProp2.addRealValue("bar"); additionalNamesProp2.addRealValue("baz"); // WHEN PropertyDelta<String> delta = ItemUtil.diff(additionalNamesProp1, additionalNamesProp2); // THEN assertNotNull(delta); System.out.println(delta.debugDump()); PrismAsserts.assertAdd(delta, "baz"); delta.checkConsistence(); }
@Test public void testPropertyDeltaMerge03() throws Exception { final String TEST_NAME="testPropertyDeltaMerge03"; 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("add2"); delta2.addRealValuesToDelete("del2"); // WHEN delta1.merge(delta2); // THEN System.out.println("Merged delta:"); System.out.println(delta1.debugDump()); PrismAsserts.assertNoReplace(delta1); PrismAsserts.assertAdd(delta1, "add1", "add2"); PrismAsserts.assertDelete(delta1, "del1", "del2"); }
@Test public void testPropertyDeltaMerge04() throws Exception { final String TEST_NAME="testPropertyDeltaMerge04"; 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("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.assertDelete(delta1, "del1"); }
@Test public void testPropertyUserSimpleDiffMultiAdd() throws Exception { System.out.println("\n\n===[ testPropertyUserSimpleDiffMultiAdd ]===\n"); // GIVEN PrismObjectDefinition<UserType> userDef = getUserTypeDefinition(); PrismObject<UserType> user1 = userDef.instantiate(); user1.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp1 = user1.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp1.addRealValue("foo"); additionalNamesProp1.addRealValue("bar"); PrismObject<UserType> user2 = userDef.instantiate(); user2.setOid(USER_JACK_OID); PrismProperty<String> additionalNamesProp2 = user2.findOrCreateProperty(UserType.F_ADDITIONAL_NAMES); additionalNamesProp2.addRealValue("foo"); additionalNamesProp2.addRealValue("bar"); additionalNamesProp2.addRealValue("baz"); // WHEN PropertyDelta<String> delta = additionalNamesProp1.diff(additionalNamesProp2); // THEN assertNotNull(delta); System.out.println(delta.debugDump()); PrismAsserts.assertAdd(delta, "baz"); delta.checkConsistence(); }
@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); }
@Test public void testSummarize05() throws Exception { final String TEST_NAME="testSummarize05"; displayTestTitle(TEST_NAME); // GIVEN PrismPropertyDefinition propertyDefinition = getPrismContext().definitionFactory().createPropertyDefinition(UserType.F_DESCRIPTION, DOMUtil.XSD_STRING); PropertyDelta<String> delta1 = new PropertyDeltaImpl<String>(propertyDefinition, PrismTestUtil.getPrismContext()); // Let's complicate the things a bit with origin. This should work even though origins do not match. delta1.addValueToAdd(new PrismPropertyValueImpl<>("add1", OriginType.OUTBOUND, null)); 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"); delta2.addRealValuesToDelete("add1"); 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, "add2"); PrismAsserts.assertNoDelete(modification); }
@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 testObjectDeltaSummarizeModifyAdd() throws Exception { final String TEST_NAME="testObjectDeltaSummarizeModifyAdd"; displayTestTitle(TEST_NAME); // GIVEN ObjectDelta<UserType> userDelta1 = PrismTestUtil.getPrismContext().deltaFactory().object() .createModificationAddProperty(UserType.class, USER_FOO_OID, UserType.F_ADDITIONAL_NAMES, PrismTestUtil.createPolyString("foo")); ObjectDelta<UserType> userDelta2 = PrismTestUtil.getPrismContext().deltaFactory().object() .createModificationAddProperty(UserType.class, USER_FOO_OID, UserType.F_ADDITIONAL_NAMES, PrismTestUtil.createPolyString("bar")); // WHEN ObjectDelta<UserType> userDeltaSum = ObjectDeltaCollectionsUtil.summarize(userDelta1, userDelta2); // THEN assertEquals("Wrong OID", USER_FOO_OID, userDeltaSum.getOid()); PrismAsserts.assertIsModify(userDeltaSum); PrismAsserts.assertModifications(userDeltaSum, 1); PropertyDelta<PolyString> namesDeltaUnion = userDeltaSum.findPropertyDelta(UserType.F_ADDITIONAL_NAMES); assertNotNull("No additionalNames delta after summarize", namesDeltaUnion); PrismAsserts.assertAdd(namesDeltaUnion, PrismTestUtil.createPolyString("foo"), PrismTestUtil.createPolyString("bar")); }
@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); }