@Test
public void removeOperationalItems() throws Exception {
System.out.println("===[ removeOperationalItems ]===");
PrismObject<RoleType> role = getPrismContext().parseObject(FILE_ROLE_REMOVE_ITEMS);
AtomicInteger propertyValuesBefore = new AtomicInteger(0);
role.accept(o -> {
if (o instanceof PrismPropertyValue) {
propertyValuesBefore.incrementAndGet();
System.out.println(((PrismPropertyValue) o).getPath() + ": " + ((PrismPropertyValue) o).getValue());
}
});
System.out.println("Property values before: " + propertyValuesBefore);
role.getValue().removeOperationalItems();
System.out.println("After operational items removal:\n" + getPrismContext().xmlSerializer().serialize(role));
AtomicInteger propertyValuesAfter = new AtomicInteger(0);
role.accept(o -> {
if (o instanceof PrismPropertyValue) {
propertyValuesAfter.incrementAndGet();
System.out.println(((PrismPropertyValue) o).getPath() + ": " + ((PrismPropertyValue) o).getValue());
}
});
System.out.println("Property values after: " + propertyValuesAfter);
assertNull("metadata container present", role.findContainer(RoleType.F_METADATA));
assertNull("effectiveStatus present", role.findProperty(ItemPath.create(RoleType.F_ACTIVATION, ActivationType.F_EFFECTIVE_STATUS)));
assertNull("assignment[1]/activation/effectiveStatus present",
role.findProperty(ItemPath.create(RoleType.F_ASSIGNMENT, 1L, AssignmentType.F_ACTIVATION, ActivationType.F_EFFECTIVE_STATUS)));
assertEquals("Wrong property values after", propertyValuesBefore.intValue()-6, propertyValuesAfter.intValue());
}