diff options
Diffstat (limited to 'document')
-rw-r--r-- | document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java | 5 | ||||
-rw-r--r-- | document/src/main/java/com/yahoo/document/datatypes/WeightedSet.java | 17 |
2 files changed, 16 insertions, 6 deletions
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 4777622be1f..089b3a53d67 100644 --- a/document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java +++ b/document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java @@ -81,7 +81,10 @@ public class MapFieldValue<K extends FieldValue, V extends FieldValue> extends C */ public boolean equals(Object o) { if (!(o instanceof MapFieldValue)) return false; - return super.equals(o) && entrySet().equals(((MapFieldValue) o).entrySet()); + MapFieldValue m = (MapFieldValue) o; + if (size() != m.size()) return false; + if ( ! super.equals(m)) return false; + return entrySet().equals(m.entrySet()); } @Override 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 d505380523f..2d78deb9479 100644 --- a/document/src/main/java/com/yahoo/document/datatypes/WeightedSet.java +++ b/document/src/main/java/com/yahoo/document/datatypes/WeightedSet.java @@ -252,7 +252,10 @@ public final class WeightedSet<K extends FieldValue> extends CollectionFieldValu */ public boolean equals(Object o) { if (!(o instanceof WeightedSet)) return false; - return (super.equals(o) && map.equals(((WeightedSet<K>)o).map)); + WeightedSet w = (WeightedSet) o; + if (size() != w.size()) return false; + if ( ! super.equals(o)) return false; + return map.equals(((WeightedSet)o).map); } /** @@ -314,12 +317,12 @@ public final class WeightedSet<K extends FieldValue> extends CollectionFieldValu * */ class WeightedSetWrapper extends MapFieldValue<K, IntegerFieldValue> { - Map<Object, Integer> map = new HashMap<Object, Integer>(); - private DataType keyTypeVespa = getDataType().getKeyType(); - private DataType valTypeVespa = DataType.INT; + private final Map<Object, Integer> map; + private final DataType keyTypeVespa; public WeightedSetWrapper(Map map, MapDataType dt) { super(dt); + keyTypeVespa = getDataType().getKeyType(); this.map=map; } @@ -335,7 +338,11 @@ public final class WeightedSet<K extends FieldValue> extends CollectionFieldValu private IntegerFieldValue wrapValue(Object o) { if (o==null) return null; - return (IntegerFieldValue)valTypeVespa.createFieldValue(o); + if (o instanceof IntegerFieldValue) return (IntegerFieldValue) o; + if (o instanceof Integer) return new IntegerFieldValue((Integer) o); + IntegerFieldValue value = new IntegerFieldValue(); + value.assign(o); + return value; } @Override |