public static List getResources()

in src/main/java/org/apache/xml/security/utils/ClassLoaderUtils.java [112:197]


    public static List<URL> getResources(String resourceName, Class<?> callingClass) {
        if (resourceName == null) {
            throw new NullPointerException();
        }
        List<URL> ret = new ArrayList<>();
        Enumeration<URL> urls = new Enumeration<URL>() {
            @Override
            public boolean hasMoreElements() {
                return false;
            }
            @Override
            public URL nextElement() {
                return null;
            }

        };
        try {
            urls = Thread.currentThread().getContextClassLoader().getResources(resourceName);
        } catch (IOException e) {
            LOG.log(Level.DEBUG, e.getMessage(), e);
            //ignore
        }
        if (!urls.hasMoreElements() && resourceName.charAt(0) == '/') {
            //certain classloaders need it without the leading /
            try {
                urls =
                    Thread.currentThread().getContextClassLoader().getResources(
                        resourceName.substring(1)
                    );
            } catch (IOException e) {
                LOG.log(Level.DEBUG, e.getMessage(), e);
                // ignore
            }
        }

        ClassLoader cluClassloader = ClassLoaderUtils.class.getClassLoader();
        if (cluClassloader == null) {
            cluClassloader = ClassLoader.getSystemClassLoader();
        }
        if (!urls.hasMoreElements()) {
            try {
                urls = cluClassloader.getResources(resourceName);
            } catch (IOException e) {
                LOG.log(Level.DEBUG, e.getMessage(), e);
                // ignore
            }
        }
        if (!urls.hasMoreElements() && resourceName.charAt(0) == '/') {
            //certain classloaders need it without the leading /
            try {
                urls = cluClassloader.getResources(resourceName.substring(1));
            } catch (IOException e) {
                LOG.log(Level.DEBUG, e.getMessage(), e);
                // ignore
            }
        }

        if (!urls.hasMoreElements()) {
            ClassLoader cl = callingClass.getClassLoader();

            if (cl != null) {
                try {
                    urls = cl.getResources(resourceName);
                } catch (IOException e) {
                    LOG.log(Level.DEBUG, e.getMessage(), e);
                    // ignore
                }
            }
        }

        if (!urls.hasMoreElements()) {
            URL url = callingClass.getResource(resourceName);
            if (url != null) {
                ret.add(url);
            }
        }
        while (urls.hasMoreElements()) {
            ret.add(urls.nextElement());
        }


        if (ret.isEmpty() && resourceName.charAt(0) != '/') {
            return getResources('/' + resourceName, callingClass);
        }
        return ret;
    }