diff --git a/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/util/JsonUtils.java b/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/util/JsonUtils.java index e3892f5f50f4..a5a339149aae 100644 --- a/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/util/JsonUtils.java +++ b/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/util/JsonUtils.java @@ -24,6 +24,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.UncheckedIOException; +import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; @@ -89,6 +90,16 @@ public static T parseJson(ObjectMapper mapper, InputStream inputStream, Clas return parseJson(mapper, ObjectMapper::createParser, inputStream, javaType); } + public static T parseJson(URL url, Class javaType) + { + return parseJson(OBJECT_MAPPER, url, javaType); + } + + public static T parseJson(ObjectMapper mapper, URL url, Class javaType) + { + return parseJson(mapper, ObjectMapper::createParser, url, javaType); + } + private static T parseJson(ObjectMapper mapper, ParserConstructor parserConstructor, I input, Class javaType) { requireNonNull(mapper, "mapper is null"); diff --git a/plugin/trino-tpcds/src/main/java/io/trino/plugin/tpcds/statistics/TableStatisticsDataRepository.java b/plugin/trino-tpcds/src/main/java/io/trino/plugin/tpcds/statistics/TableStatisticsDataRepository.java index 67e67128daf9..d8ea1b019daf 100644 --- a/plugin/trino-tpcds/src/main/java/io/trino/plugin/tpcds/statistics/TableStatisticsDataRepository.java +++ b/plugin/trino-tpcds/src/main/java/io/trino/plugin/tpcds/statistics/TableStatisticsDataRepository.java @@ -26,6 +26,7 @@ import java.nio.file.Paths; import java.util.Optional; +import static io.trino.plugin.base.util.JsonUtils.parseJson; import static java.lang.String.format; import static java.nio.charset.StandardCharsets.UTF_8; @@ -83,7 +84,7 @@ private Optional readStatistics(String resourcePath) return Optional.empty(); } try { - return Optional.of(objectMapper.readValue(resource, TableStatisticsData.class)); + return Optional.of(parseJson(objectMapper, resource, TableStatisticsData.class)); } catch (Exception e) { throw new RuntimeException(format("Failed to parse stats from resource [%s]", resourcePath), e); diff --git a/plugin/trino-tpch/src/main/java/io/trino/plugin/tpch/statistics/TableStatisticsDataRepository.java b/plugin/trino-tpch/src/main/java/io/trino/plugin/tpch/statistics/TableStatisticsDataRepository.java index 4edc5052df09..3d9922251771 100644 --- a/plugin/trino-tpch/src/main/java/io/trino/plugin/tpch/statistics/TableStatisticsDataRepository.java +++ b/plugin/trino-tpch/src/main/java/io/trino/plugin/tpch/statistics/TableStatisticsDataRepository.java @@ -26,6 +26,7 @@ import java.util.Optional; import static com.google.common.base.Preconditions.checkArgument; +import static io.trino.plugin.base.util.JsonUtils.parseJson; import static io.trino.plugin.tpch.util.Optionals.withBoth; import static java.lang.String.format; import static java.nio.charset.StandardCharsets.UTF_8; @@ -77,7 +78,7 @@ public Optional load(String schemaName, TpchTable table, return Optional.empty(); } try { - return Optional.of(objectMapper.readValue(resource, TableStatisticsData.class)); + return Optional.of(parseJson(objectMapper, resource, TableStatisticsData.class)); } catch (Exception e) { throw new RuntimeException(format("Failed to parse stats from resource [%s]", resourcePath), e);