Major
Detail
Detail
#27027
Declarative forms: SelectField disappears after upload if option list depends on mandatory property
#27042
MaintenanceJspBase should write to the log first, then to the client, instead of the other way around.
Bugfix
(User-visible)
Detail
#27047
Avoiding data migration in #25732: Saved search queries may no longer be readable
If saved search queries contain comparison operators, these can no longer be read after the update.
com.top_logic.basic.config.ConfigurationException: Invalid value 'com.top_logic.model.search.ui.model.operator.StringCompare$Kind:CONTAINS' for property 'kind' (com.top_logic.model.search.ui.model.operator.StringCompare.getKind()) at [no name] line 28 column 16: com.top_logic.basic.config.ConfigurationException: Invalid value 'com.top_logic.model.search.ui.model.operator.StringCompare$Kind:CONTAINS', expected is one of 'CONTAINS, EQUALS, STARTS_WITH, ENDS_WITH, GE, GT, LE, LT, NOT_CONTAINS, NOT_EQUALS, NOT_STARTS_WITH, NOT_ENDS_WITH'.. at com.top_logic.basic.config.ConfigurationReader$Handler.parseValue(ConfigurationReader.java:184) at com.top_logic.basic.config.ConfigurationReader$Handler.readContents(ConfigurationReader.java:299) at com.top_logic.basic.config.ConfigurationReader$Handler.readNextElement(ConfigurationReader.java:205) ... at com.top_logic.basic.config.ConfigurationReader$Handler.parseContents(ConfigurationReader.java:167) at com.top_logic.basic.config.ConfigurationReader$Handler.parse(ConfigurationReader.java:112) at com.top_logic.basic.config.ConfigurationReader.parseAndClose(ConfigurationReader.java:2164) at com.top_logic.basic.config.ConfigurationReader.readInternal(ConfigurationReader.java:2144) at com.top_logic.basic.config.ConfigurationReader.readInternal(ConfigurationReader.java:2127) at com.top_logic.basic.config.ConfigurationReader.read(ConfigurationReader.java:2110) at com.top_logic.basic.config.ConfigurationReader.read(ConfigurationReader.java:2072) at com.top_logic.basic.config.TypedConfiguration.readConfig(TypedConfiguration.java:723) at com.top_logic.basic.config.TypedConfiguration.parse(TypedConfiguration.java:679) at com.top_logic.basic.config.TypedConfiguration.parse(TypedConfiguration.java:655) at com.top_logic.basic.config.TypedConfiguration.fromString(TypedConfiguration.java:634) at com.top_logic.model.search.ui.selector.SearchSelectorComponent.parseExpression(SearchSelectorComponent.java:297) ... 29 more Caused by: com.top_logic.basic.config.ConfigurationException: Invalid value 'com.top_logic.model.search.ui.model.operator.StringCompare$Kind:CONTAINS', expected is one of 'CONTAINS, EQUALS, STARTS_WITH, ENDS_WITH, GE, GT, LE, LT, NOT_CONTAINS, NOT_EQUALS, NOT_STARTS_WITH, NOT_ENDS_WITH'. at com.top_logic.basic.config.ConfigUtil.getEnum(ConfigUtil.java:2152) at com.top_logic.basic.config.format.BuiltInFormats$NullableEnumValueProvider.getValueNonEmpty(BuiltInFormats.java:44) at com.top_logic.basic.config.format.BuiltInFormats$NullableEnumValueProvider.getValueNonEmpty(BuiltInFormats.java:1) at com.top_logic.basic.config.AbstractConfigurationValueProvider.getValue(AbstractConfigurationValueProvider.java:31) at com.top_logic.basic.config.ConfigurationReader$Handler.parseValue(ConfigurationReader.java:182)
The problem is that the configuration schema in the comparison operator has been changed from a generic enum<?> to a concrete enum. The configuration therefore still contains the fully qualified name of the enum constant.
Solution
The format for reading concrete enum constants now also supports the specification of a fully qualified name. Data migration is then not necessary.
Test
- /test-app-7-4-0/src/test/java/test/scripted/TestMigration740-SearchReports.xml from #26933