enhancement
major
minor
major
minor
defect
(User-visible)
The Administration > Monitor > Threads view displays all threads in the system and their details.
If no thread is selected in the table (e.g., all threads are filtered out so that the table is empty), a NullPointerException occurs in the detail component:
java.lang.RuntimeException: Cannot filter table 'com.top_logic/admin/monitor/thread/threadMonitor.layout.xml#threadList' for columns 'name'. (java.lang.NullPointerException)
at com.top_logic.basic.ExceptionUtil.createException(ExceptionUtil.java:74)
at com.top_logic.layout.table.TableViewModel.validate(TableViewModel.java:1364)
at com.top_logic.layout.table.TableViewModel.validate(TableViewModel.java:2984)
at com.top_logic.util.DefaultValidationQueue.actualValidation(DefaultValidationQueue.java:122)
at com.top_logic.util.DefaultValidationQueue.runValidation(DefaultValidationQueue.java:99)
at com.top_logic.layout.internal.SubsessionHandler.runValidation(SubsessionHandler.java:342)
at com.top_logic.mig.html.layout.MainLayout.globallyValidateModel(MainLayout.java:1609)
at com.top_logic.base.services.simpleajax.AJAXServlet.validate(AJAXServlet.java:688)
at com.top_logic.base.services.simpleajax.AJAXServlet.validate(AJAXServlet.java:669)
at com.top_logic.base.services.simpleajax.AJAXServlet.doPost(AJAXServlet.java:359)
at ...
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at com.top_logic.util.monitor.thread.ThreadDetailComponent.updateThreadState(ThreadDetailComponent.java:179)
at com.top_logic.util.monitor.thread.ThreadDetailComponent.updateForm(ThreadDetailComponent.java:224)
at com.top_logic.layout.form.component.FormComponent.afterModelSet(FormComponent.java:399)
at com.top_logic.mig.html.layout.LayoutComponent$2.handleNewValue(LayoutComponent.java:828)
at com.top_logic.layout.channel.AbstractComponentChannel.notifyNewValue(AbstractComponentChannel.java:232)
at com.top_logic.layout.channel.DefaultChannel.storeValue(DefaultChannel.java:42)
at com.top_logic.layout.channel.AbstractComponentChannel.set(AbstractComponentChannel.java:92)
at com.top_logic.layout.channel.BidirectionalComponentChannel.handleNewValue(BidirectionalComponentChannel.java:61)
at com.top_logic.layout.channel.AbstractComponentChannel.notifyNewValue(AbstractComponentChannel.java:232)
at com.top_logic.layout.channel.DefaultChannel.storeValue(DefaultChannel.java:42)
at com.top_logic.layout.channel.AbstractComponentChannel.set(AbstractComponentChannel.java:92)
at com.top_logic.layout.component.Selectable.setSelected(Selectable.java:115)
at com.top_logic.layout.table.component.TableComponent.updateSelection(TableComponent.java:765)
at com.top_logic.layout.table.component.TableComponent$4.valueChanged(TableComponent.java:369)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211)
at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:405)
at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:415)
at javax.swing.DefaultListSelectionModel.removeSelectionIntervalImpl(DefaultListSelectionModel.java:576)
at javax.swing.DefaultListSelectionModel.clearSelection(DefaultListSelectionModel.java:420)
at com.top_logic.layout.table.SelectionUpdater.applySelectionUpdate(SelectionUpdater.java:62)
at com.top_logic.layout.table.TableViewModel.handleTableModelEvent(TableViewModel.java:1529)
at com.top_logic.layout.table.WeakTableModelListener.handleTableModelEvent(WeakTableModelListener.java:49)
at com.top_logic.layout.table.model.DelegatingTableModel.fireTableModelEvent(DelegatingTableModel.java:280)
at com.top_logic.layout.table.model.DelegatingTableModel$InnerTableModelListener.handleTableModelEvent(DelegatingTableModel.java:267)
at com.top_logic.layout.table.model.AbstractTableModel.fireTableModelEvent(AbstractTableModel.java:150)
at com.top_logic.layout.table.model.AbstractTableModel.fireTableModelEvent(AbstractTableModel.java:138)
at com.top_logic.layout.table.model.AbstractObjectTableModel.setFilter(AbstractObjectTableModel.java:59)
at com.top_logic.layout.table.model.DelegatingTableModel.setFilter(DelegatingTableModel.java:311)
at com.top_logic.layout.table.TableViewModel.validate(TableViewModel.java:1361)
Test
- TestThreadMonitor-01_NoThreadSelected.script.xml or
- Go to Administration > Monitor > Threads
- Filter out all threads.
- Expected result: No error occurs.