Repository navigation
chore: java 17 and jackson 3 - #2417
Merged
Merged
Conversation
ewaostrowska
force-pushed
the
jackson-java-migration
branch
from
November 3, 2026 10:54
7415549 to
d60f8f1
Compare
ewaostrowska
requested review from
daniel-kmiecik and
djankows
and
a lite review from Copilot
November 3, 2026 11:12
There was a problem hiding this comment.
🟡 Changes recommended
A critical active finding shows that disabling the test leaves the public aggregate vulnerable to silent example-data loss at the Jackson 2/3 boundary, requiring a fix and restored test coverage before release.
1 open issue
What changed in this PR
This pull request starts the Swagger Parser 3.0 line by migrating the project to Java 17, Jackson 3, Swagger Core 3.0, and Mockito while updating parser internals, tests, documentation, and build configuration.
Changes:
- Updates Maven configuration, dependency coordinates, Java requirements, CI, and testing tools.
- Migrates mapper construction, tree APIs, exception handling, and reference processing to Jackson 3.
- Replaces JMockit with Mockito and adds migration and Jackson 3 behavior coverage.
- Adds Java 17/Jackson 3 migration guidance and documents Jackson 2/3 coexistence concerns.
| File | Summary |
|---|---|
README.md |
Documents the Java 17/Jackson 3 migration; the dependency example still references swagger-parser 2.1.48 and should be updated or labeled as a 2.x example. |
pom.xml |
Updates the project version, Java release, dependency BOMs, Mockito, enforcer, Javadoc, and Surefire configuration. |
modules/swagger-parser/pom.xml |
Updates the aggregate parser module and Jackson dependency coordinates. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/util/RefUtilsTest.java |
Replaces JMockit static mocks with Mockito. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/util/OpenAPIDeserializerTest.java |
Migrates test Jackson imports to Jackson 3. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/ResolverCacheTest.java |
Migrates Jackson and mocking APIs. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/RelativeReferenceTest.java |
Replaces static URL mocks with Mockito. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java |
Migrates Jackson APIs and test fixtures. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV31ParserSchemaTest.java |
Updates Jackson 3 mapper rebuilding and pretty-printing. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIResolverTest.java |
Migrates Jackson mapper and exception types. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OAI31DeserializationTest.java |
Migrates Jackson node imports. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/NullHandlingTest.java |
Updates Jackson 3 node assertions. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/NetworkReferenceTest.java |
Replaces JMockit URL mocks with Mockito. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/LocalReferenceTest.java |
Replaces JMockit URL mocks with Mockito. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/JsonToYamlFileDuplicator.java |
Migrates the Jackson tree-node type. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/reference/ReferenceVisitorTest.java |
Migrates the Jackson tree-node type. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/SchemaProcessorTest.java |
Replaces JMockit construction mocks with Mockito. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/ResponseProcessorTest.java |
Replaces processor construction mocks with Mockito. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/ParameterProcessorTest.java |
Replaces JMockit mocks and expectations with Mockito. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/OperationProcessorTest.java |
Replaces JMockit mocks with Mockito construction and static mocks. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/ExternalRefProcessorTest.java |
Replaces JMockit and URL mocks with Mockito. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/ComponentsProcessorTest.java |
Migrates processor construction mocking to Mockito. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/ObjectMapperTest.java |
Tests built-in Jackson 3 Java time support. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/MigrationUserImpactTest.java |
Adds public API and migration behavior tests. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/JacksonNodeBehaviourTest.java |
Records Jackson 3 node conversion behavior. |
modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/Jackson3MigrationBehaviourTest.java |
Tests Jackson 3 defaults and parser compatibility behavior. |
modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/SchemaTypeUtil.java |
Migrates schema node access to Jackson 3. |
modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/OpenAPIDeserializer.java |
Migrates deserialization, traversal, and scalar conversion APIs. |
modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/DeserializationUtils.java |
Builds the YAML mapper with Jackson 3 APIs and handles JacksonException. |
modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/ResolverCache.java |
Migrates resolver tree-node types to Jackson 3. |
modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/reference/ReferenceVisitor.java |
Updates reference traversal node APIs. |
modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/reference/ReferenceUtils.java |
Migrates reference utility node types to Jackson 3. |
modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/reference/Reference.java |
Migrates reference model node types to Jackson 3. |
modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/reference/OpenAPIDereferencer31.java |
Migrates OpenAPI 3.1 dereferencing node types. |
modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/reference/OpenAPI31Traverser.java |
Updates Jackson 3 exception and node handling. |
modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/reference/IdsTraverser.java |
Updates Jackson 3 exception handling. |
modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/OpenAPIV3Parser.java |
Migrates parsing exceptions and duplicate-property message handling. |
modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/ObjectMapperFactory.java |
Builds configured JSON and YAML mappers with Jackson 3 builders. |
modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/extensions/JsonSchemaParserExtension.java |
Migrates the extension tree-node interface to Jackson 3. |
modules/swagger-parser-v3/pom.xml |
Updates dependencies for Jackson 3, Mockito, and explicit runtime libraries. |
modules/swagger-parser-v2-converter/src/test/java/io/swagger/parser/test/V2ConverterTest.java |
Disables the example conversion test despite an unresolved Jackson 2/3 boundary that can cause silent data loss. |
modules/swagger-parser-v2-converter/pom.xml |
Updates the converter module and removes the JMockit agent. |
modules/swagger-parser-safe-url-resolver/src/test/java/io/swagger/v3/parser/urlresolver/PermittedUrlsCheckerTest.java |
Replaces JMockit static mocks with Mockito. |
modules/swagger-parser-safe-url-resolver/pom.xml |
Updates the module and replaces JMockit with Mockito. |
modules/swagger-parser-core/pom.xml |
Bumps the core module version. |
modules/swagger-parser-cli/src/main/java/io/swagger/v3/parser/SwaggerParser.java |
Makes CLI output encoding explicitly UTF-8. |
modules/swagger-parser-cli/pom.xml |
Updates the CLI module, parser dependency, and test configuration. |
MIGRATION.md |
Adds Java 17, Jackson 3, API, dependency, and behavior migration guidance. |
This pull request requires changes.
Review effort: Lite
daniel-kmiecik
approved these changes
Nov 4, 2026
djankows
approved these changes
Nov 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Swagger Core 3.0 moved to Jackson 3 (
tools.jackson) and Java 17. Swagger Parser 2.x still depends on Jackson 2 (com.fasterxml.jackson), Java 8 and Swagger Core 2.2.x, so it cannot consume Swagger Core 3.0 or share mappers andJsonNodetypes with it. This PR starts the 3.0.0 line of the parser on the new stack.What changed
pom.xml(root): version3.0.0-SNAPSHOT;maven.compiler.release8 → 17;swagger-core-version3.0.0; importtools.jackson:jackson-bom(jackson3-bom-version3.2.4); replace JMockit with Mockito (5.24.0); enforcerrequireJavaVersion [17,); javadoc source/link updated to 17; surefireargLinenow@{argLine}(JMockit agent removed).modules/*/pom.xml: version bump; Jackson coordinatescom.fasterxml.jackson.core/dataformat→tools.jackson.core/dataformat(jackson-annotationsstays oncom.fasterxml); JMockit removed;commons-lang3andslf4j-apideclared explicitly inswagger-parser-v3because they are no longer transitive via Swagger Core 3.x; WireMock Jackson exclusion dropped.ObjectMapperFactory: build mappers withJsonMapper.builder/YAMLMapper.buildervia aMapperBuilder; useDateTimeFeature.WRITE_DATES_AS_TIMESTAMPS; set NON_NULL withchangeDefaultPropertyInclusion; drop explicitJavaTimeModule(built in to Jackson 3).DeserializationUtils:JSON_MAPPER_FOR_YAMLbuilt with the builder API (EnumFeature,StreamWriteFeature,DateTimeFeature) instead of a static init block; catchJacksonExceptioninstead ofIOException; remove deprecatednew Integer(0).OpenAPIV3Parser.getParseErrorMessage: catchJacksonException; translate Jackson 3'sDuplicate Object property "x"to the 2.x textDuplicate field 'x'.OpenAPIDeserializer,SchemaTypeUtil,ResolverCache,JsonSchemaParserExtension,IdsTraverser,OpenAPI31Traverser,OpenAPIDereferencer31,Reference,ReferenceUtils,ReferenceVisitor: import and API renames (TextNode→StringNode,fieldNames()→propertyNames(),elements()→values(),isContainerNode()→isContainer(), etc.).SwaggerParser(swagger-parser) andswagger-parser-cli/v2-converterpoms: adapt to the new Jackson coordinates and drop the JMockit agent.MIGRATION.md,README.md: new migration guide for 3.0 (Java 17, Jackson types in the public API, mixed Jackson 2/3 classpath note); README updated for 3.0..github/workflows/maven-v3.yml: CI workflow for the 3.0.0 branch.Type of Change
Checklist
Screenshots / Additional Context