TrackingInfo.java
package redis.clients.jedis.resps;
import redis.clients.jedis.Builder;
import redis.clients.jedis.util.KeyValue;
import java.util.Collections;
import java.util.List;
import static redis.clients.jedis.BuilderFactory.*;
public class TrackingInfo {
private final List<String> flags;
private final long redirect;
private final List<String> prefixes;
public TrackingInfo(List<String> flags, long redirect, List<String> prefixes) {
this.flags = flags;
this.redirect = redirect;
this.prefixes = prefixes;
}
public List<String> getFlags() {
return flags;
}
public long getRedirect() {
return redirect;
}
public List<String> getPrefixes() {
return prefixes;
}
public static final Builder<TrackingInfo> TRACKING_INFO_BUILDER = new Builder<TrackingInfo>() {
@Override
public TrackingInfo build(Object data) {
List commandData = (List) data;
if (commandData.get(0) instanceof KeyValue) {
List<String> flags = Collections.emptyList();
long redirect = -1;
List<String> prefixes = Collections.emptyList();
for (KeyValue kv : (List<KeyValue>) commandData) {
switch (STRING.build(kv.getKey())) {
case "flags":
flags = STRING_LIST.build(kv.getValue());
break;
case "redirect":
redirect = LONG.build(kv.getValue());
break;
case "prefixes":
prefixes = STRING_LIST.build(kv.getValue());
break;
}
}
return new TrackingInfo(flags, redirect, prefixes);
} else {
List<String> flags = STRING_LIST.build(commandData.get(1));
long redirect = LONG.build(commandData.get(3));
List<String> prefixes = STRING_LIST.build(commandData.get(5));
return new TrackingInfo(flags, redirect, prefixes);
}
}
};
}