List of usage examples for org.springframework.web.reactive.resource ResourceWebHandler getLocations
public List<Resource> getLocations()
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()); }