{"record":{"id":"2669e5e75569b039","repo":"flowable/flowable-engine","slug":"task-descriptionlikeignorecase-is-null-2669e5","errorCode":null,"errorMessage":"Task descriptionLikeIgnoreCase is null","messagePattern":"Task descriptionLikeIgnoreCase is null","errorType":"validation","errorClass":"ActivitiIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable5-engine/src/main/java/org/activiti/engine/impl/TaskQueryImpl.java","lineNumber":287,"sourceCode":"    }\n\n    @Override\n    public TaskQuery taskDescriptionLike(String descriptionLike) {\n        if (descriptionLike == null) {\n            throw new ActivitiIllegalArgumentException(\"Task descriptionlike is null\");\n        }\n        if (orActive) {\n            currentOrQueryObject.descriptionLike = descriptionLike;\n        } else {\n            this.descriptionLike = descriptionLike;\n        }\n        return this;\n    }\n\n    @Override\n    public TaskQuery taskDescriptionLikeIgnoreCase(String descriptionLikeIgnoreCase) {\n        if (descriptionLikeIgnoreCase == null) {\n            throw new ActivitiIllegalArgumentException(\"Task descriptionLikeIgnoreCase is null\");\n        }\n        if (orActive) {\n            currentOrQueryObject.descriptionLikeIgnoreCase = descriptionLikeIgnoreCase.toLowerCase();\n        } else {\n            this.descriptionLikeIgnoreCase = descriptionLikeIgnoreCase.toLowerCase();\n        }\n        return this;\n    }\n\n    @Override\n    public TaskQuery taskPriority(Integer priority) {\n        if (priority == null) {\n            throw new ActivitiIllegalArgumentException(\"Priority is null\");\n        }\n        if (orActive) {\n            currentOrQueryObject.priority = priority;\n        } else {\n            this.priority = priority;","sourceCodeStart":269,"sourceCodeEnd":305,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable5-engine/src/main/java/org/activiti/engine/impl/TaskQueryImpl.java#L269-L305","documentation":"TaskQuery.taskDescriptionLikeIgnoreCase(String) rejects null. The pattern is lowercased and stored for case-insensitive matching, but a null argument fails the initial check with ActivitiIllegalArgumentException.","triggerScenarios":"Calling taskDescriptionLikeIgnoreCase(null), e.g. an optional case-insensitive description filter left unset.","commonSituations":"Search forms with ignore-case toggles where the pattern was never entered; refactor from taskDescriptionLike to the IgnoreCase variant without adding null guards.","solutions":["Guard with if (pattern != null) before calling","Use Optional to apply the filter only when present","Normalize absent optional filters to a sentinel-free builder path (simply don't call the method)"],"exampleFix":"// before\nquery.taskDescriptionLikeIgnoreCase(request.getDescriptionLike()); // may be null\n// after\nString pattern = request.getDescriptionLike();\nif (pattern != null) {\n    query.taskDescriptionLikeIgnoreCase(pattern);\n}","handlingStrategy":"type-guard","validationCode":"if (descriptionLikeIgnoreCase == null) { /* skip filter */ }","typeGuard":"void addDescriptionLikeIgnoreCase(TaskQuery query, String pattern) {\n    if (pattern != null && !pattern.isEmpty()) {\n        query.taskDescriptionLikeIgnoreCase(pattern);\n    }\n}","tryCatchPattern":"try {\n    query.taskDescriptionLikeIgnoreCase(pattern);\n} catch (org.activiti.engine.ActivitiIllegalArgumentException e) {\n    // pattern was null: omit the filter or reject request\n}","preventionTips":["Guard all IgnoreCase variants the same way as their base methods","Validate optional search parameters before mapping to the engine query","Avoid Optional.orElse(null) patterns feeding query builders"],"tags":["activiti","task-query","null-argument","validation"],"backgroundTag":"null-argument","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T16:30:33.424Z"}