diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AbstractVersionStrategy.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AbstractVersionStrategy.java index ebd4e73c57..8de6dabdc4 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AbstractVersionStrategy.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AbstractVersionStrategy.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 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. @@ -100,7 +100,13 @@ public abstract class AbstractVersionStrategy implements VersionStrategy { @Override public String addVersion(String path, String version) { - return (this.prefix.endsWith("/") || path.startsWith("/") ? this.prefix + path : this.prefix + "/" + path); + if (path.startsWith(".")) { + return path; + } + else { + return (this.prefix.endsWith("/") || path.startsWith("/") ? + this.prefix + path : this.prefix + "/" + path); + } } } @@ -118,7 +124,7 @@ public abstract class AbstractVersionStrategy implements VersionStrategy { Matcher matcher = pattern.matcher(requestPath); if (matcher.find()) { String match = matcher.group(1); - return match.contains("-") ? match.substring(match.lastIndexOf("-") + 1) : match; + return (match.contains("-") ? match.substring(match.lastIndexOf("-") + 1) : match); } else { return null; @@ -134,7 +140,7 @@ public abstract class AbstractVersionStrategy implements VersionStrategy { public String addVersion(String requestPath, String version) { String baseFilename = StringUtils.stripFilenameExtension(requestPath); String extension = StringUtils.getFilenameExtension(requestPath); - return baseFilename + "-" + version + "." + extension; + return (baseFilename + "-" + version + "." + extension); } } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/FixedVersionStrategyTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/FixedVersionStrategyTests.java index 8eeb0ab0ee..dcccaf2b92 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/FixedVersionStrategyTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/FixedVersionStrategyTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2002-2014 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. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.web.servlet.resource; import org.junit.Before; @@ -21,7 +22,8 @@ import org.junit.Test; import static org.junit.Assert.*; /** - * Unit tests for {@link org.springframework.web.servlet.resource.FixedVersionStrategy} + * Unit tests for {@link org.springframework.web.servlet.resource.FixedVersionStrategy}. + * * @author Brian Clozel */ public class FixedVersionStrategyTests { @@ -57,7 +59,13 @@ public class FixedVersionStrategyTests { @Test public void addVersion() throws Exception { - assertEquals(this.version + "/" + this.path, this.strategy.addVersion(this.path, this.version)); + assertEquals(this.version + "/" + this.path, this.strategy.addVersion("/" + this.path, this.version)); + } + + @Test // SPR-13727 + public void addVersionRelativePath() throws Exception { + String relativePath = "../" + this.path; + assertEquals(relativePath, this.strategy.addVersion(relativePath, this.version)); } }