Skip to content

Commit a9abded

Browse files
XWIKI-23523: Livedata crash with NPE when used with custom data source (#4571) (#4667)
Co-authored-by: Josue-T <josue.tille@xwiki.com>
1 parent 21287d3 commit a9abded

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
@@ -174,6 +174,22 @@ void withInitialize() throws Exception
174174
.writeValueAsString(this.resolver.resolve(this.resolver.resolve(config))));
175175
}
176176

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

0 commit comments

Comments
 (0)