package edu.uw.zookeeper.client; import java.util.List; import com.google.common.base.Function; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import edu.uw.zookeeper.data.Operations; import edu.uw.zookeeper.data.ZNodePath; import edu.uw.zookeeper.protocol.proto.Records; public class PathToRequests implements Function<ZNodePath, List<Records.Request>> { public static PathToRequests forRequests(Operations.Builder<? extends Records.Request>... builders) { return forIterable(ImmutableList.copyOf(builders)); } public static PathToRequests forIterable(Iterable<? extends Operations.Builder<? extends Records.Request>> builders) { return new PathToRequests(ImmutableList.copyOf(builders)); } private final ImmutableList<? extends Operations.Builder<? extends Records.Request>> builders; protected PathToRequests(ImmutableList<? extends Operations.Builder<? extends Records.Request>> builders) { this.builders = builders; } public ImmutableList<? extends Operations.Builder<? extends Records.Request>> builders() { return builders; } @Override public List<Records.Request> apply(final ZNodePath path) { List<Records.Request> requests = Lists.newArrayListWithCapacity(builders.size()); for (Operations.Builder<? extends Records.Request> builder: builders) { if (builder instanceof Operations.PathBuilder<?,?>) { ((Operations.PathBuilder<?,?>) builder).setPath(path); } requests.add(builder.build()); } return requests; } @Override public String toString() { return MoreObjects.toStringHelper(this).addValue(builders).toString(); } }