Skip to content

Commit 774ae7a

Browse files
authored
Merge pull request #176 from kyungilpark/fixDotRelativePathInWindows
fix a problem that cannot load resource named relative path with dot on Windows
2 parents 710c467 + 94847cc commit 774ae7a

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

compiler/src/main/java/com/github/mustachejava/resolver/ClasspathResolver.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.io.InputStream;
77
import java.io.InputStreamReader;
88
import java.io.Reader;
9+
import java.net.URI;
910
import java.nio.charset.StandardCharsets;
1011

1112
/**
@@ -33,11 +34,12 @@ public Reader getReader(String resourceName) {
3334
ClassLoader ccl = Thread.currentThread().getContextClassLoader();
3435

3536
String fullResourceName = concatResourceRootAndResourceName(resourceName);
37+
String normalizeResourceName = URI.create(fullResourceName).normalize().getPath();
3638

37-
InputStream is = ccl.getResourceAsStream(fullResourceName);
39+
InputStream is = ccl.getResourceAsStream(normalizeResourceName);
3840
if (is == null) {
3941
ClassLoader classLoader = ClasspathResolver.class.getClassLoader();
40-
is = classLoader.getResourceAsStream(fullResourceName);
42+
is = classLoader.getResourceAsStream(normalizeResourceName);
4143
}
4244

4345
if (is != null) {

compiler/src/test/java/com/github/mustachejava/resolver/ClasspathResolverTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,17 @@ public void getReaderNullRootAndNullResourceThrowsNullPointer() throws Exception
6565
underTest.getReader(null);
6666
}
6767

68+
@Test
69+
public void getReaderWithRootAndResourceHasDoubleDotRelativePath() throws Exception {
70+
ClasspathResolver underTest = new ClasspathResolver("templates");
71+
Reader reader = underTest.getReader("absolute/../absolute_partials_template.html");
72+
assertThat(reader, is(notNullValue()));
73+
}
74+
75+
@Test
76+
public void getReaderWithRootAndResourceHasDotRelativePath() throws Exception {
77+
ClasspathResolver underTest = new ClasspathResolver("templates");
78+
Reader reader = underTest.getReader("absolute/./nested_partials_sub.html");
79+
assertThat(reader, is(notNullValue()));
80+
}
6881
}

0 commit comments

Comments
 (0)