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, then they cannot 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 has changed from a generic enum<?> to a concrete enum in the comparison operator. Therefore, the configuration 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. Then data migration is not necessary.
Test
- /test-app-7-4-0/src/test/java/test/scripted/TestMigration740-SearchReports.xml from #26933