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) {

Reply via email to