private void applyNewData(String fullPath, int resultCode, Stat stat, byte[] bytes, List<String> children)
{
if ( resultCode == KeeperException.Code.OK.intValue() )
{
TreeData data = new TreeData(fullPath, stat, bytes, children);
TreeData previousData;
synchronized (this) {
previousData = currentData.getIfPresent(fullPath);
currentData.put(fullPath, data);
addToParent(fullPath);
}
if ( previousData == null )
{
offerOperation(new TreeEventOperation(this, new PathChildrenCacheEvent(PathChildrenCacheEvent.Type.CHILD_ADDED, data)));
}
else if ( previousData.getStat().getVersion() != stat.getVersion() )
{
if (!diffData || !Arrays.equals(data.getData(), previousData.getData())) {
offerOperation(new TreeEventOperation(this, new PathChildrenCacheEvent(PathChildrenCacheEvent.Type.CHILD_UPDATED, data)));
}
}
updateInitialSet(ZKPaths.getNodeFromPath(fullPath), data);
}
}