in src/main/java/org/apache/nifi/extension/definition/extraction/ExtensionDefinitionFactory.java [139:160]
private Set<String> discoverClassNames(final String extensionType) throws IOException {
final Set<URL> resourceUrls = new HashSet<>();
final Enumeration<URL> resources = extensionClassLoader.getResources(SERVICES_DIRECTORY + extensionType);
while (resources.hasMoreElements()) {
resourceUrls.add(resources.nextElement());
}
final ClassLoader parentClassLoader = extensionClassLoader.getParent();
if (parentClassLoader != null) {
final Enumeration<URL> parentResources = parentClassLoader.getResources(SERVICES_DIRECTORY + extensionType);
while (parentResources.hasMoreElements()) {
resourceUrls.remove(parentResources.nextElement());
}
}
final Set<String> classNames = new HashSet<>();
for (final URL resourceUrl : resourceUrls) {
classNames.addAll(discoverClassNames(resourceUrl));
}
return classNames;
}