This is an automated email from the ASF dual-hosted git repository. jgus pushed a commit to branch 1.1 in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/1.1 by this push: new 9d51bfe KAFKA-5550; Connect Struct.put() should include the field name if validation fails (#3507) 9d51bfe is described below commit 9d51bfe5dcece394f6ca32ac5b80f7a11af75d03 Author: Jeremy Custenborder <jcustenbor...@gmail.com> AuthorDate: Mon Feb 12 11:16:25 2018 -0600 KAFKA-5550; Connect Struct.put() should include the field name if validation fails (#3507) Changed call to use the overload of ConnectSchema.validateValue() method with the field name passed in. Ensure that field in put call is not null. Reviewers: Randall Hauch <rha...@gmail.com>, Jason Gustafson <ja...@confluent.io> --- .../java/org/apache/kafka/connect/data/Struct.java | 4 +++- .../org/apache/kafka/connect/data/StructTest.java | 24 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/connect/api/src/main/java/org/apache/kafka/connect/data/Struct.java b/connect/api/src/main/java/org/apache/kafka/connect/data/Struct.java index 1650fa2..1f542e5 100644 --- a/connect/api/src/main/java/org/apache/kafka/connect/data/Struct.java +++ b/connect/api/src/main/java/org/apache/kafka/connect/data/Struct.java @@ -211,7 +211,9 @@ public class Struct { * @return the Struct, to allow chaining of {@link #put(String, Object)} calls */ public Struct put(Field field, Object value) { - ConnectSchema.validateValue(field.schema(), value); + if (null == field) + throw new DataException("field cannot be null."); + ConnectSchema.validateValue(field.name(), field.schema(), value); values[field.index()] = value; return this; } diff --git a/connect/api/src/test/java/org/apache/kafka/connect/data/StructTest.java b/connect/api/src/test/java/org/apache/kafka/connect/data/StructTest.java index 45d2509..a46226d 100644 --- a/connect/api/src/test/java/org/apache/kafka/connect/data/StructTest.java +++ b/connect/api/src/test/java/org/apache/kafka/connect/data/StructTest.java @@ -315,4 +315,28 @@ public class StructTest { thrown.expectMessage("Invalid Java object for schema type INT8: class java.lang.Object for field: \"field\""); ConnectSchema.validateValue(fieldName, Schema.INT8_SCHEMA, new Object()); } + + @Test + public void testPutNullField() { + final String fieldName = "fieldName"; + Schema testSchema = SchemaBuilder.struct() + .field(fieldName, Schema.STRING_SCHEMA); + Struct struct = new Struct(testSchema); + + thrown.expect(DataException.class); + Field field = null; + struct.put(field, "valid"); + } + + @Test + public void testInvalidPutIncludesFieldName() { + final String fieldName = "fieldName"; + Schema testSchema = SchemaBuilder.struct() + .field(fieldName, Schema.STRING_SCHEMA); + Struct struct = new Struct(testSchema); + + thrown.expect(DataException.class); + thrown.expectMessage("Invalid value: null used for required field: \"fieldName\", schema type: STRING"); + struct.put(fieldName, null); + } } -- To stop receiving notification emails like this one, please contact j...@apache.org.