diff --git a/jni/pom.xml b/jni/pom.xml
index d340f7d7..aeef22ee 100644
--- a/jni/pom.xml
+++ b/jni/pom.xml
@@ -17,7 +17,7 @@
Infinispan HotRod JNI Wrapper
- 9.0.0.Final
+ 9.1.1.Final
1.2.1.Final
4.17.13.Final
6.8
@@ -62,6 +62,13 @@
tests
test
+
+ org.infinispan
+ infinispan-server-core
+ ${version.org.infinispan}
+ tests
+ test
+
org.infinispan
infinispan-server-hotrod
diff --git a/jni/src/main/java/org/infinispan/client/hotrod/RemoteCache.java b/jni/src/main/java/org/infinispan/client/hotrod/RemoteCache.java
index 35264103..390c781f 100644
--- a/jni/src/main/java/org/infinispan/client/hotrod/RemoteCache.java
+++ b/jni/src/main/java/org/infinispan/client/hotrod/RemoteCache.java
@@ -65,6 +65,8 @@ public interface RemoteCache {
Map getBulk();
Map getBulk(int size);
+
+ Map getAll(Set keySet);
boolean isEmpty();
diff --git a/jni/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheImpl.java b/jni/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheImpl.java
index 20e5b1cb..b40eeeda 100644
--- a/jni/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheImpl.java
+++ b/jni/src/main/java/org/infinispan/client/hotrod/impl/RemoteCacheImpl.java
@@ -10,6 +10,7 @@
import java.math.BigInteger;
import java.net.SocketAddress;
+import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -34,6 +35,7 @@
import org.infinispan.client.hotrod.jni.MetadataPairReturn;
import org.infinispan.client.hotrod.jni.RelayBytes;
import org.infinispan.client.hotrod.jni.RemoteCache_jb_jb;
+import org.infinispan.client.hotrod.jni.SetArgs;
import org.infinispan.client.hotrod.jni.SetReturn;
import org.infinispan.client.hotrod.jni.StringVectorReturn;
import org.infinispan.client.hotrod.jni.VectorReturn;
@@ -483,6 +485,41 @@ public Object invoke(RelayBytes... rbs) {
return result;
}
+ @Override
+ public Map getAll(Set keySet) {
+ return relayedInvoker(new RelayedMethod() {
+ @Override
+ public Object invoke(RelayBytes... rbs) {
+ SetArgs s = new SetArgs();
+ for (RelayBytes r : rbs) {
+ s.insert(r);
+ }
+ MapReturn mr = jniRemoteCache.getAll(s);
+ final VectorReturn vectorReturn = Hotrod.keySet(mr);
+ Map ret = new HashMap();
+ for (int i = 0; i < vectorReturn.size(); i++) {
+ final RelayBytes k = Hotrod.dereference(vectorReturn.get(i));
+ final RelayBytes v = Hotrod.dereference(mr.get(vectorReturn.get(i)));
+ K key = relayedInvoker(new RelayedMethod() {
+ @Override
+ public Object invoke(RelayBytes... rbs) {
+ return k;
+ }
+ });
+ V value = relayedInvoker(new RelayedMethod() {
+ @Override
+ public Object invoke(RelayBytes... rbs) {
+ return v;
+ }
+ });
+
+ ret.put(key, value);
+ }
+ return ret;
+ }
+ }, (Collection