Example usage for org.springframework.core.type.classreading CachingMetadataReaderFactory CachingMetadataReaderFactory

List of usage examples for org.springframework.core.type.classreading CachingMetadataReaderFactory CachingMetadataReaderFactory

Introduction

In this page you can find the example usage for org.springframework.core.type.classreading CachingMetadataReaderFactory CachingMetadataReaderFactory.

Prototype

public CachingMetadataReaderFactory(@Nullable ResourceLoader resourceLoader) 

Source Link

Document

Create a new CachingMetadataReaderFactory for the given ResourceLoader , using a shared resource cache if supported or a local resource cache otherwise.

Usage

From source file:Main.java

public static Stream<Class> scan(String packageName) {
    try {/*from w ww . ja  v  a2  s.  co  m*/
        ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
        MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory(resourcePatternResolver);

        String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
                + convertClassNameToResourcePath(resolvePlaceholders(packageName)) + "/**/*.class";

        return Stream.of(resourcePatternResolver.getResources(packageSearchPath)).filter(Resource::isReadable)
                .map(r -> getClassOrNull(readerFactory, r)).filter(c -> c != null);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

From source file:com.baomidou.mybatisplus.toolkit.PackageHelper.java

/**
 * <p>/*from  ww  w .  j ava2 s.  c o m*/
 * ???
 * </p>
 * <p>
 * <property name="typeAliasesPackage" value="com.baomidou.*.entity"/>
 * </p>
 * 
 * @param typeAliasesPackage
 *            ??
 * @return
 */
public static String[] convertTypeAliasesPackage(String typeAliasesPackage) {
    ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
    MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
    String pkg = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
            + ClassUtils.convertClassNameToResourcePath(typeAliasesPackage) + "/*.class";

    /*
     * ??Resource
     * ClassLoader.getResource("META-INF")?????????
     */
    try {
        Set<String> set = new HashSet<String>();
        Resource[] resources = resolver.getResources(pkg);
        if (resources != null && resources.length > 0) {
            MetadataReader metadataReader = null;
            for (Resource resource : resources) {
                if (resource.isReadable()) {
                    metadataReader = metadataReaderFactory.getMetadataReader(resource);
                    set.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage()
                            .getName());
                }
            }
        }
        if (!set.isEmpty()) {
            return set.toArray(new String[] {});
        } else {
            throw new MybatisPlusException("not find typeAliasesPackage:" + pkg);
        }
    } catch (Exception e) {
        throw new MybatisPlusException("not find typeAliasesPackage:" + pkg, e);
    }
}

From source file:com.baomidou.framework.spring.SpringScanPackage.java

/**
 * <p>//from ww  w .  ja  va 2  s  .c  om
 * ???,?
 * </p>
 *
 * @param scanPackages
 *            ??package
 * @return
 */
public static Set<String> findPackageClass(String scanPackages) {
    Set<String> clazzSet = new HashSet<String>();
    ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
    MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
    String pkg = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
            + ClassUtils.convertClassNameToResourcePath(scanPackages) + "/**/*.class";
    /*
     * ??Resource
     * ClassLoader.getResource("META-INF")?????????
     */
    try {
        Resource[] resources = resolver.getResources(pkg);
        if (resources != null && resources.length > 0) {
            for (Resource resource : resources) {
                if (resource.isReadable()) {
                    MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource);
                    if (metadataReader != null) {
                        clazzSet.add(metadataReader.getClassMetadata().getClassName());
                    }
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return clazzSet;
}

From source file:gov.nih.nci.cabig.caaers.domain.DomainObjectTest.java

private List<Class> findMyTypes(String basePackage) throws IOException, ClassNotFoundException {
    ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
    MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resourcePatternResolver);

    List<Class> candidates = new ArrayList<Class>();
    String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
            + resolveBasePackage(basePackage) + "/" + "**/*.class";
    Resource[] resources = resourcePatternResolver.getResources(packageSearchPath);
    for (Resource resource : resources) {
        if (resource.isReadable()) {
            MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource);
            if (isCandidate(metadataReader))
                candidates.add(Class.forName(metadataReader.getClassMetadata().getClassName()));
        }//from ww  w  .  ja  v  a 2 s.c o m
    }
    return candidates;
}

From source file:com.fantasy.Application.java

private static List<Class> findTypes(String basePackage) throws IOException, ClassNotFoundException {
    ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
    MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resourcePatternResolver);

    List<Class> candidates = new ArrayList();
    String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
            + resolveBasePackage(basePackage) + "/" + "**/*.class";
    Resource[] resources = resourcePatternResolver.getResources(packageSearchPath);
    for (Resource resource : resources) {
        if (resource.isReadable()) {
            MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource);
            if (isCandidate(metadataReader)) {
                candidates.add(Class.forName(metadataReader.getClassMetadata().getClassName()));
            }// w ww  .j  a va 2 s.c o  m
        }
    }
    return candidates;
}

From source file:com.agileapes.couteau.maven.resource.ClassPathScanningClassProvider.java

public ClassPathScanningClassProvider(boolean detectInsideJarFiles) {
    super(false);
    metadataReaderFactory = new CachingMetadataReaderFactory(getResourceLoader());
    if (detectInsideJarFiles) {
        this.classpathUrlPrefix = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX;
    }//w  ww  .j av a 2s .co  m
}

From source file:com.zht.common.generator.util.LoadPackageClasses.java

/**
 * ??BeanClass??/*from  w  w w  .j  a v a2s. c  om*/
 * @return
 * @throws IOException
 * @throws ClassNotFoundException
 */
public Set<Class<?>> getClassSet() throws IOException, ClassNotFoundException {
    this.classSet.clear();
    if (!this.packagesList.isEmpty()) {
        for (String pkg : this.packagesList) {
            String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
                    + ClassUtils.convertClassNameToResourcePath(pkg) + RESOURCE_PATTERN;
            Resource[] resources = this.resourcePatternResolver.getResources(pattern);
            MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory(
                    this.resourcePatternResolver);
            for (Resource resource : resources) {
                if (resource.isReadable()) {
                    MetadataReader reader = readerFactory.getMetadataReader(resource);
                    String className = reader.getClassMetadata().getClassName();
                    if (matchesEntityTypeFilter(reader, readerFactory)) {
                        this.classSet.add(Class.forName(className));
                    }
                }
            }
        }
    }
    //
    //      if (logger.isInfoEnabled()){
    //         for (Class<?> clazz : this.classSet) {
    //            //logger.info(String.format("Found class:%s", clazz.getName()));
    //         }
    //      }
    return this.classSet;
}

From source file:com.sesxh.hoschange.common.util.LoadPackageClasses.java

/**
 * ??BeanClass??/*www . j a v  a2s. c om*/
 * 
 * @return
 * @throws IOException
 * @throws ClassNotFoundException
 */
public Set<Class<?>> getClassSet() throws IOException, ClassNotFoundException {
    this.classSet.clear();
    if (!this.packagesList.isEmpty()) {
        for (String pkg : this.packagesList) {
            String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
                    + ClassUtils.convertClassNameToResourcePath(pkg) + RESOURCE_PATTERN;
            Resource[] resources = this.resourcePatternResolver.getResources(pattern);
            MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory(
                    this.resourcePatternResolver);
            for (Resource resource : resources) {
                if (resource.isReadable()) {
                    MetadataReader reader = readerFactory.getMetadataReader(resource);
                    String className = reader.getClassMetadata().getClassName();
                    if (matchesEntityTypeFilter(reader, readerFactory)) {
                        this.classSet.add(Class.forName(className));
                    }
                }
            }
        }
    }
    // 
    // if (logger.isInfoEnabled()){
    // for (Class<?> clazz : this.classSet) {
    // //logger.info(String.format("Found class:%s", clazz.getName()));
    // }
    // }
    return this.classSet;
}

From source file:cn.wanghaomiao.seimi.core.SeimiScanner.java

@SafeVarargs
public final Set<Class<?>> scan(String[] confPkgs, Class<? extends Annotation>... annotationTags) {
    Set<Class<?>> resClazzSet = new HashSet<>();
    List<AnnotationTypeFilter> typeFilters = new LinkedList<>();
    if (ArrayUtils.isNotEmpty(annotationTags)) {
        for (Class<? extends Annotation> annotation : annotationTags) {
            typeFilters.add(new AnnotationTypeFilter(annotation, false));
        }/* w w w.  j  av a2  s . co m*/
    }
    if (ArrayUtils.isNotEmpty(confPkgs)) {
        for (String pkg : confPkgs) {
            String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
                    + String.format(RESOURCE_PATTERN, ClassUtils.convertClassNameToResourcePath(pkg));
            try {
                Resource[] resources = this.resourcePatternResolver.getResources(pattern);
                MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory(
                        this.resourcePatternResolver);
                for (Resource resource : resources) {
                    if (resource.isReadable()) {
                        MetadataReader reader = readerFactory.getMetadataReader(resource);
                        String className = reader.getClassMetadata().getClassName();
                        if (ifMatchesEntityType(reader, readerFactory, typeFilters)) {
                            Class<?> curClass = Thread.currentThread().getContextClassLoader()
                                    .loadClass(className);
                            context.register(curClass);
                            resClazzSet.add(curClass);
                        }
                    }
                }
            } catch (Exception e) {
                logger.error("?????[{}][{}]", pattern,
                        StringUtils.join(typeFilters, ","));
            }
        }
    }
    if (!context.isActive()) {
        context.refresh();
    }
    return resClazzSet;
}