Fix handling of file: paths to non-existent files
For setAsText, if the text argument is a file: URL for a path that does not exist, Paths.get(text) is called where text is a file: URL, which doesn't work - the result is an InvalidPathException. To fix this issue, also check that the resource isn't a file before calling Paths.get(). That way, resources that are files skip to the other branch.
This commit is contained in:
parent
dee12db50a
commit
ebf6fff312
|
@ -97,7 +97,7 @@ public class PathEditor extends PropertyEditorSupport {
|
||||||
if (resource == null) {
|
if (resource == null) {
|
||||||
setValue(null);
|
setValue(null);
|
||||||
}
|
}
|
||||||
else if (!resource.exists() && nioPathCandidate) {
|
else if (!resource.isFile() && !resource.exists() && nioPathCandidate) {
|
||||||
setValue(Paths.get(text).normalize());
|
setValue(Paths.get(text).normalize());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -76,6 +76,30 @@ public class PathEditorTests {
|
||||||
assertThat(condition).isTrue();
|
assertThat(condition).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWindowsAbsolutePath() throws Exception {
|
||||||
|
PropertyEditor pathEditor = new PathEditor();
|
||||||
|
pathEditor.setAsText("C:\\no_way_this_file_is_found.doc");
|
||||||
|
Object value = pathEditor.getValue();
|
||||||
|
boolean condition1 = value instanceof Path;
|
||||||
|
assertThat(condition1).isTrue();
|
||||||
|
Path path = (Path) value;
|
||||||
|
boolean condition = !path.toFile().exists();
|
||||||
|
assertThat(condition).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWindowsAbsoluteFilePath() throws Exception {
|
||||||
|
PropertyEditor pathEditor = new PathEditor();
|
||||||
|
pathEditor.setAsText("file://C:\\no_way_this_file_is_found.doc");
|
||||||
|
Object value = pathEditor.getValue();
|
||||||
|
boolean condition1 = value instanceof Path;
|
||||||
|
assertThat(condition1).isTrue();
|
||||||
|
Path path = (Path) value;
|
||||||
|
boolean condition = !path.toFile().exists();
|
||||||
|
assertThat(condition).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUnqualifiedPathNameFound() throws Exception {
|
public void testUnqualifiedPathNameFound() throws Exception {
|
||||||
PropertyEditor pathEditor = new PathEditor();
|
PropertyEditor pathEditor = new PathEditor();
|
||||||
|
|
Loading…
Reference in New Issue