I’ve got a fairly simple TreeGrid + TreeDataProvider setup that is throwing “IllegalArgumentException: Hierarchical data provider doesn’t support non-hierarchical queries” using Vaadin 8.6.4. I can’t seem to figure out why.
Any suggestions would be greatly appreciated!
Here’s the stack:
#0: com.vaadin.data.provider.HierarchicalDataProvider.size(HierarchicalDataProvider.java:51)
#1: com.vaadin.data.provider.DataCommunicator.getDataProviderSize(DataCommunicator.java:776)
#2: com.vaadin.data.provider.DataCommunicator.sendDataToClient(DataCommunicator.java:358)
#3: com.vaadin.data.provider.DataCommunicator.beforeClientResponse(DataCommunicator.java:338)
#4: com.vaadin.server.communication.UidlWriter.write(UidlWriter.java:126)
#5: com.vaadin.server.communication.UidlRequestHandler.writeUidl(UidlRequestHandler.java:124)
#6: com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:92)
#7: com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40)
#8: com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1601)
#9: com.vaadin.server.VaadinServlet.service(VaadinServlet.java:445)
#10: javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
#11: org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)
#12: org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655)
My basic code:
Collection<DeviceGroupRow> items = ...;
TreeData<DeviceGroupRow> data = new TreeData<>();
if (items != null) {
// Add root level items
data.addItems(null, items);
// Add children for each root level item
items.forEach( item -> {
if (item.getDeviceGroupChildren() != null)
data.addItems(item, item.getDeviceGroupChildren());
});
TreeDataProvider<DeviceGroupRow> provider = new TreeDataProvider<>(data);
provider.setSortComparator( (group1, group2) -> group1.getName().compareTo(group2.getName()) );