X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.security.core%2Fsrc%2Forg%2Fargeo%2Futil%2Fnaming%2FAttributesDictionary.java;h=c211e8e8a40b0316d230f0d7e68cf34f0a8dfdb9;hb=8260f4470f514ea347ca53f5b4dfc632c4a4de66;hp=a6fddb440804801f81eb01b3ca05283f6099cfd9;hpb=ba8f8a6fb8ad9649dd03b2ac4670d194f0e1be79;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.core/src/org/argeo/util/naming/AttributesDictionary.java b/org.argeo.security.core/src/org/argeo/util/naming/AttributesDictionary.java index a6fddb440..c211e8e8a 100644 --- a/org.argeo.security.core/src/org/argeo/util/naming/AttributesDictionary.java +++ b/org.argeo.security.core/src/org/argeo/util/naming/AttributesDictionary.java @@ -118,9 +118,18 @@ public class AttributesDictionary extends Dictionary { attr.set(i, values[i]); } } else { - if (attr.size() != 1) + if (attr.size() > 1) throw new IllegalArgumentException("Attribute " + key + " is multi-valued"); - attr.set(0, value.toString()); + if (attr.size() == 1) { + try { + if (!attr.get(0).equals(value)) + attr.set(0, value.toString()); + } catch (NamingException e) { + throw new RuntimeException("Cannot check existing value", e); + } + } else { + attr.add(value.toString()); + } } return oldValue; }