diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/SimpleUrlHandlerMapping.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/SimpleUrlHandlerMapping.java
index abef0a7ff7e..16a333c2435 100644
--- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/SimpleUrlHandlerMapping.java
+++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/SimpleUrlHandlerMapping.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2012 the original author or authors.
+ * Copyright 2002-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,7 +16,7 @@
package org.springframework.web.servlet.handler;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties;
@@ -41,11 +41,10 @@ import org.springframework.util.CollectionUtils;
* If the path doesn't begin with a slash, one is prepended.
*
*
Supports direct matches (given "/test" -> registered "/test") and "*"
- * matches (given "/test" -> registered "/t*"). Note that the default is
- * to map within the current servlet mapping if applicable; see the
- * {@link #setAlwaysUseFullPath "alwaysUseFullPath"} property for details.
- * For details on the pattern options, see the
- * {@link org.springframework.util.AntPathMatcher} javadoc.
+ * pattern matches (given "/test" -> registered "/t*"). Note that the default
+ * is to map within the current servlet mapping if applicable; see the
+ * {@link #setAlwaysUseFullPath "alwaysUseFullPath"} property. For details on the
+ * pattern options, see the {@link org.springframework.util.AntPathMatcher} javadoc.
* @author Rod Johnson
* @author Juergen Hoeller
@@ -55,7 +54,7 @@ import org.springframework.util.CollectionUtils;
*/
public class SimpleUrlHandlerMapping extends AbstractUrlHandlerMapping {
- private final Map urlMap = new HashMap();
+ private final Map urlMap = new LinkedHashMap();
/**
diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlProvider.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlProvider.java
index dcd29275675..a79000d881c 100644
--- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlProvider.java
+++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlProvider.java
@@ -19,7 +19,7 @@ package org.springframework.web.servlet.resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -55,7 +55,7 @@ public class ResourceUrlProvider implements ApplicationListener handlerMap = new HashMap();
+ private final Map handlerMap = new LinkedHashMap();
private boolean autodetect = true;
@@ -165,17 +165,17 @@ public class ResourceUrlProvider implements ApplicationListener matchingPatterns = new ArrayList();
for (String pattern : this.handlerMap.keySet()) {
if (getPathMatcher().match(pattern, lookupPath)) {
matchingPatterns.add(pattern);
}
}
+
if (!matchingPatterns.isEmpty()) {
Comparator patternComparator = getPathMatcher().getPatternComparator(lookupPath);
Collections.sort(matchingPatterns, patternComparator);
@@ -213,7 +215,7 @@ public class ResourceUrlProvider implements ApplicationListener VersionStrategy */
- private final Map versionStrategyMap = new HashMap();
+ private final Map versionStrategyMap = new LinkedHashMap();
/**
@@ -146,14 +146,14 @@ public class VersionResourceResolver extends AbstractResourceResolver {
String candidateVersion = versionStrategy.extractVersion(requestPath);
if (StringUtils.isEmpty(candidateVersion)) {
if (logger.isTraceEnabled()) {
- logger.trace("No version found in path=\"" + requestPath + "\"");
+ logger.trace("No version found in path \"" + requestPath + "\"");
}
return null;
}
String simplePath = versionStrategy.removeVersion(requestPath, candidateVersion);
if (logger.isTraceEnabled()) {
- logger.trace("Extracted version from path, re-resolving without version, path=\"" + simplePath + "\"");
+ logger.trace("Extracted version from path, re-resolving without version: \"" + simplePath + "\"");
}
Resource baseResource = chain.resolveResource(request, simplePath, locations);
@@ -164,14 +164,14 @@ public class VersionResourceResolver extends AbstractResourceResolver {
String actualVersion = versionStrategy.getResourceVersion(baseResource);
if (candidateVersion.equals(actualVersion)) {
if (logger.isTraceEnabled()) {
- logger.trace("resource matches extracted version");
+ logger.trace("Resource matches extracted version ["+ candidateVersion + "]");
}
return baseResource;
}
else {
if (logger.isTraceEnabled()) {
- logger.trace("Potential resource found for [" + requestPath + "], but version [" +
- candidateVersion + "] doesn't match.");
+ logger.trace("Potential resource found for \"" + requestPath + "\", but version [" +
+ candidateVersion + "] does not match");
}
return null;
}
@@ -186,12 +186,12 @@ public class VersionResourceResolver extends AbstractResourceResolver {
return null;
}
if (logger.isTraceEnabled()) {
- logger.trace("Getting the original resource to determine version");
+ logger.trace("Getting the original resource to determine version for path \"" + resourceUrlPath + "\"");
}
Resource resource = chain.resolveResource(null, baseUrl, locations);
String version = versionStrategy.getResourceVersion(resource);
if (logger.isTraceEnabled()) {
- logger.trace("Version=" + version);
+ logger.trace("Determined version [" + version + "] for " + resource);
}
return versionStrategy.addVersion(baseUrl, version);
}
@@ -204,17 +204,17 @@ public class VersionResourceResolver extends AbstractResourceResolver {
*/
protected VersionStrategy getStrategyForPath(String requestPath) {
String path = "/".concat(requestPath);
- List matchingPatterns = new ArrayList();
+ List matchingPatterns = new ArrayList();
for (String pattern : this.versionStrategyMap.keySet()) {
if (this.pathMatcher.match(pattern, path)) {
- matchingPatterns.add(pattern);
+ matchingPatterns.add(pattern);
}
}
- if (!matchingPatterns.isEmpty()) {
- Comparator comparator = this.pathMatcher.getPatternComparator(path);
- Collections.sort(matchingPatterns, comparator);
- return this.versionStrategyMap.get(matchingPatterns.get(0));
- }
+ if (!matchingPatterns.isEmpty()) {
+ Comparator comparator = this.pathMatcher.getPatternComparator(path);
+ Collections.sort(matchingPatterns, comparator);
+ return this.versionStrategyMap.get(matchingPatterns.get(0));
+ }
return null;
}