Example usage for org.springframework.context.annotation ScannedGenericBeanDefinition getMetadata

List of usage examples for org.springframework.context.annotation ScannedGenericBeanDefinition getMetadata

Introduction

In this page you can find the example usage for org.springframework.context.annotation ScannedGenericBeanDefinition getMetadata.

Prototype

@Override
    public final AnnotationMetadata getMetadata() 

Source Link

Usage

From source file:com.gzj.tulip.jade.context.spring.JadeComponentProvider.java

/**
 * jar?JadeDAO?//w  w  w .j  av a  2  s .c  om
 * <p>
 * ?BeanDefinition?DAO??
 * {@link BeanDefinition#getBeanClassName()} DAO???
 * <p>
 * BeanDefinition??Spring???
 */
public Set<BeanDefinition> findCandidateComponents(String uriPrefix) {
    if (!uriPrefix.endsWith("/")) {
        uriPrefix = uriPrefix + "/";
    }
    Set<BeanDefinition> candidates = new LinkedHashSet<BeanDefinition>();
    try {
        String packageSearchPath = uriPrefix + this.resourcePattern;
        boolean traceEnabled = logger.isDebugEnabled();
        boolean debugEnabled = logger.isDebugEnabled();
        Resource[] resources = this.resourcePatternResolver.getResources(packageSearchPath);
        if (debugEnabled) {
            logger.debug("[jade/find] find " + resources.length + " resources for " + packageSearchPath);
        }
        for (int i = 0; i < resources.length; i++) {
            Resource resource = resources[i];
            if (traceEnabled) {
                logger.trace("[jade/find] scanning " + resource);
            }
            // resourcePatternResolver.getResources?classPathResourcesmetadataReadergetInputStreamnull
            // ???exists
            if (!resource.exists()) {
                if (debugEnabled) {
                    logger.debug("Ignored because not exists:" + resource);
                }
            } else if (resource.isReadable()) {
                MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource);
                if (isCandidateComponent(metadataReader)) {
                    ScannedGenericBeanDefinition sbd = new ScannedGenericBeanDefinition(metadataReader);
                    sbd.setResource(resource);
                    sbd.setSource(resource);
                    if (sbd.getMetadata().isInterface() && sbd.getMetadata().isIndependent()) {
                        if (debugEnabled) {
                            logger.debug("Identified candidate component class: " + resource);
                        }
                        candidates.add(sbd);
                    } else {
                        if (traceEnabled) {
                            logger.trace("Ignored because not a interface top-level class: " + resource);
                        }
                    }
                } else {
                    if (traceEnabled) {
                        logger.trace("Ignored because not matching any filter: " + resource);
                    }
                }
            } else {
                if (traceEnabled) {
                    logger.trace("Ignored because not readable: " + resource);
                }
            }
        }
    } catch (IOException ex) {
        throw new BeanDefinitionStoreException("I/O failure during jade scanning", ex);
    }
    return candidates;
}