private Set discoverClassNames()

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;
    }