mimaison commented on code in PR #19449:
URL: https://github.com/apache/kafka/pull/19449#discussion_r2177525246


##########
connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverter.java:
##########
@@ -345,13 +360,16 @@ public SchemaAndValue toConnectData(String topic, byte[] 
value) {
             throw new DataException("Converting byte[] to Kafka Connect data 
failed due to serialization error: ", e);
         }
 
-        if (config.schemasEnabled() && (!jsonValue.isObject() || 
jsonValue.size() != 2 || !jsonValue.has(JsonSchema.ENVELOPE_SCHEMA_FIELD_NAME) 
|| !jsonValue.has(JsonSchema.ENVELOPE_PAYLOAD_FIELD_NAME)))
-            throw new DataException("JsonConverter with schemas.enable 
requires \"schema\" and \"payload\" fields and may not contain additional 
fields." +
+        if (config.schemasEnabled()) {
+            if (this.schema != null) {

Review Comment:
   We can just use `schema` here like you did just below



##########
connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverter.java:
##########
@@ -68,6 +68,10 @@ public class JsonConverter implements Converter, 
HeaderConverter, Versioned {
 
     private static final Map<Schema.Type, JsonToConnectTypeConverter> 
TO_CONNECT_CONVERTERS = new EnumMap<>(Schema.Type.class);
 
+    // if a schema is provided in config, this schema will 
+    // be used for all messages
+    private Schema schema = null;

Review Comment:
   Can we put this with the other non-static, non-final fields below? 



##########
connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverterConfig.java:
##########
@@ -36,6 +37,10 @@ public final class JsonConverterConfig extends 
ConverterConfig {
     private static final String SCHEMAS_ENABLE_DISPLAY = "Enable Schemas";
 
     public static final String SCHEMAS_CACHE_SIZE_CONFIG = 
"schemas.cache.size";
+    public static final String SCHEMA_CONTENT_CONFIG = "schema.content";

Review Comment:
   Can we keep the `schemas.cache.size` fields together instead of adding these 
new fields in the middle?



##########
connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverter.java:
##########
@@ -291,6 +295,17 @@ public void configure(Map<String, ?> configs) {
 
         fromConnectSchemaCache = new SynchronizedCache<>(new 
LRUCache<>(config.schemaCacheSize()));
         toConnectSchemaCache = new SynchronizedCache<>(new 
LRUCache<>(config.schemaCacheSize()));
+
+        try {
+            final byte[] schemaContent = config.schemaContent();
+            if (schemaContent != null && schemaContent.length > 0) {

Review Comment:
   I wonder if the empty string case should be handled in JsonConverterConfig, 
WDYT?



##########
connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverter.java:
##########
@@ -291,6 +295,17 @@ public void configure(Map<String, ?> configs) {
 
         fromConnectSchemaCache = new SynchronizedCache<>(new 
LRUCache<>(config.schemaCacheSize()));
         toConnectSchemaCache = new SynchronizedCache<>(new 
LRUCache<>(config.schemaCacheSize()));
+
+        try {
+            final byte[] schemaContent = config.schemaContent();
+            if (schemaContent != null && schemaContent.length > 0) {
+                final JsonNode schemaNode = deserializer.deserialize("", 
schemaContent);
+                this.schema = asConnectSchema(schemaNode);
+            }
+        } catch (SerializationException e) {
+            throw new DataException("Failed to parse schema in converter 
config due to serialization error: ", e);
+        }
+

Review Comment:
   We don't need this extra line



##########
connect/json/src/main/java/org/apache/kafka/connect/json/JsonConverter.java:
##########
@@ -68,6 +68,10 @@ public class JsonConverter implements Converter, 
HeaderConverter, Versioned {
 
     private static final Map<Schema.Type, JsonToConnectTypeConverter> 
TO_CONNECT_CONVERTERS = new EnumMap<>(Schema.Type.class);
 
+    // if a schema is provided in config, this schema will 
+    // be used for all messages

Review Comment:
   A short comment like this can fit on a single line



-- 
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: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to