diff --git a/pom.xml b/pom.xml
index fd096c0..81ad95e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.redislabs
+ com.falkordb
jredisgraph
2.6.0-SNAPSHOT
diff --git a/src/main/java/com/redislabs/redisgraph/Connection.java b/src/main/java/com/redislabs/redisgraph/Connection.java
new file mode 100644
index 0000000..83ff8f4
--- /dev/null
+++ b/src/main/java/com/redislabs/redisgraph/Connection.java
@@ -0,0 +1,28 @@
+package com.redislabs.redisgraph;
+
+import java.io.Closeable;
+import redis.clients.jedis.Client;
+import redis.clients.jedis.commands.ProtocolCommand;
+
+/**
+ * Connection interface
+ *
+ * This interface defines the methods that a connection to a RedisGraph instance should implement.
+ * It abstracts the underlying connection mechanism, allowing for different implementations to be used.
+ */
+public interface Connection extends Closeable {
+ Object sendCommand(ProtocolCommand cmd, String... args);
+
+ Object sendBlockingCommand(ProtocolCommand cmd, String... args);
+
+ void close();
+
+ String watch(String... keys);
+
+ String unwatch();
+
+ Client getClient();
+
+ void disconnect();
+}
+
diff --git a/src/main/java/com/redislabs/redisgraph/RedisGraphContext.java b/src/main/java/com/redislabs/redisgraph/RedisGraphContext.java
index 44d6319..5e8764f 100644
--- a/src/main/java/com/redislabs/redisgraph/RedisGraphContext.java
+++ b/src/main/java/com/redislabs/redisgraph/RedisGraphContext.java
@@ -1,7 +1,5 @@
package com.redislabs.redisgraph;
-import redis.clients.jedis.Jedis;
-
public interface RedisGraphContext extends RedisGraph {
@@ -9,7 +7,7 @@ public interface RedisGraphContext extends RedisGraph {
* Returns implementing class connection context
* @return Jedis connection
*/
- Jedis getConnectionContext();
+ Connection getConnectionContext();
/**
* Returns a Redis transactional object, over the connection context, with graph API capabilities
diff --git a/src/main/java/com/redislabs/redisgraph/impl/api/AbstractRedisGraph.java b/src/main/java/com/redislabs/redisgraph/impl/api/AbstractRedisGraph.java
index 57fce53..a9cb462 100644
--- a/src/main/java/com/redislabs/redisgraph/impl/api/AbstractRedisGraph.java
+++ b/src/main/java/com/redislabs/redisgraph/impl/api/AbstractRedisGraph.java
@@ -1,9 +1,9 @@
package com.redislabs.redisgraph.impl.api;
+import com.redislabs.redisgraph.Connection;
import com.redislabs.redisgraph.RedisGraph;
import com.redislabs.redisgraph.ResultSet;
import com.redislabs.redisgraph.impl.Utils;
-import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Map;
@@ -15,9 +15,9 @@ public abstract class AbstractRedisGraph implements RedisGraph {
/**
* Inherited classes should return a Jedis connection, with respect to their context
- * @return Jedis connection
+ * @return connection
*/
- protected abstract Jedis getConnection();
+ protected abstract Connection getConnection();
/**
* Sends a query to the redis graph. Implementation and context dependent
diff --git a/src/main/java/com/redislabs/redisgraph/impl/api/ClusterConnection.java b/src/main/java/com/redislabs/redisgraph/impl/api/ClusterConnection.java
new file mode 100644
index 0000000..580660a
--- /dev/null
+++ b/src/main/java/com/redislabs/redisgraph/impl/api/ClusterConnection.java
@@ -0,0 +1,53 @@
+package com.redislabs.redisgraph.impl.api;
+
+import com.redislabs.redisgraph.Connection;
+
+import redis.clients.jedis.Client;
+import redis.clients.jedis.JedisCluster;
+import redis.clients.jedis.commands.ProtocolCommand;
+
+/**
+ * Cluster Connection implementation of the Connection interface for RedisGraph
+ */
+public class ClusterConnection implements Connection {
+ private final JedisCluster cluster;
+
+ public ClusterConnection(JedisCluster cluster) {
+ this.cluster = cluster;
+ }
+
+ @Override
+ public Object sendCommand(ProtocolCommand cmd, String... args) {
+ return cluster.sendCommand(args[0], cmd, args);
+ }
+
+ @Override
+ public Object sendBlockingCommand(ProtocolCommand cmd, String... args) {
+ return cluster.sendBlockingCommand(args[0], cmd, args);
+ }
+
+ @Override
+ public void close() {
+ // Doesn't actually close the connection
+ }
+
+ @Override
+ public String watch(String... keys) {
+ throw new UnsupportedOperationException("Cluster does not support watch");
+ }
+
+ @Override
+ public String unwatch() {
+ throw new UnsupportedOperationException("Cluster does not support unwatch");
+ }
+
+ @Override
+ public Client getClient() {
+ throw new UnsupportedOperationException("Cluster does not support pipeline");
+ }
+
+ @Override
+ public void disconnect() {
+ cluster.close();
+ }
+}
diff --git a/src/main/java/com/redislabs/redisgraph/impl/api/ContextedRedisGraph.java b/src/main/java/com/redislabs/redisgraph/impl/api/ContextedRedisGraph.java
index 4d6fe34..d099f85 100644
--- a/src/main/java/com/redislabs/redisgraph/impl/api/ContextedRedisGraph.java
+++ b/src/main/java/com/redislabs/redisgraph/impl/api/ContextedRedisGraph.java
@@ -2,6 +2,7 @@
import java.util.List;
+import com.redislabs.redisgraph.Connection;
import com.redislabs.redisgraph.RedisGraphContext;
import com.redislabs.redisgraph.ResultSet;
import com.redislabs.redisgraph.exceptions.JRedisGraphException;
@@ -20,14 +21,14 @@
*/
public class ContextedRedisGraph extends AbstractRedisGraph implements RedisGraphContext, RedisGraphCacheHolder {
- private final Jedis connectionContext;
+ private final Connection connectionContext;
private RedisGraphCaches caches;
/**
* Generates a new instance with a specific Jedis connection
* @param connectionContext
*/
- public ContextedRedisGraph(Jedis connectionContext) {
+ public ContextedRedisGraph(Connection connectionContext) {
this.connectionContext = connectionContext;
}
@@ -36,7 +37,7 @@ public ContextedRedisGraph(Jedis connectionContext) {
* @return
*/
@Override
- protected Jedis getConnection() {
+ protected Connection getConnection() {
return this.connectionContext;
}
@@ -48,7 +49,7 @@ protected Jedis getConnection() {
*/
@Override
protected ResultSet sendQuery(String graphId, String preparedQuery) {
- Jedis conn = getConnection();
+ Connection conn = getConnection();
try {
@SuppressWarnings("unchecked")
List