diff --git a/src/main/java/org/springframework/data/redis/connection/rjc/RjcConnection.java b/src/main/java/org/springframework/data/redis/connection/rjc/RjcConnection.java
index 67a3b5801..621dc9591 100644
--- a/src/main/java/org/springframework/data/redis/connection/rjc/RjcConnection.java
+++ b/src/main/java/org/springframework/data/redis/connection/rjc/RjcConnection.java
@@ -28,6 +28,7 @@ import org.idevlab.rjc.SessionFactoryImpl;
import org.idevlab.rjc.SortingParams;
import org.idevlab.rjc.ZParams;
import org.idevlab.rjc.message.RedisNodeSubscriber;
+import org.idevlab.rjc.protocol.Protocol.Command;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.RedisSystemException;
import org.springframework.data.redis.connection.DataType;
@@ -36,6 +37,8 @@ import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.RedisSubscribedConnectionException;
import org.springframework.data.redis.connection.SortParameters;
import org.springframework.data.redis.connection.Subscription;
+import org.springframework.util.Assert;
+import org.springframework.util.ObjectUtils;
/**
* {@code RedisConnection} implementation on top of rjc library.
@@ -49,6 +52,7 @@ public class RjcConnection implements RedisConnection {
private final Client client;
private final Session session;
+ private final org.idevlab.rjc.ds.RedisConnection connection;
private volatile Client pipeline;
private volatile RjcSubscription subscription;
@@ -60,6 +64,7 @@ public class RjcConnection implements RedisConnection {
subscriber = new RedisNodeSubscriber();
subscriber.setDataSource(new SingleDataSource(new CloseSuppressingRjcConnection(connection)));
client = new Client(connection);
+ this.connection = connection;
this.dbIndex = dbIndex;
@@ -76,7 +81,13 @@ public class RjcConnection implements RedisConnection {
return new RedisSystemException("Unknown rjc exception", ex);
}
-
+ public Object execute(String command, byte[]... args) {
+ Assert.hasText(command, "a valid command needs to be specified");
+ connection.sendCommand(Command.valueOf(command.trim().toUpperCase()),
+ (ObjectUtils.isEmpty(args) ? new byte[0][] : args));
+ return connection.getAll();
+ }
+
public void close() throws DataAccessException {
isClosed = true;
@@ -94,27 +105,27 @@ public class RjcConnection implements RedisConnection {
}
-
+
public boolean isClosed() {
return isClosed;
}
-
+
public Session getNativeConnection() {
return session;
}
-
+
public boolean isQueueing() {
return client.isInMulti();
}
-
+
public boolean isPipelined() {
return (pipeline != null);
}
-
+
public void openPipeline() {
if (pipeline == null) {
pipeline = client;
@@ -122,7 +133,6 @@ public class RjcConnection implements RedisConnection {
}
@SuppressWarnings("unchecked")
-
public List