From 6f9b4c5e3828315ad84e998175102a7562958ce2 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Mon, 10 Sep 2018 23:46:20 +0200 Subject: Due to some ugly inheritance you must use values with great care. In equals it must use entrySet() due to some very ugly inheritance. --- .../com/yahoo/document/datatypes/MapFieldValue.java | 8 ++++---- .../java/com/yahoo/document/datatypes/WeightedSet.java | 17 ++++++++++++++--- 2 files changed, 18 insertions(+), 7 deletions(-) (limited to 'document/src/main') diff --git a/document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java index bf40546d637..4777622be1f 100644 --- a/document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java +++ b/document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java @@ -1,7 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.document.datatypes; -import com.yahoo.collections.CollectionComparator; import com.yahoo.document.DataType; import com.yahoo.document.Field; import com.yahoo.document.FieldPath; @@ -12,6 +11,7 @@ import com.yahoo.document.serialization.XmlSerializationHelper; import com.yahoo.document.serialization.XmlStream; import java.util.Arrays; +import java.util.Comparator; import java.util.Map; import java.util.HashMap; import java.util.Set; @@ -81,7 +81,7 @@ public class MapFieldValue extends C */ public boolean equals(Object o) { if (!(o instanceof MapFieldValue)) return false; - return super.equals(o) && values.equals(((MapFieldValue) o).values); + return super.equals(o) && entrySet().equals(((MapFieldValue) o).entrySet()); } @Override @@ -290,8 +290,8 @@ public class MapFieldValue extends C } Map.Entry [] entries = entrySet().toArray(new Map.Entry[size()]); Map.Entry [] rhsEntries = rhs.entrySet().toArray(new Map.Entry[rhs.size()]); - Arrays.sort(entries, (Map.Entry a, Map.Entry b) -> { return a.getKey().compareTo(b.getKey()); }); - Arrays.sort(rhsEntries, (Map.Entry a, Map.Entry b) -> { return a.getKey().compareTo(b.getKey()); }); + Arrays.sort(entries, Comparator.comparing(Map.Entry::getKey)); + Arrays.sort(rhsEntries, Comparator.comparing(Map.Entry::getKey)); for (int i = 0; i < entries.length; i++) { comp = entries[i].getKey().compareTo(rhsEntries[i].getKey()); if (comp != 0) return comp; diff --git a/document/src/main/java/com/yahoo/document/datatypes/WeightedSet.java b/document/src/main/java/com/yahoo/document/datatypes/WeightedSet.java index 63dc1cab063..d505380523f 100644 --- a/document/src/main/java/com/yahoo/document/datatypes/WeightedSet.java +++ b/document/src/main/java/com/yahoo/document/datatypes/WeightedSet.java @@ -1,14 +1,25 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.document.datatypes; -import com.yahoo.collections.CollectionComparator; -import com.yahoo.document.*; +import com.yahoo.document.DataType; +import com.yahoo.document.Field; +import com.yahoo.document.WeightedSetDataType; +import com.yahoo.document.MapDataType; +import com.yahoo.document.FieldPath; import com.yahoo.document.serialization.FieldReader; import com.yahoo.document.serialization.FieldWriter; import com.yahoo.document.serialization.XmlSerializationHelper; import com.yahoo.document.serialization.XmlStream; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; + /** * A weighted set, a unique set of keys with an associated integer weight. This class -- cgit v1.2.3