Skip to content

Commit c4ee6f8

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

112 files changed

Lines changed: 1298 additions & 542 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.

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
3030

3131
- Add warmup phase to wait for lag to catch up in pull-based ingestion before serving ([#20526](https://github.com/opensearch-project/OpenSearch/pull/20526))
3232
- Add a new static method to IndicesOptions API to expose `STRICT_EXPAND_OPEN_HIDDEN_FORBID_CLOSED` index option ([#20980](https://github.com/opensearch-project/OpenSearch/pull/20980))
33+
- Support Jackson 3.x release line ([#21029](https://github.com/opensearch-project/OpenSearch/pull/21029))
3334

3435
### Changed
3536
- Make telemetry `Tags` immutable ([#20788](https://github.com/opensearch-project/OpenSearch/pull/20788))

client/rest-high-level/src/test/java/org/opensearch/client/RestHighLevelClientTests.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@
3232

3333
package org.opensearch.client;
3434

35-
import com.fasterxml.jackson.core.JsonParseException;
36-
3735
import org.apache.hc.client5.http.classic.methods.HttpGet;
3836
import org.apache.hc.core5.http.ClassicHttpResponse;
3937
import org.apache.hc.core5.http.ContentType;
@@ -86,6 +84,7 @@
8684
import org.opensearch.test.OpenSearchTestCase;
8785
import org.opensearch.test.rest.yaml.restspec.ClientYamlSuiteRestApi;
8886
import org.opensearch.test.rest.yaml.restspec.ClientYamlSuiteRestSpec;
87+
import org.opensearch.tools.jackson.core.JsonParseException;
8988
import org.hamcrest.Matchers;
9089
import org.junit.Before;
9190

client/sniffer/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ dependencies {
4747
api "org.apache.httpcomponents.core5:httpcore5:${versions.httpcore5}"
4848
api "commons-codec:commons-codec:${versions.commonscodec}"
4949
api "commons-logging:commons-logging:${versions.commonslogging}"
50-
api "com.fasterxml.jackson.core:jackson-core:${versions.jackson}"
50+
api "tools.jackson.core:jackson-core:${versions.jackson3}"
5151

5252
testImplementation project(":client:test")
5353
testImplementation "com.carrotsearch.randomizedtesting:randomizedtesting-runner:${versions.randomizedrunner}"

client/sniffer/licenses/jackson-core-2.21.2.jar.sha1

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
df0dc5d0bf720739ae7b6afeee2af2aabf88905b

client/sniffer/src/main/java/org/opensearch/client/sniff/OpenSearchNodesSniffer.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,6 @@
3232

3333
package org.opensearch.client.sniff;
3434

35-
import com.fasterxml.jackson.core.JsonFactory;
36-
import com.fasterxml.jackson.core.JsonParser;
37-
import com.fasterxml.jackson.core.JsonToken;
38-
3935
import org.apache.commons.logging.Log;
4036
import org.apache.commons.logging.LogFactory;
4137
import org.apache.hc.core5.http.HttpEntity;
@@ -60,6 +56,10 @@
6056
import java.util.TreeSet;
6157
import java.util.concurrent.TimeUnit;
6258

59+
import tools.jackson.core.JsonParser;
60+
import tools.jackson.core.JsonToken;
61+
import tools.jackson.core.json.JsonFactory;
62+
6363
import static java.util.Collections.singletonList;
6464
import static java.util.Collections.unmodifiableList;
6565
import static java.util.Collections.unmodifiableMap;
@@ -131,12 +131,12 @@ static List<Node> readHosts(HttpEntity entity, Scheme scheme, JsonFactory jsonFa
131131
}
132132
List<Node> nodes = new ArrayList<>();
133133
while (parser.nextToken() != JsonToken.END_OBJECT) {
134-
if (parser.getCurrentToken() == JsonToken.START_OBJECT) {
135-
if ("nodes".equals(parser.getCurrentName())) {
134+
if (parser.currentToken() == JsonToken.START_OBJECT) {
135+
if ("nodes".equals(parser.currentName())) {
136136
while (parser.nextToken() != JsonToken.END_OBJECT) {
137137
JsonToken token = parser.nextToken();
138138
assert token == JsonToken.START_OBJECT;
139-
String nodeId = parser.getCurrentName();
139+
String nodeId = parser.currentName();
140140
Node node = readNode(nodeId, parser, scheme);
141141
if (node != null) {
142142
nodes.add(node);
@@ -174,12 +174,12 @@ private static Node readNode(String nodeId, JsonParser parser, Scheme scheme) th
174174

175175
String fieldName = null;
176176
while (parser.nextToken() != JsonToken.END_OBJECT) {
177-
if (parser.getCurrentToken() == JsonToken.FIELD_NAME) {
178-
fieldName = parser.getCurrentName();
179-
} else if (parser.getCurrentToken() == JsonToken.START_OBJECT) {
177+
if (parser.currentToken() == JsonToken.PROPERTY_NAME) {
178+
fieldName = parser.currentName();
179+
} else if (parser.currentToken() == JsonToken.START_OBJECT) {
180180
if ("http".equals(fieldName)) {
181181
while (parser.nextToken() != JsonToken.END_OBJECT) {
182-
if (parser.getCurrentToken() == JsonToken.VALUE_STRING && "publish_address".equals(parser.getCurrentName())) {
182+
if (parser.currentToken() == JsonToken.VALUE_STRING && "publish_address".equals(parser.currentName())) {
183183
String address = parser.getValueAsString();
184184
String host;
185185
URI publishAddressAsURI;
@@ -194,23 +194,23 @@ private static Node readNode(String nodeId, JsonParser parser, Scheme scheme) th
194194
host = publishAddressAsURI.getHost();
195195
}
196196
publishedHost = new HttpHost(publishAddressAsURI.getScheme(), host, publishAddressAsURI.getPort());
197-
} else if (parser.currentToken() == JsonToken.START_ARRAY && "bound_address".equals(parser.getCurrentName())) {
197+
} else if (parser.currentToken() == JsonToken.START_ARRAY && "bound_address".equals(parser.currentName())) {
198198
while (parser.nextToken() != JsonToken.END_ARRAY) {
199199
URI boundAddressAsURI = URI.create(scheme + "://" + parser.getValueAsString());
200200
boundHosts.add(
201201
new HttpHost(boundAddressAsURI.getScheme(), boundAddressAsURI.getHost(), boundAddressAsURI.getPort())
202202
);
203203
}
204-
} else if (parser.getCurrentToken() == JsonToken.START_OBJECT) {
204+
} else if (parser.currentToken() == JsonToken.START_OBJECT) {
205205
parser.skipChildren();
206206
}
207207
}
208208
} else if ("attributes".equals(fieldName)) {
209209
while (parser.nextToken() != JsonToken.END_OBJECT) {
210-
if (parser.getCurrentToken() == JsonToken.VALUE_STRING) {
211-
String oldValue = protoAttributes.put(parser.getCurrentName(), parser.getValueAsString());
210+
if (parser.currentToken() == JsonToken.VALUE_STRING) {
211+
String oldValue = protoAttributes.put(parser.currentName(), parser.getValueAsString());
212212
if (oldValue != null) {
213-
throw new IOException("repeated attribute key [" + parser.getCurrentName() + "]");
213+
throw new IOException("repeated attribute key [" + parser.currentName() + "]");
214214
}
215215
} else {
216216
parser.skipChildren();

client/sniffer/src/test/java/org/opensearch/client/sniff/OpenSearchNodesSnifferParseTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@
3232

3333
package org.opensearch.client.sniff;
3434

35-
import com.fasterxml.jackson.core.JsonFactory;
36-
3735
import org.apache.hc.core5.http.ContentType;
3836
import org.apache.hc.core5.http.HttpEntity;
3937
import org.apache.hc.core5.http.HttpHost;
@@ -53,6 +51,8 @@
5351
import java.util.Set;
5452
import java.util.TreeSet;
5553

54+
import tools.jackson.core.json.JsonFactory;
55+
5656
import static java.util.Collections.singletonList;
5757
import static org.hamcrest.Matchers.hasSize;
5858
import static org.junit.Assert.assertEquals;

client/sniffer/src/test/java/org/opensearch/client/sniff/OpenSearchNodesSnifferTests.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,6 @@
3636
import com.carrotsearch.randomizedtesting.generators.RandomPicks;
3737
import com.carrotsearch.randomizedtesting.generators.RandomStrings;
3838

39-
import com.fasterxml.jackson.core.JsonFactory;
40-
import com.fasterxml.jackson.core.JsonGenerator;
41-
4239
import com.sun.net.httpserver.HttpExchange;
4340
import com.sun.net.httpserver.HttpHandler;
4441
import com.sun.net.httpserver.HttpServer;
@@ -69,6 +66,9 @@
6966
import java.util.Set;
7067
import java.util.TreeSet;
7168

69+
import tools.jackson.core.JsonGenerator;
70+
import tools.jackson.core.json.JsonFactory;
71+
7272
import static org.hamcrest.CoreMatchers.containsString;
7373
import static org.hamcrest.CoreMatchers.equalTo;
7474
import static org.hamcrest.CoreMatchers.startsWith;
@@ -202,13 +202,13 @@ private static SniffResponse buildSniffResponse(OpenSearchNodesSniffer.Scheme sc
202202
JsonGenerator generator = jsonFactory.createGenerator(writer);
203203
generator.writeStartObject();
204204
if (getRandom().nextBoolean()) {
205-
generator.writeStringField("cluster_name", "opensearch");
205+
generator.writeStringProperty("cluster_name", "opensearch");
206206
}
207207
if (getRandom().nextBoolean()) {
208-
generator.writeObjectFieldStart("bogus_object");
208+
generator.writeObjectPropertyStart("bogus_object");
209209
generator.writeEndObject();
210210
}
211-
generator.writeObjectFieldStart("nodes");
211+
generator.writeObjectPropertyStart("nodes");
212212
for (int i = 0; i < numNodes; i++) {
213213
String nodeId = RandomStrings.randomAsciiOfLengthBetween(getRandom(), 5, 10);
214214
String host = "host" + i;
@@ -255,40 +255,40 @@ private static SniffResponse buildSniffResponse(OpenSearchNodesSniffer.Scheme sc
255255
attributes
256256
);
257257

258-
generator.writeObjectFieldStart(nodeId);
258+
generator.writeObjectPropertyStart(nodeId);
259259
if (getRandom().nextBoolean()) {
260-
generator.writeObjectFieldStart("bogus_object");
260+
generator.writeObjectPropertyStart("bogus_object");
261261
generator.writeEndObject();
262262
}
263263
if (getRandom().nextBoolean()) {
264-
generator.writeArrayFieldStart("bogus_array");
264+
generator.writeArrayPropertyStart("bogus_array");
265265
generator.writeStartObject();
266266
generator.writeEndObject();
267267
generator.writeEndArray();
268268
}
269269
boolean isHttpEnabled = rarely() == false;
270270
if (isHttpEnabled) {
271271
nodes.add(node);
272-
generator.writeObjectFieldStart("http");
273-
generator.writeArrayFieldStart("bound_address");
272+
generator.writeObjectPropertyStart("http");
273+
generator.writeArrayPropertyStart("bound_address");
274274
for (HttpHost bound : boundHosts) {
275275
generator.writeString(bound.toHostString());
276276
}
277277
generator.writeEndArray();
278278
if (getRandom().nextBoolean()) {
279-
generator.writeObjectFieldStart("bogus_object");
279+
generator.writeObjectPropertyStart("bogus_object");
280280
generator.writeEndObject();
281281
}
282-
generator.writeStringField("publish_address", publishHost.toHostString());
282+
generator.writeStringProperty("publish_address", publishHost.toHostString());
283283
if (getRandom().nextBoolean()) {
284-
generator.writeNumberField("max_content_length_in_bytes", 104857600);
284+
generator.writeNumberProperty("max_content_length_in_bytes", 104857600);
285285
}
286286
generator.writeEndObject();
287287
}
288288

289289
List<String> roles = Arrays.asList(new String[] { "cluster_manager", "data", "ingest" });
290290
Collections.shuffle(roles, getRandom());
291-
generator.writeArrayFieldStart("roles");
291+
generator.writeArrayPropertyStart("roles");
292292
for (String role : roles) {
293293
if ("cluster_manager".equals(role) && node.getRoles().isClusterManagerEligible()) {
294294
generator.writeString("cluster_manager");
@@ -302,15 +302,15 @@ private static SniffResponse buildSniffResponse(OpenSearchNodesSniffer.Scheme sc
302302
}
303303
generator.writeEndArray();
304304

305-
generator.writeFieldName("version");
305+
generator.writeName("version");
306306
generator.writeString(node.getVersion());
307-
generator.writeFieldName("name");
307+
generator.writeName("name");
308308
generator.writeString(node.getName());
309309

310310
if (numAttributes > 0) {
311-
generator.writeObjectFieldStart("attributes");
311+
generator.writeObjectPropertyStart("attributes");
312312
for (Map.Entry<String, List<String>> entry : attributes.entrySet()) {
313-
generator.writeStringField(entry.getKey(), entry.getValue().toString());
313+
generator.writeStringProperty(entry.getKey(), entry.getValue().toString());
314314
}
315315
generator.writeEndObject();
316316
}

gradle/libs.versions.toml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ jts = "1.15.0"
1111
jackson_annotations = "2.21"
1212
jackson = "2.21.2"
1313
jackson_databind = "2.21.2"
14-
snakeyaml = "2.1"
14+
jackson3 = "3.1.0"
15+
jackson3_databind = "3.1.0"
16+
snakeyaml = "2.6"
17+
snakeyaml_engine = "3.0.1"
1518
icu4j = "77.1"
1619
supercsv = "2.4.0"
1720
log4j = "2.25.3"
@@ -117,8 +120,17 @@ gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" }
117120
hamcrest = { group = "org.hamcrest", name = "hamcrest", version.ref = "hamcrest" }
118121
hdrhistogram = { group = "org.hdrhistogram", name = "HdrHistogram", version.ref = "hdrhistogram" }
119122
jackson-annotation = { group = "com.fasterxml.jackson.core", name = "jackson-annotations", version.ref = "jackson_annotations" }
123+
jackson-core = { group = "com.fasterxml.jackson.core", name = "jackson-core", version.ref = "jackson" }
120124
jackson-databind = { group = "com.fasterxml.jackson.core", name = "jackson-databind", version.ref = "jackson_databind" }
125+
jackson-dataformat-smile = { group = "com.fasterxml.jackson.dataformat", name = "jackson-dataformat-smile", version.ref = "jackson" }
126+
jackson-dataformat-yaml = { group = "com.fasterxml.jackson.dataformat", name = "jackson-dataformat-yaml", version.ref = "jackson" }
127+
jackson-dataformat-cbor = { group = "com.fasterxml.jackson.dataformat", name = "jackson-dataformat-cbor", version.ref = "jackson" }
121128
jackson-datatype-jsr310 = { group = "com.fasterxml.jackson.datatype", name = "jackson-datatype-jsr310", version.ref = "jackson" }
129+
jackson3-core = { group = "tools.jackson.core", name = "jackson-core", version.ref = "jackson3" }
130+
jackson3-databind = { group = "tools.jackson.core", name = "jackson-databind", version.ref = "jackson3_databind" }
131+
jackson3-dataformat-smile = { group = "tools.jackson.dataformat", name = "jackson-dataformat-smile", version.ref = "jackson3" }
132+
jackson3-dataformat-yaml = { group = "tools.jackson.dataformat", name = "jackson-dataformat-yaml", version.ref = "jackson3" }
133+
jackson3-dataformat-cbor = { group = "tools.jackson.dataformat", name = "jackson-dataformat-cbor", version.ref = "jackson3" }
122134
jakartaannotation = { group = "jakarta.annotation", name = "jakarta.annotation-api", version.ref = "jakarta_annotation" }
123135
jodatime = { group = "joda-time", name = "joda-time", version.ref = "joda" }
124136
jna = { group = "net.java.dev.jna", name = "jna", version.ref = "jna" }

libs/core/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ base {
3737
dependencies {
3838
api project(':libs:opensearch-common')
3939

40-
api "com.fasterxml.jackson.core:jackson-core:${versions.jackson}"
40+
api libs.jackson3.core
4141

4242
// lucene
4343
api "org.apache.lucene:lucene-core:${versions.lucene}"

0 commit comments

Comments
 (0)