From 607579e17b0c83f83b5d53e2334523715a337e01 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 24 Jan 2024 00:53:12 +0100 Subject: [PATCH] Add a UniqueValues design note. Change-Id: I10602a6eef1aba3b6550d747f69805daa8e4a614 Signed-off-by: Robert Varga --- .../yangtools/yang/data/tree/impl/UniqueValues.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/UniqueValues.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/UniqueValues.java index 281b8459c0..34b065fee4 100644 --- a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/UniqueValues.java +++ b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/UniqueValues.java @@ -19,8 +19,12 @@ import org.opendaylight.yangtools.concepts.Immutable; /** * A vector of values associated with a unique constraint. This is almost an {@link ArrayList}, except it is - * unmodifiable. + * unmodifiable. The only way to construct this instance is through {@link #COLLECTOR}. This should be used only in case + * of more than one value. */ +// Design note: this could have been a List, because the order matters, but it does not matter much, we are expected +// to be compared against ourselves -- and we treat byte[] specially, breaking reflexivity of equality. We could also go +// for Collection, but at this point nobody cares about size(). final class UniqueValues implements Immutable, Iterable { static final Collector COLLECTOR = Collector.of(ArrayList::new, ArrayList::add, (left, right) -> { @@ -59,7 +63,7 @@ final class UniqueValues implements Immutable, Iterable { } private static String toString(final Object[] objects) { - final StringBuilder sb = new StringBuilder(); + final var sb = new StringBuilder(); sb.append('[').append(BinaryValue.wrapToString(objects[0])); for (int i = 1; i < objects.length; ++i) { sb.append(", ").append(BinaryValue.wrapToString(objects[i])); -- 2.36.6