flowable/flowable-engine · error · FlowableIllegalArgumentException
Provided token date is null
Error message
Provided token date is null
What it means
Flowable's TokenQueryImpl.tokenDate(Date tokenDate) throws FlowableIllegalArgumentException when the tokenDate argument is null. An exact-match date criterion must be non-null to be bound as a query parameter. The validation runs inside the fluent method, before any database access.
Source
Thrown at modules/flowable-idm-engine/src/main/java/org/flowable/idm/engine/impl/TokenQueryImpl.java:92
throw new FlowableIllegalArgumentException("Provided ids is null");
}
this.ids = ids;
return this;
}
@Override
public TokenQuery tokenValue(String tokenValue) {
if (tokenValue == null) {
throw new FlowableIllegalArgumentException("Provided token value is null");
}
this.tokenValue = tokenValue;
return this;
}
@Override
public TokenQuery tokenDate(Date tokenDate) {
if (tokenDate == null) {
throw new FlowableIllegalArgumentException("Provided token date is null");
}
this.tokenDate = tokenDate;
return this;
}
@Override
public TokenQuery tokenDateBefore(Date tokenDateBefore) {
if (tokenDateBefore == null) {
throw new FlowableIllegalArgumentException("Provided tokenDateBefore is null");
}
this.tokenDateBefore = tokenDateBefore;
return this;
}
@Override
public TokenQuery tokenDateAfter(Date tokenDateAfter) {
if (tokenDateAfter == null) {
throw new FlowableIllegalArgumentException("Provided tokenDateAfter is null");View on GitHub (pinned to d6d39ce1c6)
Solutions
- Parse and validate the date before calling tokenDate, rejecting invalid input in your own layer
- Use tokenDateBefore/tokenDateAfter for range filtering, applying them only when non-null
- Omit the criterion when the date is absent to query without a date filter
Example fix
// before
TokenQuery query = identityService.createTokenQuery().tokenDate(date);
// after
TokenQuery query = identityService.createTokenQuery();
if (date != null) {
query.tokenDate(date);
} else {
// handle missing date input
} Defensive patterns
Strategy: validation
Validate before calling
if (tokenDate == null) { throw new IllegalArgumentException("tokenDate must not be null before tokenDate()"); } Type guard
boolean hasDate(Date d) { return d != null; } Try / catch
try { query.tokenDate(date); } catch (FlowableIllegalArgumentException e) { log.warn("Invalid token query: {}", e.getMessage()); } Prevention
- Parse dates defensively and reject null/failed parses in your own layer
- Use range filters conditionally instead of passing null exact-match dates
- Ensure date fields have defaults when deserializing request payloads
When it happens
Trigger: Calling tokenDate(null) on a TokenQuery, e.g. when a timestamp parsed from a request or configuration was null because parsing failed or the field was absent.
Common situations: Filtering tokens by creation date where the date comes from optional request parameters; date fields lost in JSON deserialization; timezone/parsing utilities returning null on failure.
Related errors
- Provided tokenDateBefore is null
- Provided tokenDateAfter is null
- Provided id is null
- Provided ids is null
- Provided token value is null
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/aa65d9c8c1217142.
Report an issue: GitHub.