This is an automated email from the ASF dual-hosted git repository. tombentley pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/trunk by this push: new 5e45196 Add DirectoryConfigProvider to the service provider list (#11352) 5e45196 is described below commit 5e45196fb078e5e211440c70e928a23aa45f9d48 Author: Jakub Scholz <w...@scholzj.com> AuthorDate: Tue Sep 28 08:22:42 2021 +0200 Add DirectoryConfigProvider to the service provider list (#11352) * Add DirectoryConfigProvider to the service provider list Reviewers: Chris Egerton <chr...@confluent.io>, Tom Bentley <tbent...@redhat.com> --- .../org/apache/kafka/common/config/provider/ConfigProvider.java | 2 ++ .../org.apache.kafka.common.config.provider.ConfigProvider | 1 + .../kafka/common/config/provider/DirectoryConfigProviderTest.java | 8 ++++++++ .../kafka/common/config/provider/FileConfigProviderTest.java | 8 ++++++++ 4 files changed, 19 insertions(+) diff --git a/clients/src/main/java/org/apache/kafka/common/config/provider/ConfigProvider.java b/clients/src/main/java/org/apache/kafka/common/config/provider/ConfigProvider.java index fe65ddf..035bcbc 100644 --- a/clients/src/main/java/org/apache/kafka/common/config/provider/ConfigProvider.java +++ b/clients/src/main/java/org/apache/kafka/common/config/provider/ConfigProvider.java @@ -26,6 +26,8 @@ import java.util.Set; /** * A provider of configuration data, which may optionally support subscriptions to configuration changes. * Implementations are required to safely support concurrent calls to any of the methods in this interface. + * Kafka Connect discovers configuration providers using Java's Service Provider mechanism (see {@code java.util.ServiceLoader}). + * To support this, implementations of this interface should also contain a service provider configuration file in {@code META-INF/service/org.apache.kafka.common.config.provider.ConfigProvider}. */ public interface ConfigProvider extends Configurable, Closeable { diff --git a/clients/src/main/resources/META-INF/services/org.apache.kafka.common.config.provider.ConfigProvider b/clients/src/main/resources/META-INF/services/org.apache.kafka.common.config.provider.ConfigProvider index 146de7a..409080f 100644 --- a/clients/src/main/resources/META-INF/services/org.apache.kafka.common.config.provider.ConfigProvider +++ b/clients/src/main/resources/META-INF/services/org.apache.kafka.common.config.provider.ConfigProvider @@ -14,3 +14,4 @@ # limitations under the License. org.apache.kafka.common.config.provider.FileConfigProvider +org.apache.kafka.common.config.provider.DirectoryConfigProvider diff --git a/clients/src/test/java/org/apache/kafka/common/config/provider/DirectoryConfigProviderTest.java b/clients/src/test/java/org/apache/kafka/common/config/provider/DirectoryConfigProviderTest.java index 52ef3a0..7cf5422 100644 --- a/clients/src/test/java/org/apache/kafka/common/config/provider/DirectoryConfigProviderTest.java +++ b/clients/src/test/java/org/apache/kafka/common/config/provider/DirectoryConfigProviderTest.java @@ -29,7 +29,9 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.Collections; import java.util.Locale; +import java.util.ServiceLoader; import java.util.Set; +import java.util.stream.StreamSupport; import static java.util.Arrays.asList; import static org.apache.kafka.test.TestUtils.toSet; @@ -145,5 +147,11 @@ public class DirectoryConfigProviderTest { assertTrue(configData.data().isEmpty()); assertNull(configData.ttl()); } + + @Test + public void testServiceLoaderDiscovery() { + ServiceLoader<ConfigProvider> serviceLoader = ServiceLoader.load(ConfigProvider.class); + assertTrue(StreamSupport.stream(serviceLoader.spliterator(), false).anyMatch(configProvider -> configProvider instanceof DirectoryConfigProvider)); + } } diff --git a/clients/src/test/java/org/apache/kafka/common/config/provider/FileConfigProviderTest.java b/clients/src/test/java/org/apache/kafka/common/config/provider/FileConfigProviderTest.java index e56830a..431f382 100644 --- a/clients/src/test/java/org/apache/kafka/common/config/provider/FileConfigProviderTest.java +++ b/clients/src/test/java/org/apache/kafka/common/config/provider/FileConfigProviderTest.java @@ -26,6 +26,8 @@ import java.io.StringReader; import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.ServiceLoader; +import java.util.stream.StreamSupport; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; @@ -87,6 +89,12 @@ public class FileConfigProviderTest { assertNull(configData.ttl()); } + @Test + public void testServiceLoaderDiscovery() { + ServiceLoader<ConfigProvider> serviceLoader = ServiceLoader.load(ConfigProvider.class); + assertTrue(StreamSupport.stream(serviceLoader.spliterator(), false).anyMatch(configProvider -> configProvider instanceof FileConfigProvider)); + } + public static class TestFileConfigProvider extends FileConfigProvider { @Override