UriUtils.extractFileExtension properly handles all fragments
Issue: SPR-15786
This commit is contained in:
@@ -336,11 +336,12 @@ public abstract class UriUtils {
|
|||||||
@Nullable
|
@Nullable
|
||||||
public static String extractFileExtension(String path) {
|
public static String extractFileExtension(String path) {
|
||||||
int end = path.indexOf('?');
|
int end = path.indexOf('?');
|
||||||
|
int fragmentIndex = path.indexOf('#');
|
||||||
|
if (fragmentIndex != -1 && (end == -1 || fragmentIndex < end)) {
|
||||||
|
end = fragmentIndex;
|
||||||
|
}
|
||||||
if (end == -1) {
|
if (end == -1) {
|
||||||
end = path.indexOf('#');
|
end = path.length();
|
||||||
if (end == -1) {
|
|
||||||
end = path.length();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
int begin = path.lastIndexOf('/', end) + 1;
|
int begin = path.lastIndexOf('/', end) + 1;
|
||||||
int paramIndex = path.indexOf(';', begin);
|
int paramIndex = path.indexOf(';', begin);
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import static org.junit.Assert.*;
|
|||||||
/**
|
/**
|
||||||
* @author Arjen Poutsma
|
* @author Arjen Poutsma
|
||||||
* @author Juergen Hoeller
|
* @author Juergen Hoeller
|
||||||
|
* @author Med Belamachi
|
||||||
*/
|
*/
|
||||||
public class UriUtilsTests {
|
public class UriUtilsTests {
|
||||||
|
|
||||||
@@ -115,6 +116,8 @@ public class UriUtilsTests {
|
|||||||
assertEquals("html", UriUtils.extractFileExtension("/products/view.html#/a"));
|
assertEquals("html", UriUtils.extractFileExtension("/products/view.html#/a"));
|
||||||
assertEquals("html", UriUtils.extractFileExtension("/products/view.html#/path/a"));
|
assertEquals("html", UriUtils.extractFileExtension("/products/view.html#/path/a"));
|
||||||
assertEquals("html", UriUtils.extractFileExtension("/products/view.html#/path/a.do"));
|
assertEquals("html", UriUtils.extractFileExtension("/products/view.html#/path/a.do"));
|
||||||
|
assertEquals("html", UriUtils.extractFileExtension("/products/view.html#aaa?bbb"));
|
||||||
|
assertEquals("html", UriUtils.extractFileExtension("/products/view.html#aaa.xml?bbb"));
|
||||||
assertEquals("html", UriUtils.extractFileExtension("/products/view.html?param=a"));
|
assertEquals("html", UriUtils.extractFileExtension("/products/view.html?param=a"));
|
||||||
assertEquals("html", UriUtils.extractFileExtension("/products/view.html?param=/path/a"));
|
assertEquals("html", UriUtils.extractFileExtension("/products/view.html?param=/path/a"));
|
||||||
assertEquals("html", UriUtils.extractFileExtension("/products/view.html?param=/path/a.do"));
|
assertEquals("html", UriUtils.extractFileExtension("/products/view.html?param=/path/a.do"));
|
||||||
|
|||||||
Reference in New Issue
Block a user