flowable/flowable-engine · error · ActivitiIllegalArgumentException

OwnerLikeIgnoreCase

Error message

OwnerLikeIgnoreCase

What it means

taskOwnerLikeIgnoreCase(String ownerLikeIgnoreCase) throws ActivitiIllegalArgumentException("OwnerLikeIgnoreCase") when its argument is null. The method lowercases the pattern before storing it to implement case-insensitive matching, and null cannot be lowercased or turned into a LIKE condition. Pass a non-null pattern string.

Source

Thrown at modules/flowable5-engine/src/main/java/org/activiti/engine/impl/TaskQueryImpl.java:436

    }

    @Override
    public TaskQueryImpl taskOwnerLike(String ownerLike) {
        if (ownerLike == null) {
            throw new ActivitiIllegalArgumentException("Owner is null");
        }
        if (orActive) {
            currentOrQueryObject.ownerLike = ownerLike;
        } else {
            this.ownerLike = ownerLike;
        }
        return this;
    }

    @Override
    public TaskQuery taskOwnerLikeIgnoreCase(String ownerLikeIgnoreCase) {
        if (ownerLikeIgnoreCase == null) {
            throw new ActivitiIllegalArgumentException("OwnerLikeIgnoreCase");
        }
        if (orActive) {
            currentOrQueryObject.ownerLikeIgnoreCase = ownerLikeIgnoreCase.toLowerCase();
        } else {
            this.ownerLikeIgnoreCase = ownerLikeIgnoreCase.toLowerCase();
        }
        return this;
    }

    /**
     * @see #taskUnassigned
     */
    @Override
    @Deprecated
    public TaskQuery taskUnnassigned() {
        return taskUnassigned();
    }

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Guard with a null check before calling, or only add the filter when the value exists
  2. Lowercase your input yourself only if needed - the method already lowercases it
  3. Fix the source of the null value (config, request param, variable)

Example fix

// before
query.taskOwnerLikeIgnoreCase(searchForm.getOwner()); // throws when null
// after
if (searchForm.getOwner() != null) {
    query.taskOwnerLikeIgnoreCase(searchForm.getOwner());
}
Defensive patterns

Strategy: type-guard

Validate before calling

Objects.requireNonNull(ownerLikeIgnoreCase, "ownerLikeIgnoreCase must not be null");
query.taskOwnerLikeIgnoreCase(ownerLikeIgnoreCase);

Type guard

boolean hasIgnoreCasePattern(String p) { return p != null && !p.trim().isEmpty(); }

Try / catch

try {
    query.taskOwnerLikeIgnoreCase(pattern);
} catch (ActivitiIllegalArgumentException e) {
    log.warn("Skipping ignore-case owner filter: {}", e.getMessage());
}

Prevention

When it happens

Trigger: Calling taskQuery.taskOwnerLikeIgnoreCase(null); often the argument is a computed or user-supplied value that was null at call time.

Common situations: Optional search filters from web forms; configuration keys that were not set; refactoring from taskOwnerLike to the IgnoreCase variant without adding null handling.

Related errors


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/d5684c58672626e8. Report an issue: GitHub.