Verbesserung
Wichtig
Detail
Fehlerbehebung
Wichtig
Detail
#27393
Baum - Tabellen: Selektion von mehrfach vorkommenden Zeilenobjekten expandiert Teilbäume / wählt falsche Zeile
#27424
"Container" für neue Grid-Zeile nicht mandatory, aber versteckte NPE, wenn Wert gelöscht wird
Fehlerbehebung
(Nutzer-sichtbar)
Detail
#27427
Potentielle NullPointerException beim Sortieren der Ergebnisse der Schnellsuche
Hintergrund
Die Volltextsuche sortiert gefundene Objekte nach Label
Problem
In der Funktion QuickSearchCommand::sortResult() werden Objekte nach ihrem Label sortiert. Wenn ein Objekt kein Label (null) hat, produziert dies eine NullPointerEx:
Caused by: java.lang.NullPointerException at java.base/java.util.Comparator.lambda$comparing$77a9974f$1(Comparator.java:469) at java.base/java.util.TimSort.binarySort(TimSort.java:296) at java.base/java.util.TimSort.sort(TimSort.java:239) at java.base/java.util.Arrays.sort(Arrays.java:1515) at java.base/java.util.ArrayList.sort(ArrayList.java:1750) at java.base/java.util.Collections.sort(Collections.java:179) at com.top_logic.element.layout.meta.search.quick.QuickSearchCommand.sortResult(QuickSearchCommand.java:411) at com.top_logic.element.layout.meta.search.quick.AbstractSearchCommand.convertSearchResultSet(AbstractSearchCommand.java:365) at com.top_logic.element.layout.meta.search.quick.AbstractSearchCommand.search(AbstractSearchCommand.java:230) at com.top_logic.element.layout.meta.search.quick.AbstractSearchCommand.executeCommand(AbstractSearchCommand.java:190) at com.top_logic.element.layout.meta.search.quick.QuickSearchView$1.handleKeyEvent(QuickSearchView.java:153) at com.top_logic.layout.form.model.AbstractFormField.dispatchKeyEvent(AbstractFormField.java:712) at com.top_logic.layout.form.control.AbstractFormFieldControlBase.dispatchKeyEvent(AbstractFormFieldControlBase.java:103) at com.top_logic.layout.basic.KeyCodeHandler.execute(KeyCodeHandler.java:84) at com.top_logic.layout.basic.AbstractControlBase.executeCommand(AbstractControlBase.java:787) at com.top_logic.layout.basic.component.ControlSupport.executeCommand(ControlSupport.java:189) at com.top_logic.layout.basic.component.ControlComponent$DispatchAction.handleCommand(ControlComponent.java:210) at com.top_logic.tool.boundsec.CommandHandlerUtil.handleCommand(CommandHandlerUtil.java:27) at com.top_logic.mig.html.layout.LayoutComponent.dispatchCommand(LayoutComponent.java:2442) at com.top_logic.mig.html.layout.CommandDispatcher.internalDispatchCommand(CommandDispatcher.java:427)
Lösung
Zur Sortierung wird der LabelComparator benutzt. Dieser ist null-fest und sortiert zusätzlich bzgl. der Locale des Nutzers.
Test
Kein Test.