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]

Reply via email to