Skip to content

GH-5744: migrate RDF4J to Jackson 3 LTS#5773

Merged
aschwarte10 merged 10 commits intodevelopfrom
GH-5744-migrate-to-jackson3
Apr 23, 2026
Merged

GH-5744: migrate RDF4J to Jackson 3 LTS#5773
aschwarte10 merged 10 commits intodevelopfrom
GH-5744-migrate-to-jackson3

Conversation

@aschwarte10
Copy link
Copy Markdown
Contributor

@aschwarte10 aschwarte10 commented Apr 22, 2026

GitHub issue resolved: #5744

Migrates RDF4J modules to Jackson 3.1 for JSON processin, which is the next LTS version

Commit 1: GH-5744: Migrate rdf4j-query to Jackson 3.1.x

  • Removed JsonProcessingException import (now JacksonException,
    unchecked — no longer needed)
  • Added JsonMapper import (tools.jackson.databind.json.JsonMapper)
  • Replaced mutable new ObjectMapper() + chained setters with an
    immutable JsonMapper.builder() configured via changeDefaultVisibility()
    and changeDefaultPropertyInclusion()
  • Removed try/catch in toJson() since Jackson 3 exceptions are unchecked

Commit 2: GH-5744: Migrate rdf4j-queryresultio-sparqljson to Jackson 3.1.2

Update jackson-core dependency to tools.jackson.core group at version
3.1.2 (managed via jackson3.version property in root pom).

Java code changes following the Jackson 3 migration guide:

  • Update all imports from com.fasterxml.jackson to tools.jackson
    (jackson-annotations excluded as per Jackson 3 design)
  • JsonFactory/JsonFactoryBuilder moved to tools.jackson.core.json
    package
  • JsonProcessingException renamed to JacksonException (now unchecked)
  • JsonParser: getCurrentToken/Name/Location() →
    currentToken/Name/Location()
  • JsonParser: getParsingContext() → streamReadContext()
  • JsonParser: nextTextValue() → nextStringValue()
  • JsonToken.FIELD_NAME → JsonToken.PROPERTY_NAME
  • JsonGenerator: writeFieldName() → writeName()
  • JsonGenerator writeField/FieldStart → writeProperty/PropertyStart
  • JsonReadFeature.ALLOW_UNQUOTED_FIELD_NAMES →
    ALLOW_UNQUOTED_PROPERTY_NAMES
  • JsonFactory.Feature.INTERN/CANONICALIZE_FIELD_NAMES removed
  • ObjectMapper is immutable: configure pretty printer via
    ObjectWriteContext
    at generator creation time instead of setPrettyPrinter()
  • catch(IOException) → catch(JacksonException) for Jackson call sites

Commit 3: GH-5723: migrate rdf4j-rio-rdfjson to Jackson 3.1.2

  • Update jackson-core dependency to tools.jackson.core groupId
  • Replace JsonFactoryBuilder + removed INTERN/CANONICALIZE_FIELD_NAMES
    features with JsonFactory.builder()
  • JsonLocation renamed to TokenStreamLocation
  • ALLOW_UNQUOTED_FIELD_NAMES renamed to ALLOW_UNQUOTED_PROPERTY_NAMES
  • JsonParser API: getCurrentLocation/Name/Token →
    currentLocation/Name/Token
  • JsonGenerator API: writeObjectField/ArrayFieldStart →
    writeStringProperty/writeObjectPropertyStart/writeArrayPropertyStart
  • setPrettyPrinter() removed; replaced with ObjectWriteContext at
    generator creation time
  • modelToRdfJsonInternal: remove throws IOException and duplicate
    pretty-printer setup (now configured via ObjectWriteContext in
    startRDF)
  • Exception handling: IOException catches replaced with
    JacksonException
  • Test: JsonProcessingException → JacksonException, update
    ContentReference import

Commit 4: GH-5723: migrate rdf4j-rio-api to Jackson 3.1.2

  • Update jackson-core and jackson-databind dependencies to
    tools.jackson.core groupId; jackson-annotations remains at 2.21
  • SetRioSetting: JsonProcessingException → JacksonException,
    update TypeReference and ObjectMapper imports to tools.jackson.*

Commit 5: GH-5723: fix compile errors in workbench and http-client for Jackson 3

  • RDF4JProtocolSession, DeleteServlet, QueryServlet: update
    ObjectMapper
    and ObjectNode imports to tools.jackson.databind.*

Commit 6: GH-5723: migrate rdf4j-sail-nativerdf to Jackson 3.1.2

  • Update jackson-core dependency to tools.jackson.core groupId
  • Update imports to tools.jackson.core.* /
    tools.jackson.core.json.JsonFactory
  • JsonToken.FIELD_NAME → JsonToken.PROPERTY_NAME
  • JsonParser: getCurrentName() → currentName()
  • JsonGenerator:
    writeStringField/writeNumberField/writeObjectFieldStart →
    writeStringProperty/writeNumberProperty/writeObjectPropertyStart
  • Replace deprecated createParser(byte[]) with
    createParser(ObjectReadContext.empty(), content)
  • Replace deprecated createGenerator(OutputStream) with
    createGenerator(ObjectWriteContext.empty(), out)

Commit 7: GH-5744: migrate rdf4j-sail-memory to Jackson 3

Update QueryPlanRetrievalTest to use
tools.jackson.databind.{JsonNode,ObjectMapper} instead of
com.fasterxml.jackson.databind. Jackson 3 arrives transitively, so no
pom.xml change is required.


PR Author Checklist (see the contributor guidelines for more details):

  • my pull request is self-contained
  • I've added tests for the changes I made
  • I've applied code formatting (you can use mvn process-resources to format from the command line)
  • I've squashed my commits where necessary
  • every commit message starts with the issue number (GH-xxxx) followed by a meaningful description of the change

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates selected RDF4J modules (core/query and queryresultio-sparqljson) from Jackson 2 (com.fasterxml.jackson.*) to Jackson 3.1 (tools.jackson.*) and adapts parsing/writing code to the Jackson 3 API and exception model.

Changes:

  • Introduces jackson3.version and updates module POMs to depend on tools.jackson Jackson 3 artifacts.
  • Updates SPARQL/JSON parser/writer code to Jackson 3 API changes (token/name/location accessors, generator “property” write methods, factory builder changes).
  • Updates query explanation JSON serialization to use immutable JsonMapper.builder() configuration.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
pom.xml Adds jackson3.version property to pin Jackson 3 dependency versions.
core/query/pom.xml Switches query module Jackson deps to tools.jackson.* (keeping jackson-annotations from com.fasterxml).
core/query/src/main/java/org/eclipse/rdf4j/query/explanation/ExplanationImpl.java Replaces mutable ObjectMapper setup with JsonMapper.builder() and removes checked-exception handling.
core/queryresultio/sparqljson/pom.xml Switches sparqljson module to tools.jackson.core:jackson-core at ${jackson3.version}.
core/queryresultio/sparqljson/src/main/java/.../AbstractSPARQLJSONParser.java Updates parsing logic to Jackson 3 APIs and exception type (JacksonException).
core/queryresultio/sparqljson/src/main/java/.../AbstractSPARQLJSONWriter.java Updates writer to Jackson 3 APIs, including property-writing methods and pretty-printer wiring via ObjectWriteContext.
core/queryresultio/sparqljson/src/main/java/.../SPARQLResultsJSONParser.java Updates token/name/location calls to Jackson 3 equivalents.
core/queryresultio/sparqljson/src/main/java/.../SPARQLResultsJSONWriter.java Updates generator field/property methods and removes checked IOException from internal write path.
core/queryresultio/sparqljson/src/test/java/.../SPARQLJSONParserCustomTest.java Updates tests to assert JacksonException as the underlying cause and still validates source location behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates RDF4J’s JSON handling across multiple modules from Jackson 2 (com.fasterxml.jackson.*) to Jackson 3.1.x (tools.jackson.*), aligning with the Jackson 3 LTS line while keeping jackson-annotations on the Jackson 2 namespace as intended by Jackson 3.

Changes:

  • Introduces a root ${jackson3.version} and updates multiple module POMs to depend on tools.jackson.* Jackson 3 artifacts.
  • Updates production code and tests to Jackson 3 API changes (parser/generator/token method renames, ObjectReadContext/ObjectWriteContext usage, JacksonException).
  • Adapts pretty-print configuration for Jackson 3 where generator pretty printers must be set at creation time.

Reviewed changes

Copilot reviewed 42 out of 42 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
tools/workbench/src/main/java/org/eclipse/rdf4j/workbench/commands/QueryServlet.java Switch Jackson imports to tools.jackson.databind.*.
tools/workbench/src/main/java/org/eclipse/rdf4j/workbench/commands/DeleteServlet.java Switch Jackson imports to tools.jackson.databind.*.
pom.xml Add ${jackson3.version} property for Jackson 3 modules.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalTestUtils.java Update parser/token APIs + ObjectReadContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalSearchEdgeCasesTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalRecoveryDedupTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderUnknownValueKindTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderUncompressedTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderUncompressedCrcMismatchTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderTruncatedRecordTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderParseJsonSkipChildrenTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderListSegmentsUnreadableTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderLastLsnNonMintedTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderInvalidFrameTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderHasSequenceGapsTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderGzipInvalidAndTruncatedTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReadSegmentSequenceTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalCompressedSummaryCrcValidationTest.java Update parser/generator APIs + contexts for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalCompressedSegmentRestoreTest.java Update parser APIs + ObjectReadContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalCompressedNoSummaryTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWALReadSegmentSequenceEdgeCasesTest.java Update generator APIs + ObjectWriteContext for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/ValueStoreRandomLookupTest.java Update parser/token APIs + ObjectReadContext for Jackson 3.
core/sail/nativerdf/src/main/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalSearch.java Update parser APIs + ObjectReadContext for Jackson 3.
core/sail/nativerdf/src/main/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReader.java Update parser APIs + ObjectReadContext for Jackson 3.
core/sail/nativerdf/src/main/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWAL.java Update parser/generator APIs + read/write contexts for Jackson 3.
core/sail/nativerdf/pom.xml Switch jackson-core dependency to tools.jackson.core at ${jackson3.version}.
core/sail/memory/src/test/java/org/eclipse/rdf4j/sail/memory/QueryPlanRetrievalTest.java Update Jackson databind imports to tools.jackson.databind.*.
core/rio/rdfjson/src/test/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONParserCustomTest.java Update exception type assertions/imports to JacksonException.
core/rio/rdfjson/src/main/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONWriter.java Update generator API calls + factory builder, pretty printing via ObjectWriteContext.
core/rio/rdfjson/src/main/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONParser.java Update parser API calls, locations, factory builder, and exception handling types.
core/rio/rdfjson/pom.xml Switch jackson-core dependency to tools.jackson.core at ${jackson3.version}.
core/rio/api/src/main/java/org/eclipse/rdf4j/rio/helpers/SetRioSetting.java Update databind/type references + exception type to Jackson 3.
core/rio/api/pom.xml Switch jackson-core/jackson-databind dependencies to tools.jackson.core at ${jackson3.version}.
core/queryresultio/sparqljson/src/test/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLJSONParserCustomTest.java Update exception type assertions/imports to JacksonException.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLResultsJSONWriter.java Update generator method names and remove checked IO exceptions.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLResultsJSONParser.java Update parser token/name/location APIs for Jackson 3.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/AbstractSPARQLJSONWriter.java Update factory builder + generator method names; attempt pretty print via context.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/AbstractSPARQLJSONParser.java Update factory builder + parser token/name/location APIs and exception type.
core/queryresultio/sparqljson/pom.xml Switch jackson-core dependency to tools.jackson.core at ${jackson3.version}.
core/query/src/main/java/org/eclipse/rdf4j/query/explanation/ExplanationImpl.java Migrate to Jackson 3 JsonMapper.builder() and remove checked exception handling.
core/query/pom.xml Switch jackson-core/jackson-databind dependencies to tools.jackson.core at ${jackson3.version}.
core/http/client/src/main/java/org/eclipse/rdf4j/http/client/RDF4JProtocolSession.java Switch databind import to tools.jackson.databind.ObjectMapper.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread core/rio/rdfjson/src/main/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONParser.java Outdated
Comment thread core/rio/rdfjson/src/main/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONWriter.java Outdated
- Removed JsonProcessingException import (now JacksonException,
unchecked — no longer needed)
- Added JsonMapper import (tools.jackson.databind.json.JsonMapper)
- Replaced mutable new ObjectMapper() + chained setters with an
immutable JsonMapper.builder() configured via changeDefaultVisibility()
and changeDefaultPropertyInclusion()
- Removed try/catch in toJson() since Jackson 3 exceptions are unchecked
  Update jackson-core dependency to tools.jackson.core group at version
  3.1.2 (managed via jackson3.version property in root pom).

  Java code changes following the Jackson 3 migration guide:
  - Update all imports from com.fasterxml.jackson to tools.jackson
    (jackson-annotations excluded as per Jackson 3 design)
  - JsonFactory/JsonFactoryBuilder moved to tools.jackson.core.json
package
  - JsonProcessingException renamed to JacksonException (now unchecked)
  - JsonParser: getCurrentToken/Name/Location() →
currentToken/Name/Location()
  - JsonParser: getParsingContext() → streamReadContext()
  - JsonParser: nextTextValue() → nextStringValue()
  - JsonToken.FIELD_NAME → JsonToken.PROPERTY_NAME
  - JsonGenerator: writeFieldName() → writeName()
  - JsonGenerator write*Field/FieldStart → write*Property/PropertyStart
  - JsonReadFeature.ALLOW_UNQUOTED_FIELD_NAMES →
ALLOW_UNQUOTED_PROPERTY_NAMES
  - JsonFactory.Feature.INTERN/CANONICALIZE_FIELD_NAMES removed
  - ObjectMapper is immutable: configure pretty printer via
ObjectWriteContext
    at generator creation time instead of setPrettyPrinter()
  - catch(IOException) → catch(JacksonException) for Jackson call sites
@aschwarte10 aschwarte10 force-pushed the GH-5744-migrate-to-jackson3 branch 2 times, most recently from a468f55 to a0d12f4 Compare April 22, 2026 20:28
@aschwarte10 aschwarte10 requested a review from Copilot April 22, 2026 20:28
  - Update jackson-core dependency to tools.jackson.core groupId
  - Replace JsonFactoryBuilder + removed INTERN/CANONICALIZE_FIELD_NAMES
    features with JsonFactory.builder()
  - JsonLocation renamed to TokenStreamLocation
  - ALLOW_UNQUOTED_FIELD_NAMES renamed to ALLOW_UNQUOTED_PROPERTY_NAMES
  - JsonParser API: getCurrentLocation/Name/Token →
currentLocation/Name/Token
  - JsonGenerator API: writeObjectField/ArrayFieldStart →
    writeStringProperty/writeObjectPropertyStart/writeArrayPropertyStart
  - setPrettyPrinter() removed; replaced with ObjectWriteContext at
    generator creation time
  - modelToRdfJsonInternal: remove throws IOException and duplicate
    pretty-printer setup (now configured via ObjectWriteContext in
startRDF)
  - Exception handling: IOException catches replaced with
JacksonException
  - Test: JsonProcessingException → JacksonException, update
ContentReference import
  - Update jackson-core and jackson-databind dependencies to
    tools.jackson.core groupId; jackson-annotations remains at 2.21
  - SetRioSetting: JsonProcessingException → JacksonException,
    update TypeReference and ObjectMapper imports to tools.jackson.*
  - RDF4JProtocolSession, DeleteServlet, QueryServlet: update
ObjectMapper
    and ObjectNode imports to tools.jackson.databind.*
  - Update jackson-core dependency to tools.jackson.core groupId
  - Update imports to tools.jackson.core.* /
tools.jackson.core.json.JsonFactory
  - JsonToken.FIELD_NAME → JsonToken.PROPERTY_NAME
  - JsonParser: getCurrentName() → currentName()
  - JsonGenerator:
writeStringField/writeNumberField/writeObjectFieldStart →
    writeStringProperty/writeNumberProperty/writeObjectPropertyStart
  - Replace deprecated createParser(byte[]) with
    createParser(ObjectReadContext.empty(), content)
  - Replace deprecated createGenerator(OutputStream) with
    createGenerator(ObjectWriteContext.empty(), out)
Update QueryPlanRetrievalTest to use
tools.jackson.databind.{JsonNode,ObjectMapper} instead of
com.fasterxml.jackson.databind. Jackson 3 arrives transitively, so no
pom.xml change is required.
Jackson 3 reads the PrettyPrinter from the ObjectWriteContext eagerly at
generator construction time. The previous code created the generator in
the constructor (before writer settings were available) with a
prettyPrinterSupplier that always returned null, then updated the
supplier in startDocument() — too late to have any effect.

Fix: delay JsonGenerator creation to startDocument(), where the writer
config is known, and capture the resolved PrettyPrinter directly in the
ObjectWriteContext passed to createGenerator().

Add SPARQLJSONPrettyPrintTest to verify that PRETTY_PRINT=true produces
indented output and PRETTY_PRINT=false produces compact output for both
SPARQLResultsJSONWriter and SPARQLBooleanJSONWriter, and that both forms
round-trip correctly through the parser.
@aschwarte10 aschwarte10 force-pushed the GH-5744-migrate-to-jackson3 branch from a0d12f4 to 1a7765d Compare April 22, 2026 20:31
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates RDF4J’s JSON handling from Jackson 2.x (com.fasterxml.jackson.*) to Jackson 3.1 LTS (tools.jackson.*) across multiple modules, updating both Maven dependencies and Java code to match Jackson 3 API changes.

Changes:

  • Introduce and use jackson3.version (3.1.2) and update module POMs to depend on tools.jackson.* Jackson 3 artifacts.
  • Update Java source to Jackson 3 APIs (token/property renames, currentName()/currentLocation(), ObjectReadContext/ObjectWriteContext, generator/property write methods).
  • Adjust and add tests to validate JSON output/behavior under the new Jackson 3 implementation (including pretty-print behavior).

Reviewed changes

Copilot reviewed 43 out of 43 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
tools/workbench/src/main/java/org/eclipse/rdf4j/workbench/commands/QueryServlet.java Switch workbench JSON imports to tools.jackson.databind.*.
tools/workbench/src/main/java/org/eclipse/rdf4j/workbench/commands/DeleteServlet.java Switch workbench JSON imports to tools.jackson.databind.*.
pom.xml Add jackson3.version property for Jackson 3.1.2.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalTestUtils.java Update WAL test parsing to Jackson 3 parser APIs and contexts.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalSearchEdgeCasesTest.java Update Jackson generator creation and field/property writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalRecoveryDedupTest.java Update generator creation and property-writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderUnknownValueKindTest.java Update generator creation and property-writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderUncompressedTest.java Update generator creation and property-writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderUncompressedCrcMismatchTest.java Update generator creation and property-writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderTruncatedRecordTest.java Update generator creation and property-writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderParseJsonSkipChildrenTest.java Update generator object start + property-writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderListSegmentsUnreadableTest.java Update generator creation and property-writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderLastLsnNonMintedTest.java Update generator creation and property-writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderInvalidFrameTest.java Update generator creation and property-writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderHasSequenceGapsTest.java Update generator creation and property-writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderGzipInvalidAndTruncatedTest.java Update generator creation and property-writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReadSegmentSequenceTest.java Update generator creation and property-writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalCompressedSummaryCrcValidationTest.java Update parser/generator creation with contexts and property-name APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalCompressedSegmentRestoreTest.java Update parser creation with ObjectReadContext and name accessors.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalCompressedNoSummaryTest.java Update generator creation and property-writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWALReadSegmentSequenceEdgeCasesTest.java Update generator creation and property-writing APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/ValueStoreRandomLookupTest.java Update parser creation with ObjectReadContext and property-name APIs.
core/sail/nativerdf/src/main/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalSearch.java Update WAL search JSON parsing to Jackson 3 contexts and accessors.
core/sail/nativerdf/src/main/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReader.java Update WAL reader JSON parsing to Jackson 3 contexts and accessors.
core/sail/nativerdf/src/main/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWAL.java Update WAL read/write JSON to Jackson 3 contexts and property-writing APIs.
core/sail/nativerdf/pom.xml Switch nativerdf to tools.jackson.core:jackson-core at ${jackson3.version}.
core/sail/memory/src/test/java/org/eclipse/rdf4j/sail/memory/QueryPlanRetrievalTest.java Switch memory sail test imports to tools.jackson.databind.*.
core/rio/rdfjson/src/test/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONParserCustomTest.java Update tests to expect tools.jackson.core.JacksonException.
core/rio/rdfjson/src/main/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONWriter.java Migrate RDF/JSON writer to Jackson 3 generator/property APIs and write-context pretty-printing.
core/rio/rdfjson/src/main/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONParser.java Migrate RDF/JSON parser to Jackson 3 APIs (location/token/name accessors; JsonFactory builder updates).
core/rio/rdfjson/pom.xml Switch rdfjson module to tools.jackson.core:jackson-core at ${jackson3.version}.
core/rio/api/src/main/java/org/eclipse/rdf4j/rio/helpers/SetRioSetting.java Update JSON parsing exceptions/imports for Jackson 3 (JacksonException, tools.jackson.*).
core/rio/api/pom.xml Switch rio-api Jackson core/databind dependencies to tools.jackson.* at ${jackson3.version}.
core/queryresultio/sparqljson/src/test/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLJSONPrettyPrintTest.java Add tests verifying PRETTY_PRINT behavior for SPARQL/JSON writers.
core/queryresultio/sparqljson/src/test/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLJSONParserCustomTest.java Update tests to expect tools.jackson.core.JacksonException.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLResultsJSONWriter.java Update SPARQL tuple JSON writer to Jackson 3 generator/property APIs.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLResultsJSONParser.java Update SPARQL tuple JSON parser for Jackson 3 token/name/location APIs.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/AbstractSPARQLJSONWriter.java Migrate base SPARQL/JSON writer to Jackson 3 and configure pretty print via ObjectWriteContext.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/AbstractSPARQLJSONParser.java Migrate base SPARQL/JSON parser to Jackson 3 and update exceptions/locations.
core/queryresultio/sparqljson/pom.xml Switch sparqljson module to tools.jackson.core:jackson-core at ${jackson3.version}.
core/query/src/main/java/org/eclipse/rdf4j/query/explanation/ExplanationImpl.java Update query explanation JSON serialization to Jackson 3 JsonMapper.builder() usage.
core/query/pom.xml Switch query module Jackson core/databind dependencies to tools.jackson.* at ${jackson3.version}.
core/http/client/src/main/java/org/eclipse/rdf4j/http/client/RDF4JProtocolSession.java Switch HTTP client JSON imports to tools.jackson.databind.ObjectMapper.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread core/rio/rdfjson/src/main/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONParser.java Outdated
Comment thread core/rio/rdfjson/src/main/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONWriter.java Outdated
Comment thread core/rio/rdfjson/src/main/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONParser.java Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates RDF4J’s JSON handling from Jackson 2.x (com.fasterxml.jackson.*) to Jackson 3.1 LTS (tools.jackson.*) across multiple modules, updating both runtime code and tests to the new Jackson 3 APIs and configuration patterns.

Changes:

  • Update Maven dependencies and introduce jackson3.version to support Jackson 3.1.2 across relevant modules.
  • Replace Jackson 2 core/databind APIs (field names, parser/generator APIs, pretty printing) with Jackson 3 equivalents.
  • Adjust and add tests to validate behavior (notably pretty printing) under Jackson 3.

Reviewed changes

Copilot reviewed 43 out of 43 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tools/workbench/src/main/java/org/eclipse/rdf4j/workbench/commands/QueryServlet.java Switch ObjectMapper/ObjectNode imports to tools.jackson.databind.*.
tools/workbench/src/main/java/org/eclipse/rdf4j/workbench/commands/DeleteServlet.java Switch ObjectMapper/ObjectNode imports to tools.jackson.databind.*.
pom.xml Add jackson3.version property for Jackson 3 dependency versioning.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalTestUtils.java Update parser usage to Jackson 3 (ObjectReadContext, property-name token).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalSearchEdgeCasesTest.java Update generator usage to Jackson 3 (ObjectWriteContext, write*Property).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalRecoveryDedupTest.java Update generator usage to Jackson 3 (ObjectWriteContext, write*Property).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderUnknownValueKindTest.java Update generator usage to Jackson 3 (ObjectWriteContext, write*Property).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderUncompressedTest.java Update generator usage to Jackson 3 (ObjectWriteContext, write*Property).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderUncompressedCrcMismatchTest.java Update generator usage to Jackson 3 (ObjectWriteContext, write*Property).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderTruncatedRecordTest.java Update generator usage to Jackson 3 (ObjectWriteContext, write*Property).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderParseJsonSkipChildrenTest.java Update generator API calls to Jackson 3 (writeObjectPropertyStart, writeNumberProperty).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderListSegmentsUnreadableTest.java Update generator usage to Jackson 3 (ObjectWriteContext, write*Property).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderLastLsnNonMintedTest.java Update generator usage to Jackson 3 (ObjectWriteContext, write*Property).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderInvalidFrameTest.java Update generator usage to Jackson 3 (ObjectWriteContext, write*Property).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderHasSequenceGapsTest.java Update generator usage to Jackson 3 (ObjectWriteContext, write*Property).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderGzipInvalidAndTruncatedTest.java Update generator usage to Jackson 3 (ObjectWriteContext, write*Property).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReadSegmentSequenceTest.java Update generator usage to Jackson 3 (ObjectWriteContext, write*Property).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalCompressedSummaryCrcValidationTest.java Update parser/generator usage to Jackson 3 (ObjectReadContext/ObjectWriteContext, currentName).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalCompressedSegmentRestoreTest.java Update parser usage to Jackson 3 (ObjectReadContext, currentName).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalCompressedNoSummaryTest.java Update generator usage to Jackson 3 (ObjectWriteContext, write*Property).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWALReadSegmentSequenceEdgeCasesTest.java Update generator usage to Jackson 3 (ObjectWriteContext, write*Property).
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/ValueStoreRandomLookupTest.java Update parser usage to Jackson 3 (ObjectReadContext, property-name token).
core/sail/nativerdf/src/main/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalSearch.java Update parser usage to Jackson 3 (ObjectReadContext, currentName).
core/sail/nativerdf/src/main/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReader.java Update parser usage to Jackson 3 (ObjectReadContext, currentName).
core/sail/nativerdf/src/main/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWAL.java Update parser/generator usage to Jackson 3 (ObjectReadContext/ObjectWriteContext, property-name token, write*Property).
core/sail/nativerdf/pom.xml Switch jackson-core dependency to tools.jackson.core and pin to ${jackson3.version}.
core/sail/memory/src/test/java/org/eclipse/rdf4j/sail/memory/QueryPlanRetrievalTest.java Switch test imports to tools.jackson.databind.*.
core/rio/rdfjson/src/test/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONParserCustomTest.java Update expected exception types/imports to Jackson 3 (JacksonException).
core/rio/rdfjson/src/main/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONWriter.java Migrate generator/property APIs and pretty printing to Jackson 3 ObjectWriteContext.
core/rio/rdfjson/src/main/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONParser.java Migrate parser APIs and location types to Jackson 3 (TokenStreamLocation, ObjectReadContext).
core/rio/rdfjson/pom.xml Switch jackson-core dependency to tools.jackson.core and pin to ${jackson3.version}.
core/rio/api/src/main/java/org/eclipse/rdf4j/rio/helpers/SetRioSetting.java Update parsing exception and Jackson imports to Jackson 3 (JacksonException, tools.jackson.*).
core/rio/api/pom.xml Switch jackson-core/jackson-databind to tools.jackson.core and pin to ${jackson3.version}.
core/queryresultio/sparqljson/src/test/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLJSONPrettyPrintTest.java Add test validating BasicWriterSettings.PRETTY_PRINT behavior for SPARQL JSON writers.
core/queryresultio/sparqljson/src/test/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLJSONParserCustomTest.java Update expected exception types/imports to Jackson 3 (JacksonException).
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLResultsJSONWriter.java Update generator field/property APIs for Jackson 3.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLResultsJSONParser.java Update parser token/name/location APIs for Jackson 3.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/AbstractSPARQLJSONWriter.java Rework writer to build generator with ObjectWriteContext for Jackson 3 pretty-printing behavior.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/AbstractSPARQLJSONParser.java Update parser APIs and exception handling to Jackson 3 (JacksonException, property-name token, streamReadContext).
core/queryresultio/sparqljson/pom.xml Switch jackson-core dependency to tools.jackson.core and pin to ${jackson3.version}.
core/query/src/main/java/org/eclipse/rdf4j/query/explanation/ExplanationImpl.java Move to Jackson 3 JsonMapper.builder() and remove checked-exception handling.
core/query/pom.xml Switch jackson-core/jackson-databind to tools.jackson.core and pin to ${jackson3.version}.
core/http/client/src/main/java/org/eclipse/rdf4j/http/client/RDF4JProtocolSession.java Switch ObjectMapper import to tools.jackson.databind.ObjectMapper.
Comments suppressed due to low confidence (1)

core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/AbstractSPARQLJSONWriter.java:373

  • startDocument() now creates a new JsonGenerator each time, but endDocument() only flushes it and never closes it. If the same writer instance is used for multiple documents/results, this can leak generators and keep buffered state around. Consider closing jg in endDocument() (AUTO_CLOSE_TARGET is disabled, so the underlying Writer won’t be closed) and/or reusing a single generator instance.
	protected void endDocument() throws JacksonException {
		jg.writeEndObject();
		if (getWriterConfig().isSet(BasicQueryWriterSettings.JSONP_CALLBACK)) {
			jg.writeRaw(");");
		}
		jg.flush();

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates multiple RDF4J modules from Jackson 2.x (com.fasterxml.jackson.*) to Jackson 3.1 LTS (tools.jackson.*), updating JSON parsing/writing call sites and Maven dependencies to match Jackson 3 API changes.

Changes:

  • Introduces a dedicated ${jackson3.version} property and updates several module POMs to depend on tools.jackson.* Jackson 3 artifacts.
  • Updates JSON parser/generator usage for Jackson 3 (e.g., ObjectReadContext/ObjectWriteContext, PROPERTY_NAME, currentName/currentLocation, write*Property* methods).
  • Updates and extends test coverage for Jackson 3 behavior (including pretty-print handling for SPARQL/JSON writers).

Reviewed changes

Copilot reviewed 45 out of 45 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tools/workbench/src/main/java/org/eclipse/rdf4j/workbench/commands/QueryServlet.java Switches ObjectMapper/ObjectNode imports to tools.jackson.*.
tools/workbench/src/main/java/org/eclipse/rdf4j/workbench/commands/DeleteServlet.java Switches ObjectMapper/ObjectNode imports to tools.jackson.*.
pom.xml Adds ${jackson3.version} property for Jackson 3 dependency pinning.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalTestUtils.java Updates parser creation/token handling to Jackson 3 APIs.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalSearchEdgeCasesTest.java Updates generator creation and write*Property methods for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalRecoveryDedupTest.java Updates generator creation and write*Property methods for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderUnknownValueKindTest.java Updates generator creation and write*Property methods for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderUncompressedTest.java Updates generator creation and write*Property methods for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderUncompressedCrcMismatchTest.java Updates generator creation and write*Property methods for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderTruncatedRecordTest.java Updates generator creation and write*Property methods for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderParseJsonSkipChildrenTest.java Updates generator creation and nested object writing APIs for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderListSegmentsUnreadableTest.java Updates generator creation and write*Property methods for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderLastLsnNonMintedTest.java Updates generator creation and write*Property methods for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderInvalidFrameTest.java Updates generator creation and write*Property methods for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderHasSequenceGapsTest.java Updates generator creation and write*Property methods for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReaderGzipInvalidAndTruncatedTest.java Updates generator creation and write*Property methods for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReadSegmentSequenceTest.java Updates generator creation and write*Property methods for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalCompressedSummaryCrcValidationTest.java Updates generator/parser creation and name/token APIs for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalCompressedSegmentRestoreTest.java Updates parser creation and currentName usage for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalCompressedNoSummaryTest.java Updates generator creation and write*Property methods for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWALReadSegmentSequenceEdgeCasesTest.java Updates generator creation and write*Property methods for Jackson 3.
core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/ValueStoreRandomLookupTest.java Updates parser creation and FIELD_NAME→PROPERTY_NAME handling for Jackson 3.
core/sail/nativerdf/src/main/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalSearch.java Updates WAL JSON parsing for Jackson 3 parser creation/name APIs.
core/sail/nativerdf/src/main/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWalReader.java Updates WAL JSON parsing for Jackson 3 parser creation/name/location APIs.
core/sail/nativerdf/src/main/java/org/eclipse/rdf4j/sail/nativerdf/wal/ValueStoreWAL.java Updates WAL parsing/writing to Jackson 3 generator/parser APIs and contexts.
core/sail/nativerdf/pom.xml Switches to tools.jackson.core:jackson-core with ${jackson3.version}.
core/sail/memory/src/test/java/org/eclipse/rdf4j/sail/memory/QueryPlanRetrievalTest.java Updates test imports to tools.jackson.databind.*.
core/sail/elasticsearch/pom.xml Adds explicit Jackson 2 databind dependency for Elasticsearch client usage.
core/sail/elasticsearch-store/pom.xml Adds explicit Jackson 2 databind dependency for Elasticsearch store usage.
core/rio/rdfjson/src/test/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONParserCustomTest.java Updates exception type assertions/imports for Jackson 3.
core/rio/rdfjson/src/main/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONWriter.java Migrates writer to Jackson 3 generator/property APIs and ObjectWriteContext pretty-printing.
core/rio/rdfjson/src/main/java/org/eclipse/rdf4j/rio/rdfjson/RDFJSONParser.java Migrates parser to Jackson 3 parser creation/name/token/location APIs.
core/rio/rdfjson/pom.xml Switches to tools.jackson.core:jackson-core with ${jackson3.version}.
core/rio/api/src/main/java/org/eclipse/rdf4j/rio/helpers/SetRioSetting.java Updates Jackson imports and exception type for Jackson 3.
core/rio/api/pom.xml Switches to tools.jackson.core jackson-core/jackson-databind with ${jackson3.version}.
core/queryresultio/sparqljson/src/test/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLJSONPrettyPrintTest.java Adds tests verifying PRETTY_PRINT behavior still works under Jackson 3.
core/queryresultio/sparqljson/src/test/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLJSONParserCustomTest.java Updates exception type assertions/imports for Jackson 3.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLResultsJSONWriter.java Updates generator field/property writing APIs and removes checked IO exceptions.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/SPARQLResultsJSONParser.java Updates parser token/name/location APIs for Jackson 3.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/AbstractSPARQLJSONWriter.java Delays generator creation to startDocument and configures pretty printing via ObjectWriteContext.
core/queryresultio/sparqljson/src/main/java/org/eclipse/rdf4j/query/resultio/sparqljson/AbstractSPARQLJSONParser.java Updates parsing/token APIs and exception typing for Jackson 3.
core/queryresultio/sparqljson/pom.xml Switches to tools.jackson.core:jackson-core with ${jackson3.version}.
core/query/src/main/java/org/eclipse/rdf4j/query/explanation/ExplanationImpl.java Updates explanation JSON serialization to Jackson 3 JsonMapper.builder().
core/query/pom.xml Switches to tools.jackson.core jackson-core/jackson-databind with ${jackson3.version}.
core/http/client/src/main/java/org/eclipse/rdf4j/http/client/RDF4JProtocolSession.java Switches ObjectMapper import to tools.jackson.databind.ObjectMapper.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

ElasticsearchIndex, ElasticsearchDataStructure and
ElasticsearchNamespaceStore use Jackson 2 types (ObjectMapper, JsonNode,
ObjectNode, TypeReference) that
were previously reaching the compile classpath only transitively via
elasticsearch-java. Add an explicit jackson-databind dependency to both
rdf4j-sail-elasticsearch and rdf4j-sail-elasticsearch-store so the
compile dependency is declared rather than assumed
@aschwarte10 aschwarte10 force-pushed the GH-5744-migrate-to-jackson3 branch from bbecca6 to 1319410 Compare April 23, 2026 06:28
Copy link
Copy Markdown
Member

@kenwenzel kenwenzel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@aschwarte10
Copy link
Copy Markdown
Contributor Author

Smoke testing in our application including RIO (SPARQL JSON / RDF JSON) as well as using the Native Store was working fine.

I suggest to merge for 6.0 milestone 1

@aschwarte10 aschwarte10 merged commit 6304f3a into develop Apr 23, 2026
12 checks passed
@aschwarte10 aschwarte10 deleted the GH-5744-migrate-to-jackson3 branch April 23, 2026 07:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

RDF4J-STF-M1: Dependency Management

3 participants