private void internalChildEvent()

in curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledCacheImpl.java [149:193]


    private void internalChildEvent(TreeCacheEvent event) {
        switch (event.getType()) {
            case NODE_ADDED:
            case NODE_UPDATED: {
                ZPath path = ZPath.parse(event.getData().getPath());
                byte[] bytes = event.getData().getData();
                if ((bytes != null) && (bytes.length > 0)) // otherwise it's probably just a parent node being created
                {
                    T model = serializer.deserialize(bytes);
                    entries.put(path, new Entry<>(event.getData().getStat(), model));
                    ModeledCacheListener.Type type = (event.getType() == TreeCacheEvent.Type.NODE_ADDED)
                            ? ModeledCacheListener.Type.NODE_ADDED
                            : ModeledCacheListener.Type.NODE_UPDATED;
                    accept(type, path, event.getData().getStat(), model);
                }
                break;
            }

            case NODE_REMOVED: {
                ZPath path = ZPath.parse(event.getData().getPath());
                Entry<T> entry = entries.remove(path);
                T model = null;
                if (entry != null) {
                    model = entry.model;
                } else if (event.getData().getData() != null) {
                    model = serializer.deserialize(event.getData().getData());
                }
                if (model != null) {
                    Stat stat = (entry != null) ? entry.stat : event.getData().getStat();
                    accept(ModeledCacheListener.Type.NODE_REMOVED, path, stat, model);
                }

                break;
            }

            case INITIALIZED: {
                listenerContainer.forEach(ModeledCacheListener::initialized);
                break;
            }

            default:
                // ignore
                break;
        }
    }