package org.robotninjas.barge;
import com.google.common.base.Function;
import com.google.common.base.Objects;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.Lists;
import javax.annotation.Nullable;
public class ClusterConfigStub implements ClusterConfig {
private final Replica local = new ReplicaStub("local");
private final Iterable<Replica> remote;
private ClusterConfigStub(Iterable<Replica> replicas) {
remote = Lists.newArrayList(replicas);
}
public static ClusterConfigStub getStub(String... ids) {
return new ClusterConfigStub(FluentIterable.from(Lists.newArrayList(ids))
.transform(new Function<String, Replica>() {
public Replica apply(@Nullable String input) {
return new ReplicaStub(input);
}
}));
}
@Override
public Replica local() {
return local;
}
@Override
public Iterable<Replica> remote() {
return remote;
}
@Override
public Replica getReplica(String info) {
return new ReplicaStub(info);
}
private static class ReplicaStub implements Replica {
private final String info;
private ReplicaStub(String info) {
this.info = info;
}
@Override
public int hashCode() {
return Objects.hashCode(info);
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof ReplicaStub)) {
return false;
}
ReplicaStub stub = (ReplicaStub) o;
return Objects.equal(stub.info, info);
}
@Override
public String toString() {
return info;
}
}
}