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

  1. Pass a non-null RequestTransformer
  2. Skip the call when no transformation is needed
  3. 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

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


AI-assisted analysis of didi/DoKit@626827cddb (2026-08-14). Data as JSON: /api/errors/338362f11e875c40. Report an issue: GitHub.