This is an automated email from the ASF dual-hosted git repository. rhauch pushed a commit to branch 2.0 in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/2.0 by this push: new d148886 KAFKA-8277: Fix NPEs in several methods of ConnectHeaders (#6550) d148886 is described below commit d148886e643aa3f3264d119820ade0e660932cc7 Author: Sebastián Ortega <sebastian.ort...@letgo.com> AuthorDate: Mon Apr 22 23:19:58 2019 +0200 KAFKA-8277: Fix NPEs in several methods of ConnectHeaders (#6550) Replace `headers.isEmpty()` by calls to `isEmpty()` as the latter does a null check on heathers (that is lazily created). Author: Sebastián Ortega <sebastian.ort...@letgo.com> Reviewers: Konstantine Karantasis <konstant...@confluent.io>, Arjun Satish <arjunconfluent.io>, Randall Hauch <rha...@gmail.com> --- .../kafka/connect/header/ConnectHeaders.java | 10 +++++----- .../kafka/connect/header/ConnectHeadersTest.java | 23 +++++++++++++++++++++- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/connect/api/src/main/java/org/apache/kafka/connect/header/ConnectHeaders.java b/connect/api/src/main/java/org/apache/kafka/connect/header/ConnectHeaders.java index 185ba65..0b5c484 100644 --- a/connect/api/src/main/java/org/apache/kafka/connect/header/ConnectHeaders.java +++ b/connect/api/src/main/java/org/apache/kafka/connect/header/ConnectHeaders.java @@ -274,7 +274,7 @@ public class ConnectHeaders implements Headers { @Override public Headers remove(String key) { checkKey(key); - if (!headers.isEmpty()) { + if (!isEmpty()) { Iterator<Header> iterator = iterator(); while (iterator.hasNext()) { if (iterator.next().key().equals(key)) { @@ -287,7 +287,7 @@ public class ConnectHeaders implements Headers { @Override public Headers retainLatest() { - if (!headers.isEmpty()) { + if (!isEmpty()) { Set<String> keys = new HashSet<>(); ListIterator<Header> iter = headers.listIterator(headers.size()); while (iter.hasPrevious()) { @@ -304,7 +304,7 @@ public class ConnectHeaders implements Headers { @Override public Headers retainLatest(String key) { checkKey(key); - if (!headers.isEmpty()) { + if (!isEmpty()) { boolean found = false; ListIterator<Header> iter = headers.listIterator(headers.size()); while (iter.hasPrevious()) { @@ -322,7 +322,7 @@ public class ConnectHeaders implements Headers { @Override public Headers apply(String key, HeaderTransform transform) { checkKey(key); - if (!headers.isEmpty()) { + if (!isEmpty()) { ListIterator<Header> iter = headers.listIterator(); while (iter.hasNext()) { Header orig = iter.next(); @@ -341,7 +341,7 @@ public class ConnectHeaders implements Headers { @Override public Headers apply(HeaderTransform transform) { - if (!headers.isEmpty()) { + if (!isEmpty()) { ListIterator<Header> iter = headers.listIterator(); while (iter.hasNext()) { Header orig = iter.next(); diff --git a/connect/api/src/test/java/org/apache/kafka/connect/header/ConnectHeadersTest.java b/connect/api/src/test/java/org/apache/kafka/connect/header/ConnectHeadersTest.java index 343bc5d..72418ba 100644 --- a/connect/api/src/test/java/org/apache/kafka/connect/header/ConnectHeadersTest.java +++ b/connect/api/src/test/java/org/apache/kafka/connect/header/ConnectHeadersTest.java @@ -119,6 +119,14 @@ public class ConnectHeadersTest { } @Test + public void shouldRetainLatestWhenEmpty() { + headers.retainLatest(other); + headers.retainLatest(key); + headers.retainLatest(); + assertTrue(headers.isEmpty()); + } + + @Test public void shouldAddMultipleHeadersWithSameKeyAndRetainLatest() { populate(headers); @@ -180,6 +188,12 @@ public class ConnectHeadersTest { } @Test + public void shouldRemoveAllHeadersWithSameKeyWhenEmpty() { + headers.remove(key); + assertNoHeaderWithKey(key); + } + + @Test public void shouldRemoveAllHeadersWithSameKey() { populate(headers); @@ -212,6 +226,13 @@ public class ConnectHeadersTest { } @Test + public void shouldTransformHeadersWhenEmpty() { + headers.apply(appendToKey("-suffix")); + headers.apply(key, appendToKey("-suffix")); + assertTrue(headers.isEmpty()); + } + + @Test public void shouldTransformHeaders() { populate(headers); @@ -544,4 +565,4 @@ public class ConnectHeadersTest { assertSame(schema, header.schema()); assertSame(value, header.value()); } -} \ No newline at end of file +}