You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by jg...@apache.org on 2018/02/12 17:18:48 UTC
[kafka] branch 1.1 updated: KAFKA-5550;
Connect Struct.put() should include the field name if validation
fails (#3507)
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 <jc...@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 <rh...@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
jgus@apache.org.