use of org.springframework.core.type.filter.AssignableTypeFilter in project opennms by OpenNMS.
the class Upgrade method getUpgradeObjects.
/**
* Gets the upgrade objects.
*
* @return the upgrade objects
* @throws OnmsUpgradeException the OpenNMS upgrade exception
*/
protected List<OnmsUpgrade> getUpgradeObjects() throws OnmsUpgradeException {
List<OnmsUpgrade> upgrades = new ArrayList<>();
try {
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(true);
provider.addIncludeFilter(new AssignableTypeFilter(OnmsUpgrade.class));
Set<BeanDefinition> components = provider.findCandidateComponents(getClassScope());
for (BeanDefinition component : components) {
if (component.isAbstract()) {
continue;
}
Class<?> cls = Class.forName(component.getBeanClassName());
if (cls.getAnnotation(Ignore.class) != null) {
continue;
}
OnmsUpgrade upgrade = (OnmsUpgrade) cls.newInstance();
upgrades.add(upgrade);
log("Found upgrade task %s\n", upgrade.getId());
}
Collections.sort(upgrades, new OnmsUpgradeComparator());
} catch (Exception e) {
throw new OnmsUpgradeException(" Can't find the upgrade classes because: " + e.getMessage(), e);
}
return upgrades;
}
use of org.springframework.core.type.filter.AssignableTypeFilter in project flow by vaadin.
the class VaadinServletContextInitializer method findBySuperType.
private Stream<Class<?>> findBySuperType(Collection<String> packages, Class<?> type) {
ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
scanner.setResourceLoader(appContext);
scanner.addIncludeFilter(new AssignableTypeFilter(type));
return packages.stream().map(scanner::findCandidateComponents).flatMap(set -> set.stream()).map(this::getBeanClass);
}
use of org.springframework.core.type.filter.AssignableTypeFilter in project invesdwin-context-persistence by subes.
the class JpaRepositoryScanContextLocation method scanForJpaRepositories.
private Map<Class<?>, Set<Class<?>>> scanForJpaRepositories(final String basePackage) {
final Map<Class<?>, Set<Class<?>>> jpaRepositories = new HashMap<Class<?>, Set<Class<?>>>();
final ClassPathScanner scanner = new ClassPathScanner().withInterfacesOnly();
scanner.addIncludeFilter(new AssignableTypeFilter(JpaRepository.class));
final Set<BeanDefinition> candidateComponents = scanner.findCandidateComponents(basePackage);
for (final BeanDefinition bd : candidateComponents) {
final String beanClassName = bd.getBeanClassName();
final Class<?> repositoryClass = Reflections.classForName(beanClassName);
if (!IDao.class.isAssignableFrom(repositoryClass)) {
final Class<?>[] typeArguments = Reflections.resolveTypeArguments(repositoryClass, JpaRepository.class);
Assertions.assertThat(typeArguments.length).isEqualTo(2);
final Class<?> entity = typeArguments[0];
Set<Class<?>> set = jpaRepositories.get(entity);
if (set == null) {
set = new HashSet<Class<?>>();
jpaRepositories.put(entity, set);
}
Assertions.assertThat(set.add(repositoryClass)).isTrue();
}
}
return jpaRepositories;
}
use of org.springframework.core.type.filter.AssignableTypeFilter in project nzbhydra2 by theotherp.
the class ConfigMigration method getMigrationSteps.
protected static List<ConfigMigrationStep> getMigrationSteps() {
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
provider.addIncludeFilter(new AssignableTypeFilter(ConfigMigrationStep.class));
Set<BeanDefinition> candidates = provider.findCandidateComponents(ConfigMigrationStep.class.getPackage().getName());
List<ConfigMigrationStep> steps = new ArrayList<>();
for (BeanDefinition beanDefinition : candidates) {
try {
ConfigMigrationStep instance = (ConfigMigrationStep) Class.forName(beanDefinition.getBeanClassName()).getConstructor().newInstance();
steps.add(instance);
} catch (Exception e) {
logger.error("Unable to instantiate migration step from class " + beanDefinition.getBeanClassName(), e);
}
}
Collections.sort(steps);
return steps;
}
use of org.springframework.core.type.filter.AssignableTypeFilter in project kork by spinnaker.
the class ObjectMapperSubtypeConfigurer method findSubtypes.
private NamedType[] findSubtypes(Class<?> clazz, String pkg) {
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
provider.addIncludeFilter(new AssignableTypeFilter(clazz));
return provider.findCandidateComponents(pkg).stream().map(bean -> {
Class<?> cls = ClassUtils.resolveClassName(bean.getBeanClassName(), ClassUtils.getDefaultClassLoader());
JsonTypeName nameAnnotation = cls.getAnnotation(JsonTypeName.class);
if (nameAnnotation == null || "".equals(nameAnnotation.value())) {
String message = "Subtype " + cls.getSimpleName() + " does not have a JsonTypeName annotation";
if (strictSerialization) {
throw new InvalidSubtypeConfigurationException(message);
}
log.warn(message);
return null;
}
return new NamedType(cls, nameAnnotation.value());
}).filter(Objects::nonNull).toArray(NamedType[]::new);
}
Aggregations