@Override
public void updated(NodeChildren nodeChildren) {
LOG.info("Listing existing children for node {}", parentZnode);
List<String> children = nodeChildren.getChildren();
for (String child : children) {
OperationFuture<NodeData> dataFuture = zookeeper.getData(joinZNode(parentZnode, child), watcher);
final String nodeName = getZNode(dataFuture.getRequestPath());
Futures.addCallback(dataFuture, new FutureCallback<NodeData>() {
@Override
public void onSuccess(NodeData result) {
LOG.debug("Got data for child {}", nodeName);
try {
final T resource = codec.decode(result.getData());
loaded.put(nodeName, resource);
listeners.notifyResourceUpdate(nodeName, resource);
} catch (IOException ioe) {
throw Throwables.propagate(ioe);
}
}
@Override
public void onFailure(Throwable t) {
LOG.error("Failed to get data for child node {}", nodeName, t);
listeners.notifyError(nodeName, t);
}
});
LOG.debug("Added future for {}", child);
}
}
});