mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-10-13 14:16:22 +00:00
fix[orm]: map null value support
This commit is contained in:
1 parent
5652fdd3f9
commit
cca1a95b5a
3 files changed
+25
-6
No files matched your search
@@ -32,8 +32,14 @@ public class IntMapCodec<V> implements Codec<Map<Integer, V>> {
|
||||
public void encode(final BsonWriter writer, final Map<Integer, V> map, final EncoderContext encoderContext) {
|
||||
writer.writeStartDocument();
|
||||
for (var entry : map.entrySet()) {
|
||||
writer.writeName(entry.getKey().toString());
|
||||
valueCodec.encode(writer, entry.getValue(), encoderContext);
|
||||
var key = entry.getKey();
|
||||
var value = entry.getValue();
|
||||
writer.writeName(key.toString());
|
||||
if (value == null) {
|
||||
writer.writeNull();
|
||||
} else {
|
||||
valueCodec.encode(writer, entry.getValue(), encoderContext);
|
||||
}
|
||||
}
|
||||
writer.writeEndDocument();
|
||||
}
|
||||
|
||||
@@ -31,9 +31,15 @@ public class LongMapCodec<V> implements Codec<Map<Long, V>> {
|
||||
@Override
|
||||
public void encode(final BsonWriter writer, final Map<Long, V> map, final EncoderContext encoderContext) {
|
||||
writer.writeStartDocument();
|
||||
for (final Map.Entry<Long, V> entry : map.entrySet()) {
|
||||
writer.writeName(entry.getKey().toString());
|
||||
valueCodec.encode(writer, entry.getValue(), encoderContext);
|
||||
for (var entry : map.entrySet()) {
|
||||
var key = entry.getKey();
|
||||
var value = entry.getValue();
|
||||
writer.writeName(key.toString());
|
||||
if (value == null) {
|
||||
writer.writeNull();
|
||||
} else {
|
||||
valueCodec.encode(writer, entry.getValue(), encoderContext);
|
||||
}
|
||||
}
|
||||
writer.writeEndDocument();
|
||||
}
|
||||
@@ -44,7 +50,12 @@ public class LongMapCodec<V> implements Codec<Map<Long, V>> {
|
||||
var map = new HashMap<Long, V>();
|
||||
while (!BsonType.END_OF_DOCUMENT.equals(reader.readBsonType())) {
|
||||
long key = Long.parseLong(reader.readName());
|
||||
V value = BsonType.NULL.equals(reader.getCurrentBsonType()) ? null : valueCodec.decode(reader, context);
|
||||
V value = null;
|
||||
if (BsonType.NULL.equals(reader.getCurrentBsonType())) {
|
||||
reader.readNull();
|
||||
} else {
|
||||
value = valueCodec.decode(reader, context);
|
||||
}
|
||||
map.put(key, value);
|
||||
}
|
||||
reader.readEndDocument();
|
||||
|
||||
@@ -55,6 +55,7 @@ public class MapTest {
|
||||
bagMap.put("bag1", bagItem1);
|
||||
bagMap.put("bag2", bagItem2);
|
||||
bagMap.put("bag3", bagItem3);
|
||||
bagMap.put("bag4", null);
|
||||
|
||||
var map = new HashMap<String, Map<String, String>>();
|
||||
map.put("a", Map.of("b", "b"));
|
||||
@@ -63,6 +64,7 @@ public class MapTest {
|
||||
var longStringHashMap = new HashMap<Long, String>();
|
||||
longStringHashMap.put(100L, "hello map1");
|
||||
longStringHashMap.put(101L, "hello map2");
|
||||
longStringHashMap.put(102L, null);
|
||||
entity.setLongStringMap(longStringHashMap);
|
||||
|
||||
var intStringHashMap = new HashMap<Integer, String>();
|
||||
|
||||
Reference in new issue
Block a user