diff --git a/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamResultDecoder.java b/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamResultDecoder.java index cd1b8a019..558598234 100644 --- a/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamResultDecoder.java +++ b/redisson/src/main/java/org/redisson/client/protocol/decoder/StreamResultDecoder.java @@ -18,10 +18,9 @@ package org.redisson.client.protocol.decoder; import org.redisson.api.StreamMessageId; import org.redisson.client.handler.State; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collector; +import java.util.stream.Collectors; /** * @@ -40,6 +39,29 @@ public class StreamResultDecoder implements MultiDecoder { @Override public Object decode(List parts, State state) { List> list = (List>) (Object) parts; + +// Map>> result = list.stream().collect( +// Collectors.groupingBy(v -> (String) v.get(0), +// Collectors.mapping(v -> (List>) v.get(1), +// Collector.of(LinkedHashMap::new, +// (m, l) -> { +// for (List objects : l) { +// m.put((StreamMessageId) objects.get(0), (Map) objects.get(1)); +// } +// }, +// (x, y) -> { +// x.putAll(y); +// return x; +// }) +// ))); +// +// result.values().removeAll(Collections.singleton(new HashMap())); +// +// if (firstResult && !result.isEmpty()) { +// return result.values().iterator().next(); +// } +// return result; + Map>> result = new HashMap<>(); for (List entries : list) { List> streamEntries = (List>) entries.get(1); @@ -47,11 +69,11 @@ public class StreamResultDecoder implements MultiDecoder { String name = (String) entries.get(0); Map> ee = new LinkedHashMap<>(); result.put(name, ee); - + for (List se : streamEntries) { ee.put((StreamMessageId) se.get(0), (Map) se.get(1)); } - + if (firstResult) { return ee; }