Skip to content

Commit f2a63d4

Browse files
authored
XWIKI-23523: Livedata crash with NPE when used with custom data source (#4571)
1 parent d181581 commit f2a63d4

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

xwiki-platform-core/xwiki-platform-livedata/xwiki-platform-livedata-api/src/main/java/org/xwiki/livedata/internal/DefaultLiveDataConfigurationResolver.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,11 @@ private LiveDataConfiguration mergeBaseConfig(LiveDataConfiguration config) thro
116116
// Prevent null values (make the configuration explicit).
117117
mergedConfig.initialize();
118118

119-
handleLayouts(config.getMeta().getLayouts(), mergedConfig.getMeta());
119+
Collection<LiveDataLayoutDescriptor> layout = null;
120+
if (config.getMeta() != null) {
121+
layout = config.getMeta().getLayouts();
122+
}
123+
handleLayouts(layout, mergedConfig.getMeta());
120124
handlePageSizes(mergedConfig);
121125

122126
// Translate using the context locale.

xwiki-platform-core/xwiki-platform-livedata/xwiki-platform-livedata-api/src/test/java/org/xwiki/livedata/internal/DefaultLiveDataConfigurationResolverTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,22 @@ void withInitialize() throws Exception
176176
this.resolver.resolve(this.resolver.resolve(config)));
177177
}
178178

179+
/**
180+
* Test to avoid regression on XWIKI-23523.
181+
* We need to ensure that we can resolve a configuration with meta=null.
182+
*/
183+
@Test
184+
void withMetaNull() throws Exception
185+
{
186+
LiveDataConfiguration config = new LiveDataConfiguration();
187+
config.initialize();
188+
config.setMeta(null);
189+
String expected = FileUtils.readFileToString(new File("src/test/resources/withInitialize.json"),
190+
Charset.defaultCharset());
191+
assertEquals(this.objectMapper.readValue(expected, LiveDataConfiguration.class),
192+
this.resolver.resolve(this.resolver.resolve(config)));
193+
}
194+
179195
private static Stream<String[]> getTestData() throws Exception
180196
{
181197
return DATA_PROVIDER.getTestData(new File("src/test/resources/DefaultLiveDataConfigurationResolver.test"));

0 commit comments

Comments
 (0)