From f16d453805c2f76938b2a01d86bc9787ab384f28 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Thu, 1 Dec 2016 14:12:56 +0100 Subject: [PATCH] PathMatchingResourcePatternResolver converts manifest entries to absolute paths and tries all root URLs (any file extension) as jar file Issue: SPR-14934 Issue: SPR-14936 --- .../PathMatchingResourcePatternResolver.java | 38 +++++++++---------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java b/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java index 0e04940343e..9df62059a04 100644 --- a/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java +++ b/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java @@ -365,19 +365,17 @@ public class PathMatchingResourcePatternResolver implements ResourcePatternResol if (classLoader instanceof URLClassLoader) { try { for (URL url : ((URLClassLoader) classLoader).getURLs()) { - if (ResourceUtils.isJarFileURL(url)) { - try { - UrlResource jarResource = new UrlResource( - ResourceUtils.JAR_URL_PREFIX + url.toString() + ResourceUtils.JAR_URL_SEPARATOR); - if (jarResource.exists()) { - result.add(jarResource); - } + try { + UrlResource jarResource = new UrlResource( + ResourceUtils.JAR_URL_PREFIX + url.toString() + ResourceUtils.JAR_URL_SEPARATOR); + if (jarResource.exists()) { + result.add(jarResource); } - catch (MalformedURLException ex) { - if (logger.isDebugEnabled()) { - logger.debug("Cannot search for matching files underneath [" + url + - "] because it cannot be converted to a valid 'jar:' URL: " + ex.getMessage()); - } + } + catch (MalformedURLException ex) { + if (logger.isDebugEnabled()) { + logger.debug("Cannot search for matching files underneath [" + url + + "] because it cannot be converted to a valid 'jar:' URL: " + ex.getMessage()); } } } @@ -418,20 +416,20 @@ public class PathMatchingResourcePatternResolver implements ResourcePatternResol protected void addClassPathManifestEntries(Set result) { try { String javaClassPathProperty = System.getProperty("java.class.path"); - for (String url : StringUtils.delimitedListToStringArray( + for (String path : StringUtils.delimitedListToStringArray( javaClassPathProperty, System.getProperty("path.separator"))) { try { - if (url.endsWith(ResourceUtils.JAR_FILE_EXTENSION)) { - UrlResource jarResource = new UrlResource(ResourceUtils.JAR_URL_PREFIX + - ResourceUtils.FILE_URL_PREFIX + url + ResourceUtils.JAR_URL_SEPARATOR); - if (jarResource.exists()) { - result.add(jarResource); - } + File file = new File(path); + UrlResource jarResource = new UrlResource(ResourceUtils.JAR_URL_PREFIX + + ResourceUtils.FILE_URL_PREFIX + file.getAbsolutePath() + + ResourceUtils.JAR_URL_SEPARATOR); + if (jarResource.exists()) { + result.add(jarResource); } } catch (MalformedURLException ex) { if (logger.isDebugEnabled()) { - logger.debug("Cannot search for matching files underneath [" + url + + logger.debug("Cannot search for matching files underneath [" + path + "] because it cannot be converted to a valid 'jar:' URL: " + ex.getMessage()); } }