This is an automated email from the ASF dual-hosted git repository.
zehnder pushed a commit to branch
2708-refactor-filemanager-class-to-be-non-static
in repository https://gitbox.apache.org/repos/asf/streampipes.git
The following commit(s) were added to
refs/heads/2708-refactor-filemanager-class-to-be-non-static by this push:
new 0ed7c88631 refactor(#2708): Make all methods of FileManager none static
0ed7c88631 is described below
commit 0ed7c8863131f39e471db95671372ef16c75bedd
Author: Philipp Zehnder <[email protected]>
AuthorDate: Sun Apr 7 12:31:57 2024 +0200
refactor(#2708): Make all methods of FileManager none static
---
.../export/generator/ExportPackageGenerator.java | 2 +-
.../streampipes/manager/file/FileManager.java | 32 ++++++++++----------
.../streampipes/manager/file/TestFileManager.java | 34 +++++++++++++---------
.../apache/streampipes/rest/ResetManagement.java | 5 ++--
.../rest/impl/AssetDashboardResource.java | 6 ++--
.../streampipes/rest/impl/PipelineElementFile.java | 18 ++++++++----
6 files changed, 56 insertions(+), 41 deletions(-)
diff --git
a/streampipes-data-export/src/main/java/org/apache/streampipes/export/generator/ExportPackageGenerator.java
b/streampipes-data-export/src/main/java/org/apache/streampipes/export/generator/ExportPackageGenerator.java
index fc3663929f..13abd92077 100644
---
a/streampipes-data-export/src/main/java/org/apache/streampipes/export/generator/ExportPackageGenerator.java
+++
b/streampipes-data-export/src/main/java/org/apache/streampipes/export/generator/ExportPackageGenerator.java
@@ -124,7 +124,7 @@ public class ExportPackageGenerator {
String filename =
fileResolver.findDocument(item.getResourceId()).getFilename();
addDoc(builder, item, new FileResolver(), manifest::addFile);
try {
- builder.addBinary(filename,
Files.readAllBytes(FileManager.getFile(filename).toPath()));
+ builder.addBinary(filename, Files.readAllBytes(new
FileManager().getFile(filename).toPath()));
} catch (IOException e) {
e.printStackTrace();
}
diff --git
a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/file/FileManager.java
b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/file/FileManager.java
index 5038ec3af0..bfd7518b86 100644
---
a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/file/FileManager.java
+++
b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/file/FileManager.java
@@ -34,16 +34,16 @@ import java.util.stream.Collectors;
public class FileManager {
- public static List<FileMetadata> getAllFiles() {
+ public List<FileMetadata> getAllFiles() {
return getAllFiles(null);
}
- public static List<FileMetadata> getAllFiles(String filetypes) {
+ public List<FileMetadata> getAllFiles(String filetypes) {
List<FileMetadata> allFiles =
getFileMetadataStorage().getAllFileMetadataDescriptions();
return filetypes != null ? filterFiletypes(allFiles, filetypes) : allFiles;
}
- public static File getFile(String filename) {
+ public File getFile(String filename) {
return new FileHandler().getFile(filename);
}
@@ -56,7 +56,7 @@ public class FileManager {
* @param fileInputStream content of file
* @return metadata of file
*/
- public static FileMetadata storeFile(String user,
+ public FileMetadata storeFile(String user,
String filename,
InputStream fileInputStream) throws
IOException {
@@ -72,13 +72,13 @@ public class FileManager {
}
- public static void deleteFile(String id) {
+ public void deleteFile(String id) {
FileMetadata fileMetadata = getFileMetadataStorage().getMetadataById(id);
new FileHandler().deleteFile(fileMetadata.getFilename());
getFileMetadataStorage().deleteFileMetadata(id);
}
- private static InputStream validateFileNameAndCleanFile(String filename,
+ private InputStream validateFileNameAndCleanFile(String filename,
String filetype,
InputStream fileInputStream)
{
if (!validateFileType(filename)) {
@@ -95,7 +95,7 @@ public class FileManager {
* @param filetype file of type
* @return input stream without BOM
*/
- protected static InputStream cleanFile(InputStream fileInputStream, String
filetype) {
+ protected InputStream cleanFile(InputStream fileInputStream, String
filetype) {
if (Filetypes.CSV.getFileExtensions().contains(filetype.toLowerCase())) {
fileInputStream = new BOMInputStream(fileInputStream);
}
@@ -103,34 +103,34 @@ public class FileManager {
return fileInputStream;
}
- public static boolean checkFileContentChanged(String filename, String hash)
throws IOException {
+ public boolean checkFileContentChanged(String filename, String hash) throws
IOException {
var fileHash = FileHasher.hash(getFile(filename));
return !fileHash.equals(hash);
}
- public static String sanitizeFilename(String filename) {
+ public String sanitizeFilename(String filename) {
return filename.replaceAll("[^a-zA-Z0-9.\\-]", "_");
}
- public static boolean validateFileType(String filename) {
+ public boolean validateFileType(String filename) {
return Filetypes.getAllFileExtensions()
.stream()
.anyMatch(filename::endsWith);
}
- protected static void writeToFile(String sanitizedFilename, InputStream
fileInputStream) throws IOException {
+ protected void writeToFile(String sanitizedFilename, InputStream
fileInputStream) throws IOException {
new FileHandler().storeFile(sanitizedFilename, fileInputStream);
}
- private static IFileMetadataStorage getFileMetadataStorage() {
+ private IFileMetadataStorage getFileMetadataStorage() {
return StorageDispatcher
.INSTANCE
.getNoSqlStore()
.getFileMetadataStorage();
}
- protected static FileMetadata makeAndStoreFileMetadata(String user,
+ protected FileMetadata makeAndStoreFileMetadata(String user,
String
sanitizedFilename,
String filetype) {
var fileMetadata = makeFileMetadata(user, sanitizedFilename, filetype);
@@ -139,7 +139,7 @@ public class FileManager {
return fileMetadata;
}
- private static FileMetadata makeFileMetadata(String user,
+ private FileMetadata makeFileMetadata(String user,
String filename,
String filetype) {
@@ -152,12 +152,12 @@ public class FileManager {
return fileMetadata;
}
- private static void storeFileMetadata(FileMetadata fileMetadata) {
+ private void storeFileMetadata(FileMetadata fileMetadata) {
getFileMetadataStorage().addFileMetadata(fileMetadata);
}
- private static List<FileMetadata> filterFiletypes(List<FileMetadata>
allFiles, String filetypes) {
+ private List<FileMetadata> filterFiletypes(List<FileMetadata> allFiles,
String filetypes) {
return allFiles
.stream()
.filter(fileMetadata -> Arrays
diff --git
a/streampipes-pipeline-management/src/test/java/org/apache/streampipes/manager/file/TestFileManager.java
b/streampipes-pipeline-management/src/test/java/org/apache/streampipes/manager/file/TestFileManager.java
index a02a309fa3..21f8d9dac3 100644
---
a/streampipes-pipeline-management/src/test/java/org/apache/streampipes/manager/file/TestFileManager.java
+++
b/streampipes-pipeline-management/src/test/java/org/apache/streampipes/manager/file/TestFileManager.java
@@ -18,6 +18,7 @@
package org.apache.streampipes.manager.file;
import org.apache.commons.io.IOUtils;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.IOException;
@@ -32,19 +33,26 @@ import static org.mockito.Mockito.mock;
public class TestFileManager {
+ private FileManager fileManager;
+
+ @BeforeEach
+ public void setup() {
+ fileManager = new FileManager();
+ }
+
@Test
public void storeFile_throwsExceptionForInvalidFileType() {
var filename = "testFile.invalid";
assertThrows(IllegalArgumentException.class, () ->
- FileManager.storeFile("", filename, mock(InputStream.class)));
+ fileManager.storeFile("", filename, mock(InputStream.class)));
}
@Test
public void testCleanFileWithoutBom() throws IOException {
var expected = "test";
var inputStream = IOUtils.toInputStream(expected, StandardCharsets.UTF_8);
- var resultStream = FileManager.cleanFile(inputStream, "CSV");
+ var resultStream = fileManager.cleanFile(inputStream, "CSV");
var resultString = IOUtils.toString(resultStream, StandardCharsets.UTF_8);
assertEquals(expected, resultString);
@@ -56,7 +64,7 @@ public class TestFileManager {
var utf8Bom = "\uFEFF";
var inputString = utf8Bom + expected;
var inputStream = IOUtils.toInputStream(inputString,
StandardCharsets.UTF_8);
- var resultStream = FileManager.cleanFile(inputStream, "CSV");
+ var resultStream = fileManager.cleanFile(inputStream, "CSV");
var resultString = IOUtils.toString(resultStream, StandardCharsets.UTF_8);
assertEquals(expected, resultString);
@@ -68,7 +76,7 @@ public class TestFileManager {
var utf8Bom = "\uFEFF";
var inputString = utf8Bom + expected;
var inputStream = IOUtils.toInputStream(inputString,
StandardCharsets.UTF_8);
- var resultStream = FileManager.cleanFile(inputStream, "CSV");
+ var resultStream = fileManager.cleanFile(inputStream, "CSV");
var resultString = IOUtils.toString(resultStream, StandardCharsets.UTF_8);
assertEquals(expected, resultString);
@@ -77,57 +85,57 @@ public class TestFileManager {
@Test
public void
sanitizeFilename_replacesNonAlphanumericCharactersWithUnderscore() {
var filename = "file@name#with$special%characters";
- var sanitizedFilename = FileManager.sanitizeFilename(filename);
+ var sanitizedFilename = fileManager.sanitizeFilename(filename);
assertEquals("file_name_with_special_characters", sanitizedFilename);
}
@Test
public void sanitizeFilename_keepsAlphanumericAndDotAndHyphenCharacters() {
var filename = "file.name-with_alphanumeric123";
- var sanitizedFilename = FileManager.sanitizeFilename(filename);
+ var sanitizedFilename = fileManager.sanitizeFilename(filename);
assertEquals(filename, sanitizedFilename);
}
@Test
public void
sanitizeFilename_returnsUnderscoreForFilenameWithAllSpecialCharacters() {
var filename = "@#$%^&*()";
- var sanitizedFilename = FileManager.sanitizeFilename(filename);
+ var sanitizedFilename = fileManager.sanitizeFilename(filename);
assertEquals("_________", sanitizedFilename);
}
@Test
public void sanitizeFilename_returnsEmptyStringForEmptyFilename() {
var filename = "";
- var sanitizedFilename = FileManager.sanitizeFilename(filename);
+ var sanitizedFilename = fileManager.sanitizeFilename(filename);
assertEquals("", sanitizedFilename);
}
@Test
public void sanitizeFilename_removesSingleParentDirectory() {
var filename = "../file.csv";
- var sanitizedFilename = FileManager.sanitizeFilename(filename);
+ var sanitizedFilename = fileManager.sanitizeFilename(filename);
assertEquals(".._file.csv", sanitizedFilename);
}
@Test
public void sanitizeFilename_removesDoubleParentDirectoryy() {
var filename = "../../file";
- var sanitizedFilename = FileManager.sanitizeFilename(filename);
+ var sanitizedFilename = fileManager.sanitizeFilename(filename);
assertEquals(".._.._file", sanitizedFilename);
}
@Test
public void validateFileName_returnsTrueForCsv() {
- assertTrue(FileManager.validateFileType("file.csv"));
+ assertTrue(fileManager.validateFileType("file.csv"));
}
@Test
public void validateFileName_returnsTrueForJson() {
- assertTrue(FileManager.validateFileType("file.json"));
+ assertTrue(fileManager.validateFileType("file.json"));
}
@Test
public void validateFileName_returnsFalseForSh() {
- assertFalse(FileManager.validateFileType("file.sh"));
+ assertFalse(fileManager.validateFileType("file.sh"));
}
}
\ No newline at end of file
diff --git
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java
index 8319d0a4ee..d5e89b9671 100644
---
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java
+++
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java
@@ -131,8 +131,9 @@ public class ResetManagement {
}
private static void deleteAllFiles() {
- List<FileMetadata> allFiles = FileManager.getAllFiles();
- allFiles.forEach(fileMetadata ->
FileManager.deleteFile(fileMetadata.getFileId()));
+ var fileManager = new FileManager();
+ List<FileMetadata> allFiles = fileManager.getAllFiles();
+ allFiles.forEach(fileMetadata ->
fileManager.deleteFile(fileMetadata.getFileId()));
}
private static void removeAllDataInDataLake() {
diff --git
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetDashboardResource.java
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetDashboardResource.java
index 4433d51ae4..4687f7c962 100644
---
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetDashboardResource.java
+++
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetDashboardResource.java
@@ -106,7 +106,7 @@ public class AssetDashboardResource extends
AbstractRestResource {
@GetMapping(path = "/images/{imageName}")
public ResponseEntity<byte[]> getDashboardImage(@PathVariable("imageName")
String imageName) {
try {
- var sanitizedFileName = FileManager.sanitizeFilename(imageName);
+ var sanitizedFileName = new FileManager().sanitizeFilename(imageName);
java.nio.file.Path path = Paths.get(getTargetFile(sanitizedFileName));
File file = new File(path.toString());
FileNameMap fileNameMap = URLConnection.getFileNameMap();
@@ -128,7 +128,7 @@ public class AssetDashboardResource extends
AbstractRestResource {
try {
var fileName = fileDetail.getName();
- if (!FileManager.validateFileType(fileName)) {
+ if (!new FileManager().validateFileType(fileName)) {
LOG.error("File type of file " + fileName + " is not supported");
fail();
}
@@ -148,7 +148,7 @@ public class AssetDashboardResource extends
AbstractRestResource {
targetDirectory.mkdirs();
}
- var sanitizedFileName = FileManager.sanitizeFilename(fileName);
+ var sanitizedFileName = new FileManager().sanitizeFilename(fileName);
var targetFile = new File(getTargetFile(sanitizedFileName));
diff --git
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementFile.java
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementFile.java
index 89373cce05..006f3f955d 100644
---
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementFile.java
+++
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementFile.java
@@ -53,6 +53,12 @@ import static org.springframework.http.HttpStatus.NOT_FOUND;
@RequestMapping("/api/v2/files")
public class PipelineElementFile extends AbstractAuthGuardedRestResource {
+ private final FileManager fileManager;
+
+ public PipelineElementFile() {
+ this.fileManager = new FileManager();
+ }
+
@PostMapping(
consumes = MediaType.MULTIPART_FORM_DATA_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
@@ -60,7 +66,7 @@ public class PipelineElementFile extends
AbstractAuthGuardedRestResource {
public ResponseEntity<?> storeFile(@RequestPart("file_upload") MultipartFile
fileDetail) {
try {
FileMetadata metadata =
- FileManager.storeFile(
+ fileManager.storeFile(
getAuthenticatedUsername(),
fileDetail.getOriginalFilename(),
fileDetail.getInputStream()
@@ -74,7 +80,7 @@ public class PipelineElementFile extends
AbstractAuthGuardedRestResource {
@DeleteMapping(path = "{fileId}")
@PreAuthorize(AuthConstants.IS_ADMIN_ROLE)
public ResponseEntity<Void> deleteFile(@PathVariable("fileId") String
fileId) {
- FileManager.deleteFile(fileId);
+ fileManager.deleteFile(fileId);
return ok();
}
@@ -83,7 +89,7 @@ public class PipelineElementFile extends
AbstractAuthGuardedRestResource {
public ResponseEntity<List<FileMetadata>> getFileInfo(
@RequestParam(value = "filetypes", required = false) String filetypes
) {
- return ok(FileManager.getAllFiles(filetypes));
+ return ok(fileManager.getAllFiles(filetypes));
}
@GetMapping(path = "/{filename}", produces =
MediaType.APPLICATION_OCTET_STREAM_VALUE)
@@ -109,7 +115,7 @@ public class PipelineElementFile extends
AbstractAuthGuardedRestResource {
@PathVariable("filename") String filename
) {
try {
- return ok(getFileContents(FileManager.getFile(filename)));
+ return ok(getFileContents(fileManager.getFile(filename)));
} catch (IOException e) {
throw new SpMessageException(
NOT_FOUND,
@@ -125,7 +131,7 @@ public class PipelineElementFile extends
AbstractAuthGuardedRestResource {
@GetMapping(path = "/allFilenames", produces =
MediaType.APPLICATION_JSON_VALUE)
@PreAuthorize(AuthConstants.HAS_READ_FILE_PRIVILEGE)
public ResponseEntity<List<String>> getAllOriginalFilenames() {
- return ok(FileManager.getAllFiles()
+ return ok(fileManager.getAllFiles()
.stream()
.map(fileMetadata -> fileMetadata.getFilename()
.toLowerCase())
@@ -141,7 +147,7 @@ public class PipelineElementFile extends
AbstractAuthGuardedRestResource {
@PathVariable(value = "hash") String hash
) {
try {
- return ok(FileManager.checkFileContentChanged(filename, hash));
+ return ok(fileManager.checkFileContentChanged(filename, hash));
} catch (IOException e) {
throw new SpMessageException(
NOT_FOUND,