Skip to content

Commit 6f433e2

Browse files
committed
Support Jackson 3.x release line
Signed-off-by: Andriy Redko <drreta@gmail.com>
1 parent c6ebc61 commit 6f433e2

90 files changed

Lines changed: 491 additions & 476 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

build.gradle

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,11 @@ configurations {
483483
force 'commons-logging:commons-logging:1.3.6'
484484
force 'org.slf4j:slf4j-api:1.7.36'
485485
force 'org.scala-lang:scala-library:2.13.18'
486-
force "com.fasterxml.jackson:jackson-bom:${versions.jackson}"
486+
force "tools.jackson:jackson-bom:${versions.jackson3}"
487+
force "tools.jackson.core:jackson-core:${versions.jackson3}"
488+
force "tools.jackson.datatype:jackson-datatype-jdk8:${versions.jackson3}"
489+
force "tools.jackson.core:jackson-databind:${versions.jackson3_databind}"
490+
// Keeping Jackson 2.x since Kafka clients and etc still need it
487491
force "com.fasterxml.jackson.core:jackson-core:${versions.jackson}"
488492
force "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:${versions.jackson}"
489493
force "com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}"
@@ -597,10 +601,10 @@ allprojects {
597601
integrationTestImplementation "com.password4j:password4j:${versions.password4j}"
598602
integrationTestImplementation "com.google.guava:guava:${guava_version}"
599603
integrationTestImplementation "org.apache.commons:commons-lang3:${versions.commonslang}"
600-
integrationTestImplementation "com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}"
604+
integrationTestImplementation "tools.jackson.core:jackson-databind:${versions.jackson3_databind}"
601605
integrationTestImplementation 'org.greenrobot:eventbus-java:3.3.1'
602606
integrationTestImplementation "org.apache.commons:commons-collections4:${versions.commonscollections4}"
603-
integrationTestImplementation('com.flipkart.zjsonpatch:zjsonpatch:0.4.16'){
607+
integrationTestImplementation('io.github.vishwakarma:zjsonpatch:0.6.2'){
604608
exclude(group:'com.fasterxml.jackson.core')
605609
exclude(group: 'org.apache.commons', module: 'commons-collections4')
606610
}
@@ -707,7 +711,7 @@ dependencies {
707711
implementation "io.jsonwebtoken:jjwt-impl:${jjwt_version}"
708712
implementation "io.jsonwebtoken:jjwt-jackson:${jjwt_version}"
709713
// JSON patch
710-
implementation 'com.flipkart.zjsonpatch:zjsonpatch:0.4.16'
714+
implementation 'io.github.vishwakarma:zjsonpatch:0.6.2'
711715
implementation "org.apache.commons:commons-collections4:${versions.commonscollections4}"
712716

713717
//Password generation
@@ -816,7 +820,7 @@ dependencies {
816820
testRuntimeOnly "org.apache.kafka:kafka-storage:${kafka_version}"
817821

818822
implementation "com.fasterxml.jackson.core:jackson-annotations:${versions.jackson_annotations}"
819-
implementation "com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}"
823+
implementation "tools.jackson.core:jackson-databind:${versions.jackson3_databind}"
820824

821825
compileOnly "org.opensearch:opensearch:${opensearch_version}"
822826

bwc-test/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ dependencies {
7474
testImplementation "org.opensearch.test:framework:${opensearch_version}"
7575
testImplementation "org.apache.logging.log4j:log4j-core:${versions.log4j}"
7676
testImplementation "org.opensearch:common-utils:${common_utils_version}"
77-
testImplementation "com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}"
77+
testImplementation "tools.jackson.core:jackson-databind:${versions.jackson3_databind}"
7878
testImplementation "com.fasterxml.jackson.core:jackson-annotations:${versions.jackson_annotations}"
7979

8080
}

bwc-test/src/test/java/org/opensearch/security/bwc/SecurityBackwardsCompatibilityIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.util.stream.Collectors;
2222
import javax.net.ssl.SSLContext;
2323

24-
import com.fasterxml.jackson.databind.ObjectMapper;
2524
import org.apache.hc.client5.http.auth.AuthScope;
2625
import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
2726
import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
@@ -55,6 +54,8 @@
5554
import org.opensearch.security.bwc.helper.RestHelper;
5655
import org.opensearch.test.rest.OpenSearchRestTestCase;
5756

57+
import tools.jackson.databind.ObjectMapper;
58+
5859
import static org.apache.hc.core5.http.ContentType.APPLICATION_NDJSON;
5960
import static org.hamcrest.MatcherAssert.assertThat;
6061
import static org.hamcrest.Matchers.anyOf;

bwc-test/src/test/java/org/opensearch/security/bwc/Song.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,10 @@
1313
import java.util.Objects;
1414
import java.util.UUID;
1515

16-
import com.fasterxml.jackson.core.JsonProcessingException;
17-
import com.fasterxml.jackson.databind.ObjectMapper;
18-
1916
import org.opensearch.common.Randomness;
2017

18+
import tools.jackson.databind.ObjectMapper;
19+
2120
public class Song {
2221

2322
public static final String FIELD_TITLE = "title";
@@ -104,7 +103,7 @@ public Map<String, Object> asMap() {
104103
return Map.of(FIELD_ARTIST, artist, FIELD_TITLE, title, FIELD_LYRICS, lyrics, FIELD_STARS, stars, FIELD_GENRE, genre);
105104
}
106105

107-
public String asJson() throws JsonProcessingException {
106+
public String asJson() {
108107
return new ObjectMapper().writeValueAsString(this.asMap());
109108
}
110109

libs/opensaml/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ configurations.all {
3131
force "org.bouncycastle:bcpkix-jdk18on:1.83"
3232
force "org.bouncycastle:bcprov-jdk18on:1.83"
3333
force "org.apache.commons:commons-lang3:${versions.commonslang}"
34-
force "com.fasterxml.jackson.core:jackson-core:${versions.jackson}"
34+
force "tools.jackson.core:jackson-core:${versions.jackson3}"
3535
}
3636
}
3737

sample-resource-plugin/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ dependencies {
9393

9494
implementation "org.opensearch:common-utils:${common_utils_version}"
9595
implementation "org.opensearch.client:opensearch-rest-client:${opensearch_version}"
96-
implementation "com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}"
96+
implementation "tools.jackson.core:jackson-databind:${versions.jackson3_databind}"
9797

9898
integrationTestImplementation 'org.ldaptive:ldaptive:1.2.3' // for running multinode tests
9999

sample-resource-plugin/src/integrationTest/java/org/opensearch/sample/resource/securityapis/MigrateApiTests.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@
1616
import java.util.Map;
1717

1818
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope;
19-
import com.fasterxml.jackson.databind.ObjectMapper;
20-
import com.fasterxml.jackson.databind.node.ArrayNode;
21-
import com.fasterxml.jackson.databind.node.ObjectNode;
2219
import org.apache.http.HttpStatus;
2320
import org.awaitility.Awaitility;
2421
import org.junit.After;
@@ -36,6 +33,10 @@
3633
import org.opensearch.test.framework.cluster.TestRestClient;
3734
import org.opensearch.test.framework.matcher.RestMatchers;
3835

36+
import tools.jackson.databind.ObjectMapper;
37+
import tools.jackson.databind.node.ArrayNode;
38+
import tools.jackson.databind.node.ObjectNode;
39+
3940
import static org.hamcrest.MatcherAssert.assertThat;
4041
import static org.hamcrest.Matchers.containsInAnyOrder;
4142
import static org.hamcrest.Matchers.equalTo;
@@ -653,10 +654,10 @@ public void testMigrateAPI_withGarbageParentId() {
653654
ArrayNode hitsNode = (ArrayNode) sharingResponse.bodyAsJsonNode().get("hits").get("hits");
654655
assertThat(hitsNode.size(), equalTo(1));
655656

656-
com.fasterxml.jackson.databind.JsonNode source = hitsNode.get(0).get("_source");
657-
assertThat(source.get("resource_id").asText(), equalTo(resourceId));
658-
assertThat(source.get("parent_id").asText(), equalTo(garbageGroupId));
659-
assertThat(source.get("parent_type").asText(), equalTo(RESOURCE_GROUP_TYPE));
657+
tools.jackson.databind.JsonNode source = hitsNode.get(0).get("_source");
658+
assertThat(source.get("resource_id").asString(), equalTo(resourceId));
659+
assertThat(source.get("parent_id").asString(), equalTo(garbageGroupId));
660+
assertThat(source.get("parent_type").asString(), equalTo(RESOURCE_GROUP_TYPE));
660661

661662
// Access check for the owner should still work gracefully — the nonexistent parent
662663
// simply contributes no additional resource IDs, so the resource remains owner-accessible
@@ -690,18 +691,18 @@ public void testMigrateAPI_withParentHierarchy() {
690691
assertThat(hitsNode.size(), equalTo(2));
691692

692693
// Find the resource hit (not the group) and verify parent fields
693-
com.fasterxml.jackson.databind.JsonNode resourceSource = null;
694-
for (com.fasterxml.jackson.databind.JsonNode hit : hitsNode) {
695-
com.fasterxml.jackson.databind.JsonNode src = hit.get("_source");
696-
if (RESOURCE_TYPE.equals(src.get("resource_type").asText())) {
694+
tools.jackson.databind.JsonNode resourceSource = null;
695+
for (tools.jackson.databind.JsonNode hit : hitsNode) {
696+
tools.jackson.databind.JsonNode src = hit.get("_source");
697+
if (RESOURCE_TYPE.equals(src.get("resource_type").asString())) {
697698
resourceSource = src;
698699
break;
699700
}
700701
}
701702
assertThat("Expected a sharing record for resource type " + RESOURCE_TYPE, resourceSource != null);
702-
assertThat(resourceSource.get("resource_id").asText(), equalTo(resourceId));
703-
assertThat(resourceSource.get("parent_type").asText(), equalTo(RESOURCE_GROUP_TYPE));
704-
assertThat(resourceSource.get("parent_id").asText(), equalTo(groupId));
703+
assertThat(resourceSource.get("resource_id").asString(), equalTo(resourceId));
704+
assertThat(resourceSource.get("parent_type").asString(), equalTo(RESOURCE_GROUP_TYPE));
705+
assertThat(resourceSource.get("parent_id").asString(), equalTo(groupId));
705706
}
706707
}
707708

src/integrationTest/java/org/opensearch/security/AbstractDefaultConfigurationTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import java.util.Map;
1515
import java.util.Set;
1616

17-
import com.fasterxml.jackson.databind.JsonNode;
1817
import org.apache.http.HttpStatus;
1918
import org.awaitility.Awaitility;
2019
import org.junit.Test;
@@ -23,6 +22,8 @@
2322
import org.opensearch.test.framework.cluster.LocalCluster;
2423
import org.opensearch.test.framework.cluster.TestRestClient;
2524

25+
import tools.jackson.databind.JsonNode;
26+
2627
import static org.hamcrest.MatcherAssert.assertThat;
2728
import static org.hamcrest.Matchers.aMapWithSize;
2829
import static org.hamcrest.Matchers.allOf;
@@ -226,7 +227,7 @@ public void securityRolesUpgradeSpecifyingRoles() throws Exception {
226227

227228
private Set<String> extractFieldNames(final JsonNode json) {
228229
final var set = new HashSet<String>();
229-
json.fieldNames().forEachRemaining(set::add);
230+
json.propertyNames().spliterator().forEachRemaining(set::add);
230231
return set;
231232
}
232233

src/integrationTest/java/org/opensearch/security/ParentChildRelationTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import java.util.List;
1313
import java.util.Map;
1414

15-
import com.fasterxml.jackson.databind.JsonNode;
1615
import org.junit.BeforeClass;
1716
import org.junit.ClassRule;
1817
import org.junit.Test;
@@ -28,6 +27,8 @@
2827
import org.opensearch.test.framework.cluster.TestRestClient.HttpResponse;
2928
import org.opensearch.transport.client.Client;
3029

30+
import tools.jackson.databind.JsonNode;
31+
3132
import static org.hamcrest.MatcherAssert.assertThat;
3233
import static org.hamcrest.Matchers.equalTo;
3334
import static org.opensearch.action.support.WriteRequest.RefreshPolicy.IMMEDIATE;

src/integrationTest/java/org/opensearch/security/api/AbstractConfigEntityApiIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ void verifyNoHiddenEntities(final CheckedSupplier<TestRestClient.HttpResponse, E
174174
assertThat(resp, isOk());
175175
final var body = resp.bodyAsJsonNode();
176176
final var pretty = body.toPrettyString();
177-
final var it = body.elements();
177+
final var it = body.values().iterator();
178178
while (it.hasNext()) {
179179
final var e = it.next();
180180
assertThat(pretty, not(e.get("hidden").asBoolean()));

0 commit comments

Comments
 (0)