Skip to content

Commit b8eabee

Browse files
committed
Polishing.
Tweak Javadoc. Extract comparator as constant. Remove Map copying for toString usage. Closes #1982
1 parent bfc720f commit b8eabee

File tree

1 file changed

+28
-14
lines changed
  • src/main/java/org/springframework/data/redis/core/convert

1 file changed

+28
-14
lines changed

src/main/java/org/springframework/data/redis/core/convert/Bucket.java

+28-14
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.Collection;
2121
import java.util.Collections;
2222
import java.util.Comparator;
23+
import java.util.Iterator;
2324
import java.util.LinkedHashMap;
2425
import java.util.LinkedHashSet;
2526
import java.util.Map;
@@ -50,18 +51,19 @@ public class Bucket {
5051
*/
5152
public static final Charset CHARSET = StandardCharsets.UTF_8;
5253

54+
private static final Comparator<String> COMPARATOR = new NullSafeComparator<>(Comparator.<String> naturalOrder(),
55+
true);
56+
5357
/**
5458
* The Redis data as {@link Map} sorted by the keys.
5559
*/
5660
private final NavigableMap<String, byte[]> data = new TreeMap<>(
57-
new NullSafeComparator<>(Comparator.<String> naturalOrder(), true));
61+
COMPARATOR);
5862

5963
/**
60-
* Creates new empty bucket
64+
* Creates a new empty bucket.
6165
*/
62-
public Bucket() {
63-
64-
}
66+
public Bucket() {}
6567

6668
Bucket(Map<String, byte[]> data) {
6769

@@ -158,7 +160,6 @@ public Map<String, byte[]> asMap() {
158160
* @return
159161
*/
160162
public Bucket extract(String prefix) {
161-
162163
return new Bucket(data.subMap(prefix, prefix + Character.MAX_VALUE));
163164
}
164165

@@ -269,19 +270,32 @@ public String toString() {
269270

270271
private String safeToString() {
271272

272-
Map<String, String> serialized = new LinkedHashMap<>();
273-
for (Map.Entry<String, byte[]> entry : data.entrySet()) {
274-
if (entry.getValue() != null) {
275-
serialized.put(entry.getKey(), toUtf8String(entry.getValue()));
276-
} else {
277-
serialized.put(entry.getKey(), null);
273+
if (data.isEmpty()) {
274+
return "{}";
275+
}
276+
277+
StringBuilder sb = new StringBuilder();
278+
sb.append('{');
279+
280+
Iterator<Entry<String, byte[]>> iterator = data.entrySet().iterator();
281+
282+
for (;;) {
283+
284+
Entry<String, byte[]> e = iterator.next();
285+
sb.append(e.getKey());
286+
sb.append('=');
287+
sb.append(toUtf8String(e.getValue()));
288+
289+
if (!iterator.hasNext()) {
290+
return sb.append('}').toString();
278291
}
292+
293+
sb.append(',').append(' ');
279294
}
280-
return serialized.toString();
281295
}
282296

283297
@Nullable
284-
private String toUtf8String(byte[] raw) {
298+
private static String toUtf8String(byte[] raw) {
285299

286300
try {
287301
return new String(raw, CHARSET);

0 commit comments

Comments
 (0)