diff --git a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismPropertyImpl.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismPropertyImpl.java index 9348a75292a..a047b431f1a 100644 --- a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismPropertyImpl.java +++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismPropertyImpl.java @@ -237,16 +237,23 @@ public void addValues(Collection> pValuesToAdd) { } public void addValue(PrismPropertyValue pValueToAdd) { + addValue(pValueToAdd, true); + } + + public void addValue(PrismPropertyValue pValueToAdd, boolean checkUniqueness) { checkMutability(); ((PrismPropertyValueImpl) pValueToAdd).checkValue(); - Iterator> iterator = getValues().iterator(); - while (iterator.hasNext()) { - PrismPropertyValue pValue = iterator.next(); - if (pValue.equals(pValueToAdd, EquivalenceStrategy.REAL_VALUE)) { - LOGGER.warn("Adding value to property "+ getElementName()+" that already exists (overwriting), value: "+pValueToAdd); - iterator.remove(); - } - } + if (checkUniqueness) { + Iterator> iterator = getValues().iterator(); + while (iterator.hasNext()) { + PrismPropertyValue pValue = iterator.next(); + if (pValue.equals(pValueToAdd, EquivalenceStrategy.REAL_VALUE)) { + LOGGER.warn("Adding value to property " + getElementName() + " that already exists (overwriting), value: " + + pValueToAdd); + iterator.remove(); + } + } + } pValueToAdd.setParent(this); pValueToAdd.recompute(); getValues().add(pValueToAdd); @@ -392,7 +399,7 @@ public PrismProperty cloneComplex(CloneStrategy strategy) { protected void copyValues(CloneStrategy strategy, PrismPropertyImpl clone) { super.copyValues(strategy, clone); for (PrismPropertyValue value : getValues()) { - clone.addValue(value.cloneComplex(strategy)); + clone.addValue(value.cloneComplex(strategy), false); } } diff --git a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismReferenceImpl.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismReferenceImpl.java index 30007dc45e8..f715f6bbbd7 100644 --- a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismReferenceImpl.java +++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/PrismReferenceImpl.java @@ -239,7 +239,7 @@ protected void copyValues(CloneStrategy strategy, PrismReferenceImpl clone) { super.copyValues(strategy, clone); for (PrismReferenceValue value : getValues()) { try { - clone.add(value.cloneComplex(strategy)); + clone.add(value.cloneComplex(strategy), false); } catch (SchemaException e) { throw new IllegalStateException("Unexpected SchemaException while copying values: " + e.getMessage(), e); }