diff options
author | Jon Bratseth <bratseth@oath.com> | 2020-12-11 14:28:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-11 14:28:54 +0100 |
commit | 349f91cc759fe8d5d0e1453b914826cd329ee2a6 (patch) | |
tree | 5eeee6426a367c74a60bec2229a18133d452025e /document/src | |
parent | c1c15e8d77a057e60a20e50895d4ec7f284f8f84 (diff) | |
parent | 69d048af7b548bf0a18527a9e27acbddf7c5e931 (diff) |
Merge pull request #15793 from vespa-engine/balder/avoid-reflection
- Fail early if size does not match.
Diffstat (limited to 'document/src')
-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 |