diff --git a/xwiki-platform-core/xwiki-platform-livedata/xwiki-platform-livedata-api/src/main/java/org/xwiki/livedata/internal/DefaultLiveDataConfigurationResolver.java b/xwiki-platform-core/xwiki-platform-livedata/xwiki-platform-livedata-api/src/main/java/org/xwiki/livedata/internal/DefaultLiveDataConfigurationResolver.java index 24c90debefbe..a4f11563ff9f 100644 --- a/xwiki-platform-core/xwiki-platform-livedata/xwiki-platform-livedata-api/src/main/java/org/xwiki/livedata/internal/DefaultLiveDataConfigurationResolver.java +++ b/xwiki-platform-core/xwiki-platform-livedata/xwiki-platform-livedata-api/src/main/java/org/xwiki/livedata/internal/DefaultLiveDataConfigurationResolver.java @@ -116,7 +116,11 @@ private LiveDataConfiguration mergeBaseConfig(LiveDataConfiguration config) thro // Prevent null values (make the configuration explicit). mergedConfig.initialize(); - handleLayouts(config.getMeta().getLayouts(), mergedConfig.getMeta()); + Collection layout = null; + if (config.getMeta() != null) { + layout = config.getMeta().getLayouts(); + } + handleLayouts(layout, mergedConfig.getMeta()); handlePageSizes(mergedConfig); // Translate using the context locale. diff --git a/xwiki-platform-core/xwiki-platform-livedata/xwiki-platform-livedata-api/src/test/java/org/xwiki/livedata/internal/DefaultLiveDataConfigurationResolverTest.java b/xwiki-platform-core/xwiki-platform-livedata/xwiki-platform-livedata-api/src/test/java/org/xwiki/livedata/internal/DefaultLiveDataConfigurationResolverTest.java index 930ff531cef0..1ad8b1578d7a 100644 --- a/xwiki-platform-core/xwiki-platform-livedata/xwiki-platform-livedata-api/src/test/java/org/xwiki/livedata/internal/DefaultLiveDataConfigurationResolverTest.java +++ b/xwiki-platform-core/xwiki-platform-livedata/xwiki-platform-livedata-api/src/test/java/org/xwiki/livedata/internal/DefaultLiveDataConfigurationResolverTest.java @@ -176,6 +176,22 @@ void withInitialize() throws Exception this.resolver.resolve(this.resolver.resolve(config))); } + /** + * Test to avoid regression on XWIKI-23523. + * We need to ensure that we can resolve a configuration with meta=null. + */ + @Test + void withMetaNull() throws Exception + { + LiveDataConfiguration config = new LiveDataConfiguration(); + config.initialize(); + config.setMeta(null); + String expected = FileUtils.readFileToString(new File("src/test/resources/withInitialize.json"), + Charset.defaultCharset()); + assertEquals(this.objectMapper.readValue(expected, LiveDataConfiguration.class), + this.resolver.resolve(this.resolver.resolve(config))); + } + private static Stream getTestData() throws Exception { return DATA_PROVIDER.getTestData(new File("src/test/resources/DefaultLiveDataConfigurationResolver.test"));