snehashisp commented on code in PR #16984:
URL: https://github.com/apache/kafka/pull/16984#discussion_r1870869164


##########
connect/runtime/src/main/java/org/apache/kafka/connect/runtime/isolation/Plugins.java:
##########
@@ -259,48 +299,91 @@ public Set<PluginDesc<SinkConnector>> sinkConnectors() {
         return scanResult.sinkConnectors();
     }
 
+    public Set<PluginDesc<SinkConnector>> sinkConnectors(String 
connectorClassOrAlias) {
+        return pluginsOfClass(connectorClassOrAlias, 
scanResult.sinkConnectors());
+    }
+
     public Set<PluginDesc<SourceConnector>> sourceConnectors() {
         return scanResult.sourceConnectors();
     }
 
+    public Set<PluginDesc<SourceConnector>> sourceConnectors(String 
connectorClassOrAlias) {
+        return pluginsOfClass(connectorClassOrAlias, 
scanResult.sourceConnectors());
+    }
+
     public Set<PluginDesc<Converter>> converters() {
         return scanResult.converters();
     }
 
+    public Set<PluginDesc<Converter>> converters(String converterClassOrAlias) 
{
+        return pluginsOfClass(converterClassOrAlias, scanResult.converters());
+    }
+
     public Set<PluginDesc<HeaderConverter>> headerConverters() {
         return scanResult.headerConverters();
     }
 
+    public Set<PluginDesc<HeaderConverter>> headerConverters(String 
headerConverterClassOrAlias) {
+        return pluginsOfClass(headerConverterClassOrAlias, 
scanResult.headerConverters());
+    }
+
     public Set<PluginDesc<Transformation<?>>> transformations() {
         return scanResult.transformations();
     }
 
+    public Set<PluginDesc<Transformation<?>>> transformations(String 
transformationClassOrAlias) {
+        return pluginsOfClass(transformationClassOrAlias, 
scanResult.transformations());
+    }
+
     public Set<PluginDesc<Predicate<?>>> predicates() {
         return scanResult.predicates();
     }
 
+    public Set<PluginDesc<Predicate<?>>> predicates(String 
predicateClassOrAlias) {
+        return pluginsOfClass(predicateClassOrAlias, scanResult.predicates());
+    }
+
     public Set<PluginDesc<ConnectorClientConfigOverridePolicy>> 
connectorClientConfigPolicies() {
         return scanResult.connectorClientConfigPolicies();
     }
 
+    private <T> Set<PluginDesc<T>> pluginsOfClass(String classNameOrAlias, 
Set<PluginDesc<T>> allPluginsOfType) {

Review Comment:
   I thought about it initially, and while this can be done in other modules, 
it was simpler to add this capability here rather than having to compute it in 
two separate places in the AbstractHerder and Recommenders, especially because 
they don't have access to the alias dictionary which would require us to expose 
it from the Plugins module and provide appropriate logic to handle aliases. IMO 
the ownership of plugins description and lookups should be encapsulated within 
the Plugins module itself. I agree with this increasing the API footprint, but 
I seems like a reasonable compromise. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to