{"record":{"id":"56a76620079c7ed6","repo":"flowable/flowable-engine","slug":"namelike-is-null-56a766","errorCode":null,"errorMessage":"nameLike is null","messagePattern":"nameLike 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":124,"sourceCode":"            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\");\n        }\n        this.nameLike = nameLike;\n        return this;\n    }\n\n    @Override\n    public DecisionQueryImpl deploymentId(String deploymentId) {\n        if (deploymentId == null) {\n            throw new FlowableIllegalArgumentException(\"id is null\");\n        }\n        this.deploymentId = deploymentId;\n        return this;\n    }\n\n    @Override\n    public DecisionQueryImpl deploymentIds(Set<String> deploymentIds) {\n        if (deploymentIds == null) {\n            throw new FlowableIllegalArgumentException(\"ids are null\");","sourceCodeStart":106,"sourceCodeEnd":142,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/impl/DecisionQueryImpl.java#L106-L142","documentation":"Fluent-setter validation in DecisionQueryImpl.decisionNameLike: the LIKE pattern for the decision name is null and is rejected by the query builder before any SQL is generated.","triggerScenarios":"Calling decisionNameLike(pattern) where the pattern variable is null, e.g. \"%\" + null-derived input.","commonSituations":"Search-as-you-type UIs sending empty/null search terms; optional filters built from absent request parameters.","solutions":["Only invoke decisionNameLike with a non-null pattern.","Skip the filter when no search term is present.","Trim/normalize the input and fall back to no filter when blank."],"exampleFix":"// before\nString term = request.getSearch();\nquery.decisionNameLike(\"%\" + term + \"%\"); // term null\n\n// after\nString term = request.getSearch();\nif (term != null && !term.isBlank()) {\n    query.decisionNameLike(\"%\" + term + \"%\");\n}","handlingStrategy":"validation","validationCode":"if (nameLike != null && !nameLike.isBlank()) { query.decisionNameLike(\"%\" + nameLike.trim() + \"%\"); }","typeGuard":"boolean hasSearchTerm = (nameLike instanceof String s) && !s.isBlank();","tryCatchPattern":"try {\n    query.decisionNameLike(pattern);\n} catch (FlowableIllegalArgumentException e) {\n    // run query without the name filter\n}","preventionTips":["Reject or ignore blank search input at the API boundary","Build wildcard patterns in one guarded helper method","Test query construction with null/empty inputs"],"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-14T05:17:10.506Z"}