Bugfix
In der Sicht Administration > Monitor > Threads werden alle Threads im System und Details hierzu angezeigt.
Wenn in der Tabelle mit kein Thread selektiert ist (z.B. werden alle Threads weggefiltert, so dass die Tabelle leer ist), kommt es in der Detail-Komponente zu einer NullPointerException:
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 oder
- Nach Administration > Monitor > Threads wechseln
- Alle Threads wegfiltern.
- Erwartung: Es kommt zu keinem Fehler.