Skip to content

bugfix: prevent ignored models from entering upstream global model post-processing #22

Description

@bsayli

Describe the bug

During client generation, models intentionally marked as ignored by openapi-generics could still be visible to upstream OpenAPI Generator global model post-processing.

Ignored models can come from more than one source:

  • schemas marked with x-ignore-model=true
  • models registered as externally provided contract types

The generated client output was already correct. Ignored models were not generated as client DTOs, and generation remained deterministic.

However, because ignored models were removed after delegating to upstream JavaClientCodegen.postProcessAllModels(...), the upstream generator could still attempt to resolve those models during its global model graph traversal.

This produced misleading warning logs during client generation, for example:

[WARNING] Null model found in postProcessAllModels: CustomerDto
[WARNING] Null model found in postProcessAllModels: Meta
[WARNING] Null model found in postProcessAllModels: PageCustomerDto
[WARNING] Null model found in postProcessAllModels: Sort

This did not affect generated source correctness, runtime behavior, or contract alignment.

The issue was limited to warning pollution during client generation and reflected a lifecycle mismatch between openapi-generics ignored-model semantics and upstream OpenAPI Generator global model graph processing.

Steps to reproduce

  1. Use a client-generation module configured with openapi-generics-java-codegen-parent.

  2. Generate a client using the java-generics-contract generator.

  3. Ensure the generated OpenAPI model graph contains models that are intentionally ignored by openapi-generics, for example through:

x-ignore-model: true

or through an externally provided model mapping.

  1. Run client generation:
mvn clean generate-sources
  1. Observe that the generated client output is correct, but the build log may contain misleading warnings similar to:
[WARNING] Null model found in postProcessAllModels: <ModelName>

Expected behavior

Models intentionally ignored by openapi-generics should not be passed into upstream global model graph processing as models that still need to be resolved.

Ignored models should be filtered before JavaClientCodegen.postProcessAllModels(...) runs.

Client generation should remain clean and deterministic, without warning logs for models that were intentionally excluded from generation.

Affected area

  • generator
  • ignored model handling
  • client generation lifecycle
  • CI/CD build log hygiene

Environment

No response

Additional context

This was not a generated-code correctness issue.

The root cause was ordering inside GenericAwareJavaCodegen.postProcessAllModels(...).

Previously, ignored models were removed after calling:

super.postProcessAllModels(allModels)

That allowed upstream JavaClientCodegen to traverse ignored models during global model graph processing and emit misleading null-model warnings.

The fix removes ignored models from allModels before delegating to upstream processing:

@Override
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> allModels) {
  int before = allModels.size();

  allModels.entrySet().removeIf(e -> ignoreDecider.isIgnored(e.getKey()));

  int after = allModels.size();

  if (before != after) {
    log.debug("Removed ignored models from global model graph: {} -> {}", before, after);
  }

  return super.postProcessAllModels(allModels);
}

This aligns ignored-model filtering with the upstream generator lifecycle and prevents warnings for intentionally excluded models.

Fixed on main and currently available in 1.0.3-SNAPSHOT.
Planned for the next public release.

Implementation reference:
f0fa451

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Fields

No fields configured for Bug.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions