/** * Scan one or more base packages for entity classes. Classes are loaded using the current class loader. * * @param entityBasePackages must not be {@literal null}. * @return {@link Set} containing all discovered entity classes. * @throws ClassNotFoundException */ public static Set<Class<?>> scan(String... entityBasePackages) throws ClassNotFoundException { return new CassandraEntityClassScanner(entityBasePackages).scanForEntityClasses(); }
/** * Creates a new {@link CassandraEntityClassScanner} given {@code entityBasePackages} and * {@code entityBasePackageClasses}. * * @param entityBasePackages must not be {@literal null}. * @param entityBasePackageClasses must not be {@literal null}. */ public CassandraEntityClassScanner(Collection<String> entityBasePackages, Collection<Class<?>> entityBasePackageClasses) { setEntityBasePackages(entityBasePackages); setEntityBasePackageClasses(entityBasePackageClasses); }
/** * Scans the mapping base package for entity classes annotated with {@link Table} or {@link Persistent}. * * @see #getEntityBasePackages() * @return {@code Set<Class<?>>} representing the annotated entity classes found. * @throws ClassNotFoundException if a discovered class could not be loaded via. */ public Set<Class<?>> scanForEntityClasses() throws ClassNotFoundException { Set<Class<?>> classes = new HashSet<>(); for (String basePackage : getEntityBasePackages()) { classes.addAll(scanBasePackageForEntities(basePackage)); } for (Class<?> basePackageClass : getEntityBasePackageClasses()) { classes.addAll(scanBasePackageForEntities(basePackageClass.getPackage().getName())); } return classes; }
/** * Return the {@link Set} of initial entity classes. Scans by default the class path using * {@link #getEntityBasePackages()}. Can be overriden by subclasses to skip class path scanning and return a fixed set * of entity classes. * * @return {@link Set} of initial entity classes. * @throws ClassNotFoundException if the entity scan fails. * @see #getEntityBasePackages() * @see CassandraEntityClassScanner * @since 2.0 */ protected Set<Class<?>> getInitialEntitySet() throws ClassNotFoundException { return CassandraEntityClassScanner.scan(getEntityBasePackages()); }
/** * Creates a new {@link CassandraEntityClassScanner} given {@code entityBasePackages}. * * @param entityBasePackages must not be {@literal null}. */ public CassandraEntityClassScanner(Collection<String> entityBasePackages) { setEntityBasePackages(entityBasePackages); }
/** * Creates a new {@link CassandraEntityClassScanner} given {@code entityBasePackageClasses}. * * @param entityBasePackageClasses must not be {@literal null}. */ public CassandraEntityClassScanner(Class<?>... entityBasePackageClasses) { setEntityBasePackageClasses(Arrays.asList(entityBasePackageClasses)); }
protected Set<Class<?>> scanBasePackageForEntities(String basePackage) throws ClassNotFoundException { HashSet<Class<?>> classes = new HashSet<>(); if (StringUtils.isEmpty(basePackage)) { return classes; } ClassPathScanningCandidateComponentProvider componentProvider = new ClassPathScanningCandidateComponentProvider( false); for (Class<? extends Annotation> annotation : getEntityAnnotations()) { componentProvider.addIncludeFilter(new AnnotationTypeFilter(annotation)); } for (BeanDefinition candidate : componentProvider.findCandidateComponents(basePackage)) { if (candidate.getBeanClassName() != null) { classes.add(ClassUtils.forName(candidate.getBeanClassName(), beanClassLoader)); } } return classes; }
try { Set<Class<?>> entityClasses = CassandraEntityClassScanner .scan(StringUtils.commaDelimitedListToStringArray(packages));
/** * Scan one or more base packages for entity classes. Classes are loaded using the current class loader. * * @param entityBasePackageClasses must not be {@literal null}. * @return {@link Set} containing all discovered entity classes. * @throws ClassNotFoundException if a discovered class could not be loaded via. */ public static Set<Class<?>> scan(Class<?>... entityBasePackageClasses) throws ClassNotFoundException { return new CassandraEntityClassScanner(entityBasePackageClasses).scanForEntityClasses(); }
/** * Scan one or more base packages for entity classes. Classes are loaded using the current class loader. * * @param entityBasePackages must not be {@literal null}. * @return {@link Set} containing all discovered entity classes. * @throws ClassNotFoundException if a discovered class could not be loaded via. */ public static Set<Class<?>> scan(Collection<String> entityBasePackages) throws ClassNotFoundException { return new CassandraEntityClassScanner(entityBasePackages).scanForEntityClasses(); }
/** * Scan one or more base packages for entity classes. Classes are loaded using the current class loader. * * @param entityBasePackages must not be {@literal null}. * @param entityBasePackageClasses must not be {@literal null}. * @return {@link Set} containing all discovered entity classes. * @throws ClassNotFoundException if a discovered class could not be loaded via. */ public static Set<Class<?>> scan(Collection<String> entityBasePackages, Collection<Class<?>> entityBasePackageClasses) throws ClassNotFoundException { return new CassandraEntityClassScanner(entityBasePackages, entityBasePackageClasses).scanForEntityClasses(); }