/** * Parse file lines. * * @param resource resource * @param mapper line mapper * @param <T> type * @return list */ @SneakyThrows public static <T> List<T> parseFile(final Resource resource, final Function<String, T> mapper) { return parseFile(resource.getInputStream(), mapper); }
@SuppressWarnings("rawtypes") static Set<Jackson2Configurator> scanJackson2Configurators() { final String basePackage = Jackson2Utils.class.getName().split("\\.")[0]; final Set<Class<Jackson2Configurator>> configurators = FileAndClasspathUtils.scan(basePackage, new FileAndClasspathUtils.AssignableFilter(Jackson2Configurator.class, false, true)); if (configurators.isEmpty()) { log.warn("no {} found.", Jackson2Configurator.class.getSimpleName()); } return configurators.stream() // .flatMap(configurator -> Arrays.stream(configurator.getEnumConstants())) // .collect(toSet()); }
/** * scan. * * @param basePackage from where (package) * @param includeFilter filter * @param <T> type * @return classes found */ public static <T> Set<Class<T>> scan(final String basePackage, final TypeFilter includeFilter) { checkArgument(isNotBlank(basePackage)); // log.info("domainEnums basePackage: {}", basePackage); final ClassPathScanningCandidateProvider provider = new ClassPathScanningCandidateProvider(); provider.addIncludeFilter(includeFilter); final Set<BeanDefinition> beanDefinitions = provider.findCandidateComponents(basePackage.replaceAll("\\.", "/")); final Set<Class<T>> result = newLinkedHashSetWithExpectedSize(beanDefinitions.size()); for (final BeanDefinition beanDefinition : beanDefinitions) { result.add(classForName(beanDefinition.getBeanClassName())); } return result; }
static <T extends Enum<T> & DiscoverableEnum<T>> Set<Class<T>> scanDiscoverableEnums( // final String basePackage, final Class<T> type) { // InterfaceFilter(type, false) not working here. final TypeFilter includeFilter = new FileAndClasspathUtils.AssignableFilter(type, false, false); return FileAndClasspathUtils.scan(basePackage, includeFilter); }