List of usage examples for org.springframework.core.type.filter TypeFilter TypeFilter
TypeFilter
From source file:com.reactivetechnologies.platform.datagrid.util.EntityFinder.java
/** * /*from www . j a v a 2s .c om*/ * @param basePkg * @return * @throws ClassNotFoundException */ public static Collection<Class<?>> findEntityClasses(String basePkg) throws ClassNotFoundException { ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( false); provider.addIncludeFilter(new TypeFilter() { @Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { AnnotationMetadata aMeta = metadataReader.getAnnotationMetadata(); return aMeta.hasAnnotation(HzMapConfig.class.getName()); } }); //consider the finder class to be in the root package Set<BeanDefinition> beans = null; try { beans = provider.findCandidateComponents(StringUtils.hasText(basePkg) ? basePkg : EntityFinder.class.getName().substring(0, EntityFinder.class.getName().lastIndexOf("."))); } catch (Exception e) { throw new IllegalArgumentException("Unable to scan for entities under base package", e); } Set<Class<?>> classes = new HashSet<>(); if (beans != null && !beans.isEmpty()) { classes = new HashSet<>(beans.size()); for (BeanDefinition bd : beans) { classes.add(Class.forName(bd.getBeanClassName())); } } else { log.warn(">> Did not find any key value entities under the given base scan package [" + basePkg + "]"); } return classes; }
From source file:com.reactivetechnologies.platform.utils.EntityFinder.java
/** * //from w ww .java2s .co m * @param basePkg * @return * @throws ClassNotFoundException */ public static Collection<Class<?>> findMapEntityClasses(String basePkg) throws ClassNotFoundException { ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( false); provider.addIncludeFilter(new TypeFilter() { @Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { AnnotationMetadata aMeta = metadataReader.getAnnotationMetadata(); return aMeta.hasAnnotation(HzMapConfig.class.getName()); } }); //consider the finder class to be in the root package Set<BeanDefinition> beans = null; try { beans = provider.findCandidateComponents(StringUtils.hasText(basePkg) ? basePkg : EntityFinder.class.getName().substring(0, EntityFinder.class.getName().lastIndexOf("."))); } catch (Exception e) { throw new IllegalArgumentException("Unable to scan for entities under base package", e); } Set<Class<?>> classes = new HashSet<>(); if (beans != null && !beans.isEmpty()) { classes = new HashSet<>(beans.size()); for (BeanDefinition bd : beans) { classes.add(Class.forName(bd.getBeanClassName())); } } else { log.warn(">> Did not find any key value entities under the given base scan package [" + basePkg + "]"); } return classes; }
From source file:darks.orm.spring.MapperClassDefinitionScanner.java
public void registerFilters() { addIncludeFilter(new TypeFilter() { public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { boolean ret = metadataReader.getClassMetadata().isAbstract() || metadataReader.getClassMetadata().isInterface(); return ret; }/* w w w.j av a 2 s . com*/ }); addExcludeFilter(new TypeFilter() { public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { String className = metadataReader.getClassMetadata().getClassName(); return className.endsWith("package-info"); } }); }
From source file:it.tidalwave.northernwind.frontend.media.impl.interpolator.ScanningMetadataInterpolatorFactory.java
@PostConstruct public void initialize() { interpolators.clear();/*from w w w .jav a2s . co m*/ log.info("Scanning for metadata interpolators..."); final ClassScanner scanner = new ClassScanner().withIncludeFilter(new TypeFilter() { // FIXME: doesn't check through the whole hierarchy @Override public boolean match(final @Nonnull MetadataReader metadataReader, final @Nonnull MetadataReaderFactory metadataReaderFactory) { final List<String> interfaceNames = asList(metadataReader.getClassMetadata().getInterfaceNames()); final String superClassName = metadataReader.getClassMetadata().getSuperClassName(); return interfaceNames.contains(MetadataInterpolator.class.getName()) || ((superClassName != null) && superClassName.equals(MetadataInterpolatorSupport.class.getName())); } }); for (final Class<?> clazz : scanner.findClasses()) { try { interpolators.add((MetadataInterpolator) clazz.newInstance()); log.info(">>>> added metadata interpolator: {}", clazz); } catch (InstantiationException | IllegalAccessException e) { log.warn("Couldn't add metadata interpolator: " + clazz, e); } } }
From source file:com.reactivetechnologies.analytics.mapper.DataMappers.java
DataMappers() {
scanner = new ClassPathScanningCandidateComponentProvider(false);
scanner.addIncludeFilter(new TypeFilter() {
@Override/*from w ww . j a va2 s . c om*/
public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory)
throws IOException {
if (metadataReader.getClassMetadata().getClassName().equals(DataMappers.class.getName()))
return false;
String[] iFaces = metadataReader.getClassMetadata().getInterfaceNames();
Arrays.sort(iFaces);
return Arrays.binarySearch(iFaces, DataMapper.class.getName()) >= 0;
}
});
Set<BeanDefinition> set = scanner.findCandidateComponents(ClassUtils.getPackageName(DataMapper.class));
if (set.isEmpty()) {
throw new BeanCreationException("No data mapper implementation classes could be found under package ["
+ ClassUtils.getPackageName(DataMapper.class) + "]");
}
for (BeanDefinition bd : set) {
try {
DataMapper dm = (DataMapper) ObjenesisHelper.newInstance(Class.forName(bd.getBeanClassName()));
cache.put(dm.type(), dm);
log.debug("Found data mapper:: Type [" + dm.type() + "] \t" + dm.getClass());
} catch (ClassNotFoundException e) {
throw new BeanCreationException("Unable to instantiate data mapper class", e);
}
}
}
From source file:com.reactive.hzdfs.utils.EntityFinder.java
/** * //www. j a v a 2 s. c om * @param basePkg * @return * @throws ClassNotFoundException */ public static Collection<Class<?>> findMapEntityClasses(String basePkg) throws ClassNotFoundException { ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( false); provider.addIncludeFilter(new TypeFilter() { @Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { AnnotationMetadata aMeta = metadataReader.getAnnotationMetadata(); return aMeta.hasAnnotation(IMapConfig.class.getName()); } }); return findComponents(provider, basePkg); }
From source file:com.reactive.hzdfs.utils.EntityFinder.java
/** * Find implementation classes for the given interface. * @param <T>//from w w w . j a va 2s . c o m * @param basePkg * @param baseInterface * @return * @throws ClassNotFoundException */ @SuppressWarnings("unchecked") public static <T> List<Class<T>> findImplementationClasses(String basePkg, final Class<T> baseInterface) throws ClassNotFoundException { ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( false); provider.addIncludeFilter(new TypeFilter() { @Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { ClassMetadata aMeta = metadataReader.getClassMetadata(); String[] intf = aMeta.getInterfaceNames(); Arrays.sort(intf); return Arrays.binarySearch(intf, baseInterface.getName()) >= 0; } }); Set<Class<?>> collection = findComponents(provider, basePkg); List<Class<T>> list = new ArrayList<>(collection.size()); for (Class<?> c : collection) { list.add((Class<T>) c); } return list; }
From source file:biz.c24.io.spring.config.C24ModelBeanDefinitionParser.java
/** * Classpath scans the given base package for subclasses of {@link biz.c24.io.api.data.Element} whose names end on * {@code DocumentRootElement}.//from w ww .j ava 2 s .c o m * * @param basePackage * @param context * @param source * @return */ private AbstractBeanDefinition getC24ModelFromPackage(String basePackage, ParserContext context, Object source) { ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( false); provider.addIncludeFilter(new TypeFilter() { private final TypeFilter nameFilter = new RegexPatternTypeFilter( Pattern.compile(".*DocumentRootElement")); private final TypeFilter typeFilter = new AssignableTypeFilter(biz.c24.io.api.data.Element.class); public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { return nameFilter.match(metadataReader, metadataReaderFactory) && typeFilter.match(metadataReader, metadataReaderFactory); } }); Set<BeanDefinition> result = provider.findCandidateComponents(basePackage); if (result.size() != 1) { context.getReaderContext().error("Found none or multiple classes ending on 'DocumentRootElement'!", source); } String elementClassName = result.iterator().next().getBeanClassName(); return getC24ModelFromElement(elementClassName, context, source); }
From source file:org.devefx.httpmapper.spring.mapper.ClassPathMapperScanner.java
/** * Configures parent scanner to search for the right interfaces. It can search * for all interfaces or just for those that extends a markerInterface or/and * those annotated with the annotationClass */// ww w .j a v a 2 s.co m public void registerFilters() { boolean acceptAllInterfaces = true; // if specified, use the given annotation and / or marker interface if (this.annotationClass != null) { addIncludeFilter(new AnnotationTypeFilter(this.annotationClass)); acceptAllInterfaces = false; } // override AssignableTypeFilter to ignore matches on the actual marker interface if (this.markerInterface != null) { addIncludeFilter(new AssignableTypeFilter(this.markerInterface) { @Override protected boolean matchClassName(String className) { return false; } }); acceptAllInterfaces = false; } if (acceptAllInterfaces) { // default include filter that accepts all classes addIncludeFilter(new TypeFilter() { @Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { return true; } }); } // exclude package-info.java addExcludeFilter(new TypeFilter() { @Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { String className = metadataReader.getClassMetadata().getClassName(); return className.endsWith("package-info"); } }); }
From source file:com.reactivetechnologies.platform.utils.EntityFinder.java
/** * Scans for JAX RS classes under given (comma delimited) packages * @param basePkg/*from w w w . j a v a 2 s.co m*/ * @return * @throws ClassNotFoundException * @throws IllegalAccessException */ public static List<Class<?>> findJaxRsClasses(String basePkg) throws ClassNotFoundException, IllegalAccessException { if (basePkg.contains(",")) { List<Class<?>> allPkgClasses = new ArrayList<>(); String[] pkgs = basePkg.split(","); for (String pkg : pkgs) { allPkgClasses.addAll(findJaxRsClasses(pkg)); } return allPkgClasses; } ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( false); provider.addIncludeFilter(new TypeFilter() { @Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { AnnotationMetadata aMeta = metadataReader.getAnnotationMetadata(); return aMeta.hasAnnotation(Path.class.getName()) || (aMeta.hasAnnotatedMethods(GET.class.getName()) || aMeta.hasAnnotatedMethods(POST.class.getName()) || aMeta.hasAnnotatedMethods(DELETE.class.getName()) || aMeta.hasAnnotatedMethods(Path.class.getName())); } }); Set<BeanDefinition> beans = null; try { beans = provider.findCandidateComponents(StringUtils.hasText(basePkg) ? basePkg : EntityFinder.class.getName().substring(0, EntityFinder.class.getName().lastIndexOf("."))); } catch (Exception e) { throw new BeanInitializationException("Unable to scan for JAX-RS annotated classes under base package", e); } List<Class<?>> classes = new ArrayList<Class<?>>(); if (beans != null && !beans.isEmpty()) { Class<?> restletClass; for (BeanDefinition bd : beans) { restletClass = Class.forName(bd.getBeanClassName()); classes.add(restletClass); } } else { log.warn("** Did not find any JAX-RS annotated classes under the given base scan package [" + basePkg + "]. No REST requests will be served **"); } return classes; }