{"record":{"id":"b620fe34793cada1","repo":"flowable/flowable-engine","slug":"provided-name-is-null","errorCode":null,"errorMessage":"Provided name is null","messagePattern":"Provided name is null","errorType":"validation","errorClass":"FlowableIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable-idm-engine/src/main/java/org/flowable/idm/engine/impl/GroupQueryImpl.java","lineNumber":76,"sourceCode":"            throw new FlowableIllegalArgumentException(\"Provided id is null\");\n        }\n        this.id = id;\n        return this;\n    }\n\n    @Override\n    public GroupQuery groupIds(List<String> ids) {\n        if (ids == null) {\n            throw new FlowableIllegalArgumentException(\"Provided id list is null\");\n        }\n        this.ids = ids;\n        return this;\n    }\n\n    @Override\n    public GroupQuery groupName(String name) {\n        if (name == null) {\n            throw new FlowableIllegalArgumentException(\"Provided name is null\");\n        }\n        this.name = name;\n        return this;\n    }\n\n    @Override\n    public GroupQuery groupNameLike(String nameLike) {\n        if (nameLike == null) {\n            throw new FlowableIllegalArgumentException(\"Provided name is null\");\n        }\n        this.nameLike = nameLike;\n        return this;\n    }\n\n    @Override\n    public GroupQuery groupNameLikeIgnoreCase(String nameLikeIgnoreCase) {\n        if (nameLikeIgnoreCase == null) {\n            throw new FlowableIllegalArgumentException(\"Provided name is null\");","sourceCodeStart":58,"sourceCodeEnd":94,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-idm-engine/src/main/java/org/flowable/idm/engine/impl/GroupQueryImpl.java#L58-L94","documentation":"Fluent-setter validation in GroupQueryImpl.groupName: a null name filter was passed to the identity group query and is rejected as a caller error before query execution.","triggerScenarios":"Calling .groupName(null), usually because the name parameter originates from nullable user input or an optional lookup result.","commonSituations":"Search forms with an empty/unset name field, controller code passing null when a filter is absent, refactors turning empty-string filters into null.","solutions":["Guard for null before calling groupName(); omit the filter when the name is absent.","If 'absent' should mean match-all, do not add the criterion.","Convert empty strings to a deliberate decision: either filter on \"\" or skip the criterion.","Validate request parameters at the boundary before query construction."],"exampleFix":"// before\nString name = filter.getName(); // may be null\nquery = identityService.createGroupQuery().groupName(name);\n// after\nGroupQuery query = identityService.createGroupQuery();\nif (filter.getName() != null) {\n    query = query.groupName(filter.getName());\n}","handlingStrategy":"validation","validationCode":"GroupQuery q = identityService.createGroupQuery();\nif (name != null) {\n    q = q.groupName(name);\n}","typeGuard":null,"tryCatchPattern":"try {\n    q = q.groupName(name);\n} catch (FlowableIllegalArgumentException e) {\n    throw new BadRequestException(\"group name must not be null\", e);\n}","preventionTips":["Treat absent filters as 'omit criterion', not null values.","Validate search/filter DTOs before building queries.","Avoid converting empty-string filters to null without deciding the semantics.","Write tests covering each query criterion with null inputs."],"tags":["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-18T11:17:12.947Z"}