Skip to content

Commit c42979d

Browse files
committed
GxFile more defensive code
1 parent 675418a commit c42979d

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

java/src/main/java/com/genexus/util/GXFile.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,15 @@ public GXFile(String baseDirectoryPath, String fileName, ResourceAccessControlLi
6969

7070
switch (sourceType) {
7171
case LocalFile:
72-
FileSource = new GXFileInfo(Paths.get(baseDirectoryPath, fileName).toFile());
72+
createFileSourceLocal(baseDirectoryPath, fileName);
7373
break;
7474
case ExternalFile:
7575
FileSource = new GXExternalFileInfo(fileName, Application.getExternalProvider(), true, fileAcl);
7676
break;
7777
case Unknown:
7878
ExternalProvider storageProvider = Application.getExternalProvider();
7979
if (storageProvider == null || PrivateUtilities.isAbsoluteFilePath(fileName)) {
80-
FileSource = new GXFileInfo(Paths.get(baseDirectoryPath, fileName).toFile());
80+
createFileSourceLocal(baseDirectoryPath, fileName);
8181
}
8282
else {
8383
FileSource = new GXExternalFileInfo(fileName, storageProvider, true, fileAcl);
@@ -86,7 +86,13 @@ public GXFile(String baseDirectoryPath, String fileName, ResourceAccessControlLi
8686
}
8787
}
8888

89-
public GXFile(IGXFileInfo fileInfo) {
89+
private void createFileSourceLocal(String baseDirectoryPath, String fileName) {
90+
boolean isAbsolutePath = PrivateUtilities.isAbsoluteFilePath(fileName);
91+
String absoluteOrRelativePath = (isAbsolutePath)? fileName: Paths.get(baseDirectoryPath, fileName).toString(); //BaseDirectory could be empty.
92+
FileSource = new GXFileInfo(new File(absoluteOrRelativePath));
93+
}
94+
95+
public GXFile(IGXFileInfo fileInfo) {
9096
FileSource = fileInfo;
9197
}
9298

0 commit comments

Comments
 (0)