From 60a1b5be3e6b4d4a4fff7fc1c10f9a2c6e56c588 Mon Sep 17 00:00:00 2001 From: Parker Winchester Date: Thu, 9 Jul 2026 14:46:52 -0400 Subject: [PATCH 1/2] Add opt-in Blackbird optimization to conjure-undertow Encodings --- build.gradle | 1 + .../java/undertow/runtime/Encodings.java | 21 +++++++++-- versions.lock | 36 +++++++++---------- versions.props | 2 +- 4 files changed, 38 insertions(+), 22 deletions(-) diff --git a/build.gradle b/build.gradle index 8d6269a55..5b350e119 100644 --- a/build.gradle +++ b/build.gradle @@ -61,6 +61,7 @@ allprojects { group 'com.palantir.conjure.java' repositories { + mavenLocal() mavenCentral() { metadataSources { mavenPom(); ignoreGradleMetadataRedirection() } } } } diff --git a/conjure-java-undertow-runtime/src/main/java/com/palantir/conjure/java/undertow/runtime/Encodings.java b/conjure-java-undertow-runtime/src/main/java/com/palantir/conjure/java/undertow/runtime/Encodings.java index ef85170d0..a04c21ea1 100644 --- a/conjure-java-undertow-runtime/src/main/java/com/palantir/conjure/java/undertow/runtime/Encodings.java +++ b/conjure-java-undertow-runtime/src/main/java/com/palantir/conjure/java/undertow/runtime/Encodings.java @@ -121,7 +121,12 @@ public final Deserializer deserializer(TypeMarker type) { /** Returns a serializer for the Conjure JSON wire format. */ public static Encoding json() { - return new AbstractJacksonEncoding(configure(ObjectMappers.newServerObjectMapper())) { + return json(false); + } + + /** Like {@link #json()}, optionally enabling Jackson optimization modules (Blackbird) on the server mapper. */ + public static Encoding json(boolean useOptimizations) { + return new AbstractJacksonEncoding(configure(ObjectMappers.newServerJsonMapper(useOptimizations))) { private static final String CONTENT_TYPE = "application/json"; @Override @@ -133,7 +138,12 @@ public String getContentType() { /** Returns a serializer for the Conjure CBOR wire format. */ public static Encoding cbor() { - return new AbstractJacksonEncoding(configure(ObjectMappers.newCborServerObjectMapper())) { + return cbor(false); + } + + /** Like {@link #cbor()}, optionally enabling Jackson optimization modules (Blackbird) on the server mapper. */ + public static Encoding cbor(boolean useOptimizations) { + return new AbstractJacksonEncoding(configure(ObjectMappers.newServerCborMapper(useOptimizations))) { private static final String CONTENT_TYPE = "application/cbor"; @Override @@ -145,7 +155,12 @@ public String getContentType() { /** Returns a serializer for the Conjure Smile wire format. */ public static Encoding smile() { - return new AbstractJacksonEncoding(configure(ObjectMappers.newSmileServerObjectMapper())) { + return smile(false); + } + + /** Like {@link #smile()}, optionally enabling Jackson optimization modules (Blackbird) on the server mapper. */ + public static Encoding smile(boolean useOptimizations) { + return new AbstractJacksonEncoding(configure(ObjectMappers.newServerSmileMapper(useOptimizations))) { private static final String CONTENT_TYPE = "application/x-jackson-smile"; @Override diff --git a/versions.lock b/versions.lock index c03711dd9..8c45021e9 100644 --- a/versions.lock +++ b/versions.lock @@ -22,6 +22,8 @@ com.fasterxml.jackson.datatype:jackson-datatype-joda:2.21.4 (1 constraints: 7f1c com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.21.4 (2 constraints: 362b02b0) +com.fasterxml.jackson.module:jackson-module-blackbird:2.21.4 (2 constraints: 522b95b6) + com.github.ben-manes.caffeine:caffeine:3.2.4 (10 constraints: 6aafbae9) com.google.auto:auto-common:1.2.2 (2 constraints: 1e175831) @@ -50,29 +52,29 @@ com.palantir.conjure.java.api:service-config:2.74.0 (6 constraints: 44663edf) com.palantir.conjure.java.api:ssl-config:2.74.0 (5 constraints: bf4ffe30) -com.palantir.conjure.java.runtime:client-config:8.38.0 (6 constraints: cc6b5839) +com.palantir.conjure.java.runtime:client-config:8.38.0-13-g8946b5f.dirty (6 constraints: d17beb19) -com.palantir.conjure.java.runtime:conjure-java-jackson-optimizations:8.38.0 (1 constraints: 891cd4a4) +com.palantir.conjure.java.runtime:conjure-java-jackson-optimizations:8.38.0-13-g8946b5f.dirty (1 constraints: e02197d1) -com.palantir.conjure.java.runtime:conjure-java-jackson-serialization:8.38.0 (4 constraints: 404a2226) +com.palantir.conjure.java.runtime:conjure-java-jackson-serialization:8.38.0-13-g8946b5f.dirty (4 constraints: 455a6bf1) -com.palantir.conjure.java.runtime:keystores:8.38.0 (3 constraints: 262af560) +com.palantir.conjure.java.runtime:keystores:8.38.0-13-g8946b5f.dirty (3 constraints: d434ae70) com.palantir.deadlines:deadlines:0.23.0 (2 constraints: 9d14d3ab) -com.palantir.dialogue:dialogue-apache-hc5-client:6.32.0 (2 constraints: 7529ed00) +com.palantir.dialogue:dialogue-apache-hc5-client:6.32.0 (2 constraints: 76292001) com.palantir.dialogue:dialogue-blocking-channels:6.32.0 (2 constraints: d52307b3) com.palantir.dialogue:dialogue-clients:6.32.0 (1 constraints: 3d05553b) -com.palantir.dialogue:dialogue-core:6.32.0 (3 constraints: 733dfcde) +com.palantir.dialogue:dialogue-core:6.32.0 (3 constraints: 743d69df) com.palantir.dialogue:dialogue-futures:6.32.0 (3 constraints: c833ebbc) -com.palantir.dialogue:dialogue-serde:6.32.0 (3 constraints: b12ecca0) +com.palantir.dialogue:dialogue-serde:6.32.0 (3 constraints: b22effa0) -com.palantir.dialogue:dialogue-target:6.32.0 (7 constraints: 12796fe5) +com.palantir.dialogue:dialogue-target:6.32.0 (7 constraints: 137971e6) com.palantir.goethe:goethe:0.24.0 (1 constraints: 3805333b) @@ -100,7 +102,7 @@ com.palantir.safethreadlocalrandom:safe-thread-local-random:0.10.0 (1 constraint com.palantir.syntactic-paths:syntactic-paths:0.18.0 (2 constraints: fa137e82) -com.palantir.tokens:auth-tokens:4.7.0 (5 constraints: 7953bc57) +com.palantir.tokens:auth-tokens:4.7.0 (5 constraints: 7a531a58) com.palantir.tracing:tracing:6.36.0 (8 constraints: 887eb31f) @@ -118,7 +120,7 @@ com.palantir.tritium:tritium-ids:0.128.0 (1 constraints: fe0f9aa6) com.palantir.tritium:tritium-metrics:0.132.0 (6 constraints: 76683d20) -com.palantir.tritium:tritium-registry:0.132.0 (11 constraints: 34df6484) +com.palantir.tritium:tritium-registry:0.134.0 (11 constraints: 40df549a) com.squareup:javapoet:1.13.0 (1 constraints: f50b65f7) @@ -214,8 +216,6 @@ com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-cbor-provider:2.21.4 (1 cons com.fasterxml.jackson.jakarta.rs:jackson-jakarta-rs-json-provider:2.21.4 (3 constraints: 67226ef7) -com.fasterxml.jackson.module:jackson-module-blackbird:2.21.4 (1 constraints: b80e705e) - com.fasterxml.jackson.module:jackson-module-jakarta-xmlbind-annotations:2.21.4 (2 constraints: fd35a76d) com.fasterxml.jackson.module:jackson-module-parameter-names:2.21.4 (1 constraints: b80e705e) @@ -236,19 +236,19 @@ com.palantir.conjure:conjure-core:4.57.0 (1 constraints: 4205603b) com.palantir.conjure.java.api:test-utils:2.74.0 (1 constraints: 3f05533b) -com.palantir.conjure.java.runtime:conjure-java-annotations:8.38.0 (1 constraints: c918989e) +com.palantir.conjure.java.runtime:conjure-java-annotations:8.38.0-13-g8946b5f.dirty (1 constraints: 201edb87) -com.palantir.conjure.java.runtime:conjure-java-jaxrs-client:8.38.0 (1 constraints: 4505733b) +com.palantir.conjure.java.runtime:conjure-java-jaxrs-client:8.38.0-13-g8946b5f.dirty (1 constraints: 9c0a50c5) -com.palantir.conjure.java.runtime:conjure-java-jersey-jakarta-server:8.38.0 (1 constraints: 4505733b) +com.palantir.conjure.java.runtime:conjure-java-jersey-jakarta-server:8.38.0-13-g8946b5f.dirty (1 constraints: 9c0a50c5) -com.palantir.conjure.java.runtime:conjure-java-legacy-clients:8.38.0 (2 constraints: 0d1e7d45) +com.palantir.conjure.java.runtime:conjure-java-legacy-clients:8.38.0-13-g8946b5f.dirty (2 constraints: bb2814e8) -com.palantir.conjure.java.runtime:refresh-utils:8.38.0 (1 constraints: c918989e) +com.palantir.conjure.java.runtime:refresh-utils:8.38.0-13-g8946b5f.dirty (1 constraints: 201edb87) com.palantir.safe-logging:preconditions-assertj:3.16.0 (1 constraints: 3c05473b) -com.palantir.tracing:tracing-jersey-jakarta:6.36.0 (1 constraints: 511c9ca1) +com.palantir.tracing:tracing-jersey-jakarta:6.36.0 (1 constraints: 521c9fa1) io.dropwizard:dropwizard-configuration:4.0.13 (2 constraints: 381c2dc1) diff --git a/versions.props b/versions.props index 9d4d19f8c..7b4d684b9 100644 --- a/versions.props +++ b/versions.props @@ -8,7 +8,7 @@ com.google.guava:guava = 33.6.0-jre com.google.testing.compile:compile-testing = 0.23.0 com.palantir.common:streams = 2.12.0 com.palantir.conjure.java.api:* = 2.74.0 -com.palantir.conjure.java.runtime:* = 8.38.0 +com.palantir.conjure.java.runtime:* = 8.38.0-13-g8946b5f.dirty com.palantir.conjure.verification:* = 0.19.0 com.palantir.conjure:* = 4.57.0 com.palantir.deadlines:* = 0.23.0 From f5bf93b00c7b9f1fda6542a53803627527a05beb Mon Sep 17 00:00:00 2001 From: Parker Winchester Date: Thu, 9 Jul 2026 16:08:52 -0400 Subject: [PATCH 2/2] Pin non-dirty local conjure-java-runtime version --- versions.lock | 18 +++++++++--------- versions.props | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/versions.lock b/versions.lock index 8c45021e9..9a2990004 100644 --- a/versions.lock +++ b/versions.lock @@ -52,13 +52,13 @@ com.palantir.conjure.java.api:service-config:2.74.0 (6 constraints: 44663edf) com.palantir.conjure.java.api:ssl-config:2.74.0 (5 constraints: bf4ffe30) -com.palantir.conjure.java.runtime:client-config:8.38.0-13-g8946b5f.dirty (6 constraints: d17beb19) +com.palantir.conjure.java.runtime:client-config:8.38.0-14-g75ccd50 (6 constraints: 2f754f44) -com.palantir.conjure.java.runtime:conjure-java-jackson-optimizations:8.38.0-13-g8946b5f.dirty (1 constraints: e02197d1) +com.palantir.conjure.java.runtime:conjure-java-jackson-optimizations:8.38.0-14-g75ccd50 (1 constraints: aa1f6a0e) -com.palantir.conjure.java.runtime:conjure-java-jackson-serialization:8.38.0-13-g8946b5f.dirty (4 constraints: 455a6bf1) +com.palantir.conjure.java.runtime:conjure-java-jackson-serialization:8.38.0-14-g75ccd50 (4 constraints: a353aca4) -com.palantir.conjure.java.runtime:keystores:8.38.0-13-g8946b5f.dirty (3 constraints: d434ae70) +com.palantir.conjure.java.runtime:keystores:8.38.0-14-g75ccd50 (3 constraints: 6830a7fb) com.palantir.deadlines:deadlines:0.23.0 (2 constraints: 9d14d3ab) @@ -236,15 +236,15 @@ com.palantir.conjure:conjure-core:4.57.0 (1 constraints: 4205603b) com.palantir.conjure.java.api:test-utils:2.74.0 (1 constraints: 3f05533b) -com.palantir.conjure.java.runtime:conjure-java-annotations:8.38.0-13-g8946b5f.dirty (1 constraints: 201edb87) +com.palantir.conjure.java.runtime:conjure-java-annotations:8.38.0-14-g75ccd50 (1 constraints: ea1b1fdb) -com.palantir.conjure.java.runtime:conjure-java-jaxrs-client:8.38.0-13-g8946b5f.dirty (1 constraints: 9c0a50c5) +com.palantir.conjure.java.runtime:conjure-java-jaxrs-client:8.38.0-14-g75ccd50 (1 constraints: 6608bb8d) -com.palantir.conjure.java.runtime:conjure-java-jersey-jakarta-server:8.38.0-13-g8946b5f.dirty (1 constraints: 9c0a50c5) +com.palantir.conjure.java.runtime:conjure-java-jersey-jakarta-server:8.38.0-14-g75ccd50 (1 constraints: 6608bb8d) -com.palantir.conjure.java.runtime:conjure-java-legacy-clients:8.38.0-13-g8946b5f.dirty (2 constraints: bb2814e8) +com.palantir.conjure.java.runtime:conjure-java-legacy-clients:8.38.0-14-g75ccd50 (2 constraints: 4f240b11) -com.palantir.conjure.java.runtime:refresh-utils:8.38.0-13-g8946b5f.dirty (1 constraints: 201edb87) +com.palantir.conjure.java.runtime:refresh-utils:8.38.0-14-g75ccd50 (1 constraints: ea1b1fdb) com.palantir.safe-logging:preconditions-assertj:3.16.0 (1 constraints: 3c05473b) diff --git a/versions.props b/versions.props index 7b4d684b9..cd1026348 100644 --- a/versions.props +++ b/versions.props @@ -8,7 +8,7 @@ com.google.guava:guava = 33.6.0-jre com.google.testing.compile:compile-testing = 0.23.0 com.palantir.common:streams = 2.12.0 com.palantir.conjure.java.api:* = 2.74.0 -com.palantir.conjure.java.runtime:* = 8.38.0-13-g8946b5f.dirty +com.palantir.conjure.java.runtime:* = 8.38.0-14-g75ccd50 com.palantir.conjure.verification:* = 0.19.0 com.palantir.conjure:* = 4.57.0 com.palantir.deadlines:* = 0.23.0