{"record":{"id":"e85c498b172e0ad1","repo":"flowable/flowable-engine","slug":"categorynotequals-is-null-e85c49","errorCode":null,"errorMessage":"categoryNotEquals is null","messagePattern":"categoryNotEquals is null","errorType":"validation","errorClass":"FlowableIllegalArgumentException","httpStatus":null,"severity":"warning","filePath":"modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/impl/DecisionQueryImpl.java","lineNumber":106,"sourceCode":"            throw new FlowableIllegalArgumentException(\"category is null\");\n        }\n        this.category = category;\n        return this;\n    }\n\n    @Override\n    public DecisionQueryImpl decisionCategoryLike(String categoryLike) {\n        if (categoryLike == null) {\n            throw new FlowableIllegalArgumentException(\"categoryLike is null\");\n        }\n        this.categoryLike = categoryLike;\n        return this;\n    }\n\n    @Override\n    public DecisionQueryImpl decisionCategoryNotEquals(String categoryNotEquals) {\n        if (categoryNotEquals == null) {\n            throw new FlowableIllegalArgumentException(\"categoryNotEquals is null\");\n        }\n        this.categoryNotEquals = categoryNotEquals;\n        return this;\n    }\n\n    @Override\n    public DecisionQueryImpl decisionName(String name) {\n        if (name == null) {\n            throw new FlowableIllegalArgumentException(\"name is null\");\n        }\n        this.name = name;\n        return this;\n    }\n\n    @Override\n    public DecisionQueryImpl decisionNameLike(String nameLike) {\n        if (nameLike == null) {\n            throw new FlowableIllegalArgumentException(\"nameLike is null\");","sourceCodeStart":88,"sourceCodeEnd":124,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/impl/DecisionQueryImpl.java#L88-L124","documentation":"DecisionQueryImpl.decisionCategoryNotEquals rejects a null categoryNotEquals value with FlowableIllegalArgumentException. Excluding by a null category is meaningless, so the query fails fast at construction.","triggerScenarios":"Calling decisionCategoryNotEquals(value) with value == null.","commonSituations":"Optional exclusion filter sourced from a request or config entry that is null.","solutions":["Skip the call when the exclusion value is null.","Pass a concrete category string to exclude.","If you meant 'category is not null', there is a separate API (decisionCategoryNotNull); use that instead."],"exampleFix":"// before\nquery.decisionCategoryNotEquals(excludedCategory); // null\n\n// after\nif (excludedCategory != null) {\n    query.decisionCategoryNotEquals(excludedCategory);\n}","handlingStrategy":"validation","validationCode":"if (categoryNotEquals != null) { query.decisionCategoryNotEquals(categoryNotEquals); }","typeGuard":"boolean hasExclusion = (categoryNotEquals != null && !categoryNotEquals.isEmpty());","tryCatchPattern":"try {\n    query.decisionCategoryNotEquals(excluded);\n} catch (FlowableIllegalArgumentException e) {\n    // treat as no exclusion filter\n}","preventionTips":["Only apply exclusion filters with concrete values","Use decisionCategoryNotNull when you mean 'exclude null categories'","Default exclusion values at the config layer"],"tags":["null-check","query","validation","java"],"backgroundTag":"null-argument","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}