Maps "contextMenuProcessor" is null

Добрый день! JMIX 1.6 + maps.addon. При клике правой кнопкой мыши на объект векторного слоя получаю:

NullPointerException: Cannot invoke “io.jmix.mapsui.component.ContextMenuProcessor.process(io.jmix.mapsui.component.ContextMenuInvocationContext)” because “contextMenuProcessor” is null

Ошибка генерируется методом void applyContextMenu(ContextMenuProcessor contextMenuProcessor) класса GeoObjectWrapper. Это происходит если создавать векторный слой передавая в него контейнер уже заполненный объектами. Такое впечатление что в этом случае в методе translateLayer(VectorLayer vectorLayer) класса VectorLayerLeafletLayerTranslator вызывается layerHolder.addGeoObject(entity) до того как в классе LeafletMapLayerConnector в методе translateLayer(Layer layer) произойдет инициализация необходимых переменных (конкретно leafletMapAware.setLeafletMap(lMap)).
Если добавить слой с пустым контейнером а потом добавлять в контейнер объекты ошибка уходит - однако в этом случае страдает производительность.

Добрый день!

Можете пожалуйста описать подробнее шаги воспроизведения? Если не сложно, то демо проект здорово помог бы.

Добрый день!
К сожалению предоставить тестовый проект затруднительно. Попробую описать последовательность:

protected GeoMap map;
CollectionContainer<MapObjectType> cc = dataComponents.createCollectionContainer(getMapClass())
cc.setItems(mapObjectList);
VectorLayer<MapObjectType> vl = new VectorLayer<>(layerId,cc);
map.addLayer(vl);

правая кнопка = ошибка

protected GeoMap map;
CollectionContainer<MapObjectType> cc = dataComponents.createCollectionContainer(getMapClass())
VectorLayer<MapObjectType> vl = new VectorLayer<>(layerId,cc);
map.addLayer(vl);
cc.setItems(mapObjectList);

правая кнопка = ошибки нет

1 симпатия

Спасибо за шаги воспроизведения! Создал задачу починить: ContextMenu produces NPE when VectorLayer is added programmatically · Issue #3705 · jmix-framework/jmix · GitHub