6
6
import java .util .Map ;
7
7
import java .util .Set ;
8
8
import java .util .concurrent .ConcurrentHashMap ;
9
+
9
10
import java .util .function .Function ;
10
11
import redis .clients .jedis .util .SafeEncoder ;
11
12
@@ -67,7 +68,7 @@ private void invalidateKeyAndRespectiveCommandHashes(Object key) {
67
68
}
68
69
}
69
70
70
- final <T > T getValue (Function <CommandObject <T >, T > loader , CommandObject <T > command , String ... keys ) {
71
+ final <T > T getValue (Function <CommandObject <T >, T > loader , CommandObject <T > command , Object ... keys ) {
71
72
72
73
final long hash = getCommandHash (command );
73
74
@@ -79,7 +80,7 @@ final <T> T getValue(Function<CommandObject<T>, T> loader, CommandObject<T> comm
79
80
value = loader .apply (command );
80
81
if (value != null ) {
81
82
put (hash , value );
82
- for (String key : keys ) {
83
+ for (Object key : keys ) {
83
84
ByteBuffer mapKey = makeKeyForKeyToCommandHashes (key );
84
85
if (keyToCommandHashes .containsKey (mapKey )) {
85
86
keyToCommandHashes .get (mapKey ).add (hash );
@@ -94,8 +95,10 @@ final <T> T getValue(Function<CommandObject<T>, T> loader, CommandObject<T> comm
94
95
return value ;
95
96
}
96
97
97
- private ByteBuffer makeKeyForKeyToCommandHashes (String key ) {
98
- return makeKeyForKeyToCommandHashes (SafeEncoder .encode (key ));
98
+ private ByteBuffer makeKeyForKeyToCommandHashes (Object key ) {
99
+ if (key instanceof byte []) return makeKeyForKeyToCommandHashes ((byte []) key );
100
+ else if (key instanceof String ) return makeKeyForKeyToCommandHashes (SafeEncoder .encode ((String ) key ));
101
+ else throw new AssertionError ("" + key .getClass ().getSimpleName () + " is not supported. Value: " + String .valueOf (key ));
99
102
}
100
103
101
104
private static ByteBuffer makeKeyForKeyToCommandHashes (byte [] b ) {
0 commit comments