Skip to content

Commit c556a1c

Browse files
christophechevalierZorin95670
authored andcommitted
fix(task): handle null configuration in TaskEngine.execute
Add null check for entity configuration and tasks list to prevent NullPointerException when TaskEngine.execute is called before entity configuration is set (e.g., during beforeTokenValidation phases).
1 parent 188a98e commit c556a1c

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

src/main/java/io/github/linagora/linid/im/plugin/task/TaskEngineImpl.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,11 @@ public class TaskEngineImpl implements TaskEngine {
6565

6666
@Override
6767
public void execute(DynamicEntity dynamicEntity, TaskExecutionContext context, String phase) {
68-
dynamicEntity.getConfiguration().getTasks()
68+
var configuration = dynamicEntity.getConfiguration();
69+
if (configuration == null) {
70+
return;
71+
}
72+
configuration.getTasks()
6973
.stream()
7074
.filter(task -> task.getPhases().contains(phase))
7175
.map(this::mergeConfigurationWithGlobal)

src/test/java/io/github/linagora/linid/im/plugin/task/TaskEngineImplTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,20 @@ void testExecuteWithNullTasks() {
210210
Mockito.verifyNoInteractions(configurationService);
211211
}
212212

213+
@Test
214+
@DisplayName("test execute: should not throw when configuration is null")
215+
void testExecuteWithNullConfiguration() {
216+
var entity = Mockito.mock(DynamicEntity.class);
217+
Mockito.when(entity.getConfiguration()).thenReturn(null);
218+
219+
// Should not throw NullPointerException
220+
taskEngine.execute(entity, new TaskExecutionContext(), "myphase");
221+
222+
// Verify no plugin interaction occurred
223+
Mockito.verifyNoInteractions(taskRegistry);
224+
Mockito.verifyNoInteractions(configurationService);
225+
}
226+
213227
public static class DummyPlugin implements TaskPlugin {
214228
@Override
215229
public boolean supports(@NonNull String type) {

0 commit comments

Comments
 (0)