Example usage for org.springframework.context.annotation ClassPathBeanDefinitionScanner setResourceLoader

List of usage examples for org.springframework.context.annotation ClassPathBeanDefinitionScanner setResourceLoader

Introduction

In this page you can find the example usage for org.springframework.context.annotation ClassPathBeanDefinitionScanner setResourceLoader.

Prototype

@Override
public void setResourceLoader(@Nullable ResourceLoader resourceLoader) 

Source Link

Document

Set the ResourceLoader to use for resource locations.

Usage

From source file:info.sargis.eventbus.config.EventBusHandlerBeanDefinitionParser.java

protected ClassPathBeanDefinitionScanner configureScanner(ParserContext parserContext, Element element) {
    XmlReaderContext readerContext = parserContext.getReaderContext();

    // Delegate bean definition registration to scanner class.
    ClassPathBeanDefinitionScanner scanner = createScanner(readerContext, false);
    scanner.setResourceLoader(readerContext.getResourceLoader());
    scanner.setBeanDefinitionDefaults(parserContext.getDelegate().getBeanDefinitionDefaults());
    scanner.setAutowireCandidatePatterns(parserContext.getDelegate().getAutowireCandidatePatterns());

    parseTypeFilters(element, scanner, readerContext, parserContext);

    return scanner;
}

From source file:org.codehaus.groovy.grails.context.annotation.ClosureClassIgnoringComponentScanBeanDefinitionParser.java

@Override
protected ClassPathBeanDefinitionScanner configureScanner(ParserContext parserContext, Element element) {
    final ClassPathBeanDefinitionScanner scanner = super.configureScanner(parserContext, element);

    final ResourceLoader originalResourceLoader = parserContext.getReaderContext().getResourceLoader();
    if (LOG.isDebugEnabled()) {
        LOG.debug("Scanning only this classloader:" + originalResourceLoader.getClassLoader());
    }/*from  w  ww  .java2 s  .  c  om*/

    ResourceLoader parentOnlyResourceLoader;
    try {
        parentOnlyResourceLoader = new ResourceLoader() {
            ClassLoader parentOnlyGetResourcesClassLoader = new ParentOnlyGetResourcesClassLoader(
                    originalResourceLoader.getClassLoader());

            public Resource getResource(String location) {
                return originalResourceLoader.getResource(location);
            }

            public ClassLoader getClassLoader() {
                return parentOnlyGetResourcesClassLoader;
            }
        };
    } catch (Throwable t) {
        // restrictive classloading environment, use the original
        parentOnlyResourceLoader = originalResourceLoader;
    }

    final PathMatchingResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver(
            parentOnlyResourceLoader) {
        @Override
        protected Resource[] findAllClassPathResources(String location) throws IOException {
            Set<Resource> result = new LinkedHashSet<Resource>(16);

            @SuppressWarnings("unused")
            URL classesDir = null;

            final boolean warDeployed = Metadata.getCurrent().isWarDeployed();
            if (!warDeployed) {
                BuildSettings buildSettings = BuildSettingsHolder.getSettings();
                if (buildSettings != null && buildSettings.getClassesDir() != null) {
                    classesDir = buildSettings.getClassesDir().toURI().toURL();
                }
            }

            // only scan classes from project classes directory
            String path = location;
            if (path.startsWith("/")) {
                path = path.substring(1);
            }
            Enumeration<URL> resourceUrls = getClassLoader().getResources(path);
            while (resourceUrls.hasMoreElements()) {
                URL url = resourceUrls.nextElement();
                if (LOG.isDebugEnabled()) {
                    LOG.debug(
                            "Scanning URL " + url.toExternalForm() + " while searching for '" + location + "'");
                }
                /*
                if (!warDeployed && classesDir!= null && url.equals(classesDir)) {
                result.add(convertClassLoaderURL(url));
                }
                else if (warDeployed) {
                result.add(convertClassLoaderURL(url));
                }
                */
                result.add(convertClassLoaderURL(url));
            }
            return result.toArray(new Resource[result.size()]);
        }
    };
    resourceResolver.setPathMatcher(new AntPathMatcher() {
        @Override
        public boolean match(String pattern, String path) {
            if (path.endsWith(".class")) {
                String filename = FilenameUtils.getBaseName(path);
                if (filename.indexOf("$") > -1)
                    return false;
            }
            return super.match(pattern, path);
        }
    });
    scanner.setResourceLoader(resourceResolver);
    return scanner;
}

From source file:org.grails.spring.context.annotation.ClosureClassIgnoringComponentScanBeanDefinitionParser.java

@Override
protected ClassPathBeanDefinitionScanner configureScanner(ParserContext parserContext, Element element) {
    final ClassPathBeanDefinitionScanner scanner = super.configureScanner(parserContext, element);

    final ResourceLoader originalResourceLoader = parserContext.getReaderContext().getResourceLoader();
    if (LOG.isDebugEnabled()) {
        LOG.debug("Scanning only this classloader:" + originalResourceLoader.getClassLoader());
    }//ww  w.j a va 2s. co  m

    ResourceLoader parentOnlyResourceLoader;
    try {
        parentOnlyResourceLoader = new ResourceLoader() {
            ClassLoader parentOnlyGetResourcesClassLoader = new ParentOnlyGetResourcesClassLoader(
                    originalResourceLoader.getClassLoader());

            public Resource getResource(String location) {
                return originalResourceLoader.getResource(location);
            }

            public ClassLoader getClassLoader() {
                return parentOnlyGetResourcesClassLoader;
            }
        };
    } catch (Throwable t) {
        // restrictive classloading environment, use the original
        parentOnlyResourceLoader = originalResourceLoader;
    }

    final PathMatchingResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver(
            parentOnlyResourceLoader) {
        @Override
        protected Resource[] findAllClassPathResources(String location) throws IOException {
            Set<Resource> result = new LinkedHashSet<Resource>(16);

            if (BuildSettings.CLASSES_DIR != null) {
                @SuppressWarnings("unused")
                URL classesDir = BuildSettings.CLASSES_DIR.toURI().toURL();

                // only scan classes from project classes directory
                String path = location;
                if (path.startsWith("/")) {
                    path = path.substring(1);
                }
                Enumeration<URL> resourceUrls = getClassLoader().getResources(path);
                while (resourceUrls.hasMoreElements()) {
                    URL url = resourceUrls.nextElement();
                    if (LOG.isDebugEnabled()) {
                        LOG.debug("Scanning URL " + url.toExternalForm() + " while searching for '" + location
                                + "'");
                    }
                    /*
                    if (!warDeployed && classesDir!= null && url.equals(classesDir)) {
                        result.add(convertClassLoaderURL(url));
                    }
                    else if (warDeployed) {
                        result.add(convertClassLoaderURL(url));
                    }
                    */
                    result.add(convertClassLoaderURL(url));
                }
            }
            return result.toArray(new Resource[result.size()]);
        }
    };
    resourceResolver.setPathMatcher(new AntPathMatcher() {
        @Override
        public boolean match(String pattern, String path) {
            if (path.endsWith(".class")) {
                String filename = GrailsStringUtils.getFileBasename(path);
                if (filename.contains("$"))
                    return false;
            }
            return super.match(pattern, path);
        }
    });
    scanner.setResourceLoader(resourceResolver);
    return scanner;
}

From source file:org.tinygroup.springmvc.coc.ConventionBeanDefinitionRegistryPostProcessor.java

protected ClassPathBeanDefinitionScanner createScanner(BeanDefinitionRegistry registry) {
    ClassPathBeanDefinitionScanner scaner = new ClassPathBeanDefinitionScanner(registry, false);
    BeanDefinitionDefaults defaults = new BeanDefinitionDefaults();
    defaults.setAutowireMode(Autowire.BY_NAME.value());
    scaner.setBeanDefinitionDefaults(defaults);
    scaner.setScopeMetadataResolver(new AnnotationScopeMetadataResolver());
    scaner.setResourceLoader(new PathMatchingInJarResourcePatternResolver());
    scaner.setBeanNameGenerator(new DefaultBeanNameGenerator());
    addTypeFilters(scaner);//from ww w. j  ava  2  s .  c o  m
    return scaner;
}