This is an automated email from the ASF dual-hosted git repository.

yashmayya pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new bcb5302577a Update usages of some deprecated methods from 
jackson-databind (#16941)
bcb5302577a is described below

commit bcb5302577a180596cb0e60af9a2220578b703c6
Author: Yash Mayya <[email protected]>
AuthorDate: Wed Oct 1 15:46:48 2025 -0700

    Update usages of some deprecated methods from jackson-databind (#16941)
---
 .../org/apache/pinot/client/ExternalViewReader.java  | 18 +++++-------------
 .../response/PinotBrokerTimeSeriesResponse.java      |  2 +-
 .../common/response/encoder/JsonResponseEncoder.java |  2 +-
 .../controller/api/resources/ZookeeperResource.java  | 20 +++++++++-----------
 .../controller/helix/ControllerRequestClient.java    |  5 +----
 .../pinot/controller/util/TableMetadataReader.java   |  2 +-
 .../ingestion/RealtimeKinesisIntegrationTest.java    |  5 +----
 .../stream/kinesis/KinesisPartitionGroupOffset.java  |  2 +-
 .../pinot/segment/local/utils/TableConfigUtils.java  |  4 +---
 .../segment/spi/partition/PartitionFunctionTest.java |  2 +-
 .../org/apache/pinot/spi/config/ConfigUtils.java     |  5 +----
 .../java/org/apache/pinot/spi/utils/JsonUtils.java   | 13 +++----------
 12 files changed, 26 insertions(+), 54 deletions(-)

diff --git 
a/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/ExternalViewReader.java
 
b/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/ExternalViewReader.java
index 547de125a13..18989effba2 100644
--- 
a/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/ExternalViewReader.java
+++ 
b/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/ExternalViewReader.java
@@ -30,7 +30,6 @@ import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -87,12 +86,9 @@ public class ExternalViewReader {
       JsonNode jsonObject = 
OBJECT_READER.readTree(getInputStream(brokerResourceNodeData));
       JsonNode brokerResourceNode = jsonObject.get("mapFields");
 
-      Iterator<Entry<String, JsonNode>> resourceEntries = 
brokerResourceNode.fields();
-      while (resourceEntries.hasNext()) {
-        JsonNode resource = resourceEntries.next().getValue();
-        Iterator<Entry<String, JsonNode>> brokerEntries = resource.fields();
-        while (brokerEntries.hasNext()) {
-          Entry<String, JsonNode> brokerEntry = brokerEntries.next();
+      for (Entry<String, JsonNode> stringJsonNodeEntry : 
brokerResourceNode.properties()) {
+        JsonNode resource = stringJsonNodeEntry.getValue();
+        for (Entry<String, JsonNode> brokerEntry : resource.properties()) {
           String brokerName = brokerEntry.getKey();
           if (brokerName.startsWith("Broker_") && 
"ONLINE".equals(brokerEntry.getValue().asText())) {
             brokerUrls.add(getHostPort(brokerName));
@@ -160,16 +156,12 @@ public class ExternalViewReader {
       JsonNode jsonObject = 
OBJECT_READER.readTree(getInputStream(brokerResourceNodeData));
       JsonNode brokerResourceNode = jsonObject.get("mapFields");
 
-      Iterator<Entry<String, JsonNode>> resourceEntries = 
brokerResourceNode.fields();
-      while (resourceEntries.hasNext()) {
-        Entry<String, JsonNode> resourceEntry = resourceEntries.next();
+      for (Entry<String, JsonNode> resourceEntry : 
brokerResourceNode.properties()) {
         String resourceName = resourceEntry.getKey();
         String tableName = resourceName.replace(OFFLINE_SUFFIX, 
"").replace(REALTIME_SUFFIX, "");
         Set<String> brokerUrls = brokerUrlsMap.computeIfAbsent(tableName, k -> 
new HashSet<>());
         JsonNode resource = resourceEntry.getValue();
-        Iterator<Entry<String, JsonNode>> brokerEntries = resource.fields();
-        while (brokerEntries.hasNext()) {
-          Entry<String, JsonNode> brokerEntry = brokerEntries.next();
+        for (Entry<String, JsonNode> brokerEntry : resource.properties()) {
           String brokerName = brokerEntry.getKey();
           if (brokerName.startsWith("Broker_") && 
"ONLINE".equals(brokerEntry.getValue().asText())) {
             brokerUrls.add(getHostPort(brokerName));
diff --git 
a/pinot-common/src/main/java/org/apache/pinot/common/response/PinotBrokerTimeSeriesResponse.java
 
b/pinot-common/src/main/java/org/apache/pinot/common/response/PinotBrokerTimeSeriesResponse.java
index 3198d752c30..08f09440afb 100644
--- 
a/pinot-common/src/main/java/org/apache/pinot/common/response/PinotBrokerTimeSeriesResponse.java
+++ 
b/pinot-common/src/main/java/org/apache/pinot/common/response/PinotBrokerTimeSeriesResponse.java
@@ -57,7 +57,7 @@ public class PinotBrokerTimeSeriesResponse {
   private String _error;
 
   static {
-    OBJECT_MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+    OBJECT_MAPPER.setDefaultPropertyInclusion(JsonInclude.Include.NON_NULL);
   }
 
   @JsonCreator
diff --git 
a/pinot-common/src/main/java/org/apache/pinot/common/response/encoder/JsonResponseEncoder.java
 
b/pinot-common/src/main/java/org/apache/pinot/common/response/encoder/JsonResponseEncoder.java
index 8cac71ea406..0b260779e16 100644
--- 
a/pinot-common/src/main/java/org/apache/pinot/common/response/encoder/JsonResponseEncoder.java
+++ 
b/pinot-common/src/main/java/org/apache/pinot/common/response/encoder/JsonResponseEncoder.java
@@ -150,7 +150,7 @@ public class JsonResponseEncoder implements ResponseEncoder 
{
 
   private Map<String, Object> extractMap(JsonNode jsonValue) {
     Map<String, Object> map = new HashMap<>();
-    jsonValue.fields().forEachRemaining(entry -> {
+    jsonValue.properties().forEach(entry -> {
       String key = entry.getKey();
       Object value = extractValue(entry.getValue());
       map.put(key, value);
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/ZookeeperResource.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/ZookeeperResource.java
index beb77c8b04b..5b04c82b098 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/ZookeeperResource.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/ZookeeperResource.java
@@ -24,6 +24,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.MapperFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.json.JsonMapper;
 import com.google.common.annotations.VisibleForTesting;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiKeyAuthDefinition;
@@ -81,17 +82,14 @@ public class ZookeeperResource {
 
   // Helix uses codehaus.jackson.map.ObjectMapper, hence we can't use pinot 
JsonUtils here.
   @VisibleForTesting
-  static final ObjectMapper MAPPER = (new 
ObjectMapper()).setAnnotationIntrospector(new CodehausJacksonIntrospector());
-
-  static {
-    // Configuration should be identical to 
org.apache.helix.zookeeper.datamodel.serializer.ZNRecordSerializer.
-
-    MAPPER.enable(SerializationFeature.INDENT_OUTPUT);
-    MAPPER.enable(new MapperFeature[]{MapperFeature.AUTO_DETECT_FIELDS});
-    MAPPER.enable(new 
MapperFeature[]{MapperFeature.CAN_OVERRIDE_ACCESS_MODIFIERS});
-    MAPPER.enable(new MapperFeature[]{MapperFeature.AUTO_DETECT_SETTERS});
-    MAPPER.enable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
-  }
+  static final ObjectMapper MAPPER = JsonMapper.builder()
+      .enable(MapperFeature.AUTO_DETECT_FIELDS)
+      .enable(MapperFeature.AUTO_DETECT_FIELDS)
+      .enable(MapperFeature.CAN_OVERRIDE_ACCESS_MODIFIERS)
+      .enable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
+      .enable(SerializationFeature.INDENT_OUTPUT)
+      .build()
+      .setAnnotationIntrospector(new CodehausJacksonIntrospector());
 
   @Inject
   PinotHelixResourceManager _pinotHelixResourceManager;
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/ControllerRequestClient.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/ControllerRequestClient.java
index 99869394469..0b2ce9fd3c7 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/ControllerRequestClient.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/ControllerRequestClient.java
@@ -26,7 +26,6 @@ import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import javax.annotation.Nullable;
@@ -326,9 +325,7 @@ public class ControllerRequestClient {
       }
 
       HashMap<String, List<String>> result = new HashMap<>();
-      Iterator<Map.Entry<String, JsonNode>> fields = serversMap.fields();
-      while (fields.hasNext()) {
-        Map.Entry<String, JsonNode> field = fields.next();
+      for (Map.Entry<String, JsonNode> field : serversMap.properties()) {
         List<String> segments = new ArrayList<>();
 
         ArrayNode value = (ArrayNode) field.getValue();
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/util/TableMetadataReader.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/util/TableMetadataReader.java
index 71e3e4194ba..628c917ff06 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/util/TableMetadataReader.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/util/TableMetadataReader.java
@@ -166,7 +166,7 @@ public class TableMetadataReader {
         String segmentName = node.get("segmentName").asText();
         aggregatedNode.set(segmentName, node);
       } else {
-        node.fields().forEachRemaining(entry -> 
aggregatedNode.set(entry.getKey(), entry.getValue()));
+        node.properties().forEach(entry -> aggregatedNode.set(entry.getKey(), 
entry.getValue()));
       }
     }
     return aggregatedNode;
diff --git 
a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/realtime/ingestion/RealtimeKinesisIntegrationTest.java
 
b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/realtime/ingestion/RealtimeKinesisIntegrationTest.java
index 1f5569a6036..666b78fb341 100644
--- 
a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/realtime/ingestion/RealtimeKinesisIntegrationTest.java
+++ 
b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/realtime/ingestion/RealtimeKinesisIntegrationTest.java
@@ -31,7 +31,6 @@ import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import javax.activation.UnsupportedDataTypeException;
@@ -258,9 +257,7 @@ public class RealtimeKinesisIntegrationTest extends 
BaseKinesisIntegrationTest {
     if (StringUtils.isNotBlank(line)) {
       JsonNode dataObject = JsonUtils.stringToJsonNode(line);
 
-      Iterator<Map.Entry<String, JsonNode>> fieldIterator = 
dataObject.fields();
-      while (fieldIterator.hasNext()) {
-        Map.Entry<String, JsonNode> field = fieldIterator.next();
+      for (Map.Entry<String, JsonNode> field : dataObject.properties()) {
         String fieldName = field.getKey();
         JsonNodeType fieldDataType = field.getValue().getNodeType();
 
diff --git 
a/pinot-plugins/pinot-stream-ingestion/pinot-kinesis/src/main/java/org/apache/pinot/plugin/stream/kinesis/KinesisPartitionGroupOffset.java
 
b/pinot-plugins/pinot-stream-ingestion/pinot-kinesis/src/main/java/org/apache/pinot/plugin/stream/kinesis/KinesisPartitionGroupOffset.java
index e68c84e82e1..16ce42cded1 100644
--- 
a/pinot-plugins/pinot-stream-ingestion/pinot-kinesis/src/main/java/org/apache/pinot/plugin/stream/kinesis/KinesisPartitionGroupOffset.java
+++ 
b/pinot-plugins/pinot-stream-ingestion/pinot-kinesis/src/main/java/org/apache/pinot/plugin/stream/kinesis/KinesisPartitionGroupOffset.java
@@ -50,7 +50,7 @@ public class KinesisPartitionGroupOffset implements 
StreamPartitionMsgOffset {
     try {
       ObjectNode objectNode = (ObjectNode) 
JsonUtils.stringToJsonNode(offsetStr);
       Preconditions.checkArgument(objectNode.size() == 1);
-      Map.Entry<String, JsonNode> entry = objectNode.fields().next();
+      Map.Entry<String, JsonNode> entry = 
objectNode.properties().iterator().next();
       _shardId = entry.getKey();
       _sequenceNumber = entry.getValue().asText();
     } catch (Exception e) {
diff --git 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/TableConfigUtils.java
 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/TableConfigUtils.java
index a589075f3c1..13397d62693 100644
--- 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/TableConfigUtils.java
+++ 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/TableConfigUtils.java
@@ -1736,9 +1736,7 @@ public final class TableConfigUtils {
   }
 
   private static void overwriteConfig(JsonNode oldCfg, JsonNode newCfg) {
-    Iterator<Map.Entry<String, JsonNode>> cfgItr = newCfg.fields();
-    while (cfgItr.hasNext()) {
-      Map.Entry<String, JsonNode> cfgEntry = cfgItr.next();
+    for (Map.Entry<String, JsonNode> cfgEntry : newCfg.properties()) {
       ((ObjectNode) oldCfg).set(cfgEntry.getKey(), cfgEntry.getValue());
     }
   }
diff --git 
a/pinot-segment-spi/src/test/java/org/apache/pinot/segment/spi/partition/PartitionFunctionTest.java
 
b/pinot-segment-spi/src/test/java/org/apache/pinot/segment/spi/partition/PartitionFunctionTest.java
index 6d8883bd95d..8bb44bb024f 100644
--- 
a/pinot-segment-spi/src/test/java/org/apache/pinot/segment/spi/partition/PartitionFunctionTest.java
+++ 
b/pinot-segment-spi/src/test/java/org/apache/pinot/segment/spi/partition/PartitionFunctionTest.java
@@ -381,7 +381,7 @@ public class PartitionFunctionTest {
     if (functionConfig == null) {
       assertTrue(functionConfigNode.isNull());
     } else {
-      functionConfigNode.fields().forEachRemaining(nodeEntry -> {
+      functionConfigNode.properties().forEach(nodeEntry -> {
         assertTrue(functionConfig.containsKey(nodeEntry.getKey()));
         assertEquals(nodeEntry.getValue().asText(), 
functionConfig.get(nodeEntry.getKey()));
       });
diff --git 
a/pinot-spi/src/main/java/org/apache/pinot/spi/config/ConfigUtils.java 
b/pinot-spi/src/main/java/org/apache/pinot/spi/config/ConfigUtils.java
index 289eef7db00..b28b2be095b 100644
--- a/pinot-spi/src/main/java/org/apache/pinot/spi/config/ConfigUtils.java
+++ b/pinot-spi/src/main/java/org/apache/pinot/spi/config/ConfigUtils.java
@@ -24,7 +24,6 @@ import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.JsonNodeType;
 import java.io.IOException;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 import org.apache.pinot.spi.utils.JsonUtils;
 
@@ -81,9 +80,7 @@ public class ConfigUtils {
     switch (nodeType) {
       case OBJECT:
         if (!jsonNode.isEmpty()) {
-          Iterator<Map.Entry<String, JsonNode>> iterator = jsonNode.fields();
-          while (iterator.hasNext()) {
-            final Map.Entry<String, JsonNode> next = iterator.next();
+          for (Map.Entry<String, JsonNode> next : jsonNode.properties()) {
             
next.setValue(applyConfigWithEnvVariablesAndSystemProperties(configValues, 
next.getValue()));
           }
         }
diff --git a/pinot-spi/src/main/java/org/apache/pinot/spi/utils/JsonUtils.java 
b/pinot-spi/src/main/java/org/apache/pinot/spi/utils/JsonUtils.java
index 535cccdebb2..523bf337abb 100644
--- a/pinot-spi/src/main/java/org/apache/pinot/spi/utils/JsonUtils.java
+++ b/pinot-spi/src/main/java/org/apache/pinot/spi/utils/JsonUtils.java
@@ -44,7 +44,6 @@ import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -456,9 +455,7 @@ public class JsonUtils {
     // Put all nested results (from array) into a list to be processed later
     List<List<Map<String, String>>> nestedResultsList = new ArrayList<>();
 
-    Iterator<Map.Entry<String, JsonNode>> fieldIterator = node.fields();
-    while (fieldIterator.hasNext()) {
-      Map.Entry<String, JsonNode> fieldEntry = fieldIterator.next();
+    for (Map.Entry<String, JsonNode> fieldEntry : node.properties()) {
       String field = fieldEntry.getKey();
       Set<String> excludeFields = jsonIndexConfig.getExcludeFields();
       if (excludeFields != null && excludeFields.contains(field)) {
@@ -623,9 +620,7 @@ public class JsonUtils {
       @Nullable Map<String, FieldSpec.FieldType> fieldTypeMap, @Nullable 
TimeUnit timeUnit, List<String> fieldsToUnnest,
       String delimiter, ComplexTypeConfig.CollectionNotUnnestedToJson 
collectionNotUnnestedToJson) {
     Schema pinotSchema = new Schema();
-    Iterator<Map.Entry<String, JsonNode>> fieldIterator = jsonNode.fields();
-    while (fieldIterator.hasNext()) {
-      Map.Entry<String, JsonNode> fieldEntry = fieldIterator.next();
+    for (Map.Entry<String, JsonNode> fieldEntry : jsonNode.properties()) {
       JsonNode childNode = fieldEntry.getValue();
       inferPinotSchemaFromJsonNode(childNode, pinotSchema, 
fieldEntry.getKey(), fieldTypeMap, timeUnit, fieldsToUnnest,
           delimiter, collectionNotUnnestedToJson);
@@ -661,9 +656,7 @@ public class JsonUtils {
       }
       // do not include the node for other cases
     } else if (jsonNode.isObject()) {
-      Iterator<Map.Entry<String, JsonNode>> fieldIterator = jsonNode.fields();
-      while (fieldIterator.hasNext()) {
-        Map.Entry<String, JsonNode> fieldEntry = fieldIterator.next();
+      for (Map.Entry<String, JsonNode> fieldEntry : jsonNode.properties()) {
         JsonNode childNode = fieldEntry.getValue();
         inferPinotSchemaFromJsonNode(childNode, pinotSchema, 
String.join(delimiter, path, fieldEntry.getKey()),
             fieldTypeMap, timeUnit, fieldsToUnnest, delimiter, 
collectionNotUnnestedToJson);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to