/** * This method gets the default {@link ClassLoader} to use. This should be the {@link Thread#getContextClassLoader() * ContextClassLoader} but falls back to alternatives if no such {@link ClassLoader} is available. * * @return the default {@link ClassLoader} to use. */ protected ClassLoader getDefaultClassLoader() { return getDefaultClassLoader(null); }
@Override public Set<DataResource> findResources(String packageName, boolean includeSubPackages, Filter<? super String> filter) { return findResources(packageName, includeSubPackages, filter, this.reflectionUtil.getDefaultClassLoader(filter.getClass())); }
@Override public Set<String> findResourceNames(String packageName, boolean includeSubPackages, Filter<? super String> filter) { return findResourceNames(packageName, includeSubPackages, filter, getDefaultClassLoader(filter.getClass())); }
@Override public Set<String> findClassNames(String packageName, boolean includeSubPackages, Filter<? super String> filter) { Set<String> result = new HashSet<>(); findClassNames(packageName, includeSubPackages, result, filter, getDefaultClassLoader(filter.getClass())); return result; }
@Override public Set<DataResource> findResources(String absoluteClasspath) { try { Set<DataResource> result = new HashSet<>(); Enumeration<URL> resourceUrlEnumeration = this.reflectionUtil.getDefaultClassLoader(getClass()).getResources(absoluteClasspath); while (resourceUrlEnumeration.hasMoreElements()) { URL url = resourceUrlEnumeration.nextElement(); result.add(new UrlResource(url)); } return result; } catch (IOException e) { throw new IllegalStateException("Error reading resources.", e); } }
@Override public void findClassNames(String packageName, boolean includeSubPackages, Set<String> classSet) { Filter<String> filter = ConstantFilter.getInstance(true); findClassNames(packageName, includeSubPackages, classSet, filter, getDefaultClassLoader()); }