{"record":{"id":"2add8addb12b1dbb","repo":"flowable/flowable-engine","slug":"eventid-is-null","errorCode":null,"errorMessage":"eventId is null","messagePattern":"eventId is null","errorType":"exception","errorClass":"FlowableIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable-engine/src/main/java/org/flowable/engine/impl/cmd/GetTaskEventCmd.java","lineNumber":36,"sourceCode":"import org.flowable.common.engine.api.FlowableIllegalArgumentException;\nimport org.flowable.common.engine.impl.interceptor.Command;\nimport org.flowable.common.engine.impl.interceptor.CommandContext;\nimport org.flowable.engine.impl.util.CommandContextUtil;\nimport org.flowable.engine.task.Event;\n\n/**\n * @author Frederik Heremans\n */\npublic class GetTaskEventCmd implements Command<Event>, Serializable {\n\n    private static final long serialVersionUID = 1L;\n    protected String eventId;\n\n    public GetTaskEventCmd(String eventId) {\n        this.eventId = eventId;\n\n        if (eventId == null) {\n            throw new FlowableIllegalArgumentException(\"eventId is null\");\n        }\n    }\n\n    @Override\n    public Event execute(CommandContext commandContext) {\n        return CommandContextUtil.getCommentEntityManager(commandContext).findEvent(eventId);\n    }\n}\n","sourceCodeStart":18,"sourceCodeEnd":45,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-engine/src/main/java/org/flowable/engine/impl/cmd/GetTaskEventCmd.java#L18-L45","documentation":"GetTaskEventCmd looks up a single task/event record (e.g. a comment event) by eventId. The constructor validates immediately and throws FlowableIllegalArgumentException if eventId is null, because event lookup requires an identifier.","triggerScenarios":"Calling taskService.getEvent(eventId) or taskService.getTaskEvent(eventId) with a null eventId, or constructing new GetTaskEventCmd(null).","commonSituations":"Event id sourced from a process variable or request parameter that is absent; calling getEvent on an engine where events/comments were not recorded so no id was ever captured.","solutions":["Only call getEvent with an id previously returned by getTaskEvents/getProcessInstanceComments or an Event object's getId()","Null-check eventId in caller code before invoking the API","If events may not exist, list events first (taskService.getTaskEvents(taskId)) and read ids from results"],"exampleFix":"// before\nEvent event = taskService.getEvent(eventId); // eventId null\n// after\nif (eventId != null) {\n    Event event = taskService.getEvent(eventId);\n}","handlingStrategy":"validation","validationCode":"if (eventId == null) {\n    throw new IllegalArgumentException(\"eventId is required\");\n}","typeGuard":"boolean hasEventId(String id) {\n    return id != null && !id.trim().isEmpty();\n}","tryCatchPattern":"try {\n    Event event = taskService.getEvent(eventId);\n} catch (FlowableIllegalArgumentException e) {\n    log.warn(\"getEvent called with null eventId\", e);\n}","preventionTips":["Only use ids returned from getTaskEvents or Event.getId()","List events first when unsure whether an event exists"],"tags":["java","flowable","null-argument","event"],"backgroundTag":"null-argument","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}