amogh-jahagirdar commented on code in PR #13004:
URL: https://github.com/apache/iceberg/pull/13004#discussion_r2275043046
##########
core/src/main/java/org/apache/iceberg/rest/RESTSerializers.java:
##########
@@ -470,4 +494,133 @@ public T deserialize(JsonParser p, DeserializationContext
context) throws IOExce
return (T) LoadCredentialsResponseParser.fromJson(jsonNode);
}
}
+
+ static class PlanTableScanRequestSerializer<T extends PlanTableScanRequest>
+ extends JsonSerializer<T> {
+ @Override
+ public void serialize(T request, JsonGenerator gen, SerializerProvider
serializers)
+ throws IOException {
+ PlanTableScanRequestParser.toJson(request, gen);
+ }
+ }
+
+ static class PlanTableScanRequestDeserializer<T extends PlanTableScanRequest>
+ extends JsonDeserializer<T> {
+ @Override
+ public T deserialize(JsonParser p, DeserializationContext context) throws
IOException {
+ JsonNode jsonNode = p.getCodec().readTree(p);
+ return (T) PlanTableScanRequestParser.fromJson(jsonNode);
+ }
+ }
+
+ static class FetchScanTasksRequestSerializer<T extends FetchScanTasksRequest>
+ extends JsonSerializer<T> {
+ @Override
+ public void serialize(T request, JsonGenerator gen, SerializerProvider
serializers)
+ throws IOException {
+ FetchScanTasksRequestParser.toJson(request, gen);
+ }
+ }
+
+ static class FetchScanTasksRequestDeserializer<T extends
FetchScanTasksRequest>
+ extends JsonDeserializer<T> {
+ @Override
+ public T deserialize(JsonParser p, DeserializationContext context) throws
IOException {
+ JsonNode jsonNode = p.getCodec().readTree(p);
+ return (T) FetchScanTasksRequestParser.fromJson(jsonNode);
+ }
+ }
+
+ static class PlanTableScanResponseSerializer<T extends PlanTableScanResponse>
+ extends JsonSerializer<T> {
+ @Override
+ public void serialize(T response, JsonGenerator gen, SerializerProvider
serializers)
+ throws IOException {
+ PlanTableScanResponseParser.toJson(response, gen);
+ }
+ }
+
+ static class PlanTableScanResponseDeserializer<T extends
PlanTableScanResponse>
+ extends JsonDeserializer<T> {
+ @Override
+ public T deserialize(JsonParser p, DeserializationContext context) throws
IOException {
+ JsonNode jsonNode = p.getCodec().readTree(p);
+ TableScanResponseContext scanContext = parseScanResponseContext(context);
+
+ return (T)
+ PlanTableScanResponseParser.fromJson(
+ jsonNode, scanContext.getSpecsById(),
scanContext.isCaseSensitive());
+ }
+ }
+
+ static class FetchPlanningResultResponseSerializer<T extends
FetchPlanningResultResponse>
+ extends JsonSerializer<T> {
+ @Override
+ public void serialize(T response, JsonGenerator gen, SerializerProvider
serializers)
+ throws IOException {
+ FetchPlanningResultResponseParser.toJson(response, gen);
+ }
+ }
+
+ static class FetchPlanningResultResponseDeserializer<T extends
FetchPlanningResultResponse>
+ extends JsonDeserializer<T> {
+ @Override
+ public T deserialize(JsonParser p, DeserializationContext context) throws
IOException {
+ JsonNode jsonNode = p.getCodec().readTree(p);
+
+ TableScanResponseContext scanContext = parseScanResponseContext(context);
+ return (T)
+ FetchPlanningResultResponseParser.fromJson(
+ jsonNode, scanContext.getSpecsById(),
scanContext.isCaseSensitive());
+ }
+ }
+
+ static class FetchScanTaskResponseSerializer<T extends
FetchScanTasksResponse>
+ extends JsonSerializer<T> {
+ @Override
+ public void serialize(T response, JsonGenerator gen, SerializerProvider
serializers)
+ throws IOException {
+ FetchScanTasksResponseParser.toJson(response, gen);
+ }
+ }
+
+ static class FetchScanTaskResponseDeserializer<T extends
FetchScanTasksResponse>
+ extends JsonDeserializer<T> {
+ @Override
+ public T deserialize(JsonParser p, DeserializationContext context) throws
IOException {
+ JsonNode jsonNode = p.getCodec().readTree(p);
+
+ TableScanResponseContext scanContext = parseScanResponseContext(context);
+ return (T)
+ FetchScanTasksResponseParser.fromJson(
+ jsonNode, scanContext.getSpecsById(),
scanContext.isCaseSensitive());
+ }
+ }
+
+ private static TableScanResponseContext
parseScanResponseContext(DeserializationContext context)
+ throws IOException {
+ @SuppressWarnings("unchecked")
+ Map<Integer, PartitionSpec> specsById =
+ (Map<Integer, PartitionSpec>) context.findInjectableValue("specsById",
null, null);
+ boolean caseSensitive = (boolean)
context.findInjectableValue("caseSensitive", null, null);
+ return new TableScanResponseContext(specsById, caseSensitive);
+ }
+
+ static class TableScanResponseContext {
+ private final Map<Integer, PartitionSpec> specsById;
+ private final boolean caseSensitive;
+
+ TableScanResponseContext(Map<Integer, PartitionSpec> specs, boolean
caseSen) {
Review Comment:
To avoid the hiding field issue but also better follow Iceberg style to
prefer the complete word, I'd call this `isCaseSensitive`, it looks like that's
what the other public APIs are also doing as well.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]