redis.clients.jedis.Response Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jedis Show documentation
Show all versions of jedis Show documentation
Jedis is a blazingly small and sane Redis java client.
package redis.clients.jedis;
import redis.clients.jedis.exceptions.JedisDataException;
public class Response {
protected T response = null;
protected JedisDataException exception = null;
private boolean building = false;
private boolean built = false;
private boolean set = false;
private Builder builder;
private Object data;
private Response dependency = null;
public Response(Builder b) {
this.builder = b;
}
public void set(Object data) {
this.data = data;
set = true;
}
public T get() {
// if response has dependency response and dependency is not built,
// build it first and no more!!
if (dependency != null && dependency.set && !dependency.built) {
dependency.build();
}
if (!set) {
throw new JedisDataException(
"Please close pipeline or multi block before calling this method.");
}
if (!built) {
build();
}
if (exception != null) {
throw exception;
}
return response;
}
public void setDependency(Response dependency) {
this.dependency = dependency;
}
private void build() {
// check build state to prevent recursion
if (building) {
return;
}
building = true;
try {
if (data != null) {
if (data instanceof JedisDataException) {
exception = (JedisDataException) data;
} else {
response = builder.build(data);
}
}
data = null;
} finally {
building = false;
built = true;
}
}
@Override
public String toString() {
return "Response " + builder.toString();
}
}