This is an automated email from the ASF dual-hosted git repository.
gaojun2048 pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new 52b51edf7 [improve][api] Support for listing all implementations of a
factory (#3274)
52b51edf7 is described below
commit 52b51edf7e1b98caf48b6832a613e5e1057918a7
Author: Zongwen Li <[email protected]>
AuthorDate: Thu Nov 3 14:06:23 2022 +0800
[improve][api] Support for listing all implementations of a factory (#3274)
* [improve][api] Support for listing all implementations of a factory
* Update
seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/FactoryUtil.java
---
.../seatunnel/api/table/factory/FactoryUtil.java | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git
a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/FactoryUtil.java
b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/FactoryUtil.java
index 288e35beb..083048c18 100644
---
a/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/FactoryUtil.java
+++
b/seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/FactoryUtil.java
@@ -87,15 +87,9 @@ public final class FactoryUtil {
return catalogFactory.createCatalog(catalogName, options);
}
- @SuppressWarnings("unchecked")
public static <T extends Factory> T discoverFactory(
ClassLoader classLoader, Class<T> factoryClass, String
factoryIdentifier) {
- final List<Factory> factories = discoverFactories(classLoader);
-
- final List<Factory> foundFactories =
- factories.stream()
- .filter(f ->
factoryClass.isAssignableFrom(f.getClass()))
- .collect(Collectors.toList());
+ final List<T> foundFactories = discoverFactories(classLoader,
factoryClass);
if (foundFactories.isEmpty()) {
throw new FactoryException(
@@ -104,7 +98,7 @@ public final class FactoryUtil {
factoryClass.getName()));
}
- final List<Factory> matchingFactories =
+ final List<T> matchingFactories =
foundFactories.stream()
.filter(f ->
f.factoryIdentifier().equals(factoryIdentifier))
.collect(Collectors.toList());
@@ -138,7 +132,15 @@ public final class FactoryUtil {
.collect(Collectors.joining("\n"))));
}
- return (T) matchingFactories.get(0);
+ return matchingFactories.get(0);
+ }
+
+ @SuppressWarnings("unchecked")
+ public static <T extends Factory> List<T> discoverFactories(ClassLoader
classLoader, Class<T> factoryClass) {
+ return discoverFactories(classLoader).stream()
+ .filter(f -> factoryClass.isAssignableFrom(f.getClass()))
+ .map(f -> (T) f)
+ .collect(Collectors.toList());
}
private static List<Factory> discoverFactories(ClassLoader classLoader) {