{"record":{"id":"54ff5c60d3b4d67d","repo":"flowable/flowable-engine","slug":"name-is-null-54ff5c","errorCode":null,"errorMessage":"name is null","messagePattern":"name is null","errorType":"validation","errorClass":"ActivitiIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable5-engine/src/main/java/org/activiti/engine/impl/ModelQueryImpl.java","lineNumber":94,"sourceCode":"            throw new ActivitiIllegalArgumentException(\"categoryLike is null\");\n        }\n        this.categoryLike = categoryLike;\n        return this;\n    }\n\n    @Override\n    public ModelQueryImpl modelCategoryNotEquals(String categoryNotEquals) {\n        if (categoryNotEquals == null) {\n            throw new ActivitiIllegalArgumentException(\"categoryNotEquals is null\");\n        }\n        this.categoryNotEquals = categoryNotEquals;\n        return this;\n    }\n\n    @Override\n    public ModelQueryImpl modelName(String name) {\n        if (name == null) {\n            throw new ActivitiIllegalArgumentException(\"name is null\");\n        }\n        this.name = name;\n        return this;\n    }\n\n    @Override\n    public ModelQueryImpl modelNameLike(String nameLike) {\n        if (nameLike == null) {\n            throw new ActivitiIllegalArgumentException(\"nameLike is null\");\n        }\n        this.nameLike = nameLike;\n        return this;\n    }\n\n    @Override\n    public ModelQuery modelKey(String key) {\n        if (key == null) {\n            throw new ActivitiIllegalArgumentException(\"key is null\");","sourceCodeStart":76,"sourceCodeEnd":112,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable5-engine/src/main/java/org/activiti/engine/impl/ModelQueryImpl.java#L76-L112","documentation":"ModelQueryImpl.modelName(String) sets an exact-match filter on the model name and rejects null — to query all models, simply don't apply the name filter. Null input throws ActivitiIllegalArgumentException.","triggerScenarios":"repositoryService.createModelQuery().modelName(name) with a null name, typically an unpopulated request field or variable.","commonSituations":"Search form submitted without a name; JSON body field missing so the mapped Java field stays null; variable renamed elsewhere and now unset at the call site.","solutions":["Guard the value with a null/empty check before applying the filter","Skip the name filter when no name is specified","For partial matching use modelNameLike with a validated non-null pattern"],"exampleFix":"// before\nquery.modelName(filter.getName());\n// after\nif (filter.getName() != null) { query.modelName(filter.getName()); }","handlingStrategy":"validation","validationCode":"if (name != null && !name.isEmpty()) { query.modelName(name); }","typeGuard":"boolean hasText(String s) { return s != null && !s.trim().isEmpty(); }","tryCatchPattern":"try {\n    query.modelName(name);\n} catch (ActivitiIllegalArgumentException e) {\n    // run query without name filter\n}","preventionTips":["Validate DTO fields before mapping them into query filters","Use conditional filter building for optional search fields","Prefer Optional<String> in your own filter-builder API to force explicit handling"],"tags":["java","flowable","model-query","null-check","query-filter"],"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"}