Example usage for org.springframework.web.reactive.resource ResourceWebHandler getLocations

List of usage examples for org.springframework.web.reactive.resource ResourceWebHandler getLocations

Introduction

In this page you can find the example usage for org.springframework.web.reactive.resource ResourceWebHandler getLocations.

Prototype

public List<Resource> getLocations() 

Source Link

Document

Return the List of Resource paths to use as sources for serving static resources.

Usage

From source file:org.springframework.web.reactive.resource.ResourceUrlProvider.java

private void detectResourceHandlers(ApplicationContext context) {
    logger.debug("Looking for resource handler mappings");

    Map<String, SimpleUrlHandlerMapping> beans = context.getBeansOfType(SimpleUrlHandlerMapping.class);
    List<SimpleUrlHandlerMapping> mappings = new ArrayList<>(beans.values());
    AnnotationAwareOrderComparator.sort(mappings);

    mappings.forEach(mapping -> {/* w w  w . jav a2 s .  c om*/
        mapping.getHandlerMap().forEach((pattern, handler) -> {
            if (handler instanceof ResourceWebHandler) {
                ResourceWebHandler resourceHandler = (ResourceWebHandler) handler;
                if (logger.isDebugEnabled()) {
                    logger.debug("Found resource handler mapping: URL pattern=\"" + pattern + "\", "
                            + "locations=" + resourceHandler.getLocations() + ", " + "resolvers="
                            + resourceHandler.getResourceResolvers());
                }
                this.handlerMap.put(pattern, resourceHandler);
            }
        });
    });
}

From source file:org.springframework.web.reactive.resource.ResourceUrlProvider.java

private Mono<String> resolveResourceUrl(PathContainer lookupPath) {
    return this.handlerMap
            .entrySet().stream().filter(entry -> entry.getKey().matches(lookupPath)).sorted((entry1,
                    entry2) -> PathPattern.SPECIFICITY_COMPARATOR.compare(entry1.getKey(), entry2.getKey()))
            .findFirst().map(entry -> {
                PathContainer path = entry.getKey().extractPathWithinPattern(lookupPath);
                int endIndex = lookupPath.elements().size() - path.elements().size();
                PathContainer mapping = lookupPath.subPath(0, endIndex);
                if (logger.isTraceEnabled()) {
                    logger.trace(/*from   ww w  .j a v  a  2  s. c  om*/
                            "Invoking ResourceResolverChain for URL pattern " + "\"" + entry.getKey() + "\"");
                }
                ResourceWebHandler handler = entry.getValue();
                List<ResourceResolver> resolvers = handler.getResourceResolvers();
                ResourceResolverChain chain = new DefaultResourceResolverChain(resolvers);
                return chain.resolveUrlPath(path.value(), handler.getLocations()).map(resolvedPath -> {
                    if (logger.isTraceEnabled()) {
                        logger.trace("Resolved public resource URL path \"" + resolvedPath + "\"");
                    }
                    return mapping.value() + resolvedPath;
                });

            }).orElse(Mono.empty());
}