didi/DoKit · error · IllegalArgumentException
Transformer must not be null.
Error message
Transformer must not be null.
What it means
DokitPicasso.Builder.requestTransformer() throws IllegalArgumentException when passed a null RequestTransformer. The transformer rewrites incoming requests before execution and must be a real object. Fail-fast null guard on configuration.
Source
Thrown at Android/dokit/src/main/java/com/didichuxing/doraemonkit/picasso/DokitPicasso.java:779
if (listener == null) {
throw new IllegalArgumentException("Listener must not be null.");
}
if (this.listener != null) {
throw new IllegalStateException("Listener already set.");
}
this.listener = listener;
return this;
}
/**
* Specify a transformer for all incoming requests.
* <p>
* <b>NOTE:</b> This is a beta feature. The API is subject to change in a backwards incompatible
* way at any time.
*/
public Builder requestTransformer(RequestTransformer transformer) {
if (transformer == null) {
throw new IllegalArgumentException("Transformer must not be null.");
}
if (this.transformer != null) {
throw new IllegalStateException("Transformer already set.");
}
this.transformer = transformer;
return this;
}
/** Register a {@link RequestHandler}. */
public Builder addRequestHandler(RequestHandler requestHandler) {
if (requestHandler == null) {
throw new IllegalArgumentException("RequestHandler must not be null.");
}
if (requestHandlers == null) {
requestHandlers = new ArrayList<RequestHandler>();
}
if (requestHandlers.contains(requestHandler)) {
throw new IllegalStateException("RequestHandler already registered.");View on GitHub (pinned to 626827cddb)
Solutions
- Pass a non-null RequestTransformer
- Skip the call when no transformation is needed
- Initialize the transformer reference in all code paths before passing it
Example fix
// before
builder.requestTransformer(flag ? new CdnTransformer() : null); // IllegalArgumentException when flag off
// after
if (flag) {
builder.requestTransformer(new CdnTransformer());
} Defensive patterns
Strategy: validation
Validate before calling
if (transformer != null) { builder.requestTransformer(transformer); } Prevention
- Only register transformers when the feature flag that creates them is on
When it happens
Trigger: Calling builder.requestTransformer(null), usually from an optional transformer variable that was never assigned.
Common situations: Feature-flagged transformers (e.g. CDN URL rewriting enabled only in some flavors) whose reference is null when the flag is off.
Related errors
- Executor service must not be null.
- Memory cache must not be null.
- Listener must not be null.
- RequestHandler must not be null.
- Downloader already set.
AI-assisted analysis of didi/DoKit@626827cddb (2026-08-14).
Data as JSON: /api/errors/338362f11e875c40.
Report an issue: GitHub.