Enhancement
Major
Detail
Major
Detail
Bugfix
(User-visible)
In the Administration > Monitor > Threads view, all threads in the system and details about them are displayed.
If no thread is selected in the table with (e.g. all threads are filtered away so that the table is empty), a NullPointerException occurs in the details 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.
- Expectation: No error will occur.